DSLでMIDI変換スクリプトが書けるLV2プラグインを作成した
作りました。
これまではプログラマブルなMIDI情報の変換にはmididingsとかQmidirouteを使っていましたが、LV2プラグインで欲しいなと思っていました。
スタックマシンなら簡単に実装できるかなと思い、作ってみたところなんとか作成することができました。
命令はすべてASCIIで表現可能なため、Carlaで保存されたXMLを直接編集することで内容を変更することが可能です。 独自の設定GUIは今のところありません。
命令はbrainf*ckの元となったFALSEをベースにしていますが、かなり別物になっています。 そのまま書くと訳が分かりませんので、別の言語(RubyやPythonなど)で生成するようにした方がよいかと思います。
スクリプトの例として以下のようなものを作成しております。
5度上のノートを追加するやつ
Tx8*7-<3N%R%C\7+\
ノートオフを無視するやつ
C%%x/8-3Z%R%%%%
ベロシティを少し上げるやつ
$x8*7-<5Z%7+R%%x8*1-
MIDI CHを1増やすやつ
@1+@@
nanoPAD2の8つのパッドにそれぞれの音程をセットするやつ
\$4h-7N%%5h\R%$5h-7N%%4h\R%$6h-7N%%3i\R%$7h-7N%%2i\R%$8h-7N%%1i\R%$9h-7N%%0i\R%$ah-7N%%fh\R%$bh-7N%%eh\R%$ch-7N%%dh\R%$dh-7N%%ch\R%$eh-7N%%bh\R%$fh-7N%%ah\R%$0i-7N%%9h\R%$1i-7N%%8h\R%$2i-7N%%7h\R%$3i-7N%%6h\R%\
最後のは訳が分かりませんが、ジェネレータ側のdrum_pad.rbを見ていただければなんとなく分かるかと思います。
命令についての解説が全くないので、ぼちぼち書いていこうかと思っています。