对于那些在软件开发方面有一定经验,热爱合成器并且知道数字音频表示的[非常]基础的人来说,为DSP编写音乐合成器编程应该遵循的第一步是什么?

#1 楼

获取用于交互式应用程序的“真实声音合成”,然后下载“合成工具包”。对于大多数正在使用的数字合成方法,这将为您提供实用的介绍和高质量的源代码。然后选择您认为最有趣的方法,然后开始修改相应的STK代码以执行所需的操作。然后尝试从头开始构建类似的内容。

此外,像hotpaw2建议的那样,JOS的内容也是很好的入门资料。特别是,带音频应用的数字滤波器简介和离散傅立叶变换的数学都是从基础开始的,并且没有太多的背景知识。
好的出发点是查看Faust。您甚至不必学习它们的方框图信号处理语言,只需使用示例来转储VST,LADSPA等模板代码即可快速运行某些内容(然后可以对其进行修改)。

话虽如此,从声音渲染开始甚至更容易,这基本上是相同的,但无需担心实时操作或交互性。您只需将wav文件保存到磁盘。在尝试使新技术快速运行之前,这是一种尝试新技术的好方法。

评论


$ \ begingroup $
完美答案-它涵盖了非常均衡的问题。谢谢!
$ \ endgroup $
–vemv
2011年9月14日上午10:36

#2 楼

首先,您需要确定要构建哪种类型的合成器-加法,FM,基于样本等。您还需要确定是要模拟某种现有的模拟合成器还是仅设计自己的模拟合成器。

其余的工作非常简单-您只需要在软件中实现各种合成器构建块(例如,振荡器,滤波器,噪声发生器,包络整形器等),然后实现将它们“连接”在一起并控制它们的方式参数。

#3 楼

我会读一本关于DSP的入门书,以及一些有关计算机音乐的书(亚马逊和其他书店列出了几本)。斯坦福大学还提供了大量有关DSP和声音合成的课程资料。有关人类听觉系统和心理声学的书籍也可能会有所帮助。

#4 楼

我很惊讶没有人提到SynthMaker。它非常易于使用,尽管很难进行低级操作(一定要使用开发人员模式),但是您可以从中学习有关Synthesizer体系结构以及通用DSP的很多知识。实际上,您可以利用它构建的东西,实际上,我用它来构建几乎所有的插件。

评论


$ \ begingroup $
作为软件开发人员,我一直不愿使用向导,但我相信DSP是一个世界,所以SynthMaker可以派上用场。另外,一些伴侣对此也有很好的经验:)
$ \ endgroup $
–vemv
2011年9月14日上午10:41

$ \ begingroup $
我本人将要提及SynthMaker。这是一个很棒的程序。
$ \ endgroup $
– Matt M.
2011年11月30日21:28

#5 楼

正如其他一些贡献者所提到的,必须有一个良好的DSP基础知识。这是一本很棒的书> http://www.dspguide.com/,作者请提供完整和免费的PDF下载。另一本常见的音乐技术课程书,提供了各种合成技术的高级视图,网址为http://www.amazon.com/Computer-Music-Tutorial-Curtis-Roads/dp/0262680823。我还要重申先前的贡献者Synthmaker的建议,它是用于开发VST插件的非常方便的可视化开发环境。最后,如果您只是想尝试而不做深入研究,可以尝试使用Csound,这是专门为声音合成设计的编程语言。

#6 楼

我只是想补充一下,因为大多数答案都集中在DSP问题上。如果您不使用像SynthMaker这样的模块设计系统,那么您将花费大量的开发时间来处理语音管理。如果您是从头开始编写VSTi乐器插件,则学习曲线要​​比效果插件的学习曲线长得多。您将必须管理每个音符对象,如果您的DSP仅足够快以发出16个声音,对音高弯曲,滑音,调制等做出响应,则要决定在有20个音符时会发生什么。建议从Buzz或SynthMaker开始,直到最后碰到墙时才滚动自己。