HOME > MIDI/AUDIO LAB

Web MIDI API 実験室

Study about FFT of Web Audio API

このページは正弦波の音が出続けています。


わかったこと
  • FFT SIZEに対して、AnalyserのfrequencyBinCountはFFT SIZEの半分の値となる。
  • ナイキスト周波数はさらにその半分の値のところとなる。
  • サンプリング周波数が44100Hz、FFT SIZEが2048の時、512点目が22050Hzの場所となる。
  • 振幅が1.0の正弦波のピークはgetFloatFrequencyDataのピークを表示するとだいたい-14.0dBを示す。
  • 振幅が0.5では、だいたい-20.0dBを示す。振幅が0.25では、だいたい-26.0dBを示す。
  • getByteFrequencyDataの値は0-256の整数で、以下の式で計算できる。
  • getByteFrequencyData=INT(256*(getFloatFrequencyData-minDecibels)/(maxDecibels-minDecibels))
FFT SIZE:      Wave Gain: dB      OSC Pitch: Hz
minDecibels: dB      maxDecibels: dB


Program

//Audio Initialize
	var audioContext = new AudioContext();
	var audiosource;
	var node = audioContext.createScriptProcessor(1024, 2, 2);
	var myArrayBuffer = audioContext.createBuffer(2, 1024, audioContext.sampleRate);
	var sampleRate = audioContext.sampleRate;

// ---------------------------------------------------------------------------
	// Audio Node Connection
	audiosource = audioContext.createBufferSource();
	audiosource.buffer = myArrayBuffer;
	audiosource.connect(node);
	node.connect(audioContext.destination);

// ---------------------------------------------------------------------------
	var analyser = audioContext.createAnalyser();
	analyser.fftSize = 1024;
	node.connect(analyser);

// ---------------------------------------------------------------------------
	//Set Process
	node.onaudioprocess=process;

	function process(data){
	}




Copyright © Mikata Hawa 2015-2020
fabercastell679@yahoo.com