我是一名意大利学生,正在使用p5的库创建一个网络吉他调音器。我想知道是否有办法获取麦克风输入的频率。
库链接:https://p5js.org/reference/#/libraries/p5.sound
接受不同库的不同解决方案
谢谢
我是一名意大利学生,正在使用p5的库创建一个网络吉他调音器。我想知道是否有办法获取麦克风输入的频率。
库链接:https://p5js.org/reference/#/libraries/p5.sound
接受不同库的不同解决方案
谢谢
fft.analyze()
来获取一个被分成不同频率区间的振幅数组。spectrum[0]
)包含了频率约为0-21.5Hz的振幅,1号区间(spectrum[1]
)包含了频率约为21.5Hz - 43.0Hz的振幅,依此类推。freq = binIndex * (nyquist / numberOfBins)
。fft.analyze()
返回的数组,找到峰值的索引,然后使用奈奎斯特与数组长度(区间数)相除的比率将该索引转换回频率。function getLoudestFrequency() {
var nyquist = sampleRate() / 2; // 22050
var spectrum = fft.analyze(); // array of amplitudes in bins
var numberOfBins = spectrum.length;
var maxAmp = 0;
var largestBin;
for (var i = 0; i < numberOfBins; i++) {
var thisAmp = spectrum[i]; // amplitude of current bin
if (thisAmp > maxAmp) {
maxAmp = thisAmp;
largestBin = i;
}
}
var loudestFreq = largestBin * (nyquist / numberOfBins);
return loudestFreq;
}
new p5.FFT(0.8,[bins])
。 文档显示最大bin数为1024,但我刚试过8192(分辨率为2.69Hz),感觉效果不错。