音频总线

前言

Godot的音频处理代码是为了游戏而写的, 以达到性能和音质之间的最佳平衡.

Godot的音频引擎允许创建任意数量的音频总线, 并且可以向每个总线添加任意数量的效果处理器. 运行游戏的设备的硬件会限制总线的数量, 以及在性能开始下降之前可以使用的效果.

分贝标度

Godot的声音界面是为了满足声音设计专业人士的期望而设计的. 因此主要采用分贝标度.

对于那些不熟悉它的人, 可以用一些事实来解释:

  • 分贝(dB)标度是一个相对标度. 它等于声功率比的常用对数的20倍(20 × log10(P/P/0)).

  • 每增/减6分贝, 声幅就会加倍/减半.12dB代表系数4,18dB代表系数8,20dB代表系数10,40dB代表系数100, 以此类推.

  • 由于比例是对数的, 因此无法表示真零(无音频).

  • 0 dB 是数字音频系统中可能的最大振幅. 这个限制不是人为的限制, 而是声音硬件的限制. 因振幅太高而无法完全反映在0dB以下的音频, 会产生一种被称为 削波 的失真.

  • 为了避免削波,你应该调整混音,使master 总线(后面会有更多的介绍)永远不超过 0 dB。

  • 低于0dB限制的每6dB, 声能就会 减半 . 这意味着-6dB的音量是0dB的一半. -12dB是-6dB的一半, 依此类推.

  • 使用分贝时, -60dB和-80dB范围内的声音被认为是听不见的. 也就是说你的工作范围一般在-60dB和0dB之间.

这可能需要一点时间来习惯, 但最终会变得友好, 并且可以让您与音频专业人员更好地进行交流.

音频总线

音频总线可以在Godot 编辑器的底部面板中找到:

../../_images/audio_buses1.png

音频总线 (audio bus)(通常也称为 音频通道 (audio channel) )是音频从扬声器播放出来之前通过的地方. 它可以 修改重路由 音频数据. 音频总线有一个 VU表(播放声音时亮起的条形), 表示通过的信号的幅度.

最左边的总线是 主总线 . 此总线将混音输出到你的扬声器, 因此, 正如之前 分贝标度 部分所述, 请确保主总线中的混音水平永远低于 0 dB. 其余的音频总线可以灵活地进行路由. 在修改声音后, 它们会将其发送到左边的另一条总线上. 非主总线的目标总线可以被单独设置. 而右侧总线的音频会被路由至左侧总线, 这避免了无限循环.

../../_images/audio_buses2.png

在上图中, Bus 2 的输出被路由到了 总线.

通过总线播放音频

要测试将音频传递到总线, 请创建AudioStreamPlayer节点, 加载AudioStream并选择要播放的目标总线:

../../_images/audio_buses3.png

最后将 Playing 属性勾上 On , 声音就开始播放了.

参见

你现在可能有兴趣阅读 音频流

添加特效

音频总线可以包含各种效果. 这些效果以某种方式修改声音并按顺序应用.

../../_images/audio_buses4.png

全部试一试, 感受声音的改变. 下面是对以上效果的简短描述:

增幅(Amplify)

增幅改变信号的振幅. 使用时要小心. 把电平调得太高的话, 声音就会被削波, 这通常是不可取的.

带限和带通(BandLimit and BandPass)

它们是共振滤波器, 在 截断 (Cutoff)点附近阻断频率. 带通滤波器可以用来模拟旧电话线路或扩音器传出的声音. 调节带通滤波器的频率, 可以模拟吉他哇音(wah-wah)踏板的声音, 想想吉米·亨德里克斯在 Voodoo Child (Slight Return) 中使用的吉他吧.

Capture(捕获)

Capture(采集)效果器会将其所在音频总线的音频帧复制到内部缓冲区中。可用于从麦克风获取音频或通过网络实时传输音频。

和声(Chorus)

和声效果器会复制传入的音频, 稍微延迟重复信号, 并使用低频振荡器连续调节重复信号的音高, 然后再将重复信号(一个或多个)和原始信号混合在一起. 这就产生了一种微光效果, 并增加了声音的立体声宽度.

压缩(Compressor)

当输入信号的幅度超过某一阈值时, 动态范围压缩器会自动衰减该信号的电平. 衰减的程度与传入的音频超过阈值的程度成正比. 压缩器的 “比例” 参数控制衰减的系数. 压缩器的主要用途之一是, 一个信号具有非常大声和小声的部分时, 压缩器可以用于降低动态范围. 降低信号的动态范围会更方便混音.

压缩器有很多用途. 例如:

  • 它可以在主总线中用于压缩整体输出.

  • 它可以在人声通道中使用, 使它们听起来尽可能均匀.

  • 它可以是 Sidechained . 也就是说, 它可以利用另一个音频总线的电平来降低一个信号的电平, 进行阈值检测. 这种技术在电子游戏混音中非常常见. 在出现语音时, 音乐或音效的电平会被 “降低”.

  • 它可以通过较慢的启动(attack)来强调瞬态. 让音效听起来更有力.

备注

如果你的目标是防止信号总体超过某个振幅限制, 而不是减少信号的动态范围……那么, 限幅器 (limiter) 可能是比压缩器更好的选择.

延迟(Delay)

通过反馈回路添加 “回音” 效果. 它可以与 混响 (Reverb)一起使用, 模拟宽阔的房间, 峡谷等声音从远处反弹回来的地方.

失真(Distortion)

使声音失真.Godot提供几种类型的失真: overdrive , tanbit crushing . 失真可以用来模拟通过低质量扬声器或设备发出的声音.

均衡器(EQ)

所有其他均衡器都从EQ继承而来. 它可以通过自定义脚本来扩展成一个具有自定义频段数的均衡器.

EQ6, EQ10, EQ21

Godot提供三个具有不同频带数的均衡器. 主总线上的均衡器可以有效地削减设备扬声器不能很好地再现的频率(例如, 手机扬声器不能很好地再现低音部分). 插入耳机时可以禁用均衡器效果.

过滤器

滤波器是所有其他处理器继承自的效果, 不能直接使用.

高通滤波器( HighPassFilter)

这些滤波器削减低于特定 截断 频率的频率. 高通滤波器用于降低信号的低音含量.

高架滤波器(HighShelfFilter)

减少所有高于特定 截断 值的频率.

限幅器(Limiter)

限幅器类似于压缩器, 但灵活性较差, 功能是限制声音不能超过给定的dB阈值. 在主总线上添加一个限制器是防止削波的防护措施.

低通滤波器(LowPassFilter)

削减高于特定 截断 频率的频率, 也可以产生共振(加强接近 截断 频率的频率). 低通滤波器可以用来模拟 “沉闷” 的声音. 例如, 水下的声音, 墙后的声音或遥远的声音.

低架过滤器(LowShelfFilter)

削减所有低于特定 截断 值的频率.

陷波滤波器(NotchFilter)

与带通滤波器相反, 它从频谱中的给定的 截断 处移除一个频段的声音.

声像(Panner)

声像效果允许在左右通道之间调整信号的立体声平衡(戴上耳机试听这个效果).

移相器(Phaser)

这种效果是由两个信号移相后互相抵消产生的, 但光这么解释并不直观. 你可以用它制作达斯 · 维德的声音, 或类似喷射的声音.

移调(PitchShift)

这种效果允许在不改变速度的前提下改变音调. 可以用对瞬态的影响最小的方式增/减所有频率. 移调可以用来创作特别尖锐或低沉的声音.

录制(Record)

Record 效果允许用户录制麦克风中的声音。

混响(Reverb)

混响可以模拟不同大小的房间. 可以调整各种参数以获得特定房间的声效. 混响通常从 Areas 输出(见 Reverb buses), 或对所有声音施加一个 “室内” 的感觉.

频谱分析仪(SpectrumAnalyzer)

这个效果并不会改变音频, 你可以把这个效果添加到你想要分析频谱的总线上. 通常被用于音频可视化. 使用了这个效果的演示项目可在 这里 找到.

立体声增强(StereoEnhance)

这种效果使用一些算法来增强信号的立体声频谱.

自动总线禁用

你不需要手动禁用闲置总线,Godot在检测到总线已经静音数秒之后, 就会禁用它(以及所有效果).

../../_images/audio_buses5.png

已禁用的总线VU表为蓝色, 而不是红绿色.

总线重排

流播放器使用总线名称来识别总线, 允许在保留对总线的引用时添加, 删除和移动总线. 然而, 重命名总线会导致引用丢失, 流播放器将输出到主总线. 之所以选择这个系统, 是因为重新排列总线相比重命名总线更为常用.

默认总线布局

默认的总线布局会自动保存到 res:// default_bus_layout.tres 文件中. 自定义总线布局可以从磁盘中保存和加载.