【问题标题】:how to implement visual spectrum while playback musics如何在播放音乐时实现视觉频谱
【发布时间】:2011-07-20 13:21:13
【问题描述】:
你好,
我想实现与 iTunes 播放音乐类似的视觉效果。我正在使用 AVAudioPlayer,我的声音文件是本地的。我在 iTunes 中播放了相同的文件并捕获了此屏幕截图。
更新:
- 我研究了 Apple 的 avTouch 样本。可视化方面,我有一个粗略的想法。但这个示例是关于体积计量的
- 有人告诉我我需要使用 FFT,但我想太多了
- 发现iOS 4.1之后,Accelerometer框架包含FFT DSP functions
- 看来我需要接触 Core Audio(音频队列?)以获取样本缓冲区,然后对其进行 FFT
哎呀,我只想为我的播放实现一个简单的频谱,有人可以帮忙吗?
【问题讨论】:
标签:
iphone
objective-c
ios
core-audio
fft
【解决方案1】:
FFT“I”或实际输入是来自样本缓冲区的 n 个样本(最好在转换之前应用窗口加权)。将“Q”或虚输入设置为零。
输出是复数频谱,DC 在 index=0 位置。索引=1 对应于采样频率除以 FFT 长度 N,索引=2 是该频率的两倍,依此类推,直到索引 N/2。要获得某个频率的功率,您需要将实部和虚部的平方相加。
通常您希望以 dB 标度显示功率,计算为 10*log10(功率),显示中的每个块对应于例如3分贝。您可能还想添加一些平均或峰值检测。
更高级的显示器也有对数频率轴,例如每列对应 1/12 倍频程。理想情况下,每个输出都有自己的过滤器,但您可以通过添加更高索引的 FFT 输出而不是全部显示它们来实现类似的效果。