「ADX2LE_OSC」の編集履歴(バックアップ)一覧に戻る
再生 | /adx2/XXX/playcueid | [cueId(int:0~65535)] | キューIDで再生 |
再生 | /adx2/XXX/playcuename | [cueName(string)] | キュー名で再生 |
停止 | /adx2/XXX/stop | プレーヤを停止 | |
ポーズ | /adx2/XXX/pause | [pauseFlag(int:0 or 1)] | プレーヤをポーズ/ポーズ解除 |
AISAC | /adx2/XXX/aisac | [aisacId(int:0~15)] [aisacValue(float:0.0~1.0)] | AISACIDでAISACコントロール |
AISAC | /adx2/XXX/aisacname | [aisacName(string)] [aisacVaue(float:0.0~1.0)] | AISAC名でAISACコントロール |
リセット | /adx2/XXX/reset | プレーヤをリセット |
再起動 | /adx2/restart | OSCプレーヤ全体を再起動 |
Processing + ADX2LE (OSC) という組み合わせのサンプルを作成してみました。まだ作り始めたばかりですが、 うまく作れたらばOSCサポートしているゲームエンジンとかアプリケーション間でいろいろ捗りそうな予感がしています。 OSC詳しくないのでつっこみよろしくお願いします。
ここでは、以下のようなサンプルアプリを想定しています。
ADX2LEはUnityProでしか動作しませんが、アプリケーション化した場合は、Windows/Mac上で動作します。 ADX2LEBasicPlayerOSCというアプリケーションを作成し、サウンド処理をバックグラウンドで行うようにします。 これにより、OSCをもつ環境から自由にADX2LEをコントロールするのが目標となります。
Processingからの呼び出しは以下のような感じになります。 import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; PImage img; void setup() { size(480,240); img = loadImage("background.png"); oscP5 = new OscP5(this,9000); myRemoteLocation = new NetAddress("127.0.0.1",8000); } int playerState = 0; int toggle = 0; void draw() { //background(204); image(img,0,0); if(mousePressed) { if(toggle == 0){ if(playerState == 0){ OscMessage myMessage = new OscMessage("/adx2/0/playcueid"); myMessage.add(10); // cueId oscP5.send(myMessage, myRemoteLocation); playerState = 1; } else if(playerState == 1){ OscMessage myMessage = new OscMessage("/adx2/0/stop"); oscP5.send(myMessage, myRemoteLocation); playerState = 0; } toggle = 1; } } else { toggle = 0; } if(playerState == 0){ fill(255); } else { fill(0); OscMessage myMessage = new OscMessage("/adx2/0/aisac"); myMessage.add(0); // aisacId myMessage.add(mouseX/480f); // aisacValue oscP5.send(myMessage, myRemoteLocation); myMessage = new OscMessage("/adx2/0/aisac"); myMessage.add(1); // aisacId myMessage.add(mouseY/240f); // aisacValue oscP5.send(myMessage, myRemoteLocation); } ellipse(mouseX,mouseY,60,60); fill(127); text("0",mouseX-4,mouseY-4); } void oscEvent(OscMessage theOscMessage) { /* print the address pattern and the typetag of the received OscMessage */ print("### received an osc message."); print(" addrpattern: "+theOscMessage.addrPattern()); println(" typetag: "+theOscMessage.typetag()); }
ブロック指定 | /adx2/XXX/blockindex | [blockIndex(int)] | ブロックを指定する |
再生開始位置指定 | /adx2/XXX/settime | [time_ms(int)] | 開始時刻を指定する |
ACBロード | /adx2/loadacb | [acbPath(string)] | ACBをパス指定でロードする。ロードできるACBは1つのみ |