VDMX で NumFX を利用した便利なレイヤー表示操作
お知らせ 1/1(月) に同様の内容の記事を投稿していましたが、中途半端なまま放置してしまったため、書き直しという形で本記事を投稿しました。
挨拶
改めまして、明けましておめでとうございます。本年も何卒よろしくお願い致します。
年越しの WEEKEND RAVERS NYE (#WRNYE) での VJ もなんとか無事に終わり、 2018年幸先よく VJ をスタートすることができたかなと思います。
さて、#WRNYE より前に 12/30 にハトトさんのお宅で開催された #HatotoHouse に招待されたので、 VDMX ヘビーユーザーに囲まれてビクビクしながら自分の VDMX プロジェクトファイルを紹介したのですが、 予想に反して反響がありました。大変嬉しい限りです。
一時的なレイヤー非表示(ミュート)や単独レイヤー表示(ソロ)
特に反響(?)が大きかったのが、一時的にあるレイヤーを非表示にしたり(以下、ミュート)、 一時的にあるレイヤーだけを表示する(以下、ソロ)仕組みでした。
全国 1億人の VDMX ユーザーのほとんどが Layer Opacity
に
MIDI コントローラーの縦フェーダーに割り当てて操作していると思います。
もちろん縦フェーダー操作だけでもミュートやソロは可能ですが、
慌てて瞬間的にフェーダーを操作すると僕はよくミスったりフェーダーのつまみを飛ばしてしまったりします。
そこで私は縦フェーダーの他に、ボタンを押したらミュートしたりソロにできるようにしています。 KORG の nanoKontrol2 を愛用していますが、以下のように割り当てて使っています。
これらを VDMX の Num FX という機能を使って実現していきます。
前提と準備
今回は 3レイヤー用意し、
それぞれの Layer Opacity
をお好みのコントローラーの縦フェーダーにマッピングしているものとします。
今回はコントローラーの代わりに、上の画像の様に Control Surface を使ってでっち上げたもので解説します。 頭に L1, L2, L3 とついてるボタンやフェーダーがそれぞれ レイヤー1, レイヤー2, レイヤー3 を操作します。
レイヤーミュート
簡単な方から、ミュートを実装しましょう。Resolume だと B
ボタンに該当します。
具体的には、Mute
ボタンを押したら縦フェーダーがどんな値であろうと、Layer Opacity
の値を強制的に 0
にするようにします。
まずはレイヤー1 の Layer Opacity
の UI Inspector を開きます。
下の方にボタン Edit Num FX Chain
があるのでクリックすると Number FX Chain Inspector
という画面が出てきます。
さて名前からお気づきの方もいらっしゃると思いますが、
Num FX
は外部のコントローラからの入力値に対してエフェクトをかけることができる機能です。
例えば 縦フェーダーの入力値に対して常に 0.5 を掛ける エフェクトを追加すれば、
縦フェーダーを目一杯上まで押し上げても VDMX 側で受け取る値は 0.5
までしか上がりません。
ということで、Number FX Chain Inspector 画面の Add Asset:
から FX > Multiply
を追加します。
Multiply
は外部コントローラーからの入力値に対して、指定した値を掛ける Num FX です。
初期値では 1.25
が指定されてるので、例えば縦フェーダーを真ん中の位置にスライドすると、
VDMX 側では 0.5 * 1.25
、つまり 0.625
として受け取られます。
また NumFX 全部に言えますが、 VDMX で映像に対して使うエフェクト同様右上のボタンで ON, OFF が切り替えられます。
最後に、Mute
ボタンを Multiply の ON, OFF に割り当て、
Multiplier の値を 0.00 にすると完成です。
これによって、Mute
ボタンを押すと Layer Opacity を 0.00 に固定する NumFX が有効になります。
あとは他の全てのレイヤーに対して同じ様に NumFX を仕込めば完成です!
ちなみに、NumFX が有効になっている場合は四角にN
のマークがつきます。
単独レイヤーのみ表示 (ソロ)
仕様
次に複雑になりますが、ソロ機能を実装していきます。Resolume だと S
ボタンに該当します。
ここでは各レイヤーは 3つの状態を持つことになります。
- ソロ機能が無効であり、自身のレイヤーが表示されている。
- ソロ機能が有効であり、現在自身のレイヤーが選択されているため自身のレイヤーだけ表示されている。
- ソロ機能が有効であり、現在他のレイヤーが選択されているため自身のレイヤーは非表示になっている。
実現するためには以下の項目について VDMX 側でデータとして持つ必要があります。
- 現在ソロ機能が有効になっているかどうか
- ソロ機能が有効になっている場合、現在選択されているレイヤーはどれか
今回は VDMX 側がデータとして持つ部分を Control Surface を使って実現し、あとはミュートの時と同じく NumFX Multiply
を使っていきます。
なお Control Surface でのデータの保持の仕方は色々な方法があると思いますので、
この記事は参考程度にして自身のしっくりくる方法に落とし込んでいただけたら幸いです。
Control Surface の作り込み
まず、単独で表示するレイヤーとしてどれが指定されているかを Multi-Button
で表現します。ボタンの数は レイヤーの数 + 1 用意し、Toggle Buttons?
オプションと Mutually-exclusive?
オプションの両方にチェックをつけ、Publishing Properties を Publish index of last button
にしましょう。Toggle Buttons?
と Mutually-exclusive?
については説明が面倒なので省きますが、ご自身で試していただけると納得の挙動をすると思います。
次にソロ機能が有効になっているかどうかを表すための Button
を追加し、先程追加した Multi-Button
をこのボタンの Receiving
に追加します。
さて、先程 Multi-Button
の Publishing Properties を Publish index of last button に、つまり選択したボタンの番号を他のコントローラに伝えるようにしたわけですが、それによって番号が 1
以上のボタンを選択しているときに Button
は ON の状態になります。
ただし、Multi-Button
の発するデータが Publish index of last button の状態だと扱いづらいため、もう一つ同じ個数の Multi-Button
を用意し、こちらは Publish as many BOOLs の状態にしておきます。そして新しい Multi-Button
の Navigation > Choose by index
に以前の Multi-Button
を追加します。
これで Control Surface の作り込みは完了です。上の画像での Solo activated?
ボタンが「ソロ機能が有効になっているかどうか」、Solo activated layer output
が「現在単独表示するレイヤーとして選択されているレイヤー」を表現してくれています。
コントローラーと Control Surface と Layer Opacity の連携
ソロ機能の完成に近づいてきました。まずは外部コントローラーの Solo
ボタンを Control Surface の 最初に作った Multi-Button
に対してマッピングします。
なお、コントローラーの L1 Solo
, L2 Solo
, L3 Solo
は Toggle button?
オプションのチェックを外しています。こちらもご自身で挙動を確認していただけると幸いです。
次に、ミュートの時と同じ様に Layer Opacity
の Number FX Chain Inspector を開き、同様に FX > Multiply
を追加します。
そして以下の画像の通りマッピングを行います。注意としては、Multiplier
の最大値が 1.00
になるようにフェーダーを設定しておくのを忘れずにお願いします。
これを全レイヤーに対して行えば、ソロ機能の完成です。
ちなみに先程作った Control Surface はもう見せる必要がないので僕は消してしまいます。プログラムで関数のような裏方の作業をしてくれる Control Surface のことをよく「隠し Control Surface」とか僕は言ったりしています。
最後に
拙い説明だったと思いますが、いかがでしょうか。初めはとっつきづらいと思いますが Control Surface と NumFX で VDMX はより便利になります。ちょっとしたプログラムを組む感覚だと思います。是非試してみてください。
告知
- 1/18 (木) アッパーチューナー第2弾 #アパチュナ @ 渋谷 nagomix 告知ページ
- 1/27(土) ??? @ 渋谷 VUENOS
- 3/18(日) ??? @ 渋谷某所
本年もよろしくお願い致します🙇