Max/MSP でDoctorMXから出てくるOSCを受信する

Cycling ’74 Max で、DoctorMX OSC機能 から出てくるOSCを取り扱う方法について解説します。

目次

DoctorMXのOSCは「OSC-Blob」

DoctorMXには流れ図に「OSC」の機能があって、任意のUDPポートにDMX信号と同等の内容をOSCで「送信」することができます。

しかし、このOSCメッセージをMax側で単に udpreceive しても、エラーになってしまいます。

「OSC Unrecognized type tag b. Unable to process message」と表示され、何も出力されない

この原因は、DoctorMXが出すOSCが、「OSC-Blob」という特殊なデータ型であるためです。OSC-Blobは、一度に大量の数値を送信するために用いられるデータ型で、DMXのように、一度に512chぶん、しかも何百回も繰り返し送信する必要がある場合などに適する型です。

なお、DoctorMXの「シリアル」機能で単発のOSCを送信した場合は、そのまま udpreceive で受信することができます。Qlab用の操作コマンドなど、単発的に命令を出せば良い場合などはこれで十分です。

ちなみに、PC卓「QLC+」から出てくるOSCも同様に、そのまま受信できることが知られています。(本来これもBlob的性質だと思うのですが、QLC+では単発のOSCをたくさん出すことで処理しています)

OSC-BlobをMaxで受信する

OSC-BlobをMaxで正常に取り扱うためには、以下2つの操作が必要です。

  • udpreceive に「a」を付けて「フルパケットモード」にする
  • CNMATのOSC関連外部オブジェクトをダウンロードして使えるようにする

まず1つ目ですが、[udpreceive ポート番号] に続けて何らかの文字 (aでなくても良いですが、仮にaとします) を付けると、「フルパケットモード」と言って、OSCの生データをそのまま出す状態になります。実はudpreceiveは、udpと言っておきながら、特定のOSCメッセージに特化した仕様になっているので、その制限を外してあげるわけです。

FullPacketモードにしたことで、エラーが出ずに何らかのメッセージが出ていることが分かる

このままでは、「FullPacket 532140….」とデタラメな数字が動いているだけなので、これをOSCとして解釈できるようにしてあげます。ここで必要になるのが、CNMAT (カリフォルニア大学バークレー校の研究機関である、Center for New Music and Audio Technologies) が作っている一連のOSC関連オブジェクトです。

Maxのかなり初期から使用されているようで、外部オブジェクトですが公式のレファレンスに登場するなど、半分公式オブジェクトのような扱いになっています。

この中で「OpenSoundCountrol」というオブジェクトを udpreceive の下につなげてあげると、DoctorMXが出しているDMXと同じ内容が、Maxで扱える形で出てきます。

「/dmx OSCBlob 513」に続いて、DMX値と同じ値が表示される。最初の値は必ず0になるので捨てて、2番目以降を使う

あとは、これを route なり、zl 関係のオブジェクトをうまく使うなどして、加工すれば、DMX操作に応じてMax側でアクションを起こすことができるでしょう。

……ところで、DoctorMXのOSC機能は、特にUSBインターフェイスボックスを接続していなくても制限なく使えてしまうんですよね。この話が分かる人はすでにDoctorMXを使いこなしているので問題ないと思いますが、くれぐれも悪用をなさらぬよう、良識を持って使いましょう。

おまけ: Max/MSPとは?

Cycling ’74 Max という、信号や数値をパッチコードで繋いでプログラミングをする、「ビジュアルプログラミング言語」のことです。Max/MSPというのは旧称ですが、Maxだけだと一般名詞すぎて伝わらないので、今でもこう呼んでいる人は多いです。

Maxは、インタラクティブなメディアアートの文脈で使用されてきたものであり、異種信号間の相互変換に非常に強いです。映像、音声、キーボード入力、MIDI、OSC、…あらゆる「信号」はMax上で取り扱って相互変換できると言って良いでしょう。

照明で使用するDMXやArt-Netは、標準では対応していませんが、有志が作った外部オブジェクトにより、DMX USB Pro、Art-Net等は一部対応しています。

つまり、映像や音声、その他入力に合わせて照明をインタラクティブに/自動的に動かすことも可能なプログラミング環境です。

興味を持った方は是非チャレンジしてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

高校演劇~大学の学生劇団で照明を経験し、現在は会社員の傍らアマチュアで舞台照明を継続。第39回日本照明家協会賞舞台部門新人賞。非劇場空間の劇場化、舞台照明の歴史が得意。

コメント

コメント一覧 (1件)

コメントする

目次