ごーぐる部-「ゼロ(円)から始めるVJ生活」

初級者でWindowsなアニソンVJが自分なりにいろいろ書いた備忘録。Resolume/RekordboxLyric/OBSVJ等の記事が多めだと思います。

TouchDesignerで仮想MIDIコンを作る 複数のソフトを1つのコントローラーで操作

ということで私も完全には理解してないですし教えてほしいことも多いくらいなんですけど、

 

TouchDesignerの記事書きます。

 

この方法が正解ではないし私もプログラミング畑の人ではないのでもっと効率の良いシステムの組み方あるとは思うのですがとりあえず私はこうやってます!みたいな記事です。

 

場合によってですが、

①ひとつのMIDIコンで2つ以上のソフトを動かしたい

(LaunchPadとかだと公式のツールでch分けまではいけますが複雑な動作組みたいときとかにも応用できます)

ゲームパッドやキーボードショートカットなどの入力をMIDI信号として出したい

③音に反応してMIDI信号を出すようなシステムを作りたい

④なんかプログラミング的に絵を作りたい(音に反応する!のを細かくいじりたい、とかDJさんの体にオブジェクト追従したりとか)

⑤VJシステムを自分なりに組みたい

 

③-⑤は詳しい人に聞いてください…ですが①-②ならなんとか現場で使えるようにはしたのでどうやってるのか書いてみます。

 

そもそもTouchDesignerって?。

 

私も説明できない…

 

まあ、クリエイティブコーディングとか呼ばれるやつです。

 

qiita.com

 

基本的な使い方は下記のサイトにあります。

ted-kanakubo.com

 

とりあえず初歩的なやつとして、

・VDJとResolumeをナノコン1台で動かすやつ

・VDJとrekordboxの再生ボタンを連動させるやつ(レコボリリック向け)

ゲームコントローラーやテンキーをMIDIコンにするやつ

 

つくってみます。

 

必要なソフト

・TouchDesigner

非商用の範囲なら無料で使えるみたいです。商用のみ料金が発生します。

 

https://derivative.ca/download

 

 

derivative.ca

 

このサイトの「Get TouchDesigner」からPCにあわせてダウンロードしてください。

 

・LoopBe1

仮想MIDIドライバです。MIDI信号を受け取ったり送ったりできます。

こちらも非商用なら無料です。

 

 

f:id:ino2408m:20200712020015j:plain

一番下のsetuploopbe1 から落とせます。 

 

各ソフトをDLし、インストールしてください。

 

下準備

loopBeMonを起動します。

f:id:ino2408m:20200714005015j:plain

 

TouchdesignerでMIDIコン等の初期設定をします。

1.MIDIコンを使う場合は接続し、TouchDesignerを開く。

2.「Dialogs」→「MIDI Device Mapper」→「Create New Mapping」でMIDIコンを追加します。

 

f:id:ino2408m:20200713201711j:plain

3 .信号を変換したいMIDIコンと「LoopBe Internal MIDI」をIn DeviceとOutDeviceに登録します。

f:id:ino2408m:20200713202050j:plain

 

ここまででMIDIコンの設定はOKです。

 

あと、Preferenceより「Stop Playing when Minimized」を✕にします。(これをしないとTouchDesignerがアクティブじゃないときに機能が使えません)

f:id:ino2408m:20200713201319j:plain

 

 ここまでが初期設定です。

 

基本的なMIDI信号変換について

実際にMIDIコンの信号を変換してみます。

 

使うOperator(部品)について軽く説明します。

MIDI IN」「MIDI OUT」…MIDI信号を受け取ったり拾ったりします。

「Select」…前のCHOPの成分を選んで抜き出します。信号の名前を変える機能

もついてます。

「Merge」…信号を統合します。

 

 

1.File→Newで新規プロジェクト作成。

 

f:id:ino2408m:20200713202836j:plain

 

 2.右クリック→ADD OperatorからCHOP→「MIDI In」を選んで配置します。

 

f:id:ino2408m:20200713203159j:plain

 

3.MIDIコンの対応させたいキーやフェーダーを動かすとこんな感じで数字が出ます。

127→そのフェーダー等の大きさ

ch11→MIDIチャンネル

ctrl24→MIDIのCCとかNoteとか(どこのボタンを押したかを識別するやつ)

f:id:ino2408m:20200713203544j:plain

 です。

 

4.右クリック→Add OperatorからCHOP→「Select」を選んで配置し、さきほどのMIDI INとつなげます。

 

f:id:ino2408m:20200713204336j:plain

 

f:id:ino2408m:20200713204531j:plain

 

5.Selectの設定画面より以下のように設定します。

Channel Names:右の三角印から反応させたいMIDIコンのボタン等を選びます。(手順3で動いたもの。)

Rename to:ch〇〇c〇〇またはch〇〇n〇〇

(使用していないチャンネルを入れてください。)

c〇〇はCCと呼ばれる信号を出します。

nはNoteと呼ばれる信号を出します。

少し挙動が異なりますがCCはフェーダーやノブ、Noteはボタンにおすすめです。

 

f:id:ino2408m:20200713225914j:plain

 

6.右クリック→Add OperatorからCHOP→「Merge」を選んで配置し、さきほどのSelectとつなげます。

f:id:ino2408m:20200713230534j:plain

 

 

f:id:ino2408m:20200713230831j:plain

 

6.右クリック→Add OperatorからCHOP→「MIDI OUT」を選んで配置し、さきほどのMergeとつなげます。

 

f:id:ino2408m:20200713231143j:plain

 

f:id:ino2408m:20200713231237j:plain

 

7.MIDIOutを設定します。

まず、「Dest」からDevice IDをさきほどMidi Device Mapperで「LoopBe Internal MIDI」に設定したIDにします。

f:id:ino2408m:20200713231445j:plain

次に値の補正のため、「Note」「Control」から「Normalize」を「None」にします。

f:id:ino2408m:20200714011029j:plain

 

f:id:ino2408m:20200714011157j:plain



 

これでとりあえずひとつのキーやフェーダーのMIDI信号変換までできました。

 

8.複数設定したい場合はSelect2...を同様に作りMergeにつないでいく。

f:id:ino2408m:20200713232510j:plain

 select1まとめて書く方法もありますがRenameトラブル起きやすいみたいなので私はこのほうが好きです

 

Mergeを使わない書き方もありますが個人的には上の方がRenameの対応がわかりやすかったり機能拡張しやすい気がする・・・

 

f:id:ino2408m:20200714010804j:plain

 お好みで。

 

結局midiout1に集約されてればOKです。

 

 

これで仮想MIDIコンとして動きます。

 

例えばVirtualDJで使用したい場合だと、コントローラーに「loop Be Internal MIDI」なるものができています。これが仮想MIDIコンになります。

アサインしたいフェーダー等を動かすと右のところに「12-SLIDER23」等が出るので、そこに設定します。

フェーダーやノブであれば「SLIDER」ですね。

f:id:ino2408m:20200714005336j:plain

 

 こんなふうにして設定していきます。

 

使用するときはLoopBe1とTouchDesignerを立ち上げればOKです。

 

使用例1:ResolumeとVirtualDJをひとつのコントローラーで動かす

通常だとこの動作できないんですがTouchDesignerを通すといけます。

 

TouchDesignerでこんな感じに組みます。

 

f:id:ino2408m:20200714012616j:plain

 

 フェーダーやノブ系は「ch〇〇c○○」系にRename。

 

f:id:ino2408m:20200714013128j:plain

ボタンは「ch〇〇n〇〇」系にRename。

 

これであとはVDJに入りいろいろ設定します。

 

こんな感じです。

 

あとはVDJに入り「loop Be Internal MIDI」をMIDIコンとして設定します。

 

f:id:ino2408m:20200714014509j:plain

 

おすすめはこんな感じです。

 

わたしはBeatJumpと再生停止を振ってます。

 

f:id:ino2408m:20200714015917j:plain

 

 

 

スポイトマークで欲しい機能吸い取って前に「deck ○(1,2,left,right)」をつける感じでいい感じにマッピングできるかと。

 

f:id:ino2408m:20200714015144j:plain

 

特にピッチをノブで調整するとやりやすいと思います。

 

あとはこのままVDJでNanoKontrol2を無効にすれば3-8のフェーダーをResolumeで使うなども可能です。

 

立ち上げるソフトは多くなりますがUSBハブいらなくなったり荷物減らせるので運用に合う人にはいいかもしれません。

 

使用例2:VDJとRekordBoxLyricの同時再生

VDJとRekordBoxLyricを同時に再生するボタンなんかもつくれます。

ただしDJ2GO2などのDJコンはVirtualDJとTouchDesigner両方で使えないので、下記のキーボードマッピング変換やNanoPad、LaunchPad等を使うことになるかと思います。

 

シンプルに信号変更するやつだけ作ります。

 

f:id:ino2408m:20200714023156j:plain

 

今回はCh13をVDJ、Ch14をRekordboxとします。

 

2つのソフトに「LoopBe Internal MIDI」経由で「Play BUTTON」をマッピングする。

 

VDJでは下記の通り。Ch名、ノート名ともに1少なく表示されるので注意。

f:id:ino2408m:20200714024447j:plain

 

Rekordboxの設定に移る前にTouchDesignerでVDJ側をDisconnectしておきます。

 

f:id:ino2408m:20200714025119j:plain

 

RekordBox側でも「LoopBe Internal MIDI」をMIDIコンとしてPlay Pauseをアサインする。

 

MIDI OUTもアサインされますが、これが入ってると再生と停止が同時に押される挙動になるので必ず空にしてください。

 

 

f:id:ino2408m:20200714030340j:plain



アサインし終わったら、TDのConnectをもとに戻す。

 

f:id:ino2408m:20200714025752j:plain

これで設定したボタンを押すとVDJとRekordBoxが同時再生されます。

 

使用例3:テンキー・ゲームコントローラー・キーボード等をMIDIコン化する

TouchDesignerにはこれらの入力機能がついてるのでMIDI INの代わりに入れるとMIDIコンになります。

 

f:id:ino2408m:20200714031219j:plain

右クリック→「Add Operator」内に「joystick」「keyboard in」などがあるので、それを上同様にSelect→Merge→MIDI OUTとつなげればOKです。ただし、このときの入力値はMIDIコンのときは0-127だったのに対しジョイスティックやキーボードでは0-1のため、MIDI OutのNormalizeを0 to 1にしてください。

f:id:ino2408m:20200714031629j:plain


あと、ジョイスティックをつかうとき十字キーは-1~1の値を出すことになるので、使いたければ信号を分ける必要があります。

「 Select」で信号を分けて「express」で場合分けして「rename」って感じですね。(たぶんもうちょっと簡単な方法があるはず・・・)

 

1.右クリック→Add OperatorよりJoyStickを追加。Selectで各ボタンを抜き出す。

A,B,X,Yボタンに関してはこんな感じです。

 

f:id:ino2408m:20200714204451j:plain

 

2.十字キーやスティックはちょっと組みにくいです。

Selectで信号を取り出し、Expressで条件分岐します。

難しく見えますが、me.inputValというのは入力された数字で、それが0以上なら1を、そうでなければ0を吐いてください。という感じです。

 

 

f:id:ino2408m:20200714212646j:plain

 

f:id:ino2408m:20200714213741j:plain

 

これの下に「1 if me.inputVal < 0 else 0」というexpressも追加します。

 

こんな感じです。

 

f:id:ino2408m:20200714213436j:plain

 それぞれにRenameを接続し、MIDIコンの信号名「ch〇〇n〇〇」に変換してMergeにつなぎます。

 

f:id:ino2408m:20200714214226j:plain

これで十字キーやスティックも扱えます。

 

全体としてはこんな感じになります。

 

f:id:ino2408m:20200714214641j:plain

 

あとは上記同様、使いたいソフトで「LoopBe Internal MIDI」をMIDIコンとして登録し、ゲームコントローラーをいじるとMIDIコンっぽい動作をします。

 

工夫すればスティックでフェーダー等もいけるかもですが正直難しい気がする。

 

FAQ

Q1:VDJとかでLoopBe Internal MIDIを登録してMIDIコンを動かしても反応しない

A1:「下準備」を確認し「LoopBe1のソフトが立ち上がってるかどうか」「Stop Playing when Minimized」が✕になってるかどうかを再確認してください。

また、TDを立ち上げてからMIDIコンをつなぐと反応しないことがあります。

 

Q2:MIDIコンでノブとかフェーダーとか動かすと一気に動いてしまう

A2:MIDI OutのNormalizeの設定がおかしい可能性があります。

「None」か「0 to 1」の正しい方で設定してみてください。

また、VirtualDJの場合、フェーダーを「ENCORDER」「JOG」「BUTTON」のどれでマッピングするかにより挙動が変わるので、しっくり来るものを選んでください。

 

Q3:構造が複雑なのでかんたんにしたい

A3:ここまでがわたしの限界・・・なので日本語ページとか読むか有識者に聴いてください・・・

 

 

ってことで仮想MIDIコンの作り方でした。応用すればMIDIコン減らせたり、操作しやすくなったりといろいろ便利なので、いろいろ試してみてください。