Unityで音楽に合わせてアレするやつ
Unityで流れている音楽に合わせて何かしたいときのメモ.
Audio
Unityで音楽を再生する場合,Audio Clip,Audio Source,Audio Listenerを使う.ClipをSourceで再生,Listenerで聞き取って,スピーカーから出力.
流れている音楽のデータ取得
Audio Source,Audio Listenerの「GetOutputData」メソッドや「GetSpectrumData」メソッドを使うことで,流れている音楽のその瞬間のデータを取得することができる.
Audio Clipにも「GetData」というメソッドがあるけど,これは音源全体のデータを取得するので,リアルタイムに動作させるような目的には向いてなさそう.音楽を再生する前にあらかじめデータが欲しい場合はこれを使う.
GetOutputData
流れている音楽のその瞬間の波形データを取得する.
float[] samples = new float[1024]; int channel = 0; AudioSource.GetOutputData(samples, channel);
GetSpectrumData
流れている音楽のその瞬間のスペクトルデータを取得する.
スペクトルデータは,その瞬間の音を周波数ごとに分割し,各周波数の音がどれだけ含まれているかを表す.
float[] samples = new float[1024]; int channel = 0; AudioSource.GetSpectrumData(samples, channel, FFTWindow.BlackmanHarris);
よく見るやつ
samplesの値をどれか1つ使ったり,合計したり,並べたりするだけでもそれっぽいものができる.