ということで、rubyインタプリタを組み込んだVSTを試作してみた。
とりあえずMIDIイベントだけに対応した。以下のようなスクリプトを書いたファイルを用意しておくと、ノートに応じてオクターブとチャネルを変更するフィルタになる。後ろにマルチティンバーなシンセを置けばスプリット自由自在なソフトシンセの出来上がりというわけ。いいねえ。
case $mididatas[1]
when note("C0")..note("C4")
set_channel(1)
transpose(24)
when note("C6")..note("C8")
set_channel(3)
transpose(-24)
else
set_channel(2)
end
MIDIイベントごとにrubyインタプリタを起動(!)して、毎回スクリプトを読み込んでMIDIイベントに改変を加えて再送信、というあまりにも富豪な方式なおかげで、スクリプトを編集して保存したらすぐ反映されるのがすばらしすぎる。もちろん負荷は大きいが、手元の環境では破綻するほどではない。さすがはCore2Duo、なんともないぜ。
ある程度まとまったら公開しよう。しかしrubyのdllもつけて配布ってのはちょっとアレだなあ。
(追記)あまりに統一感がないので、以下のように変更。
m=MidiEvent.new
case m.note
when note("C0")..note("C4")
m.channel=3
m.note+=24
when note("C6")..note("C8")
m.channel=1
m.note-=24
else
m.channel=2
end