gpt4 book ai didi

iphone - 基于傅里叶变换创建 iPhone 音乐可视化器

转载 作者:太空狗 更新时间:2023-10-30 03:53:43 26 4
gpt4 key购买 nike

我正在为 iPhone 设计一个音乐可视化应用程序。

我正在考虑通过 iPhone 的麦克风拾取数据,对其运行傅立叶变换,然后创建可视化效果。

我能得到的最好的例子是 aurioTuch它根据 FFT 数据生成完美的图形。但是,我一直在努力在自己的项目中理解/复制 aurioTouch。

我无法理解 aurioTouch 在执行 FFT 之前从麦克风中获取数据的确切位置?

在我的项目中还有其他代码示例可以用来执行此操作吗?或者有什么其他技巧吗?

最佳答案

由于我打算自己使用麦克风输入,所以我认为您的问题是熟悉相关示例代码的好机会。

我会追溯阅读代码的步骤:

  1. 出发于 SpectrumAnalysis.cpp (因为很明显音频必须以某种方式到达此类),您可以看到类方法 SpectrumAnalysisProcess有第二个输入参数 const int32_t* inTimeSig --- 听起来是一个很有前途的起点,因为输入时间信号正是我们要寻找的。
  2. 使用右键单击菜单项 Find in project在这个方法上,你可以看到除了明显的定义和声明之外,这个方法只在FFTBufferManager::ComputeFFT内部使用。方法,它在哪里得到mAudioBuffer作为它的第二个参数(第 1 步中的 inTimeSig)。查找此类数据成员会给出 2 或 3 个以上的结果,但其中大部分又只是定义/内存分配等。有趣的搜索结果是 mAudioBuffer。用作 memcopy 的参数, 在方法内部 FFTBufferManager::GrabAudioData .
  3. 再次使用搜索选项,我们看到 FFTBufferManager::GrabAudioData只被调用一次,在一个名为 PerformThru 的方法中.此方法有一个名为 ioData 的输入参数(听起来很有希望)类型 AudioBufferList .
  4. 寻找 PerformThru ,我们看到它在以下行中使用:inputProc.inputProc = PerformThru; - 我们快到了::看起来像是在注册一个回调函数。正在寻找 inputProc 的类型,我们确实看到它是AURenderCallbackStruct - 就是这样。回调由负责为其提供样本的音频框架调用。

您可能必须阅读 AURenderCallbackStruct 的文档(或者更好,Audio Unit Hosting)以获得更深入的理解,但我希望这能给你一个好的起点。

关于iphone - 基于傅里叶变换创建 iPhone 音乐可视化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4505694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com