第11回: 音反応
オーディオの入出力
/project1/AUDIO_IO

音の入力には、Audio Device In CHOP、または Audio File In CHOP を使います。
Audio Device In CHOP はリアルタイムにオーディオデバイスへ入力された音のデータ、 Audio File In CHOP はオーディオファイルから読み込んだ音のデータを扱いますが、両者から得られる音のデータはだいたい同じようなものです。
なので、プロジェクトを作る段階では Audio File In CHOP を使って、いざ本番となった時に Audio Device In CHOP へつなぎかえて使うといった使い方はオススメです。
バッファサイズ
Audio Device In CHOP 、 Audio Device Out CHOP には Buffer Length のパラメーターがあり、それぞれ音の入力/出力の時用の内部メモリのサイズを決められるようになっています。
デフォルトの状態だと0.1秒や0.15秒が指定されているのですが、これはリアルタイムというにはあまりにも遅い数値になっています。両方とも1Fか、それで音にプチプチといったノイズが入るようなら2~3F程度にしましょう。

また、Windowsの場合、接続されているオーディオデバイスによっては Driver として ASIO が選択できる時があります。ASIOのほうがデフォルトのものよりも全然性能がいいので、可能であればそちらを選ぶようにしてください。
音量の検出
/project1/ANALYZE

Audio Device In CHOP や Audio File In CHOP から出力されるデータはオーディオの生の波形になっており、そのままだと映像表現の要素としては使いにくいものです。生の波形から音量のデータに変換するとだいぶ使いやすくなります。
音量のデータに変換するには、Analyze CHOP を使います。
Analyze CHOP は、入力されたサンプル全体に対して簡単な解析を行うオペレーターです。今回のような音量のデータが欲しい場合には、Analyze > Function のパラメーターを Maximum か RMS Power を選びます。
音量に反応させる

/project1/SIMPLE_AUDIO_REACTIVE
Analyze CHOP を使って音量が取得できたので、それを使って簡単なオーディオリアクティブのセットアップをつくってみます。とりあえず簡単にボックスのスケール値にあてはめてみました
やってみよう
Analyze CHOP と Rename CHOP の間に他のオペレーターを入れると動きの印象がどう変化するか試してみましょう。
Lag CHOP Filter CHOP Math CHOP Limit CHOP などが変化がわかりやすいと思います
また、他のパラメーターにアサインするとどういった動きになるかも見てみてください。
帯域別に処理する
/project1/AUDIO_FILTER
Audio Filter CHOP を使うと、オーディオ信号にバンドパス、ハイパスなどのフィルターをかけることができます。
フィルターをかけた後のオーディオデータに対して Analyze CHOP をかけることで、特定の帯域の音量をデータとして取り出すことができます。
フィルターするべき帯域を探す時は、 Audio Filter CHOP の後の音を Audio Device Out CHOP につないで聞きながら調整するといいでしょう。
Trail

/project1/TRAIL_RESAMPLE
Trail CHOP はこれまでにも値のログを表示するといった用途で何回か使ってきましたが、これはアニメーションにも応用できます。
例えば、Trail CHOP の出力を CHOP to TOP に接続するとそのまま画像に変換され、波のようなアニメーションの画像になります。
それをさらに Pallet の中の Image Filters > cartesianToPolar を通すことで音に反応する波紋のようなアニメーションに変換ができます。
cartesianToPolar は、入力されたTOPを極座標系に変換するもので、ひらたく言うと直線っぽい絵を入れると円っぽい絵に変換してくれるものです。
やってみよう
Trail CHOP の Window Length を変更してアニメーションがどう変化するかを見てみてください。
また、Transform TOP の回転角やスケールを調整したり、TOPのエフェクトを加えることでどういった変化がおこるか色々ためしてみてください。
Trail 2
/project1/TRAIL_INSTANCE
Trail CHOP ではCHOPのデータが出力されます。であれば、前回の授業でやったインスタンシングを使ったアニメーションを作ることもできます。
このサンプルではインスタンシングのパラメーターに大きさや透明度をわりあてています。
Trail CHOP の Resample パラメーターを指定することで出力するサンプル数を強制的に指定できます。これはインスタンスの数が増えすぎないように調整する時に役立ちます。
やってみよう
Trail CHOP の Window Length を変更してアニメーションがどう変化するかを見てみてください。
インスタンシングにわりあてるパラメーターを変更してみて、どういう感じになるか試してみてください。
実習
今日やった音の入力、フィルター、音量の解析などを使って、何か音に反応するグラフィックを作ってみてください!
音源を変えてみる、マイクの音に反応させるなどしてもいいかもしれません