如何在播放音乐时实现可视频谱

时间:2011-07-20 13:21:14

标签: iphone objective-c ios core-audio fft

iTunes EQ

您好,

我想在iTunes播放音乐时实现类似的视觉效果。我正在使用AVAudioPlayer,我的声音文件是本地的。我在iTunes中播放了相同的文件并捕获了这个截图。

更新:

  1. 我研究了Apple的avTouch样本。可视化方面,我有一个粗略的想法。但这个样本是关于体积计量的
  2. 有人告诉我,我需要使用FFT,但那太过分了。
  3. 我在iOS 4.1之后发现,Accelerometer框架包含FFT DSP functions
  4. 似乎我需要触及Core Audio(音频队列?)来获取样本缓冲区然后进行FFT扫描
  5. 哎呀,我只想为我的播放实现一个简单的频谱,任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:4)

FFT“I”或实际输入是来自样本缓冲区的n个样本(优选地,在变换之前应用窗口加权)。将“Q”或虚数输入设置为“零”。

输出是复数谱,DC在索引= 0位置。 Index = 1对应于采样频率除以FFT长度N,index = 2两倍于该频率,依此类推至指数N / 2。要获得特定频率的功率,您需要添加平方的实部和虚部。

通常,您希望以dB刻度显示功率,计算为10 * log10(功率),显示屏中的每个块对应于例如3分贝。您可能还想添加一些平均值或峰值检测。

更高级的显示器也具有对数频率轴,例如,每列对应1/12倍频程。理想情况下,每个输出都有自己的滤波器,但您可以通过添加更高的索引FFT输出而不是全部显示来实现类似的功能。