第12回: 音反応 2

前回の授業では主にレコーディングれたものやライブの音声の、音量をビジュアライズすることにフォーカスして紹介しました。
今回はもう1次元あがって、音声の周波数帯ごとの音量をスペクトラム解析を使って取得し、それをビジュアライズするサンプルを紹介していきたいと思います。
スペクトラム解析
/project1/AUDIO_SPECTRUM
スペクトラム解析をするのは非常に簡単で、前回 Audio Analyze CHOP を入れていたような所を Audio Spectrum CHOP に変更するだけです。これで入力された音声のスペクトラムが解析されます。
Audio Spectrum CHOP のパラメーター
/project1/SPECTRUM_PARAMS
Audio Spectrum CHOP を使うにあたって重要なパラメーターがいくつかあるので解説します。
FFT Size
スペクトラム解析の計算に使うサンプルのサイズ。高くすると解析の精度は上がるがレスポンスが悪くなる
Frequency <-> Logarithmic Scaling
スペクトラムのグラフを表示する際の音量 / 周波数の比率を変える。
1に近付くほど高温側の周波数を圧縮して、低音側がちゃんと見れるようなグラフになる
High Frequency Boost
高温側のボリュームを上げる
これらのパラメーターを解析する音に応じて調整することで、よりよいビジュアライズが得られます。
スペクトルを使ったインスタンシング
/project1/SPECTRUM_INSTANCE
解析したスペクトルはCHOPのデータになるので、もちろんインスタンシングのパラメーターとして使うことができます。
一点注意しなければいけないのは、Audio Spectrum CHOP から出力されるデータは非常にサンプル数の多いオーディオ的なデータになっている所です。
これをインスタンシングなどをする時にも使いやすいサンプル数の短いデータにするには、Output Length のパラメーターを Set Length Manually に変更して欲しいだけのサンプルの長さを入力します。

または、 Audio Spectrum CHOP の後に Resample CHOP をつなげて、
MethodをNew Rate, New IntervalにUnit ValueをAbsoluteにStart,Endの値を変更して欲しいサンプル数にする
といった手順で任意のサンプル数、フレームレートに変換できます。

Audio Spectrum CHOP の Output Length を変更するほうが一見簡単にみえますが、その場合だとサンプルレートはオーディオと同じままになってしまい、後々 Lag CHOP や Filter CHOP を使おうとした時に何故か動かない… みたいな感じになってしまうので、多少めんどくさくてもResample CHOP を使って丁寧にフォーマット変換をするのがオススメです。
変換ができれば、いつものようにCHOPで好きなパラメーターを作って Geometry COMP で動かしていくと周波数に反応するジオメトリのアニメーションができます。
やってみよう
先週やったようにオペレーターを追加したり、パラメーターを変更したりしてアニメーションがどう変化するかを見てみてください。
Resample CHOP の後、CHOPレベルで変化を加えたり、Geometry COMP にアサインするインスタンスのパラメーターを変更していくと色々な表現が作れます!
スペクトラムのTrail

/project1/SPECTRUM_TRAIL
Audio Spectrum CHOP の出力を CHOP to TOP で変換したものと Feedback TOP を組み合わせると Trail CHOP の画像版のようなものを作ることができます。
僕はこのおじさんのチュートリアルで知りました
このスペクトラムのTOP画像は音に反応したものを作る時に非常によく使うのですが、Feedback TOP のややこしさから、一から作るとなると非常にめんどくさいです。なので、使いたい時は以前に作ったものをコピペしてきたり、zipの中に入っている SPECTRUM_TRAIL.tox のような形でモジュール化して使いたい時に素早く使えるようにしています。
やってみよう
CHOPやTOPのレベルで色々試して、映像のニュアンスをなるべく音に寄せてみてください。
オーディオファイルを変えてみるのもいいかもしれません。
解析結果が低音域や高音域に偏ってしまっている場合、 Trim CHOP などを使ってデータ的に変化のない部分をカットしたほうがいい結果になる時があります。
/project1/SPECTRUM_TRAIL2 にも別で作ってみたものがあるので見てみてください。