我正在尝试对文件进行频谱分析。由于我要分析的文件可能很长(40 分钟左右),因此实时分析对我来说并不是一个真正的选择。
我目前正在使用 Minin 的 FFT 类,但看起来我只能运行一首已经在播放的歌曲。我也看过ess library,但我知道这也仅限于拥有实时流。
有没有办法只迭代小块的音频文件,然后在该数据上运行 fft?
这是我现在拥有的简化版本:
void setup()
{
minim = new Minim(this);
frameRate(30);
song = minim.loadFile("../shortfile.mp3", 1024);
song.loop();
fft = new FFT(song.bufferSize(), song.sampleRate());
background(#ffffff);
}
void draw()
{
fft.forward(song.mix);
for(int i = 0; i < height/2; i++)
{
intensity = constrain((log(fft.getBand(i)*1.4) / log(1.15)), 0, 40);
intensity = int(map(intensity, 0 , 40, 0, 255));
stroke(strokeColour(int(intensity)));
point(framecount, i);
}
}