Advertisement
Guest User

player

a guest
Aug 29th, 2014
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.56 KB | None | 0 0
  1. print("Welcome to Tesik's music player!")
  2. sleep(1)
  3. while true do
  4.  print("Select output side for speaker or end program:")
  5.  r = io.read("*l")
  6.  if r == "end" then
  7.   error("Bye")
  8.   else
  9.   x = peripheral.wrap(r)
  10.   if x == nil then
  11.    print("No speaker found!")
  12.    sleep(1)
  13.    else
  14.    break
  15.   end
  16.  end
  17. end
  18. function note(n)
  19. if n=="E1" or n=="Fb1" then
  20. return 41.20
  21. elseif n=="F1" or n=="E#1" then
  22. return 43.65
  23. elseif n=="F#1" or n=="Gb1" then
  24. return 46.25
  25. elseif n=="G1" then
  26. return 49.00
  27. elseif n=="G#1" or n=="Ab1" then
  28. return 51.91
  29. elseif n=="A1" then
  30. return 55.00
  31. elseif n=="A#1" or n=="Bb1" then
  32. return 58.27
  33. elseif n=="B1" or n=="Cb2" then
  34. return 61.74
  35. elseif n=="C2" or n=="B#1" then
  36. return 65.41
  37. elseif n=="C#2" or n=="Db2" then
  38. return 69.30
  39. elseif n=="D2" then
  40. return 73.42
  41. elseif n=="D#2" or n=="Eb2" then
  42. return 77.78
  43. elseif n=="E2" or n=="Fb2" then
  44. return 82.41
  45. elseif n=="F2" or n=="E#2" then
  46. return 87.31
  47. elseif n=="F#2" or n=="Gb2" then
  48. return 92.50
  49. elseif n=="G2" then
  50. return 98.00
  51. elseif n=="G#2" or n=="Ab2" then
  52. return 103.83
  53. elseif n=="A2" then
  54. return 110.00
  55. elseif n=="A#2" or n=="Bb2" then
  56. return 116.54
  57. elseif n=="B2" or n=="Cb2" then
  58. return 123.47
  59. elseif n=="C3" or n=="B#2" then
  60. return 130.81
  61. elseif n=="C#3" or n=="Db3" then
  62. return 138.59
  63. elseif n=="D3" then
  64. return 146.83
  65. elseif n=="D#3" or n=="Eb3" then
  66. return 155.56
  67. elseif n=="E3" or n=="Fb3" then
  68. return 164.81
  69. elseif n=="F3" or n=="E#3" then
  70. return 174.61
  71. elseif n=="F#3" or n=="Gb3" then
  72. return 185.00
  73. elseif n=="G3" then
  74. return 196.00
  75. elseif n=="G#3" or n=="Ab3" then
  76. return 207.65
  77. elseif n=="A3" then
  78. return 220.00
  79. elseif n=="A#3" or n=="Bb3" then
  80. return 233.08
  81. elseif n=="B3" or n=="Cb3" then
  82. return 246.94
  83. elseif n=="C4" or n=="B#3" then
  84. return 261.63
  85. elseif n=="C#4" or n=="Db4" then
  86. return 277.18
  87. elseif n=="D4" then
  88. return 293.66
  89. elseif n=="D#4" or n=="Eb4" then
  90. return 311.13
  91. elseif n=="E4" or n=="Fb4" then
  92. return 329.63
  93. elseif n=="F4" or n=="E#4" then
  94. return 349.23
  95. elseif n=="F#4" or n=="Gb4" then
  96. return 369.99
  97. elseif n=="G4" then
  98. return 392.00
  99. elseif n=="G#4" or n=="Ab4" then
  100. return 415.30
  101. elseif n=="A4" then
  102. return 440.00
  103. elseif n=="A#4" or n=="Bb4" then
  104. return 466.16
  105. elseif n=="B4" or n=="Cb4" then
  106. return 493.88
  107. elseif n=="C5" or n=="B#4" then
  108. return 523.25
  109. elseif n=="C#5" or n=="Db5" then
  110. return 554.37
  111. elseif n=="D5" then
  112. return 587.33
  113. elseif n=="D#5" or n=="Eb5" then
  114. return 622.25
  115. elseif n=="E5" or n=="Fb5" then
  116. return 659.25
  117. elseif n=="F5" or n=="E#5" then
  118. return 698.46
  119. elseif n=="F#5" or n=="Gb5" then
  120. return 739.99
  121. elseif n=="G5" then
  122. return 783.99
  123. elseif n=="G#5" or n=="Ab5" then
  124. return 830.61
  125. elseif n=="A5" then
  126. return 880.00
  127. elseif n=="A#5" or n=="Bb5" then
  128. return 932.33
  129. elseif n=="B5" or n=="Cb5" then
  130. return 987.77
  131. elseif n=="C6" or n=="B#5" then
  132. return 1046.50
  133. elseif n=="C#6" or n=="Db6" then
  134. return 1108.73
  135. elseif n=="D6" then
  136. return 1174.66
  137. elseif n=="D#6" or n=="Eb6" then
  138. return 1244.51
  139. elseif n=="E6" or n=="Fb6" then
  140. return 1318.51
  141. elseif n=="F6" or n=="E#6" then
  142. return 1396.91
  143. elseif n=="F#6" or n=="Gb6" then
  144. return 1479.98
  145. elseif n=="G6" then
  146. return 1567.98
  147. elseif n=="G#6" or n=="Ab6" then
  148. return 1661.22
  149. elseif n=="A6" then
  150. return 1760.00
  151. elseif n=="A#6" or n=="Bb6" then
  152. return 1864.66
  153. elseif n=="B6" or n=="Cb6" then
  154. return 1975.53
  155. elseif n=="C7" or n=="B#1" then
  156. return 2093.00
  157. elseif n=="C#7" or n=="Db6" then
  158. return 2217.46
  159. elseif n=="D7" then
  160. return 2349.32
  161. elseif n=="D#7" or n=="Eb7" then
  162. return 2489.02
  163. elseif n=="E7" or n=="Fb7" then
  164. return 2637.02
  165. elseif n=="F7" or n=="E#7" then
  166. return 2793.83
  167. elseif n=="F#7" or n=="Gb7" then
  168. return 2959.96
  169. elseif n=="G7" then
  170. return 3135.96
  171. elseif n=="G#7" or n=="Ab7" then
  172. return 3322.44
  173. elseif n=="A7" then
  174. return 3520.00
  175. elseif n=="A#7" or n=="Bb7" then
  176. return 3729.31
  177. elseif n=="B7" or n=="Cb7" then
  178. return 3951.07
  179. elseif n=="C8" or n=="B#7" then
  180. return 4186.01
  181. elseif n=="C#8" or n=="Db8" then
  182. return 4434.92
  183. elseif n=="D8" then
  184. return 4698.63
  185. elseif n=="D#8" or n=="Eb8" then
  186. return 4978.03
  187. elseif n=="E8" or n=="Fb8" then
  188. return 5274.04
  189. elseif n=="F8" or n=="E#8" then
  190. return 5587.65
  191. elseif n=="F#8" or n=="Gb8" then
  192. return 5919.91
  193. elseif n=="G8" then
  194. return 6271.93
  195. elseif n=="G#8" or n=="Ab8" then
  196. return 6644.88
  197. elseif n=="A8" then
  198. return 7040.00
  199. elseif n=="A#8" or n=="Bb8" then
  200. return 7458.62
  201. elseif n=="X" then
  202. return 0
  203. else
  204. return nil
  205. end
  206. end
  207. function stop()
  208. x.stop(1)
  209. end
  210. function play(n, t)
  211. if note(n)==nil then
  212. elseif note(n)==0 then
  213. stop()
  214. sleep(t)
  215. else
  216. x.start(1, note(n))
  217. sleep(t)
  218. end
  219. end
  220. notes = {}
  221. lengths = {}
  222. a = 0
  223. while true do
  224.  a = a + 1
  225.  while true do
  226.   print("Enter a note or end:")
  227.   r = io.read("*l")
  228.   if r == "end" then
  229.    ending = true
  230.    break
  231.    elseif note(r) == nil then
  232.    print("Invalid note")
  233.    sleep(0.5)
  234.    else
  235.    notes[a] = r
  236.    break
  237.   end
  238.  end
  239.  if ending then
  240.   break
  241.  end
  242.  while true do
  243.   print("Enter note length[s]:")
  244.   r =io.read("*l")
  245.   if tonumber(r) == nil then
  246.    print("Invalid number!")
  247.    sleep(0.5)
  248.    else
  249.    
  250.    lengths[a] = tonumber(r)
  251.    break
  252.   end
  253.  end
  254. end
  255. sleep(0.5)
  256. shell.run("clear")
  257. ending = false
  258. b = a
  259. print("Playing...")
  260.  while true do
  261.  if ending then
  262.   break
  263.  end
  264.  a = 0
  265.  repeat
  266.   a = a + 1
  267.   print(notes[a])
  268.   play(notes[a], lengths[a])
  269.  until a == b
  270.  stop()
  271.   while true do
  272.   print("Repeat? y/n")
  273.   r = io.read("*l")
  274.   if r == "y" then
  275.    break
  276.    elseif r == "n" then
  277.    ending = true
  278.    break
  279.   end
  280.  end
  281. end
  282. print("Bye...")
  283. sleep(1.7)
  284. shell.run("clear")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement