我不知道这个问题是否有意义,因为我是dsp的新手。

在我对音频dsp的有限尝试中,我遇到过:

<我的问题是:这些是信号处理的主要基本类别(特别是音频)吗?频率调制
振幅调制
加法合成
减法合成


换句话说,可以将带有完整插件套件的FL Studio所具有的所有效果和奇特的功能分解为上述4种操作的一系列并结合起来吗?还是还有一大堆?从理论上讲,带插件的现代DAW可以按这种方式分为任何类别吗?

有一点背景知识:本质上,我试图将一个非常基本(但非常灵活)的音频合成器/编辑器作为一个项目来学习两者编程和音频dsp。使用Java时,我首先模仿了现实世界中的基本合成器类,调用了Oscillator和LFO之类的东西,但是每次学习新东西时,我发现自己不得不重写所有内容以使新概念适合该程序。 />
我现在尝试重新开始,并提出程序的基本对象和结构。为了正确执行此操作,我需要知道如何允许这些对象进行交互等...

谢谢!

EDIT ***

感谢有用的评论和答案。我意识到我可能一直低估了东西的dsp方面,我将无法仅为简单的合成器创建基本的模板和结构,然后仅对其进行扩展/构建。当我学习新东西和做事的“正确”方法时,我可能不得不一次又一次地进行重建……这将花费更长的时间,但是也许我会学到更多?同样抱歉,我似乎还没有足够的代表来投票支持任何人...我会尽快。

EDIT * EDIT ***

我应该补充一点,谷歌搜索揭示了有关“合成类型”的基本指南,我发现它是相关且有趣的。

评论

您是否需要有关合成技术的理论背景,还是想要更多类似的东西(即在实践中使用的常用方法)? dsp.stackexchange.com/questions/192/…

如果我将所有可能的声音处理归纳为尽可能少的类别,则将其命名为线性和非线性变换。但是这些方法太笼统,太宽泛,无法执行。

@datageist-我想我都需要!但这是一个非常有用的链接,谢谢。

@Alex这很笼统,但这是一个概念上的起点,至少我现在知道我在树错树皮。

获得Will Pirkle的书,《用C ++设计软件合成器插件:针对RackAFX,VST3和音频单元》。实际上,您将成为一个合成器并沿途学习,而不是尝试自己弄清一切。

#1 楼

AM / FM类别对效果有些奇怪-的确,您可以通过调制输入信号的幅度来获得一些有趣的效果。但是“频率调制”对于您甚至没有精确频率表示的复杂输入信号意味着什么?您可能会说,每个效果都是通过$ \ frac {out(t)} {in(t)} $信号进行的幅度调制,但这并不能帮助您实现它!

音乐制作软件提供的所有音频效果的核心都没有魔术专用引擎。但是,如果您看一下DSP开发人员提供的大量音频效果的源代码,则这里有一些“构建模块”,这些构建模块已被排除在自己的类中,并且被许多不同的效果共享。我并不暗示这为分类效果提供了良好的基础;但是从实现的角度来看,这些块是必不可少的:


Biquad滤波器。
延迟延迟线。
卷积引擎,用于快速卷积输入信号具有任意大小的脉冲响应。
波形整形器(将非线性函数应用于时域中的输入信号)。
合成器构建块:振荡器,LFO,ADSR包络线。
信号检测器:包络跟随器,f0提取器。

使用这些模块,您可以构建:


类似合成器的滤波器或哇哇:一两个二元组
Auto-wah:信封跟随器+信封+ biquad
镶边/移相器:LFO +延迟线
合唱:LFO +延迟线
算法混响:延迟线(并行和串行数组)梳状滤波器)
卷积混响:卷积
空间化器:卷积(具有HRTFs脉冲响应)
吉他放大器模拟:卷积,波整形
Bitcrusher(量化器):a Wavesapper的特殊情况
带正弦载波的环形调制器:振荡器
噪声门和其他动力学效果:包络跟随器
磁带模拟:卷积,波形发生器,包络跟随器(用于动力学处理)
EQ:双二阶颤音:LFO
莱斯利仿真:卷积+ LFO
声码器:双二阶+包络跟随器

虽然其中一些效果只是修补不同块的问题(镶边确实是LFO调制延迟线),但还有其他效果零件之间需要更复杂的胶水,这些胶水要足够具体,以至于不能作为其自身的构成要素。音乐制作,但它并不详尽,确实有一些效果不适合此框架...一些示例:
*采样率降低器(在bitcrusher中)很脏:是的,它是由狄拉克梳子和然后通过矩形窗口进行卷积...但是将其写为可复制一个样本ov的值更容易在以下N个样本中添加N个而不是对振幅调制和卷积进行修补!
*音调改变效果(音调移位,自动调谐)与该框架不太匹配。他们需要对音频信号进行更复杂的表示(频域方法为相位声码器;时域方法为基音检测和基音标记)。

我建议您使用“模块化样式”软件工具,例如Pd,Reaktor,Plogue,SyntheEdit ...-并尝试从它们为您提供的基本构建模块中实现效果。

评论


$ \ begingroup $
就其价值而言,调频合成中使用了频率调制。从单音调频调制的情况中很容易看出这一点,这种调制会产生具有由第一类贝塞尔函数定义的傅里叶级数的信号。
$ \ endgroup $
–布莱恩(Bryan)
2012年5月26日16:03

$ \ begingroup $
在合成器(例如Yamaha DX系列,基于OPL的硬件以及这些软件的软件仿真器)中实现的“ FM合成”是用词不当,因为实际上这是通过相位调制完成的。 zh.wikipedia.org/wiki/相位调制
$ \ endgroup $
–小食
2012年5月26日16:23

$ \ begingroup $
我没有看到该Wikipedia条目附带的任何资源。无论如何,根据该条目,它说它们听起来“相似”,并且使用PM是因为FM更难以实现。考虑到FM是PM的特例,我不买那个。尽管如此,我在调频调制背后引用的产生与贝塞尔函数有关的谐波的理论仍然有效,并且很有用。
$ \ endgroup $
–布莱恩(Bryan)
2012年5月26日17:54

$ \ begingroup $
@Bryan。参见“ FM”合成专利US4018121的权利要求1。 sin(w t + I(t)sin w_m t)-它是相位调制。 PM更容易实现,因为1 /您不需要额外的累加器就可以将变化的瞬时频率集成到相位中-请参阅此处的几篇文章,人们尝试生成随时间变化的音调并被咬回2 /从频率到相位增量的转换涉及除法。使用PM可以以调制率重新计算相位增量;使用FM,您将需要以采样率重新计算相位增量。
$ \ endgroup $
–小食
2012年5月26日18:36



$ \ begingroup $
非常有用的答案,谢谢。我意识到我一直在专注于编程方面(我只是在学习),而对d​​sp方面的重视不够。这可能不是一个我只能从小做起并逐步建立起来的项目,但随着我的学习,我将不得不多次重建和重建这个项目。
$ \ endgroup $
– Kiman
2012年5月26日19:07