Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- VOL = 1
- TPB = 10
- spkr = peripheral.wrap("right")
- os.loadAPI("diskInfo.lua")
- function playTrack(tool,strin)
- --print("track="..strin)
- _, fns = string.find(strin,"%d*[;,]")
- str2 = string.sub(strin,1,fns)
- pit = tonumber(string.match(str2,"%d+"))
- if pit ~= nil then
- spkr.playNote(tool,VOL,pit)
- end
- strin = string.sub(strin,fns+1,string.len(strin))
- if string.match(str2,"[;,]") == "," then
- strin=playTrack(tool,strin)
- end
- --print("str2="..str2)
- --print("trackend="..string.sub(strin,fns+1,string.len(strin)))
- return strin
- end
- if fs.isDir("disk") == false then
- printError("no disk")
- return
- end
- if fs.exists("disk/info.cfg") == false then
- printError("no signature")
- return
- end
- instlist = {"harp", "bass", "snare", "hat", "basedrum", "flute", "bell", "chime", "guitar", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling"}
- inst = {}
- j=1
- if fs.exists("disk/track.nbs") == false then
- printError("no track")
- return
- end
- for line in io.lines("disk/track.nbs") do
- str=string.match(line,"%a+=")
- str=string.sub(str,1,string.len(str)-1)
- --print(str)
- for i, val in ipairs(instlist) do
- flg=0
- idx=0
- if str == val then
- flg=flg+1
- --print(str.." "..val.." "..i.." "..flg)
- end
- if flg > 1 then
- printError("track corrupted")
- return
- end
- if flg == 1 then
- temp=string.match(line,"=.*")
- inst[str]=string.sub(temp,2,string.len(temp))
- --print("trk= "..inst[str])
- end
- end
- end
- num = 0
- for _ in pairs(inst) do num = num + 1 end
- --print("num="..num)
- if num == 0 then
- printError("disk is empty")
- return
- end
- inf = diskInfo.getInfo()
- print("Playing "..inf.name.." by "..inf.comp)
- VOL=inf.vol
- TPB=inf.tpb
- while(num>0) do
- --print("shit")
- for i in pairs(inst) do
- --print(i.." tool trk "..inst[i])
- inst[i]=playTrack(i,inst[i])
- if inst[i] == "" then
- inst[i] = nil
- end
- end
- num = 0
- for _ in pairs(inst) do num = num + 1 end
- sleep(1/TPB)
- --print(1/TPB)
- --print("num still="..num)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement