FMOD Studio User Manual 2.02

2. FMOD Studio 概念

本章介绍了几个基本的 FMOD Studio 概念。这些概念共同解释了 FMOD Studio 项目的各个组成部分是如何协同工作的,以及如何最好地开发 FMOD Studio 项目并在游戏中实现它。
本章旨在衔接本手册的其余部分,其中介绍的概念在后面的章节中会经常出现。

2.1 FMOD Studio 和 FMOD Engine

FMOD Studio 是一个应用程序,可用于为游戏创建自适应音频内容。在 FMOD Studio 创建的内容可以构建为事件库文件,然后可加载到 FMOD Engine 中。

FMOD Engine 可集成到游戏中,允许游戏播放自适应音频。FMOD Studio API 允许 FMOD Engine 加载和播放 FMOD Studio 内置的事件库文件,而 FMOD Core API 允许 FMOD Engine 在不使用 FMOD Studio 的情况下创建音频内容,并提供更多高级功能。FMOD Studio API 和 FMOD Core API 合称为FMOD API

用于 Unity 和 Unreal Engine 的 FMOD 是 FMOD Engine 的打包软件集成,用于 Unity 游戏和 Unreal-Engine 游戏。每个软件包都包括 FMOD Engine 的集成和副本。

FMOD版本号分为三部分,格式如下: _ product version . major version . minor version _ .事件库文件与 FMOD Engine 的任何版本兼容,FMOD Engine 与用于创建这些事件库的 FMOD Studio 的副本共享相同的主要版本号和产品版本号,并且与所有更高版本兼容。例如,FMOD Studio 2.01.03 中构建的事件库可以在 FMOD Engine 2.01.00 版本和所有更高版本中加载,但不能在早期版本中加载。

本手册中出现的“FMOD Studio Suite”是指 FMOD Studio 和 FMOD Studio API 的统称。

2.2 事件

一个事件是声音内容的可实例化单元,可从游戏代码中触发、控制和停止。根据规则,游戏中每一个产生声音的情况都应该有一个相应的事件。

步骤

事件包含并主要由轨道发声器参数组成。这些参数可触发发声器,将音频内容发送到轨道。这些轨道会收发到其他轨道,或事件的主轨道。事件主轨道的输出发送到项目调音台。此外,事件的参数可控制和操纵事件的大多数属性、大多数事件的发声器以及大多受事件轨道上的效果;事件的逻辑标记可操纵事件的时间轴参数。

可在事件浏览器中创建和组织事件,在事件编辑器窗口中编辑事件,在调音台窗口中收发事件,以及在沙盒窗口的上下文中试听事件。

有关通过游戏代码使用事件的更多信息,请参见FMOD API 文档

2.2.1 事件和事件实例

事件是‘实例化的’即单个事件的多个副本可以同时播放。这允许一个事件被用于多个相似的游戏内事件;例如,一个带有‘45马格南枪声’事件的游戏将在游戏中每次开枪时创建该事件的新实例。

随机事件的任何方面或者在事件的整个生命周期内可能变化的任何方面都可能在事件的不同实例之间发生变化。即单个事件的独立并发实例可以各自具有唯一的参数值,并在任何给定时间产生不同的输出。

请注意,事件编辑器窗口中显示的事件实例是一个特定的实例,其目的是通过该窗口来试听事件。该事件实例不代表该事件的任何其他实例,同样,也不指示或允许更改可能听到的其他实例的参数值和回放状态。

2.3 轨道

在大多数情况下,事件的轨道在事件中充当总线,允许每个事件实例充当小型调音台。通过在事件浏览器中选择事件,可在事件编辑器窗口中查看事件的轨道。(自动控制轨道不起总线的作用,而是与参数结合使用来控制事件的属性。有关更多信息,请参见自动控制和调制

步骤

音频轨道的功能相当于组总线。每个音频轨道都从该音频轨道上的发声器输出以及从发送到其中的事件中的任何其他组轨道的输出创建子混音。

辅助轨道的功能相当于辅助总线,并且是事件中其他轨道上发送的有效目标。

主轨道用作事件的主总线。事件中的所有信号最终会发送到事件的主轨道,并从那里发送到项目调音器

2.3.1 信号链

每个音频轨道、辅助轨道或主音轨都有一个信号链,即信号通过轨道时应用到信号的一系列效果。在事件编辑器窗口的编辑器中选择轨道,可在操作台中查看其信号链。

步骤

信号链中的效果模块按照它们在操作台中出现的顺序从左到右应用。默认情况下,信号链仅包含其“推子”,即音量控制。

2.4 发声器

事件中的所有音频信号都源自发声器,发声器是事件中产生噪音的基本组件。命令和快照发声器不产生音频信号,而是与参数一起使用,以控制整个游戏的音频行为。如需详细信息,请参阅使用发声器章节的命令发声器部分,以及调音章节的快照和轨道视图部分。

发声器

发声器在编辑器中的事件轨道上显示为彩色框。这些彩色框称为触发区域

每个发声器都位于可以触发它的特定参数表上,并且仅在显示该参数表时出现在事件编辑器窗口的编辑器中。发声器触发区域覆盖的参数值范围代表可以触发发声器的参数值范围。

当参数表的回放位置开始与发声器的触发片段重叠时,发声器被触发。被触发的发声器开始产生信号并被输出到发声器所在的轨道。

当回放位置不再与发声器的触发片段重叠时,该发声器被解除触发。解除触发发声器的行为由许多因素决定,包括它的切割行为,它是同步还是异步,以及它的任何属性是否受AHDSR 调制的影响。

在事件编辑器窗口的编辑器中单击仪器将其选中,并在操作台中显示其面板,允许编辑其属性和内容。有关发声器属性的更多信息,请参阅使用发声器章节。

许多发声器都有一个播放列表。播放列表可以包含其他发声器,甚至可以包含位于项目中其他位置的事件。无论何时触发发声器,将根据发声器的播放列表选择模式从播放列表中选择要播放的发声器或音频文件。默认情况下,播放列表选择模式为随机播放。有关播放列表行为的更多信息,请参阅发声器引用章节。

触发片段的颜色是可自定的,与发声器的行为无关。

2.4.1 同步与异步

时间轴上的发声器可以是同步的,也可以是异步的。除时间轴以外的参数表上的发声器始终是异步的。

在同步发声器中,播放的音频文件部分始终与时间轴回放位置重叠的触发片段波形图形部分相对应。这使得可以通过重新定位时间轴回放位置,在同步发声器的音频文件中查找(或“擦洗”)。

在异步发声器中,触发片段中回放位置的精确位置与每个音频资源播放的部分无关。这使得可以将发声器视为可打开和关闭的开关,并根据需要为事件添加声音。

发声器的同步或异步行为可以通过绘制在其触发区域的波形图形的外观来识别: 如果波形一直延伸到触发区域的边缘,则发声器是同步的。如果波形包含在边界内,则发声器是异步的。

2.5 音频文件

音频文件是用于在 FMOD Studio 中构建发声器事件的原始构建块。

音频文件在资源浏览器中进行组织和管理,可在事件编辑器窗口资源选项卡下找到,也可在音频箱窗口中。可通过将音频文件从文件管理器应用程序或FMOD.io拖入资源浏览器,将音频文件导入项目中。

导入音频文件后,可将文件拖到面板中的播放列表上,将其添加到发声器的播放列表。也可将音频文件直接拖到音频轨道上,创建使用该音频文件的单个发声器,或拖到事件浏览器上,创建使用该音频文件的事件

请注意,导入 FMOD Studio 项目的音频文件的压缩格式不会影响游戏的大小或性能。这是因为 FMOD Studio 的构建过程会根据其平台编码设置重新压缩所有音频文件,从而有效地替换任何现有的压缩。

2.5.1 在 FMOD Studio 外工作

FMOD Studio 与数字音频工作站(DAW)有很多共同点,但二者有一个主要区别: FMOD Studio 应用于游戏声音的几乎所有效果和行为都是在游戏运行时实时处理,而非提前处理。这使得事件的行为可随着游戏环境的变化而动态变化,但也会占用少量的 CPU 和内存。

如果游戏中的事件使用了 FMOD Studio 的高级功能,但这些事件在被触发后总是以完全相同的方式表现,那么在将其导入 FMOD Studio 项目之前,可通过将所需行为“烘焙”到第三方 DAW 音频文件中来节省资源。

2.6 效果

效果可以插入到项目的信号链中的任何位置,以便在该位置处理和修改信号。然后,可以在游戏运行时实时更新和调整这些效果的属性,从而根据不断变化的游戏环境对游戏中任何事物的声音进行不同的处理。

带效果和发送的信号链

有多种可用的效果,每种效果都有许多可能的应用。例如,游戏可以使用FMOD Multiband EQ效果在玩家化身处于水下时切断高频,或呈现爆炸后听力损伤。同一游戏可能会使用FMOD Delay效果来模拟洞穴中的回声,或在游戏中的双向无线电上生成反馈。

在 FMOD Studio 中,当在调音台台面编辑器中选择主线轨道时,信号链中的每个效果都由台面中的面板表示。

大多数效果都可以插入到调音台总线和事件轨道的信号链中。在信号链中,效果几乎可以按任何顺序排列,前-后推子,并且可以自由穿插其他效果和发送

可向信号链添加新的效果模块,方法是右键单击要放置效果的信号链,并从上下文菜单中选择“添加效果”或“插入效果”。

有关特定效果模块的更多信息,请参阅效果模块引用章节。

2.6.1 预设效果

预设效果是一种在大量事件中创建相同行为的方法。当想要更改这些行为时,无需单独更新每个事件。

项目中的所有预设效果实例共享相同的基本属性值调制器自动控制。因此,更改预设效果的任何实例的基本属性值、调制器或自动控制会更改该预设效果的所有其他实例。操作台中的预设效果具有预设图标,类似于圆圈内的箭头。只要预设效果发生变化,此图标就会闪烁。

预设效果图标预设效果图标闪烁

这意味着可以为项目中的所有3D 事件创建单个空间效果器预设效果。如果以后需要调整此空间效果器的最小和最大距离属性,则只需对预设效果进行一次更改,而不必单独更改项目中的每个 3D 事件。

请注意,由于父级事件实例的不同,预设效果的不同实例可能处于不同的状态。例如,包含预设效果实例的两个事件实例可能具有不同的参数值,因此如果这些预设效果实例在该参数上具有自动控制功能,则会导致它们具有不同的最终属性值

可在预设浏览器窗口效果选项卡中管理项目的预设效果。

预设效果浏览器

要创建新的预设效果,请在预设效果浏览器的空白处单击鼠标右键并选择“新建预设”上下文菜单项,然后导航到所希望新预设效果成为的特定效果。此外,还可通过右键单击操作台中的现有效果并从上下文菜单中选择“转换为预设”,将项目中的现有效果转换为预设效果。

请注意,可从同一个效果创建多个预设效果,每个效果都有自己的基本属性值、调制和自动控制。此外,即使已经创建了相同效果的预设效果,仍可将效果添加到不是预设效果实例的信号链,并且可以更改此类效果的基本属性值、调制和自动控制,而不会影响预设效果,反之亦然。

创建预设效果后,可将其实例添加到整个项目的信号链中。要将预设效果的实例添加到信号链,请将其从预设浏览器拖动到操作台,或右键单击操作台并选择“添加效果>预设效果”(或“插入效果>预设效果”) 然后从上下文菜单中获得所需的特定效果。

可从预设效果中分离预设效果的实例。这使其成为一个独立的效果,其基本属性值、自动控制和调制可在不改变预设效果的基本属性值、自动控制和调制的情况下进行调整。要将预设效果的实例与该预设效果断开连接,请在操作台中右键单击该实例,然后从上下文菜单中选择“从预设中分离”。

2.7 参数和提示

事件不一定要“即发即弃。”在事件播放时,有两种主要的方法来更改事件的行为,即参数提示

提示按钮和延音点

参数是两者中最常见的。参数是事件的属性,可通过游戏代码随时更新,并且可以将参数与事件中的几乎任何其他内容挂钩: 可使用参数来自动控制事件属性(glossary.html#event-property)的值,并通过逻辑标记(glossary.html#logic-marker)控制事件的时间轴(glossary.html#timeline)。

但参数最常见的用法是触发发声器。每个发声器都与一个或多个参数相关联,并且触发发生器所需的每个参数都有一个特定的值范围。当事件的参数全部设置为这些范围内的值时,发声器会被触发,并开始产生输出。

触发发声器的参数

每个事件都从一个参数开始,称为“时间轴”时间轴具有自动前进的特殊属性: 只要事件正在播放,时间轴参数的值就会以稳定的速率增加。

时间轴以外的参数统称为游戏参数,用来表示游戏状态。

参数可以是局部的,也可以是全局的。局部参数的值可能会因事件的不同实例而不同,从而允许同一事件的不同实例产生完全不同的输出。相比之下,每个全局参数只有一个值,由使用该参数的所有事件实例共享。

游戏代码可以通过使用FMOD Studio API来更改任何参数的当前值。参数值也可以由调制器引用本地参数所在事件的事件来控制。

有关参数的详细信息,请参阅创作事件章节的参数部分。

提示相比于参数并不常见。提示告诉事件实例的时间轴回放位置移过下一个延音点

有关提示和延音点的更多信息,请参见 FMOD Studio API 文档中的Studio::eventinstance::triggercue

2.8 收发和调音

FMOD Studio 的事件并不存在于真空中。这类事件的输出被传送到项目调音器。项目调音器由许多互连的总线组成。通过在调音台窗口中自定这些总线的‘收发、属性和效果,可以为项目创建复杂的调音。

调音器窗口

事件和辅助总线被收发到组总线主总线,组总线被收发到其他组总线,最终所有事件都被收发到项目的主总线。沿途的每一条总线都会产生一个所有信号的子混音。

可在收发浏览器中检查和修改项目的收发。在此浏览器中,信号从右向左流动,从浏览器左边缘的总线和事件进入项目的主总线。此外,还可将发送添加到总线的'信号链以复制其信号,并将复制的信号发送到辅助总线

收发浏览器

每条总线都有自己的音量属性和信号链,可改变通过总线的信号。通过自定总线的属性和信号链,可定制项目中的每个子混音。通过在调音台或调音台窗口的收发浏览器中选择总线,可在台面中查看任何总线的信号链。

总线信号链

一旦项目的发送和效果就绪,就可使用调音台台面的调音台通道条来调整和自定整体混音,以符合项目的要求。

带活动总线的调音台台面

每个调音台通道条上的指示器表示相应总线的输出音量,水平橙色线表示相应总线活跃。可点按并拖移调音台通道条的滑块手柄来调整总线的推子音量。如果将 FMOD Studio 连接到游戏的运行副本,甚至可以在游戏运行时调整游戏项目的调音。。

甚至可以通过创建快照来使调音成为动态化。快照在激活时会调整调音台中某些或所有属性的值。有关快照的更多信息,请参见调音章节的快照和轨道视图

2.9 事件库

事件库是来自 FMOD Studio 项目的事件集合,经格式化和压缩后,可在游戏中使用。通过事件库可在任何给定时间选择载入哪个项目内容,进而可更好地控制游戏音频消耗的内存量。可在事件库浏览器中的事件编辑器窗口的事件库选项卡下创建、编辑和组织事件库。

事件库览器

在使用游戏中某个事件之前,需要将其分配给至少一个事件库,且该事件库需要被构建。要将事件分配到事件库,则要在事件浏览器中右键单击事件,然后从上下文菜单中选择“分配到事件库”。有关构建事件库的信息,请参阅本章的构建部分。

2.9.1 主事件库

除普通事件库外,每个 FMOD Studio 项目都包含至少一个主事件库。主事件库包含与整个 FMOD Studio 项目相关的数据,因此必须在游戏播放 任何 事件库中的 ??任何 事件之前将其加载到内存中。

由于主事件库始终加载到内存中,所以为了提高性能,最好不要给主事件库分配任何事件,使其尽可能小。

2.10 构建

要构建项目的事件库以在游戏中使用,请选择“文件>构建...”此外,还可通过在事件库浏览器中右键单击所需的事件库并从上下文菜单中选择“构建...”来构建单个事件库,也可通过选择“文件>构建所有平台...”为项目平台列表中的每个平台构建事件库。

构建事件库会导致构建的.bank文件出现在项目的构建事件库输出目录中。这些构建的 .bank 文件是游戏代码播放它们包含的事件所需的全部内容。

在大多数情况下,游戏代码应该在使用它包含的任何事件之前,先用Studio::System::loadBankFileStudio::Bank::loadSampleData将事件库加载到内存中,然后使用Studio::EventDescription::createInstanceStudio::EventInstance::start创建并播放该事件库的事件实例。。

多个事件库可能同时加载到内存中,但为了节省内存,最好卸载游戏近期不太可能使用的事件库。

有关在 FMOD 引擎中使用经构建事件库的更多详细信息,请参阅FMOD API 文档

2.11 平台

在 FMOD Studio 开发内容时,要牢记内容的使用平台。根据项目的需要,不同的平台可能会为音频分配不同的内存和处理能力,有些平台可能会支持不同的扬声器数量和配置

因为平台非常重要,所以可在每个平台的基础上指定某些设置。这些属性包括项目输出格式音频文件的编码设置

默认情况下,每个 FMOD Studio 项目都有一个平台,称为“桌面”当前平台显示在大多数 FMOD Studio 窗口的右下角。可通过单击当前平台显示并从下拉菜单中选择新平台来更改当前平台。

可在“首选项”对话框构建选项卡中重命名平台、向项目添加其他平台,以及更改现有平台的扬声器配置和默认编码设置。