またしばらくこっちに書き忘れていた。
しばらく前の話だけど、gainerの加速度センサでMIDIノートをコントロールするおもちゃを作った: http://veritas-vos-liberabit.com/tmp/2009/accelerando.tar.bz2
一言で書くと、ここでしばらく書いていたportmidiのC#バインディングportmidi-sharpを使って、MIDIノートオン/ノートオフとプログラムチェンジを行う簡単なwinformsアプリに、C#で書かれたgainerコントロールライブラリMnGainerを組み合わせて、gainerに加速度センサを繋いで、アナログ入力にピッチベンド操作をマッピングしただけのものだ。ちなみに、加速度センサで音をいじるからaccelerando.exeという名前になっているだけで、テンポをコントロールするものではない。
やっていることは単純だけど、実際に動作させるためには、いろいろビルドしないといけない。まず、実行環境として、パッチをあてたmono on winfowsまたは.NET Framework、独自ビルドしたmono on OSX、あるいは標準のmono on Linuxが必要だ(Linuxが一番簡単そうだ)。特にOSX環境ではパッチを当てた後でautotoolsマクロも書き換えてやらなければならず、僕は具体的なやり方を把握していない。
次に、実行環境に合わせたportmidiの動的ライブラリが必要になる。こちらは、mono on Windows / .NET Frameworkでしか確認できていないが、OS X環境向けにautotoolizeしたものと、Linux環境向けに以前autotoolizeしたものをバグフィックスしたものを用意してある: portmidi-autotoolize-osx.tar.bz2 portmidi-autotoolize-linux.tar.bz2
portmediaのsvnからチェックアウトしてきて(僕が作っているのはr147の修正だ)、それぞれの環境に合わせたtarballをtrunkディレクトリ上で展開して、autogen.sh -> make -> make install でいけるはずだ。この辺は、一応動作確認してから、おりをみて本家に投げたい(以前のバージョンは動作確認もしないうちに投げてしまった。いずれにせよ本家リポジトリには反映されていない)。
OSX環境で動作させる場合は、accelerando.exe.configファイルを作ってdllmapを設定してやらないといけないかもしれない。内容はおそらく <configuration><dllmap dll="porttime" target="libporttime.dylib" ><dllmap dll="portmidi" target="libportmidi.dylib" ></configuration> でいい。
ちなみに加速度センサからのフィードバックは、実際に繋がっているデバイスの振り幅とかなんも見ないで、適当に実物に合わせてつじつまを合わせているので、機器によっては期待通りに触れてくれないかもしれない。というより、そもそも僕の環境で期待通りの振れ方になってくれなくて困っている。まあ、これはあくまでproof of conceptでしかないので、深入りするとしたらもっときちんとしたものを作ってからだろう...。
というわけで、一応monoを使ってクロスプラットフォームに作られているはずなのだけど、茨の道なので良い子は真似しない方が良いと思う。
Leave a comment