Musical scale: Difference between revisions
Content added Content deleted
(→{{header|Lua}}: added Lua solution) |
|||
Line 638: | Line 638: | ||
150 return |
150 return |
||
160 data 1,3,5,6,8,10,12,13,-1</lang> |
160 data 1,3,5,6,8,10,12,13,-1</lang> |
||
=={{header|Lua}}== |
|||
Lua has no native sound support. The most portable solution is to write a MIDI file.. |
|||
<lang lua>c = string.char |
|||
midi = "MThd" .. c(0,0,0,6,0,0,0,1,0,96) -- header |
|||
midi = midi .. "MTrk" .. c(0,0,0,8*8+4) -- track |
|||
for _,note in ipairs{60,62,64,65,67,69,71,72} do |
|||
midi = midi .. c(0, 0x90, note, 0x40, 0x60, 0x80, note, 0) -- notes |
|||
end |
|||
midi = midi .. c(0, 0xFF, 0x2F, 0) -- end |
|||
file = io.open("scale.mid", "wb") |
|||
file:write(midi) |
|||
file:close() |
|||
-- (optional: hex dump to screen) |
|||
midi:gsub(".", function(c) io.write(string.format("%02X ", string.byte(c))) end)</lang> |
|||
{{out}} |
|||
<pre>4D 54 68 64 00 00 00 06 00 00 00 01 00 60 4D 54 72 6B 00 00 00 44 00 90 3C 40 60 80 3C 00 00 90 3E 40 60 80 3E 00 00 90 40 40 60 80 40 00 00 90 41 40 60 80 41 00 00 90 43 40 60 80 43 00 00 90 45 40 60 80 45 00 00 90 47 40 60 80 47 00 00 90 48 40 60 80 48 00 00 FF 2F 00</pre> |
|||
=={{header|M2000 Interpreter}}== |
=={{header|M2000 Interpreter}}== |