对于在软件开发方面有一定经验的人,喜欢他的合成器并且知道数字音频表示的[非常]基础知识,他应该遵循哪些第一步来对音乐合成器进行编程,DSP 明智?
为了构建软件合成器需要了解什么?
获取交互式应用程序的真实声音合成,并下载合成工具包。这将为您提供大多数使用中的数字合成方法的实用介绍和高质量的源代码。然后选择你觉得最有趣的任何一种方法,并开始修改相应的 STK 代码来做你想做的事。 然后尝试从头开始构建类似的东西。
此外,就像hotpaw2 建议的那样,来自 JOS 的任何东西也是很好的介绍材料。特别是,具有音频应用的数字滤波器介绍和离散傅里叶变换的数学都从基础开始,并且不假设很多背景。
从数字滤波器/效果的角度来看,另一个很好的起点是查看Faust。您甚至不必学习他们的框图信号处理语言,您只需使用示例转储 VST、LADSPA 等模板代码,即可快速运行某些东西 [然后您可以对其进行修改]。
话虽如此,从声音渲染开始就更容易了,这基本上是一样的,但不用担心实时操作或交互性。您只需将 wav 文件保存到磁盘。这是在经历使它们快速运行的麻烦之前试验新技术的好方法。
首先,您需要决定要构建哪种合成器 - 加法、FM、基于采样等。您还需要决定是要模拟某种现有的模拟合成器还是设计自己的。
其余的相当容易——您只需要在软件中实现各种合成器构建块(例如振荡器、滤波器、噪声发生器、包络整形器等),然后实现一种将它们“连接”在一起并控制它们的参数的方法。
请参阅 Hal Chamberlin 的著作《微处理器的音乐应用》,它很好地介绍了许多基础知识。
我会阅读一本关于 DSP 的介绍性书籍以及一些关于计算机音乐主题的书籍(亚马逊和其他书店列出了几本)。斯坦福大学还提供了大量关于 DSP 和声音合成的课程材料。有关人类听觉系统和心理声学的书籍也可能有所帮助。
我很惊讶还没有人提到SynthMaker。它非常容易使用,虽然它很难进入低级(一定要使用开发者模式),但你可以用它学到很多关于 Synthesizer 架构的知识,也可以了解一般的 DSP。你实际上可以使用用它构建的东西,事实上,我用它来构建我几乎所有的插件。