最近は約8年半ほど演出照明に関わっています。演出照明には大きく分けて2種類あります。ひとつは会館や劇場などの屋内照明です。もうひとつは建物のライトアップなどの屋外照明です。私は主に屋内照明に関わってきましたが、一時期屋外照明に関わったこともあります。
いろいろしがらみもあるので、あまり具体的なことを書くのは遠慮しておきます。とはいえ、演出照明に関わっているプログラマーというのはそんなに多くないと思いますので、一般論だけでも興味を持っていただけるのではないかと思います。
今回は初回ですので、演出照明に使っている通信プロトコルについて簡単に紹介してみたいと思います。
DMX512-A
屋内、屋外を問わず、演出照明の制御にはDMX512-A(通称DMX)という通信プロトコルを使っています。DMX512-Aの送信にはEIA-485を使います。RS-485といった方がわかりやすいかもしれませんね。DMX512-Aには専用のケーブル(DMXケーブル)があって、制御装置と照明器具をデイジーチェーン(要するに数珠つなぎ)で接続します。
DMXケーブルは作りが非常にシンプルなこともあって、少々乱暴な扱いをしても壊れません。イーサネットのケーブルなんかに比べれば運用が楽だと思います。
DMX512-Aのプロトコルでは、その名の通り512バイトのデータをひとつの単位として扱います。もう少し具体的にいうと、1本のDMXポートにつき原則として512バイトのデータを定期的に送信します。
データの1バイト、1バイトを「チャンネル」と呼んでいます。基本的には、ひとつのチャンネルでひとつの照明器具を制御します。1バイトなので0から255までの値を表現できますので、0であれば消灯、255であればフル点灯、中間値であればその値(「レベル」と呼んでいます)に応じて明るさを絞ります。こうした制御を「調光」と呼んでいます。
照明器具によっては明るさだけではなく、たとえばLEDでフルカラーを表現できるものもあります。その場合はRed、Green、Blueそれぞれに1チャンネルずつ割り当てて、合計3チャンネルで制御します。中にはもっと複雑な照明器具もあって、何十チャンネルも使って1台を制御することもあります。
イーサDMX
DMX512-Aではひとつのポートにつき512チャンネルしか扱うことができません。多数の照明器具を制御するには、その分だけ物理的なポートが必要になります。DMXケーブルのコネクタは直径が20mmぐらいあるので多数のポートを持たせるとそれだけで装置も大きくなってしまいます。
そういうこともあって、最近はイーサネットを使ってDMXのデータを送信することが多くなっています。DMXの512バイトのデータにヘッダ情報を付加した形のパケットをUDPを使って送信します。イーサDMXの規格にはいくつかあって、代表的なものを挙げるとArt-NetやsACNがあります。
たとえばArt-Netでは、DMXのレベル情報を送信するためのArtDMXというパケットのほか、どんな機器が接続されているかを問い合わせるArtPoll、ArtPollに対して応答するArtPollReplyなどいくつかのパケットが定義されています。そうしたパケットをやりとりしながら照明器具を制御することになります。
イーサDMXを使って送信されたレベル情報は、最終的には「ノード」と呼んでいる変換器を使ってDMX512-Aの信号に変換します。ノードは1台とは限りません。物理的に離れた位置にある照明器具を制御する場合には、複数のノードを使って制御することもあります。
というわけで、簡単ですが演出照明に使っている通信プロトコルについて紹介しました。たまには普段自分がやっている仕事のことを書いてみるのも悪くないですね。今後も機会があればときどき演出照明のことを書いてみたいと思います。