Traktor Pro 2とProcessingの連携(2)
前回の記事:Traktor Pro 2とProcessingの連携 - いるかアイス日記
はじめに
前回は「TraktorのツマミをいじったらProcessingでインタラクティブになにか描画してくれるような事」をやりました。つまりTraktor→Processingでしたが、今回はその逆で、Processing側でなにか操作したらTraktorが反応するみたいな事をやってみたいと思います。
協力:id:mactkg (/ ̄ー ̄)/
実際にやってみる
Traktor のI/O設定
※ここは前回と同じですが一応書いておきます。
Traktor マッピングの設定
- 再びTraktor画面でPreferencesを開く(⌘+,)。
- Assignment TableでAdd inを押してcontrolを追加。今回はPlay/Pause(Deck/Common)をマッピングします。
- Device Mappingでこの操作をどの信号に割り当てるか指定します。今回はCh01.CC.000にマッピング。
前回はNoteにマッピングしたのですが、値の変化のみであるCC(Controll Change)の方がパラメタだけやり取りするのに向いているっぽいのでこっちを使います。
Processingの設定
promidi というProcessingのライブラリの準備 ここのライブラリを落としておきます。(前回と同じです) http://creativecomputing.cc/p5libs/promidi/
次のコードを書く
import processing.opengl.*; import promidi.*; MidiIO midiIO; MidiOut midiOut; int sw = 0;//オンオフスイッチ void setup() { size(300, 300); background(0); smooth(); //get an instance of MidiIO midiIO = MidiIO.getInstance(this); //print a list with all available devices midiIO.printDevices(); //getMidiOut(midiChannel, outDeviceNumber); midiOut = midiIO.getMidiOut(0, "Traktor Virtual Input"); //ch1 } void draw() { background(0); if (sw==1)fill(100, 190, 255); else fill(255); ellipse(width/2, height/2, 100, 100); } //ここでMIDIを送信!!!!! void sendMIDI(int value) { Controller c = new Controller(0, value);//000, 127(スイッチON) //↑トラクタ側でも000にマッピングしておくこと!!! midiOut.sendController(c); } void mousePressed() { if (dist(mouseX, mouseY, width/2, height/2)<50) { sw = 1-sw;//押す度にオンオフ切り替え println("sw="+sw); sendMIDI(0<sw ? 127 : 0);//←if(0<sw) { //true } else { //false } } }
これで円をクリックすると、A Deckの曲が再生され、もう一回押すと止まる、といったインタラクションが実現できます!
おわり。