今回は MIDI コントローラーの使い方や他のアプリと連携する方法をいくつかご紹介します!
サンプルファイル
chimanaco/takara-univ-media-programming-2023
7が本日のディレクトリです。
MIDI コントローラーを使う /project1/MIDI
MIDI は、電子楽器の演奏データを機器間で転送・共有するための共通規格である。
VJ などのパフォーマンスを行う時に、 MIDI コントローラーという USB で PC に接続できるデバイスを TouchDesigner と一緒に使うことが多いです。 本講義では nanoKONTROL2 を使用します。コンパクトでお求めやすいお値段ということもあり最初の一台にもってこいだと思います!
早速使ってみましょう!!
MIDI コントローラーを PC に接続した後、Dialogs > MIDI Device Mapper を開きます。
Create New Mapping で設定を追加します。

In Device から接続した MIDI コントローラーを選択します。

MIDI コントローラーのノブを動かして、数値が入ってきていれば接続がされている状態です。

実際に使ってみましょう。まずは nanoKONTROL2を使って Circle TOP の半径を変えてみます。
MIDI In CHOP を配置するとこれらの値を取得することができます。nanoKONTROL のノブを回してみるとチャンネル名が表示されて、0-127の値が MIDI IN CHOP に入ってきていると思います。みなさんの環境では違う名前かもしれませんが、私の場合は ch1ctrl17 というチャンネル名でした。
この後に SelectCHOP をつないで、ch1ctrl17 を Channel Names に入力します。MIDI の値は0-127の128段階で表されますが、CircleTOPの半径は0-0.5なので Math CHOP を使ってリマップします。Null TOP をつないで、Circle TOP の Radius から参照すると nanoKONTROL から円の半径が変えられるようになります!

Radius 以外のパラメーターにも値を割り当ててみましょう!
OSC /project1/OSC_Out & /project1/OSC_In
OpenSound Control(OSC)とは、電子楽器(特にシンセサイザー)やコンピュータなどの機器において音楽演奏データをネットワーク経由でリアルタイムに共有するための通信プロトコルである。
OSC を使うと同一ネットワーク上に存在するデバイス間でデータを送受信することができます。MIDI の代替として設計され、MIDI の無線バージョンと言ってもいいかもしれません。ソフトウェア同士の連携に広く使われていて、様々なシーンで利用されています。
TouchDesigner 同士でやり取りをする場合には OSC Out CHOP と OSC In CHOP を使用します(OSC DAT を使用するとより詳細な設定ができますが今回は CHOP で説明します)。
2人1組になって、1人は OSC Out CHOP を配置してください。OSC Out CHOP の Network Address に送信したいデバイスの IP アドレスを指定します。もう一方の IP アドレスを聞いてください。
IP アドレスの調べ方は、Windows の Start ボタンを押して、cmd とタイプすると Command Prompt が候補に出てきますので選択します。
ここで ipconfig とタイプして Return キーを押すと情報が出てきますので、IPv4 Address を探してください。それがお使いの PC の IP アドレスになります。
e.g. 192.168.68.99

それから Port を指定します。IPアドレスを建物の住所にたとえると、ポート番号は部屋番号のようなものといえます。0-65535の値を使用できるのですが、1から1023の範囲内のポート番号はウェルノウンポート番号と呼ばれ、システム提供のTCP/IPアプリケーションによって使用されることが多いので避けておきます。これはデータのやり取りをする際に同一デバイス上でユニークな番号である必要があるためです。

Port 番号は、学籍番号の下4桁 + 10000 としてください。e.g. 下4桁1015の方は11015です。
もう1人は OSC In CHOP を配置し、OSC Out CHOP で使用しているものと同じ Port 番号を指定すると CHOP の値が入ってくるはずです。
役割を入れ替えてやってみてください。
TouchIn / TouchOUT /project1/TouchOut & /project1/TouchIn
TouchDesigner 同士で映像を共有するオペレーターです。
1人は Touch In TOP を配置、もう1人は Touch OUT TOP を配置してください。
Touch OUT TOP に送りたい画像の入ったオペレーターをつなぎます。
Network Port を学籍番号の下4桁 + 20000 としてください。e.g. 下4桁1015の方は21015です。

Touch In TOP を配置して、Touch Out TOP 側の方の IP アドレスを指定します。Port 番号もTouch Out TOP 側に合わせます。これで映像が共有されるはずです。

役割を入れ替えてやってみてください。
NDI で他のアプリに映像を送る /project1/NDI_Out
ここから1人でやります。NDI は TouchDesigner と他のアプリ間で映像をシェアするのに使用できます。同一 PC 上でもネットワーク上の他の端末間でも送受信が可能です。

Touch Out TOP の代わりに NDI Out TOP をつなぎます。Source Name にご自分の名前をアルファベットで入れてください。e.g. Harada

インストールされている VJ ソフトの Resolume
を立ち上げてください。Source の ‘NDI Servers’ のところにさきほど TouchDesigner で指定した名前が出てくるのでそれをダブルクリックすると Resolume 側に送られているのが分かるかと思います。
このように TouchDesigner で作成した映像を Resolume に送って VJ の素材の1つとして使う、ということもできます。
同一ネットワーク上にいる他の映像ソースも受け取れるので色々試してみてください。
NDI で Teams に映像を送る
NDI Webcam を立ち上げます。教室の PC には既にインストールされているはずですが、ご自分で試す場合は NDI Tools からダウンロードしてください。

起動するとタスクバーに格納されます。

ここで TouchDesigner の NDI Out からの情報を選びます。こうすると Teams でカメラのソースとして TouchDesigner からの映像を使えるようになります。

Teams 以外のビデオカンファレンスツールでもこの NDI を使った方法は使用できるので是非使ってみてください!
Spout / Syphon
同一 PC 上で映像をシェアする規格として Spout / Syphon というものもありますが、今回は NDI をご紹介しました。

本日の課題:NDI を使って映像を送り合う
グループで MIDI や OSC、TouchIn / Out, NDI を使って色々試してみてください。授業の最後に映像をみんなで NDI から 講師用 PC に送ってもらってみんなで見ます。 e.g. 送られてきた映像に MIDI コントローラーで調節したエフェクトをかける