当涉及到iPhone或任何平台上的音频和音乐时,我完全是天真的。
假设我想做一个简单的钢琴应用程序--有没有可能以编程的方式为每个键生成声音?
或者我必须为每个可能的声音提供一个.wav文件?
我想知道像GarageBand这样的程序是如何能够提供如此多样化的声音的--是不是他们对每种可能的声音都有一个文件?
或者,有没有一种动态生成这些声音的方法?
编辑:我发现this most excellent article准确地描述了我想要做的事情,这个人甚至有一个样例项目,里面有一个小钢琴,所有的声音都是通过编程生成的。
发布于 2012-12-25 13:08:46
您可以通过编程方式生成音调,如此tutorial中所述。这里的例子展示了如何使用音频单元生成一个纯正弦波。
由于傅立叶定理,任何(周期)连续函数都可以表示为不同振幅和相位的正弦函数之和。使用它,您可以混合其中的几个函数来模拟乐器的声音。然而,这需要大量的研究和对波动力学和微积分的深入理解,所以这不是一项微不足道的任务。
发布于 2012-12-25 18:29:49
钢琴合成器通常是用样本回放实现的-这也包括真实世界的数字钢琴。通常,与DDS oscillator结合使用的每个键的样本要少得多。
高质量的数字钢琴合成器还携带初始按键、持续、减震器踏板打开和按键上升的样本,以不同的按键速度,然后将其混合在一起。
在VST3 SDK中有一个的源代码
https://stackoverflow.com/questions/14026777
复制相似问题