第2回: CHOPの基礎と簡単な楽器制作
参考書籍
忘れてたけど、参考書籍など
- Visual Thinking with TouchDesigner プロが選ぶリアルタイムレンダリング&プロトタイピングの極意 - 日本語のTD本
- Matthew RaganのYoutube - TD界隈みんなの先生、マシューレーガンのチュートリアル
- Lynda - Learning TouchDesigner - 有料チュートリアルサイトですが結構いい
- (DE)SIGN – Design is a sense making with various media. - いい感じのサンプルが沢山ある
- Generative Design - 自然界の振舞いをプログラムを使って再現しよう、という試みの書籍。本はProcessingを使ったコードで記述されているけど、それをTDに移植したもの
簡単な楽器を作る
今日は、簡単な楽器を作ってみる ことを通じて、CHOPの扱い方、パラメーターの扱い方を解説していこうと思います。
CHOP

CHOP では数字や、数字の配列を扱います。
コンピューターでは、音も数字が時系列に沢山並んだものとして扱いますので、TDでは音はCHOPのデータとして扱います。
色々なタイプのオペレーターがありますが、全部覚えなくても全然どうにかなります。音に関連するものをざっと見ていきましょう。
とりあえず音を出してみる
音を出すために、サウンドファイルを読み込んでオーディオデバイス(スピーカー)に接続しましょう。
Audio File In CHOP と Audio Device Out CHOP を作ってつなげてみてください。
audiofilein1 のオペレータの中に chan1 と chan2 という文字が見えます。チャンネルが2つあるので、このサウンドファイルはステレオだという事です。
CHOPが持っているデータ

CHOPはオーペレーターの中に チャンネル サンプル という単位でデータを持っています。
チャンネルはDAW的に言うとトラックに相当して、サンプルはそのまんまサンプルになります。
また、オペレーターごとに独立したサンプリングレートを持っています。
Math CHOP で音量をコントロールする
Math CHOP を使うとチャンネルのデータに対して四則演算(足し算、引き算、かけ算、割り算) をすることができます。
さきほど作った Audio File In CHOP と Audio Device Out CHOP の間のコードを右クリックして、Insert Operator を選択するとオペレーターとオペレーターの間に新たなオペレーターを追加することができますので、Math CHOP を追加しましょう。
Math CHOPには色々な機能があるのですが、まずは Mult-Add タブの中の Multiply の値をいじることで入力側のオペレーター全ての値に対してかけ算ができる事を覚えておいてください。
これで、サウンドファイルのボリュームがコントロールできるようになりました
Constant CHOPを作る

次に Constant CHOP の使い方を学びましょう。
Constant CHOPを使うと、CHOPのチャンネル、サンプルのデータを手入力できます。
チャンネル数は名前を入れた分だけ増やすことができます。Constant CHOPはササっと作れるので、簡易的なパラメーター調整UIとして使う時が多いです。
Math CHOPでチャンネルごと、CHOPごとの四則演算をする
さきほどは Mult-Add タブの中の Multiply の値をいじってボリュームを制御しましたが、Math CHOPの別の機能をつかうと他のチャンネルや他のCHOPからパラメーターをコントロールすることができます。
Math CHOP > OP > Combile Channels Combile CHOPs のドロップダウンを変更することで、それぞれチャンネルごと、CHOPごとの四則演算が行えます。
別のCHOPの値でボリュームを変更する
次に、Math CHOP の Combile CHOPsの機能を使ってサウンドファイルのボリュームをコントロールしてみましょう。
手動でのボリュームのコントロールだけだと Mult-Add > Multiply の方が楽なのですが、他のCHOPの値でコントロールできるようにした方がアイデアによってもっとエフェクティブな事ができます。
例えば、LFO CHOP から出力される値をかけ算するとその名の通りLFO、トレモロ効果を追加することができます。
TIPS: オペレータのつなぎかえについて
↑ の動画でさらっとやってしまったのですが、Math CHOP など、複数のオペレーターを入力できるものはわりかしつなぎ替えが面倒だったりします。
そういう時は、つなぎ替えたいオペレーターのアウトプットをドラッグして、つなぎ替えたいケーブルまでもっていって、ケーブルが黄色くなったのを確認してからマウスを離すとケーブルのつけかえができます。
また、つなぎかえがよく発生しそうだなと思ったらあらかじめ Null (得に何もしないオペレーター) を間にはさんでおくと接続がスムーズにいけてよいです
ボタンで音量をコントロールする
続けて Button COMP を使って簡単なインタラクションを作ってみましょう。
Button COMPにはCHOPのアウトプットがあるので、それを接続してボリュームをコントロールできるようにしてください。Button COMPは、アクティブ化(右下の + ボタンをクリックして切り替え)されていないと押せないので注意
Button COMP > Button > Button Type のドロップダウンからボタンの振舞いを選べます。主に使うのは、
Momentary- 押している時だけOnToggle Down- 押すとOn/Offが交互に切り替わる
ぐらいで、あとは正直あまり使いません。。
そのままボリュームに入れてしまうと 0~1 が瞬時に入れかわってしまうので、音がブチブチ途切れてしまいます。Button COMPとNull CHOPの間に Lag CHOP を挟むとスムーズにフェードイン/アウトさせることができます。

Lag CHOPは非常によく使います。Lag > Lag のパラメーターを変更することでなめらかに変化する度合いを調整することができます。また、二つのパラメーターに違う値を入れることで立ち上がりと立ち下がりの具合を個別に調整できます。
また、Lag CHOPがどういう値を出力しているのかを確認するために Trail CHOP を使うのもいいアイデアです。Trail CHOPは、入力れたCHOPのデータを時系列でプロットしてくれます。
Overshoot のパラメーターの変化もおもしろいので、Trail CHOPに出力されているプロットを見ながらパラメーターを調整してみてください。
時間があったら
Audio Oscillator CHOPTrigger CHOPAudio Filter CHOP
など