我读过这些问题:
iOS FFT Accerelate.framework在播放期间绘制频谱
它们都描述了如何使用加速框架设置fft.在他们的帮助下,我能够设置fft并获得一个基本的频谱分析仪.现在,我正在显示我从fft获得的所有值.但是,我只想显示10-15或一个可变数量的条形图来确定某些频率.就像iTunes或WinAmp Level Meter一样.1.我是否需要从一系列频率中平均幅度值?或者他们只是向您展示特定频率条的幅度?2.此外,我是否需要将我的幅度值转换为db?3.如何将数据映射到特定范围.我是否映射了我的声音bitdepth的最大db范围?获取bin的最大值将导致跳转最大映射值.
我的RenderCallback:
static OSStatus PlaybackCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
UInt32 maxSamples = kAudioBufferNumFrames;
UInt32 log2n = log2f(maxSamples); //bins
UInt32 n = 1 << log2n;
UInt32 stride = 1;
UInt32 nOver2 = n/2;
COMPLEX_SPLIT A;
float *originalReal, *obtainedReal, *frequencyArray, *window, *in_real;
in_real = (float *) malloc(maxSamples * sizeof(float));
A.realp = (float *) malloc(nOver2 * sizeof(float));
A.imagp = (float *) malloc(nOver2 * sizeof(float));
memset(A.imagp, …Run Code Online (Sandbox Code Playgroud)