Lucun_Ji

music_box.lua

Jul 8th, 2020 (edited)
2,149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.96 KB | None | 0 0
  1. local factor = 4
  2.  
  3. local freq = {
  4.   8.66196,
  5.   9.17702,
  6.   9.72272,
  7.   10.3009,
  8.   10.9134,
  9.   11.5623,
  10.   12.2499,
  11.   12.9783,
  12.   13.75,
  13.   14.5676,
  14.   15.4339,
  15.   16.3516,
  16.   17.3239,
  17.   18.354,
  18.   19.4454,
  19.   20.6017,
  20.   21.8268,
  21.   23.1247,
  22.   24.4997,
  23.   25.9565,
  24.   27.5,
  25.   29.1352,
  26.   30.8677,
  27.   32.7032,
  28.   34.6478,
  29.   36.7081,
  30.   38.8909,
  31.   41.2034,
  32.   43.6535,
  33.   46.2493,
  34.   48.9994,
  35.   51.9131,
  36.   55,
  37.   58.2705,
  38.   61.7354,
  39.   65.4064,
  40.   69.2957,
  41.   73.4162,
  42.   77.7817,
  43.   82.4069,
  44.   87.3071,
  45.   92.4986,
  46.   97.9989,
  47.   103.826,
  48.   110,
  49.   116.541,
  50.   123.471,
  51.   130.813,
  52.   138.591,
  53.   146.832,
  54.   155.563,
  55.   164.814,
  56.   174.614,
  57.   184.997,
  58.   195.998,
  59.   207.652,
  60.   220,
  61.   233.082,
  62.   246.942,
  63.   261.626,
  64.   277.183,
  65.   293.665,
  66.   311.127,
  67.   329.628,
  68.   349.228,
  69.   369.994,
  70.   391.995,
  71.   415.305,
  72.   440,
  73.   466.164,
  74.   493.883,
  75.   523.251,
  76.   554.365,
  77.   587.33,
  78.   622.254,
  79.   659.255,
  80.   698.456,
  81.   739.989,
  82.   783.991,
  83.   830.609,
  84.   880,
  85.   932.328,
  86.   987.767,
  87.   1046.5,
  88.   1108.73,
  89.   1174.66,
  90.   1244.51,
  91.   1318.51,
  92.   1396.91,
  93.   1479.98,
  94.   1567.98,
  95.   1661.22,
  96.   1760,
  97.   1864.66,
  98.   1975.53,
  99. }
  100.  
  101. local notes = {
  102.   {tone=0,time=0},
  103.   {tone=76,time=56},
  104.   {tone=0,time=1},
  105.   {tone=79,time=26},
  106.   {tone=0,time=37},
  107.   {tone=81,time=15},
  108.   {tone=0,time=28},
  109.   {tone=79,time=210},
  110.   {tone=0,time=1},
  111.   {tone=81,time=52},
  112.   {tone=0,time=1},
  113.   {tone=83,time=104},
  114.   {tone=0,time=2},
  115.   {tone=83,time=25},
  116.   {tone=0,time=42},
  117.   {tone=81,time=195},
  118.   {tone=0,time=1},
  119.   {tone=75,time=52},
  120.   {tone=0,time=1},
  121.   {tone=76,time=52},
  122.   {tone=0,time=1},
  123.   {tone=79,time=25},
  124.   {tone=0,time=33},
  125.   {tone=81,time=20},
  126.   {tone=0,time=28},
  127.   {tone=79,time=210},
  128.   {tone=0,time=1},
  129.   {tone=80,time=52},
  130.   {tone=0,time=1},
  131.   {tone=81,time=104},
  132.   {tone=0,time=1},
  133.   {tone=81,time=26},
  134.   {tone=0,time=37},
  135.   {tone=79,time=200},
  136.   {tone=0,time=1},
  137.   {tone=80,time=52},
  138.   {tone=0,time=1},
  139.   {tone=81,time=52},
  140.   {tone=0,time=54},
  141.   {tone=83,time=0},
  142.   {tone=0,time=0},
  143.   {tone=84,time=25},
  144.   {tone=0,time=27},
  145.   {tone=81,time=211},
  146.   {tone=0,time=1},
  147.   {tone=80,time=51},
  148.   {tone=0,time=1},
  149.   {tone=79,time=52},
  150.   {tone=0,time=1},
  151.   {tone=80,time=52},
  152.   {tone=0,time=1},
  153.   {tone=81,time=25},
  154.   {tone=0,time=33},
  155.   {tone=76,time=240},
  156.   {tone=0,time=19},
  157.   {tone=76,time=78},
  158.   {tone=0,time=23},
  159.   {tone=75,time=0},
  160.   {tone=0,time=0},
  161.   {tone=74,time=30},
  162.   {tone=0,time=27},
  163.   {tone=76,time=78},
  164.   {tone=0,time=1},
  165.   {tone=75,time=26},
  166.   {tone=0,time=1},
  167.   {tone=74,time=25},
  168.   {tone=0,time=28},
  169.   {tone=76,time=24},
  170.   {tone=0,time=28},
  171.   {tone=74,time=26},
  172.   {tone=0,time=27},
  173.   {tone=79,time=399},
  174. }
  175.  
  176. function sleep(seconds)
  177.   local deadline = computer.uptime() + seconds
  178.   repeat
  179.   until computer.uptime() >= deadline
  180. end
  181.  
  182. while true do
  183.   for k, v in ipairs(notes) do
  184.     if v.tone == 0 then
  185.       sleep(v.time / 1000 * factor)
  186.     else
  187.       computer.beep(freq[v.tone], v.time / 1000 * factor)
  188.     end
  189.   end
  190. end
Add Comment
Please, Sign In to add comment