Maxで作る自分専用パッチ - Patch42 〜リアルタイムに信号を生成する照明制御パッチ

f:id:rittor_snrec:20201120132301j:plain

基礎的な機能ブロックをつなぎ合わせることで独自のソフトウェアを構築できるCYCLING '74 Max。現在ネット上では数え切れないほどのパッチがシェアされており、それらのプレーヤーとしても活用が可能だ。ここでは最先端のアーティストによるクールなパッチを紹介。ファイルをWebよりダウンロードして、新しい音楽の制作に役立ててほしい。

作成したパターンからバリエーションを創出

 今回紹介するのは、リアルタイムに信号を生成する照明制御パッチです。ライブ・ハウスやクラブで行われるライブ・イベントなどで使用することを想定して作成しました。現在、音楽ライブの現場で使われている照明制御卓は、30年ほど前とあまり変わらない仕様のままです。昨今の技術力向上により処理速度やシミュレーションの精度は向上したものの、制御方法自体の変化はほとんど無く、事前に仕込んだプログラムを本番中に呼び出す方法を採用しています。今回制作した照明制御パッチは、リアルタイムに照明制御の信号を生成&編集することが可能なシステムです。現場での調整や本番中のアドリブなど、舞台現場においてリアルタイムに信号生成&編集をするメリットは多く、コンピューターの性能は今後もさらに良くなることが予想されるので、リアルタイム処理技術はより効果を発揮することが期待できます。このシステムは、従来の照明制御卓と共存することができるのも大きな特徴の一つです。

 

 システム制作にMaxを採用した理由の一つに、プロトタイプ制作や実験を繰り返しながら開発&管理するのが容易であることが挙げられます。また、豊富な入出力に対応できることで過去に制作したパッチや、ほかのソフトウェア/ハードウェアを用いたさまざまな演出(特に音響を用いたシステム)との“ハブ”としても使用できる点は重要です。今回のような照明制御の場合、既存の照明制御卓では照明信号のみを出力可能なものがほとんどであるため、各演出ソフトに入力できてもそれを使える情報に変換するためにさまざまな処理が必要です。これに対してMaxは、任意のパラメーターをOSCなど好きなプロトコルで送信することができます。また、これらのさまざまな設定やデータを任意のファイル形式で保存することができるのも大きなメリットです。

 

 今回制作したシステムは、メイン・システムである照明制御信号生成パッチと、VAE(Variational Autoencoder)による照明パターン学習生成パッチに分かれます。この内のVAEによるデータの学習&生成部分は徳井直生さん(Qosmo)の“M4L.RhythmVAE”デバイスを参照しました。

naotokui.net

 

 メイン・パッチでは、表示されているインターフェースを操作することで照明を制御できます。任意のMIDIコントローラーを接続して各パラメーターにアサインすることで、さらに操作性を良くすることができるほか、OSCを使って音や映像用の外部パッチやソフトからも制御可能です。

 

 VAEによる照明パターン生成パッチでは、別に用意したdatasetパッチにてまず照明のオン/オフのパターンを作り、“.dmxp”という拡張子で保存します。この作成した照明パターンをVAEに入力して学習させることにより、そのバリエーションをリアルタイムかつ大量に生成することができます。

f:id:rittor_snrec:20201120133000j:plain

照明パターン(.dmxpファイル)作成用datasetパッチ

f:id:rittor_snrec:20201120133131j:plain

照明パターン学習&生成パッチ

灯体の数や挙動を個別に制御可能

 メイン・パッチでまず特徴として挙げられるのは、LEDやムービング・ライトなどの各灯体情報をそれぞれ一つのパッチにまとめ、シンセサイザーのように灯体の数だけ[poly~]でインスタンス生成している点です。制御パラメーターはそれぞれのインスタンス内に[send][receive]オブジェクトで直接送るものと、targetを指定してインレットから入力するものがあります。これは、それぞれに異なる値を送るか、同じ値を送るかで処理の入力方法を分けています。インスタンスを生成することで、同じ灯体を複数台使用する際、数や挙動を個別に制御することができます。このインスタンス用の灯体情報パッチを灯体の種類別に作ることで、現場ごとに組み合わせを変えても使い回すことが可能です。

 

 また、プリセットの保存には[pattr]オブジェクト群を使用しています。[pattr]は[preset]オブジェクトの機能を拡張したような挙動で、別パッチで開いているオブジェクトも含め、オブジェクト上のパラメーターに名前を付けてエイリアスを作成し、その値を一括で管理することが可能です。[pattr]で管理するデータは、[pattrstorage]オブジェクトにプリセット番号を付けて保存します。保存するプリセット番号はint値ですが、その保存した2つのプリセットの間のfloat値を指定すると、プリセット間の値をrecallできます。

 

 パッチ内の一部の処理は自作のエクスターナル・オブジェクトを使用しました。オブジェクトの組み合わせではなくスクリプトを記述して処理する場合、今回は"Min-DevKit"というものを用いてC++でコードを書き、コンパイルをしました。

 

 最終的な照明信号は、Art-Netという形式で出力しています。これにより、各照明環境への導入やシミュレーション・ソフトへの入力がしやすくなります。Art-Netを出力するためのオブジェクト群であるimp.dmxは無料で公開されており、Max 8でも問題なく動作しています。マシン・スペックが間に合えば、パッチを複製して大量の照明を制御することや、インスタンスを大量に生成してテープLEDなどを制御することにも応用できます。Maxを用いた照明制御やサウンド・インスタレーション、映像だけに限らないオーディオ・ビジュアルなどに応用したい方は、ぜひ参考にしてみてください。

 

 

f:id:rittor_snrec:20201120133307j:plain

武部瑠人/LUDO Takebe

1996年生まれ、熊本県出身。九州大学芸術工学部を卒業後、IAMASに入学、現在修士2年。ビジュアル系バンドに憧れ、エンターテインメントの業界を目指す。学部時代にライブハウスにて音響照明エンジニアとして勤務し、大学院進学後は照明や映像、レーザーなどを用いたビジュアル表現について研究している。
LUDO TAKEBE (@LUDO_vis_) | Twitter

 

製品情報

www.mi7.co.jp

 

関連記事

www.snrec.jp

www.snrec.jp

www.snrec.jp

www.snrec.jp