2011年12月14日水曜日

Node.jsでつくるプログラマブルなMIDIコントローラ

Node.jsとMIDIの続き。

前の投稿で、Node.jsでMIDI信号を横取りしていましたが、これによってシンセサイザー上のあるスイッチの状態によって、別のスイッチの出力信号を変化させるなんてこともできるようになります。信号を出して終わりじゃなくて、状態を持つかたちですね。

背景

Ableton Live(のお試し版)でDJごっこをして遊んでいるのですが、うちのシンセサイザーはノブが3つついているので、3バンドEQを割り当てるのにちょうどいいんですね。

PICT0014

いっぽうで、2つのチャンネルそれぞれに3バンドEQを割り当てようとすると、6個必要になるわけですね。足りない。ここで、横についているスライダーの位置に連動させられれば、3個でもなんとか事足ります。この信号の組み合わせをNode.jsでやってみましたと。

コード

githubにアップロードしたものを参照ください。ここではそのなかの解説を。

output.openVirtualPort('NodeMidi');

ここでNodeMidiという名前で仮想ポートを立てています。Node.jsにMIDI OUTの端子ができたようなものですね。

その後のinput.onでやっていることは前の投稿とほぼ同じ、スライダーの処理が増えただけです。スライダーやノブの位置を変数に保存しておいて、組み合わせてから出力しています。

output.sendMessage([channel,2,x]);

sendMessageでoutputに指定したポートから、引数のMIDI信号を出力します。冒頭でNodeMidiという仮想ポートを指定しているので、そこから出力することになります。

Live側では、MIDI入力機器としてNodeMidiを指定すればOK。Nodeで変換している間の負荷はLiveの邪魔をしない程度、Nodeの本気です。ひとつ問題があって、node-midiはNodeの0.6系ではコンパイルが通らないので、0.4系を使って動かしています。あとで直す、たぶん。

0 件のコメント:

コメントを投稿