Web Audio APIのFFTアナライザーを使ってみます。FFTについてはWEB SOUNDERさんのページがとても詳しいので参照して下さい。下のスイッチを押すと、マイクの音をFFTして、結果のパワーを表示します。上が波形、下がFFTの結果をパワーで表示しています。もう一度スイッチを押すと正弦波をFFTして、結果のパワーを表示します。FFTが動作している時には、ピーク情報には、大きなパワーの周波数とレベルを表示しています。波形の振幅が±0.5の正弦波では大体-20dBを示します。
波形
パワー
// ---------------------------------------------------------------------------
//Web Audio Initialize
var audioContext = new AudioContext();
var mAnalyser = audioContext.createAnalyser();
var audiosource_t;
// ---------------------------------------------------------------------------
//Mic ON - Get Usermedia
navigator.getUserMedia(
mConstraints,
function(stream){
audiosource_t=audioContext.createMediaStreamSource(stream);
audiosource_t.connect(mAnalyser);
},
function(e) { // I can't use getUserMedia
console.log(e);
}
);
// ---------------------------------------------------------------------------
mFrequencyBinCoun = mAnalyser.frequencyBinCount;
mAnalyser.fftsize = 2048;
//FFTの対象となった波形
myDataArray = new Float32Array(mFrequencyBinCount);
//FFTの結果
mytimeDataArray = new Float32Array(mAnalyser.fftsize);
// ---------------------------------------------------------------------------
//FFTの結果を取り出す
mAnalyser.getFloatFrequencyData(myDataArray);
mAnalyser.getFloatTimeDomainData(mytimeDataArray);