Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --get arguments
- local tArgs = { ... }
- musicplaylist = false
- selectedsong = nil
- displaynotes = ""
- mute = {{ },{ },{ },{ },{ }}
- i = 1
- j = 1
- selectedi = 1
- selectedj = 1
- ptoggle = 0
- debug = false
- --attaching ironblocks
- ironblock1 = peripheral.wrap("left")
- ironblock2 = peripheral.wrap("right")
- ironblock3 = peripheral.wrap("back")
- ironblock4 = peripheral.wrap("top")
- ironblock5 = peripheral.wrap("bottom")
- function round(num, idp)
- local mult = 10^(idp or 0)
- return math.floor(num * mult + 0.5) / mult
- end
- input = function(evt, arg1, arg2)
- if debug and evt == "key" and arg1 == 41 then
- debug = false
- elseif evt == "key" and arg1 == 41 then
- debug = true
- end
- if debug then
- if evt == "key" and arg1 == 17 and selectedi < 5 then
- selectedi = selectedi + 1
- elseif evt == "key" and arg1 == 31 and selectedi > 1 then
- selectedi = selectedi - 1
- elseif evt == "key" and arg1 == 32 and selectedj < 5 then
- selectedj = selectedj + 1
- elseif evt == "key" and arg1 == 30 and selectedj > 1 then
- selectedj = selectedj - 1
- end
- if evt == "key" and arg1 == 57 and mute[selectedi][selectedj] ~= 0 then
- mute[selectedi][selectedj] = 0
- elseif evt == "key" and arg1 == 57 and mute[selectedi][selectedj] == 0 then
- mute[selectedi][selectedj] = 1
- end
- end
- if evt == "key" and arg1 == 15 and ptoggle ~= 0 then
- ptoggle = 0
- elseif evt == "key" and arg1 == 15 and ptoggle == 0 then
- ptoggle = 1
- end
- if evt == "key" and arg1 >= 2 and arg1 <= 12 then
- factor = allNotes / 10
- i = round(factor * (arg1 - 2), 0)
- end
- end
- playnotes = function(noteblockside, channle, int)
- displaynotes = displaynotes .. "("
- if song[i][channle] then
- if song[i][channle][1] and mute[channle][1] ~= 0 then
- note = song[i][channle][1]
- noteblockside.playNote(int,note)
- displaynotes = displaynotes .. note .. ","
- end
- if song[i][channle][2] and mute[channle][2] ~= 0 then
- note = song[i][channle][2]
- noteblockside.playNote(int,note)
- displaynotes = displaynotes .. note .. ","
- end
- if song[i][channle][3] and mute[channle][3] ~= 0 then
- note = song[i][channle][3]
- noteblockside.playNote(int,note)
- displaynotes = displaynotes .. note .. ","
- end
- if song[i][channle][4] and mute[channle][4] ~= 0 then
- note = song[i][channle][4]
- noteblockside.playNote(int,note)
- displaynotes = displaynotes .. note .. ","
- end
- if song[i][channle][5] and mute[channle][5] ~= 0 then
- note = song[i][channle][5]
- noteblockside.playNote(int,note)
- displaynotes = displaynotes .. note .. ","
- end
- end
- displaynotes = displaynotes .. ")"
- end
- -- Song selection stuff
- if fs.exists("playlist") and #tArgs < 1 then
- local file = fs.open("playlist", "r")
- playlist = {}
- toltal = 0
- while true do
- local songque = file.readLine()
- if songque == nil then --if reached end of file
- break end
- table.insert(playlist, songque)
- toltal = toltal + 1
- musicplaylist = true
- end
- selectedsong = playlist[1]
- elseif #tArgs < 1 then
- shell.run("clear")
- print( "Use the arrows and enter to chose. " )
- songlist = fs.list("music")
- i = 0
- max = -1
- while true do
- i = i + 1
- max = max + 1
- if songlist[i] == nil then break end
- end
- pointer = 1
- term.setCursorPos(1, 10)
- term.clearLine(none)
- print( "->" .. pointer .. ": " .. songlist[pointer])
- while true do
- list = 1
- while list < 9 do
- term.setCursorPos(1, 10 - list)
- term.clearLine(none)
- if songlist[pointer - (list)] then
- write( " " .. pointer - (list) .. ": " .. songlist[pointer - (list)])
- end
- list = list + 1
- end
- term.setCursorPos(1, 10)
- term.clearLine(none)
- print( "->" .. pointer .. ": " .. songlist[pointer])
- list = 1
- while list < 10 do
- term.setCursorPos(1, 10 + list)
- term.clearLine(none)
- if songlist[pointer + (list)] then
- write( " " .. pointer + (list) .. ": " .. songlist[pointer + (list)])
- end
- list = list + 1
- end
- local evt, arg1, arg2 = os.pullEvent()
- if arg1 == 28 then break end
- if arg1 == 200 and pointer > 1 then
- pointer = pointer - 1
- elseif arg1 == 208 and pointer < max then
- pointer = pointer + 1
- end
- end
- selectedsong = songlist[pointer]
- else
- selectedsong = tArgs[1]
- end
- que = 0
- while true do
- if musicplaylist then
- if que >= toltal then
- que = 1
- else
- que = que + 1
- end
- selectedsong = playlist[que]
- end
- -- Playing The Music
- --opening file
- shell.run( "clear" )
- if fs.exists("Instrument/" .. selectedsong) then
- shell.run( "Instrument/" .. selectedsong )
- else
- int1 = 0
- int2 = 0
- int3 = 0
- int4 = 0
- int5 = 0
- end
- file = io.open( "music/" .. selectedsong )
- filedata = file:read()
- file:close()
- --converting file to table
- song = textutils.unserialize(filedata)
- allNotes = song["lenght"] / song["delay"]
- -- Song info
- term.setCursorPos(1,1)
- print("Song:" .. song["name"] )
- print("Author:" .. song["author"] )
- print("Original Author:" .. song["original_author"] )
- -- Start playing
- i = 0
- line1 = ""
- line2 = ""
- line3 = ""
- line4 = ""
- line5 = ""
- line6 = ""
- line7 = ""
- line8 = ""
- line9 = ""
- line10 = ""
- while i * song["delay"] < song["lenght"] + 1 do
- term.setCursorPos(1,4)
- if ptoggle ~= 1 then
- term.clearLine()
- print(i * song["delay"] .."/" .. song["lenght"] .. " Seconds" )
- else
- term.clearLine()
- print(i .."/" .. allNotes .. " Notes" )
- end
- if debug then
- print("[" .. selectedi .. "," .. selectedj .. "]")
- else
- term.clearLine()
- end
- --clear all notes
- displaynotes = "["
- -- read notes for up to 5 parts
- i = i + 1
- if song[i] then
- if ironblock1 then playnotes(ironblock1, 1, int1) end
- if ironblock2 then playnotes(ironblock2, 2, int2) end
- if ironblock3 then playnotes(ironblock3, 3, int3) end
- if ironblock4 then playnotes(ironblock4, 4, int4) end
- if ironblock5 then playnotes(ironblock5, 5, int5) end
- end
- displaynotes = displaynotes .. "] "
- line1 = line2
- line2 = line3
- line3 = line4
- line4 = line5
- line5 = line6
- line6 = line7
- line7 = line8
- line8 = line9
- line9 = line10
- line10 = displaynotes
- term.setCursorPos(1,9)
- term.clearLine()
- print(line1)
- term.clearLine()
- print(line2)
- term.clearLine()
- print(line3)
- term.clearLine()
- print(line4)
- term.clearLine()
- print(line5)
- term.clearLine()
- print(line6)
- term.clearLine()
- print(line7)
- term.clearLine()
- print(line8)
- term.clearLine()
- print(line9)
- term.clearLine()
- print(line10)
- os.startTimer(song["delay"])
- evt, arg1, arg2 = os.pullEvent()
- input(evt, arg1, arg2)
- if evt ~= "timer" then
- os.sleep(song["delay"])
- end
- end
- if musicplaylist == false then break end
- end
- -- End Playing
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement