はじめに
以前、TouchDesignerで照明を制御する際にArt-Netを用いてDMXの通信を行うための記事を投稿しましたが、今回はそれをMaxにて行いたいと思います。
そもそもMaxで照明?
サウンド系の処理に用いられることの多いMaxという言語で、わざわざ照明の制御するの?って思われる方も多いかと思います。
確かにサウンド系の作品等で使われている事例をよく聞きますが、音の処理以外の使用例もたくさんあります。具体例を上げたらキリがないですが、ぜひMaxアーティストパッチのサイトをご参照ください。
また、僕個人としては今年の夏に参加した「Max Summer School 2019」にて堀尾寛太さんが授業で紹介されていた「MaxからArt-Net経由で照明を制御できる」という話に驚きました。
本当に、何でもできるんだな...と。
ということで、今回はそれを実際に実装し、記事を通してMAXのさらなるポテンシャルを感じて頂ければと思います。
ちなみに、MaxでDMXを出力する時にENTTECのDMXUSB PROという機材を使用するには、dmxusbproというオブジェクトをインストールして使用する必要があるのですが、こちらは有料のオブジェクトになります。(さらに、MAX4.5向けに作ったものなので、8以降は不具合等出る場面もあるようです。)
対して、Art-Netを出力するためのオブジェクト群であるimp.dmxは、無料でインストールすることができます。また、現状ではMAX8でも特に問題なく動作しています。
MAXで照明をやるのに"Art-Net"を用いるというのは良い選択肢のようですね。
準備1
では、さっそくやっていきましょう。
今回用意したものは
- PC(Macbook pro)
- USB Type-c変換
- LANケーブル
- ENTTEC OPENDMX ETHERNET(以下、ODE。今回使用したのはmk2ではないです)
- 5PIN(オス) - 3PIN(メス)変換
- キャノンケーブル(DMXケーブルがなかったので、オーディオ用ケーブルを代用しました)
- moving head(DMX制御できる照明機材) * 2
です。
照明機材を2つにした以外は、前回と同じですね。
MAXのバージョンは 8.1.1 になります。
接続も前回と同様で、上記の順番で繋げば大丈夫です。
今回の記事では左側がmoving1、右側がmoving2になります。
ちなみに今回使用するmoving headのDMXチャンネルの仕様ですが、
- Pan
- Tilt
- Dimming and strobe
- Red
- Green
- Blue
- White
- motor speed
- reset
です。
準備2
今回はパッチングをする前に、さらに2つ準備することがあります。
- ネットワーク設定
- エクスターナルオブジェクトのインストール
です。
ネットワーク設定
ネットワークの設定は前回の記事と同じですので、省略します。
今回も
- PCのIPアドレス : 169.254.206.100
- サブネットマスク : 255.255.0.0
- ルーター : 169.254.206.1
- ODE : 169.254.206.200 (universe 0)
に設定しました。
エクスターナルオブジェクトのインストール
上でも紹介しましたがimp.dmxというオブジェクト群が必要になります。
以下、mac OSでのエクスターナルオブジェクトをMAXにインストールする方法を確認します。
まず、リンクで移動したサイトの"imp.dmx Version 0.5"というものをダウンロードしてください。
ダウンロードした"imp.dmx"というファイルを"書類 -> Max 8 -> Library"の中に入れます。
以上です。
Maxを立ち上げるとエクスターナルのオブジェクトが使える状態になっています。
パッチング
あとはエクスターナルオブジェクトのヘルプを見て頂くと、だいたい使い方が分かるかと思います!
と言いたいところですが、これが意外とよく分からない...(僕には難しいです。)
ので、今回はODEへのシグナルの送り方と、MAXでの(僕個人にとって)テストしやすそうな照明制御のパッチの説明をしたいと思います。
自分の良いように作り変えて頂きたいです!
全体図は以下のようになります。
また、この中の"signal-for-address"のパッチの中身は以下のようになります。
では、解説をしていきます。
ODEへの送り方
見ての通り"imp.artnet.controller"というオブジェクトに信号を入れていきます。
このとき、AttributeとしてODEのipとuniverseを指定してあげます。
今回は上記の通り"@unicast_ip 169.254.206.200 @universe 0"と指定しました。
そして、このオブジェクトにmessageオブジェクトで"channnel (DMXのチャンネル) (値[0~255])"の順番でリストを作り、メッセージとして入力します。
例えばDMXアドレスの3chに255を送るときは(channel 3 255)と書いたmessageオブジェクトを作り、"imp.artnet.controller"に入力してあげます。
この部分の処理は上のパッチの"signal-for-address"内で行っています。
照明制御のパッチ
"signal-for-address"オブジェクトは
input1 DMXのチャンネルへ送る値(mc.inputの左側のout)
input2 各照明機材の対応ch(mc.inputの右側のout)
input3 各照明機材のstart address
と、入力しています。
今回、僕が使っている照明機材は9chモード(操るのにDMXチャンネルを9ch使用する)ムービングライトなので、mc.inputに9のinletを用意して、まとめています。
また、それに伴いmoving1のstart addressを1、moving2のstart addressを10(moving1の9chの次)に指定しています。
この辺は、事前に決定できるものなので、loadbangで毎回自動で呼び出せるようにしていて良いでしょう。
右上の方で、closebangにより閉じる際に0の値を全てのaddressへ送っているのも重要です。
↓MaxにてDMXを制御しているデモです。↓
Test "DMX" via "Art-Net" (in Max)#Max #DMX pic.twitter.com/5rMYrIkqTR
— LUDO TAKEBE (@for_LUDO) December 14, 2019
いやー、やっぱり光って動くと楽しいですね。
最後に
今回はMaxにてDMXをArt-Net経由にて制御しました。
いかがでしたか?
Maxのさらなる可能性を感じて頂けたのではないでしょうか。
今回は前回以上に上手く説明できなかった気がしますので、「ここ、もっと詳しく説明して!」とか「この辺の説明してなくない?」といったこともコメント頂けたらと思います。
よろこんで追記します。
また、「ここの説明は間違ってるよ。」などのご指摘も頂けると大変嬉しいです!
よろしくお願いします。
Max界隈、盛り上がっていきましょ〜〜。