ios - 使用 vecLib/vDSP 创建带包络的正弦音调发生器

标签 ios audio accelerate-framework vdsp

我想用 Accelerate 框架创建一个正弦音发生器。我希望我的发生器具有启动/释放设置(即振幅包络)。

我了解如何创建一个充满正弦值的向量。我不知道的是如何将振幅包络应用于我的矢量数据。

我知道我可以使用 vDSP_vgen 创建一个斜坡矢量来创建一个线性体积包络矢量并将我的正弦矢量乘以我的包络矢量。不过,这似乎很浪费,因为我正在处理许多数据点,创建一个中间向量只是为了存储振幅包络在我的环境中非常浪费内存。

使用 Accelerate 框架处理振幅包络的最佳方式是什么?

最佳答案

您不必仅使用矢量函数来创建或操作矢量。矢量函数如果存在并且速度更快,就会很有用。我会针对每个向量元素调用 envelope() * sinf() 来对向量操作序列进行基准测试,以创建带包络的正弦波,并查看哪个在您的 iOS 测试设备上速度更快。

如果您有足够的内存来保留较长的中间向量并重复使用它们(例如重复使用信封),这可能会为后续迭代提供性能提升。这是典型的内存使用与性能 Y 权衡。

关于ios - 使用 vecLib/vDSP 创建带包络的正弦音调发生器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8942993/

相关文章:

html - 音频标签自动播放不适用于移动设备

c++ - 使用 Apple Accelerate Framework vForce 库提高性能

ios - 从录制的声音中消除已知音频,通过反卷积估计背景声级

c - Ruby C 扩展 - 添加系统框架

c# - 无法在 Xamarin IOS 中捕获 WkWebView 的屏幕

ios - observeValueForKeyPath 总是从主线程调用吗?

ios - Swift:以编程方式添加 UIScrollview 不会在 View 中滚动

ios - 十三位数字转换成NSDate

Java如何编写128kbps的wav文件

winapi - 如何枚举媒体流?