我想用 Accelerate 框架创建一个正弦音发生器。我希望我的发生器具有启动/释放设置(即幅度包络)。
我了解如何创建一个充满正弦值的向量。我不知道如何将幅度包络应用于我的矢量数据。
我知道我可以使用 vDSP_vgen 创建一个斜坡向量来创建一个线性体积包络向量,并将我的正弦向量乘以我的包络向量。不过,这似乎很浪费,因为我正在处理许多数据点并创建一个中间向量来存储幅度包络在我的环境中非常浪费内存。
使用 Accelerate 框架处理幅度包络的最佳方法是什么?
我想用 Accelerate 框架创建一个正弦音发生器。我希望我的发生器具有启动/释放设置(即幅度包络)。
我了解如何创建一个充满正弦值的向量。我不知道如何将幅度包络应用于我的矢量数据。
我知道我可以使用 vDSP_vgen 创建一个斜坡向量来创建一个线性体积包络向量,并将我的正弦向量乘以我的包络向量。不过,这似乎很浪费,因为我正在处理许多数据点并创建一个中间向量来存储幅度包络在我的环境中非常浪费内存。
使用 Accelerate 框架处理幅度包络的最佳方法是什么?
您不必仅使用向量函数来创建或操作向量。如果向量函数存在并且速度更快,则它们很有用。我将使用对每个向量元素的信封() * sinf() 调用使用信封创建正弦来对向量操作的序列进行基准测试,并查看在 iOS 测试设备上哪个更快。
如果您有足够的内存来保留较长的中间向量并重用它们(例如重用信封),这可能会为后续迭代提供性能提升。这是典型的内存使用与性能 Y 权衡。
对于音乐应用,线性放大器包络不是很常见/有用。
对于非线性斜坡,您的主要选择是: