【ビギナーが始める】TouchDesigner入門　番外編[MIDIコントローラー連携]

# 前置き
僕自身は、プログラミングのプの字も齧れていない開発ド素人。
最近、開発チームに正式アサインが決まり、自分の武器を作る為、TouchDesigner知識会得に果敢にも挑戦します。
コードを書く必要がなく、直感的にプログラミングができるツールということなので、我流で調べつつ学びつつの記録という事でまとめていければと思います。

# 使用機材
今回は会社の機材BOXに埃をかぶっていた、STARRYPADのDONNERというMIDIのPADを使用して、
touchdesignerの操作ができるようにしたいと思います。

![IMG_2135.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/3c082050-9036-e962-46b0-d6d3f2e1b6ec.jpeg)

機材URL：https://jp.donnermusic.com/products/donner-dpd-16-starrypad

# 作成物
コントローラーを使って簡単なカウントシステムを作成しようと思います。

# touchdesignerの設定
始めに、新規でプロジェクトを作成後に、上部のツールバーからMIDIコントローラーの設定を行う必要があります。
[Daialogs]→[Midi Device Mapper]を広くと、コントローラーが認識されているか確認できます。
![スクリーンショット 2024-12-19 11.20.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/85b64560-107c-5a44-5992-f5e53666e0a2.png)
![スクリーンショット 2024-12-19 11.20.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/fc382ee2-b560-edd6-f7c9-cdb1c8a6c5e2.png)
※ここで注意点があり、touchdesignerのソフトを立ち上げる前に、PCにコントローラーを接続しておいてください。立ち上がっている後で接続するとソフトがコントローラーを認識しないことがあります。

今回はボタンの入力で使用するので、In Deviceの箇所にSTARRYPADが来ていれば正解(のはず)。

OutやMapもあるので、音楽制作などしている方は、MIDI鍵盤やオーディオインターフェースなどにOutする設定も活用して、アンプやスピーカー、モニタなどへの出力も出来そうです。

# プログラム組上①(MIDI部分)
MIDIコントローラーの接続はできたので、
CHOPの[MIDI IN]を作成します。
![スクリーンショット 2024-12-19 12.23.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/15431493-cf39-5ad7-4f29-997ed4b76cee.png)
![スクリーンショット 2024-12-19 12.24.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/eb7e9f66-a902-5107-1200-ae6e071ee498.png)
ここで、実機のボタンを押していくとアサインされているボタンがどんどん増えていきます。
今回ボタンとして使いたいのは2つだけにするので、4x4あるパッドのうちの左上2つ(PAD13と14)にします。
![IMG_2135のコピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/5b6006bf-d839-31fb-dfab-cfc3c5fda411.jpeg)

PAD13と14をそれぞれ押してみると、
・PAD13→0ch10n49(ボタン押すと1ch10n49)
・PAD14→0ch10n50(ボタン押すと1ch10n50)
のパラメーターが変化します。
![名称未設定のコピー___.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/ad3be8ea-2da3-55a0-cf2d-8534d01c4e20.gif)

2つのボタンの入力を[select]のCHOPで分けて認識させます。
![スクリーンショット 2024-12-19 12.46.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/216d9851-2e73-713f-7734-dcfd43a1b934.png)

# プログラム組上②(カウントシステム部分)
UI上でカウントのボタンを設置して、＋ーできる仕様にします。
[Count]のCHOPを設置。[Count]のCHOPをボタンで、反応させたいので、[button]のCOMPを[Count]CHOPに繋ぎます。
さらに、任意の数値で増加していくようにしたいので、[Constant]のCHOPも[Count]CHOPに繋いで、[Constant]の数値設定を100にします。
こうすることで、[button]のCOMPを押すごとに+100増えていく仕様に設定できます。
![スクリーンショット 2024-12-19 13.27.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/fbdaa9bb-28eb-0cc2-058b-30731a5d4896.png)
![スクリーンショット 2024-12-19 13.27.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/af753fd5-833f-240d-9abd-0441f4fa7b2c.png)

-100のボタンなども同じ要領で作成しました。

並べたものがコチラ↓↓
![画面収録-2024-12-19-14.11.54.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/b22aeb99-9c4a-d94b-77d1-5b4d6cfe4711.gif)

最終的には、カウンターとして＋ーが作用するようにしたいので、
2つ作成した[Count]CHOPを[math]のCHOPに繋ぎます。
これで、計算された結果に表示させることができます。
最終的に確認しやすくするために、[text]のTOPで数値を表示する繋ぎに整理してみました。
![画面収録-2024-12-19-14.23.52.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/fa78bd26-a3bc-53e3-63e1-637e644d3d5c.gif)

# ①と②のプログラムを繋ぎます
MIDIのボタンとカウンターのプログラムは完成したので、
この2つをリンクさせる設定を組みます。

色々やり方はあるようですが、今回は①のMIDIコントローラーのボタンが押されたら、②に設置してある[button]のCOMPがリンクして押されるという仕組みを[CHOP Execute]のDATにコードを書いてやってみたいと思います。
(コードってどう書くんだ、、、)

弊社にいるtouchdesignerユーザーの先輩にお伺いしたところ、
touchdesignerでコードを書くときはPythonを使用との事。
コードの内容は調べてコピペで、任意の箇所だけ書き換えればいいらしい。
printを使って、[MIDI IN]が動いた時に、[button1]が押されると書くと、こんな感じ。
![スクリーンショット 2024-12-19 14.34.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/ddef26f1-00f7-8d9c-a179-600b634efdfe.png)

同じものを[button2]の分も作成。
コピー作成して、Button1の数値をButton2
CHOPの指定値とchannel値を変更。
![スクリーンショット 2024-12-19 14.43.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/abb28f96-17e5-f42f-ce30-62e64526e596.png)

これで、MIDIコントローラーのみで、カウントを制御できるようになる。

# 今回の成果物
100pointカウンター(今命名しました)

![12345678.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/6b920349-20f9-161d-6e4f-26ac6673cd4b.gif)

![IMG_C91B0C0AB0C9-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676211/74dc458b-d46d-5dab-8d98-e1e438faf9d6.jpeg)

# まとめ
MIDIの機材はたくさんあるので、組み合わせ次第でいろんなものが作れそうですね。
SE音源と組み合わせたり、映像データ合わせてみたりも出来そうです。
個人的に次は、別のDAWソフトとかと連携してプログラムできるのか挑戦してみたいですね。
(operatorでAbleton linkってCHOPもあるようなので)