Я пытаюсь запустить анализ спектра для файла. Поскольку файл, который я хотел бы проанализировать, может быть довольно длинным (40 минут или около того), анализировать его в реальном времени на самом деле не вариант для меня.
В настоящее время я использую класс БПФ Минина, но, похоже, я могу запустить только песню, которая уже играет. Я также посмотрел на библиотеку ess , но понял, что это также ограничено наличием потока в реальном времени.
Есть ли способ просто перебрать аудиофайл небольшими порциями, а затем запустить 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);
}
}