音階をmidiノートナンバーに変えるのがいちいち考えて打つのは面倒なので、変換するプログラムを練習がてらにRubyで書きました。
小文字で英語音名をスペースで区切ってプログラムを走らせるだけです。ただし、#と♭はそれぞれ+とーです。
[code lang=ruby]
p 'e.g.) c d e- e g g+ a'
line = gets
notes = line.split(" ");
midi = []
for note in notes
if note =~ /^[abcdefg][-+]?$/ then
# 幹音
case note[0]
when 99 #c
tmp = 0
when 100 #d
tmp = 2
when 101 #e
tmp = 4
when 102 #f
tmp = 5
when 103 #g
tmp = 7
when 97 #a
tmp = 9
when 98 #b
tmp = 11
end
# #と♭
case note[1]
when 43 #+
tmp+=1
when 45 #-
tmp-=1
end
midi<<tmp
else #error
p "error! illegal string!"
exit()
end
end
i = 0
while midi[i]+12<128
midi << midi[i]+12
i += 1
end
p midi
[/code]
ふう、いい練習だった。
コメントを残す