DSLでMIDI変換スクリプトが書けるLV2プラグインを作成した

作りました。

f:id:ohac:20180917180640p:plain

github.com

これまではプログラマブルMIDI情報の変換にはmididingsとかQmidirouteを使っていましたが、LV2プラグインで欲しいなと思っていました。

スタックマシンなら簡単に実装できるかなと思い、作ってみたところなんとか作成することができました。

命令はすべてASCIIで表現可能なため、Carlaで保存されたXMLを直接編集することで内容を変更することが可能です。 独自の設定GUIは今のところありません。

命令はbrainf*ckの元となったFALSEをベースにしていますが、かなり別物になっています。 そのまま書くと訳が分かりませんので、別の言語(RubyPythonなど)で生成するようにした方がよいかと思います。

スクリプトの例として以下のようなものを作成しております。

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を見ていただければなんとなく分かるかと思います。

命令についての解説が全くないので、ぼちぼち書いていこうかと思っています。