メモの穴

メモ化

Unityで音楽に合わせてアレするやつ

Unityで流れている音楽に合わせて何かしたいときのメモ.

Audio

Unityで音楽を再生する場合,Audio Clip,Audio Source,Audio Listenerを使う.ClipをSourceで再生,Listenerで聞き取って,スピーカーから出力.

docs.unity3d.com

tips.hecomi.com

流れている音楽のデータ取得

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);


docs.unity3d.com

docs.unity3d.com

tips.hecomi.com

www.sawalemontea.com

ibako-study.hateblo.jp

よく見るやつ

samplesの値をどれか1つ使ったり,合計したり,並べたりするだけでもそれっぽいものができる.

f:id:memonoana:20181006163414g:plain:w300

f:id:memonoana:20181006155016g:plain:w300