こんにちは、イシイです。

今回は、ライブやインスタレーションなどで使われるDMX512対応のムービングヘッドライトを操作してみたいと思います。DMX制御には、ヴィジュアルプログラミングツールのTouchDesignerを使用してみました。また、制御用の物理インタフェースとして、MIDIコントローラーのLAUNCH CONTROLも使ってみています。

TouchDesignerとは

TouchDesignerは、Houdini(フーディニ)という3DCGソフトから派生したアプリケーションです。Houdiniはプリレンダリング型のツールですが、Houdiniの前身であるPRISMS、およびHoudiniの開発に携わったGregさんという方がリアルタイムレンダリングの方に興味があり、独立してDERIVATIVE社を立ち上げ、リアルタイムレンダリングツールのTouchDesignerを開発しました。

端的には、ヴィジュアライゼーションやインスタレーションなどに利用しやすい、ノードベースのヴィジュアルプログラミングツール、という捉え方で良いと思います。基本はオペレーターと呼ばれる箱をポチポチつないでいくことで実装できますが、 より深くより強力に利用するために、PythonやGLSLなどでプログラミングも可能です。様々な事例などはここで見ることができます。

DMXとは

舞台演出などで照明の調光や、ムービングヘッドライトの操作、スモークマシンの制御に使われる規格として、DMX512(通称DMX)というものがあります。DMX512では512チャンネルまで対応しており、DMX対応の機材にはそれぞれ使用するチャンネル数が決められていて、例えば10チャンネルを使用するムービングヘッドライトを2台制御するためには、10チャンネル × 2台 = 20チャンネルを使用することになります。

機材には各チャンネルに応じてそれぞれ機能が割り振られていて、例えば「チャンネル1では指定の光量に応じて赤いライトを点ける」「チャンネル2では指定の度数分カメラをパンする」のようになっていて、チャンネル毎に指定量のパラメータを与えることで制御を行います。

DMX対応機材は、DMXケーブルを使ってDMX OUT - DMX INを直列につないでいくことができ、それぞれアドレスを割り当てることによって、1つの制御マシンで複数の機材を個別に制御することができます。先程の例の10チャンネルを使用するムービングヘッドライトを2台制御する場合には、1台目のムービングヘッドライトにアドレス1を指定、10チャンネルを使用するムービングヘッドライトなので、次の2台目のアドレスはアドレス1から10チャンネルを加えた、アドレス11を指定する、という具合です。アドレスは、各機材自身で設定します。

使用するムービングヘッドライトのチャンネルを見てみる

今回使用したのは、AMERICAN DJ の INNO POCKET BEAMQ4というムービングヘッドライトです。このINNO POCKET BEAMQ4には10チャンネルモード、11チャンネルモード、13チャンネルモードの3つがあり、チャンネル数が増えると制御できる内容が増えていきます。今回は最低限の機能が使えれば十分なので、10チャンネルモードで使用しています。

10チャンネルモードの各チャンネルの機能は

チャンネル 機能
1 0 - 255 パン動作 0° - 540°
2 0 - 255 チルト動作 0° - 210°
3 0 - 255 赤色LED 0% - 100%
4 0 - 255 緑色LED 0% - 100%
5 0 - 255 青色LED 0% - 100%
6 0 - 255 白色LED 0% - 100%
7 0 - 255 シャッター・ストロボ制御 ※値によって色々
8 0 - 255 ディマー 0% - 100%
9 0 - 255 パン・チルト動作速度 速い - 遅い
10 0 - 255 ブラックアウト・ストロボ制御 ※値によって色々

というようになっていて、チャンネルに与える値に応じて、動作が異なります。例えば、3チャンネルに値128を飛ばすと、赤色LEDが約50%の明るさで点く、という感じです。

制御用PCと各種機材を設置

今回は、TouchDesignerのウィンドウからマウスなどでムービングヘッドライトを制御するのではなく、novationのLAUNCH CONTROLというものを使って制御してみています。このLAUNCH CONTROLはいわゆるMIDIコントローラーで、シンセサイザーやキーボードなどにあるようなMIDI規格で通信ができる物理インタフェースになります。

また、PCとムービングヘッドライトを接続するために、ENTTEC(エンテック) の DMX USB Proを使っています。なお、TouchDesignerはWindows版088 ver.を使用しています。

thumb_0

各種機材を設置した状態は、

LAUNCH CONTROL -- [USB] -- TouchDesigner[PC] -- [USB] -- DMX USB Pro -- [DMX] -- INNO POCKET BEAMQ4

となります。

TouchDesignerでのポイント

MIDI コントローラーのインタフェースをマッピング

TouchDesigner上で、LAUNCH CONTROLのどのツマミやボタンからデータが流れてきているかを分かりやすくするために、データをマッピングし、チャンネルの名称をリネームしています。

thumb_1

MIDI コントローラーのボタンON/OFFのフィードバック

TouchDesigner上のオペレーター内では、どのボタンが押されたかなどはデータとして見れますが、LAUNCH CONTROLのボタンからも視覚的にわかるように、今回使用するボタンのうちOFFの状態のものには赤色を、ONの状態のものには緑色を設定するようにフィードバックを送ります。

thumb_2

サンプルの再編成

TouchDesigner上の10チャンネルのデータをマージして、そのままDMX OUT CHOPで出力すれば良いのかと思ったのですが、それだとうまく動かなくて、マージしたものをShuffle CHOPで再編成させてからDMX OUTに出力することで解決できました。わりとここがハマりどころでした。

thumb_3

LAUNCH CONTROLからのデータの調整

LAUNCH CONTROLの物理インタフェースからの入力データを、TouchDesigner側でちょっと調整をかけています。具体的には10チャンネルのモードに対して

チャンネル LAUNCH CONTROL 機能
1 ツマミ上列の1つめ ツマミに応じてパン動作 0° - 540°
2 ツマミ上列の2つめ ツマミに応じてチルト動作 0° - 210°
3 ボタン1 ボタンOFFで赤色LED 0% , ボタンONで赤色 100%
4 ボタン2 ボタンOFFで緑色LED 0% , ボタンONで緑色 100%
5 ボタン3 ボタンOFFで青色LED 0% , ボタンONで青色 100%
6 ボタン4 ボタンOFFで白色LED 0% , ボタンONで白色 100%
7 ボタン8 ボタンOFFでシャッターOFF , ボタンONでシャッターON
8 ツマミ下列の8つめ ツマミに応じて光量 0% - 100%
9 ツマミ上列の8つめ ツマミに応じてパン・チルト動作速度 遅 - 速
10 なし 動作指定なし

というようにしています。

thumb_4

パッチの全体像

TouchDesigner上でのパッチ全体像のうち、LAUNCH CONTROLのデータマッピングとフィードバック部分は

thumb_4

のような感じで、LAUNCH CONTROLからのデータの調整とDMX OUT部分がこんな感じになっています。

thumb_5

ムービングヘッドライトをグイングインしてみた

オーディオビジュアルなどと組み合わせると、良い感じになりそうです。

所感

今回のように物理インタフェースで制御するような構成であれば、DMXとMIDIコントローラーでわざわざやるのではなく、単純にDMXコントローラーを使えば良いのですが、調査も兼ねてあえてMIDIコントローラーも使ってみました。

DMXやMIDIをどのように扱えば良いのかの概念さえ分かってしまえば、TouchDesigner上でとても楽に使えることがわかったので、今回はムービングヘッドライト1台のみしか扱っていませんが、10チャンネルモードのムービングヘッドライトであれば、512チャンネルまで使えるDMX512では理論上は50台以上まで1台のPC上で制御できると思われるので、台数が増えるとデータ転送遅延などの問題も出てきそうですが、その辺りも含めて機会があればたくさんつなげた状態で制御をしてみたいです。