16

当谈到 iPhone 或任何平台上的音频和音乐时,我完全天真。

假设我想制作一个简单的钢琴应用程序 -是否可以通过编程方式为每个键生成声音?

还是我必须为每种可能的声音提供一个 .wav 文件?

我想知道像 GarageBand 这样的程序是如何提供如此多样的声音的——难道他们有一个文件可以容纳每一种可能的声音吗?

或者有没有办法动态生成这些声音?

编辑:我发现这篇最优秀的文章准确地描述了我想做的事情,这个人甚至有一个带有小钢琴的示例项目,所有声音都是以编程方式生成的。

4

2 回答 2

9

如本教程中所述,您可以通过编程方式生成音调。此处的示例向您展示了如何使用音频单元生成纯正弦波。

由于傅立叶定理,任何(周期)连续函数都可以表示为不同幅度和相位的正弦函数之和。使用它,您可以混合其中的一些功能来模拟乐器的声音。然而,这需要大量的研究和对波力学和微积分的深刻理解,所以这不是一项简单的任务。

于 2012-12-25T05:08:45.833 回答
3

钢琴合成器通常通过样本播放实现 - 这也包括真实世界的数码钢琴。与DDS 振荡器结合使用时,每个键的采样通常要少得多。

高质量的数码钢琴合成器还携带不同键速下的初始降键、延音、制音踏板打开和上键的样本,然后将这些样本混合在一起。

VST3 SDK中有一个源代码

于 2012-12-25T10:29:48.717 回答