FFT(Fast Fourier Transform)
クロス合成にはFFTを使用する。FFTは簡単に言うと、帯域ごとの音量を調べられて、それらを弄れるようになる処理。スペクトラムアナライザなどに使われている。
↑これ
例えばドラムと歌声の2つの信号を足せば、聞こえてくる音はドラムと歌声になるが、クロス合成を使うと、ドラムのリズムで歌声が聞こえてくる。
マイク音声と音を合成
FFT処理のパッチ
MaxでFFT処理を行なう際に[pfft~]を使用しますが、この処理を行なう中身は別なパッチを組んで同じ階層のフォルダに保存する。まずは処理内容のパッチを作る。
[fftin~]を2つ作り、入力を2系統にする。
[fftin~]からは音声信号がFFT処理された状態で出てくる:
・アウトレット1:実数
・アウトレット2:虚数
・アウトレット3:インデックス(番号)
2つの入力ソースの実数、虚数それぞれを乗算するので、それぞれを[*~]に入れる。最後に実数を[fftout~]のインレット1、虚数をインレット2に送り、パッチを保存する。
メインパッチ
新しいパッチを作り、まずは先ほどのパッチと同じ階層のフォルダに保存する。
[pfft~]のアーギュメントに先ほどのパッチのタイトルを付けて、「1024 2」と続ける。
「1024」はFFTのサイズで、処理の都合上2の自乗になる(例:32, 64, 128, 256, 512, 1024, 2048, 4096)。サイズが小さいほど処理のサイクルが速いのでリズムがよくとれるが、音の再現が悪い。サイズが大きいほど音の再現が良くなるが、細かいリズムが音色として混ざってしまう。
「2」はオーバーラップ数で、数が多いほど音が混ざる。1だとノイズが乗るので、音をまともに再現したい場合は2以上が良い。
[pfft~]のインレット1、インレット2に別々の音声信号を送ればクロス合成された信号が出力されて出て来る。