Advertisement
ozozx235

playRec.lua

May 27th, 2021
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.98 KB | None | 0 0
  1. VOL = 1
  2. TPB = 10
  3. spkr = peripheral.wrap("right")
  4. os.loadAPI("diskInfo.lua")
  5. function playTrack(tool,strin)
  6.     --print("track="..strin)
  7.     _, fns = string.find(strin,"%d*[;,]")
  8.     str2 = string.sub(strin,1,fns)
  9.     pit = tonumber(string.match(str2,"%d+"))
  10.     if pit ~= nil then
  11.         spkr.playNote(tool,VOL,pit)
  12.     end
  13.     strin = string.sub(strin,fns+1,string.len(strin))
  14.     if string.match(str2,"[;,]") == "," then
  15.         strin=playTrack(tool,strin)
  16.     end
  17.     --print("str2="..str2)
  18.     --print("trackend="..string.sub(strin,fns+1,string.len(strin)))
  19.     return strin
  20. end
  21. if fs.isDir("disk") == false then
  22. printError("no disk")
  23. return
  24. end
  25. if fs.exists("disk/info.cfg") == false then
  26. printError("no signature")
  27. return
  28. end
  29. instlist = {"harp", "bass", "snare", "hat", "basedrum", "flute", "bell", "chime", "guitar", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling"}
  30. inst = {}
  31. j=1
  32. if fs.exists("disk/track.nbs") == false then
  33.     printError("no track")
  34.     return
  35. end
  36. for line in io.lines("disk/track.nbs") do
  37.     str=string.match(line,"%a+=")
  38.     str=string.sub(str,1,string.len(str)-1)
  39.     --print(str)
  40.     for i, val in ipairs(instlist) do
  41.         flg=0
  42.         idx=0
  43.         if str == val then
  44.             flg=flg+1
  45.             --print(str.."  "..val.."  "..i.."  "..flg)
  46.         end
  47.         if flg > 1 then
  48.             printError("track corrupted")
  49.             return
  50.         end
  51.         if flg == 1 then
  52.             temp=string.match(line,"=.*")
  53.             inst[str]=string.sub(temp,2,string.len(temp))
  54.             --print("trk= "..inst[str])
  55.         end
  56.     end
  57. end
  58. num = 0
  59. for _ in pairs(inst) do num = num + 1 end
  60. --print("num="..num)
  61. if num == 0 then
  62. printError("disk is empty")
  63. return
  64. end
  65. inf = diskInfo.getInfo()
  66. print("Playing "..inf.name.." by "..inf.comp)
  67. VOL=inf.vol
  68. TPB=inf.tpb
  69. while(num>0) do
  70.     --print("shit")
  71.     for i in pairs(inst) do
  72.         --print(i.." tool  trk "..inst[i])
  73.         inst[i]=playTrack(i,inst[i])
  74.         if inst[i] == "" then
  75.             inst[i] = nil
  76.         end
  77.     end
  78.     num = 0
  79.     for _ in pairs(inst) do num = num + 1 end
  80.     sleep(1/TPB)
  81.     --print(1/TPB)
  82.     --print("num still="..num)
  83. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement