跳转到内容

使用 XNA/音频声音/合成器创建游戏

来自维基教科书,开放世界中的开放书籍

合成器

[编辑 | 编辑源代码]

如果你想创建一个游戏,并且你思考你的游戏应该是什么样的声音,你很可能对想要营造的氛围和声音有很清晰的认识。
我认为有三种方法可以获得你想要的声音。

  1. 在网络上搜索免费的声音,以满足你的需求。
  2. 使用任何类型的录音设备(例如你的手机、带有录音功能的 mp3 播放器、麦克风...),出去录制你认为听起来很酷的任何东西,然后用录音软件对其进行增强。
  3. 使用合成器设计你自己的声音。

第三种也是最后一种方法是我认为最令人兴奋的方法,现在我在网络上搜索一个简单的合成器,我可以开始我的小实验。
我的目标(因此也是本文的目标)是了解如何操纵合成器的哪些部分才能获得什么样的音效。

我发现一本关于合成器编程/声音设计的不错书籍[1],该书使用Native Instruments Reaktor 5,因此我决定继续使用它并使用他们的基本合成器 Soundschool_Synth,该合成器可以从这里下载。不幸的是,这是一个演示版本,只能运行半小时,而且你无法保存你的快照,但它旨在演示声音合成的基本概念,因此这正是我需要的。
让我们启动 Reaktor 5 的演示版本,转到文件打开合奏,然后选择 SoundSchoolAnalog.ens。你应该看到类似下面的内容




声音是如何通过合成器的?

[编辑 | 编辑源代码]

每个合成器都包含三到四个基本元素来塑造声音:首先,必须生成一个声音。振荡器负责此任务。你可以选择一些基本波形,例如正弦波、锯齿波或矩形波。试一试它们,听听它们的区别。由于我们的合成器有两个振荡器,因此生成的声波必须混合。为此,所有具有多个振荡器的合成器都需要一个混音器。由此产生的信号是波形组合,它已经可以包含节拍和/或音程。此时,声音的生成已完成,我们开始进行声音的调制。
经过混音器后,我们的声波的下一个站是滤波器。这里会切断(过滤)部分频率,从而为声音添加不同的音色。试用不同的滤波器特性,玩弄截止旋钮,你就会听到声音的音色是如何变化的。
第三件事我们希望能够改变的是声音的淡入和/或淡出方式。这发生在放大器中。在这个合成器中,就像大多数其他合成器一样,放大器不可直接看见,但它由放大器包络控制,其中你会找到 4 个旋钮:A = 攻击、D = 衰减、S = 持续、R = 释放。改变它们的值,你可以直接听到(并在下面的图形中看到)声音的演变发生了什么。
所有其他组件基本上都有改变、调节和修改这四个元素的目的。



因此,让我们跟随声音的路径,并尝试深入了解真正发生了什么,以及我们在合成器中的每个不同模块中有哪些设计机会。

振荡器

[编辑 | 编辑源代码]

通常有 6 种不同的波形正弦三角形锯齿形矩形/方波、脉冲和噪声.
在我们的第一个振荡器中,我们有四种不同的波形和三个控制器来修改它们。
第一个控制器是 symm 旋钮,它改变波形的对称性。试一试!你有没有意识到,如果你选择脉冲波并将 symm 设置为 0(关闭),你将获得一个简单的矩形波,但是通过增加 symm,你可以修改波形的宽度,从而将其变成脉冲波?!如果你选择三角形波或正弦波,增加对称性将使其顺时针弯曲并变成锯齿波!
下一个旋钮是 interval 旋钮,它只是以音调为单位以半音的步骤对声音进行移调。
第三个旋钮调节调频:如果你将其调高,osc1 不仅会生成声音,而且其幅度还会控制 osc2 的频率。这意味着 osc2 的频率会更高,当 osc1 的波形为正时,会更低,当波形为负时。此功能为声音添加了一个非常重要的特征:颤音
让我们做一个简单的实验来试一试。

  1. 对于 osc1,选择脉冲波,并在混音器中将 osc1 设置为 0(关闭)。我们不想听到波形,我们只是想将其用作调制器,并且由于脉冲波在正负之间快速切换,因此它是演示 FM 的最佳波形。
  2. 对于 osc2,选择正弦波,并在混音器中将其设置为 1(打开)。现在慢慢将 FM 旋钮调高。现在你应该能听到声音中的颤动,但它会变得更加明显!
  3. 现在将 osc1 的音程设置为 -60,将 osc2 的音程设置为 60。你在示波器中应该看到一个从
这个 切换到这个

的波形。如果你仍然不理解发生了什么,将 osc1 设置为 1,这样你就可以听到我们用于操作的声音:它是一种周期性的、非常短的声音,听起来就像一个节拍。现在应该一切都清楚了:当节拍声波为正时,我们的正弦波的频率及其声音很高,当它为负时,频率很低,因此我们听到一个低沉的声音。
第二个振荡器提供了相同数量的不同参数,这些参数与第一个振荡器略有不同。与 osc1 的 symm 控制器不同,puls-sym 控制器只是调整脉冲宽度;而不是 FM 控制器,我们有一个用于微调的旋钮。只有当我们同时使用两个振荡器作为声音发生器时,微调才有意义,这样我们才能相互微调它们。
让我们再做一个小的实验来了解微调可以达到什么样的效果。

1. 我们为两个振荡器选择方波/脉冲波形,并在混音器中将 osc1 设置为 1(打开),将 osc2 设置为 0(关闭)。
2. 在键盘上弹奏一个音符时,慢慢地将 osc2 也打开。如果你停在约 0.25 处,你应该能够很好地看到示波器中的效果。
它应该看起来类似于此
两个波形叠加在一起,到目前为止,声音的特性还没有真正发生变化。
3. 试一试将微调打开会发生什么。看起来一个波形比另一个波形更快,而且正如你所听到的那样,音调似乎已经开始获得一些色彩。
4. 然后再次关闭微调,试一试音程。基本上,音程旋钮和微调旋钮的作用相同:它们改变波形的频率,但微调只会产生非常细微的
变化,而将音程设置为 12(或 24)会使音调提高一个八度(或两个)。
示波器现在应该看起来类似于此
你有没有意识到,虽然音调相差一个、两个、三个...个八度,但你却听到它们是一个音调?!

你可以随意调节音程和失谐,甚至尝试组合其他波形!你所体验到的实际上是拍频现象:当两个频率略微不同的振荡器相互干扰时就会出现拍频。声音会变得更饱满,听起来更生动。

同步代表同步,它是一个工具,类似于 FM,它赋予第一个振荡器一个调制作用:每当它的信号到达起始点时,它就会迫使第二个振荡器也从头开始。选择一个脉冲波作为 osc1 和一个锯齿波作为 osc2。现在增加 osc2 的音程(将其设置为 1 到 12 之间的某个值)并选中同步框。在混音器中将 osc1 打开 0,osc2 打开 1,你就会看到锯齿波是如何在脉冲波每次穿过 x 轴时被中断和重置的。


LFO 代表 低频振荡器。它的工作方式基本上与 FM 非常相似。LFO 振荡器生成一个波形,通常频率低于 20Hz,然后用于修改合成器中的某些组件,例如任何其他可听振荡器(音高和对称性)、滤波器或放大器的输入。显然,与 FM 的区别在于,你可以使用这个波形来修改合成器中所有可修改的组件。它的速率定义了速度(在我们的合成器中介于 0.1 到 10Hz 之间),而它的幅度(你猜对了!...)定义了调制的幅度。在我们的合成器模型中,LFO 的前三个单元(速率、波形和对称性)描述了生成波形的特征,而右边的单元描述了波形调制的程度和方式。

混音器

[编辑 | 编辑源代码]

混音器的前两个旋钮不言自明:它们调节从两个振荡器中获取的信号量。第三个控制器负责环形调制。..这听起来很复杂,但实际上很简单:它实际上是两个波形的乘积(osc1 的信号乘以 osc2 的信号)。将两个振荡器的混音器设置为 0,打开环形调制,然后尝试不同的波形组合!

滤波器

[编辑 | 编辑源代码]

我们合成器的 滤波器 包含一个下拉菜单,我们可以在其中选择要使用的滤波器类型,以及四个控制器。
最重要的控制器是 **截止** 旋钮!它设置滤波器开始工作的频率。这意味着,如果你选择一个 低通滤波器,只有频率高于截止值的部分被过滤,而低于截止值的频率则不变地通过;如果你选择一个 高通滤波器,则高于截止值的信号通过,而低于截止值的信号被过滤,而 带通滤波器 过滤了高频和低频信号,只让截止频率附近的频带不变地通过。
此时,我们应该看一下滤波器的斜率。在我们的合成器中,滤波器不仅在范围上有所不同,而且在斜率上也有所不同。斜率以 分贝八度 为单位测量,告诉我们滤波器开始拉入的速率。斜率为 6dB/oct 的滤波器也被称为 1 极点滤波器,斜率为 12dB/oct 的滤波器被称为 2 极点滤波器,依此类推。..这就是我们滤波器名称后面的数字所代表的意义!因此,如果你只是在 Lowpass1 和 Lowpass4 之间切换,你就会意识到,极点数量越高,斜率越大,我们就能越清楚地听到滤波效果!
**共振** 控制器也很重要:它会提升截止频率附近的频率!如果你完全打开它,滤波器就会开始自振。这是因为截止频率附近的频率被提升了,导致它们变成正弦波,所有泛音都被削掉了!听到和看到这种现象的最佳方法是选择噪声波,将滤波器设置为 LowPass4,将共振设置为 1。因为我们选择了低通滤波器,所以所有低于截止值的频率都被过滤掉了,因此,如果截止值很高,就不会有任何变化。但是,尝试降低截止值!你会发现,随机噪声信号逐渐变成正弦波!
**Env** 值仅仅描述了滤波器受滤波器包络控制的程度,滤波器包络的目的是控制滤波效果的时间顺序。再次选择噪声波,将共振设置为 1,将截止频率设置为 80。如果你现在更改包络的 ADSR 值,并将 env 控制器设置为负值,你会发现结果就好像你将截止频率从低频提高到 80 一样;如果你将 env 控制器设置为正值,结果就好像你将截止频率从高频降低到 80 一样。你可以看到,使用包络的效果与使用控制器相同,而滤波器包络则控制着音色的变化。
**K-track** 代表键盘跟踪,它负责截止频率跟随音符音高的程度。选择带有低通 4 滤波器的脉冲波,将截止频率设置为 80,将共振设置为 0.5。现在弹奏一个非常低的音符,然后弹奏一个非常高的音符,同时将 k-track 设置为 0(关闭)。我们可以在示波器中看到,高音符被过滤了,几乎没有泛音了,变成了正弦波,而低音符则保留了其独特的音色和形状。大多数时候,我们不希望这种情况发生,而是希望滤波器根据我们弹奏的频率进行过滤。如果现在我们将 k-track 打开 1,就会发生这种情况!

低音 高音(无 k-track) 高音(有 k-track)


放大器

[编辑 | 编辑源代码]

正如之前提到的,放大器在合成器中并不真正可见,但它由放大器包络来代表。这个单元的功能与滤波器包络的功能相同,你可以修改 ADSR 值,只是它不是控制过滤的变化,而是实际调节最终可听声音的变化。这是声音设计中最基本工具之一,因为它决定了声音是短促而清脆还是悠长而舒缓。正如你所能想象的,赛车游戏的音效的放大器包络应该与赛马游戏的音效的放大器包络有很大不同,而风声的变化与枪声的变化也不同!

我们不都喜欢模式吗?

[编辑 | 编辑源代码]

所以现在我们已经了解了所有不同的组件以及它们的作用,与其只是随意拨弄旋钮,希望偶然从机器中得到一个不错的声音,不如给自己一个模式(用来作为指导,当然不是死板地遵循它),以实现我们的第一个合理结果。
以下是我们应该遵循的步骤

做什么? 在哪里做?
1) 改变原始音色 Osc1、混音器
2) 添加拍频和振荡器调制 Osc2、混音器、LFO、滤波器包络->Osc
3) 修改滤波器特性 滤波器
4) 修改滤波器变化 滤波器包络
5) 修改音量变化 放大器包络


现在我们需要找到一个免费的合成器(类似于这个,这样我们就可以使用我们的模式!),然后开始真正做点什么!


参考文献

[编辑 | 编辑源代码]



jonnyBlu

华夏公益教科书