this onset detection program中有几行代码使用了很难融入iOS的FFTW3 library。我想用Accelerate framework替换它。
在onsetdshelpers.h中有一个成员变量:
fftwf_plan fftplan;
然后在onsetdshelpers.c中有几个malloc方法:
odsbuf->windoweddata = (float*) fftwf_malloc(framesizebytes);
odsbuf->fftbuf = (float*) fftwf_malloc(framesizebytes);
实例化fftplan
odsbuf->fftplan = fftwf_plan_r2r_1d(ods->fftsize, odsbuf->windoweddata, odsbuf->fftbuf, FFTW_R2HC, FFTW_ESTIMATE);
释放记忆的方法:
void onsetsds_destroy_audiodata(OnsetsDSAudioBuf *odsbuf){
// take down the FFTW stuff
fftwf_destroy_plan(odsbuf->fftplan);
// free mem
free(odsbuf->data);
free(odsbuf->window);
fftwf_free(odsbuf->windoweddata);
fftwf_free(odsbuf->fftbuf);
}
最后实际执行FFT的方法:
fftwf_execute(odsbuf->fftplan);
我对C和FFT的了解非常有限。任何指示让我走向正确的方向,非常感谢。