在AtomCraft中编写互动音乐

2019-11-16 11:11

游戏中的音乐


和电影不同,游戏是一种非线性媒体。这意味着游戏音乐需要自适应性,以便配合游戏的交互性。一个完整的交互式音频体验不能没有音乐。音乐和音效同等重要,它能够传递情感,帮助游戏更好地讲故事。


换句话说,游戏音乐必须是完全交互式的,以便配合根据玩家的行动以及游戏中的事件。


从一开始,游戏音乐的创作就必须意识到游戏的交互性。要实现这一点,关键在于作曲家必须理解互动音乐的基本原则,以便成功地创作出游戏中可以使用的素材。幸运的是,AtomCraft提供了一系列功能,可以帮助作曲家轻松地编写出交互式音乐。


在这篇文章中,我们将介绍如何运用AtomCraft的这些功能来实现扣人心弦的交互式音乐。我们这就开始!


在AtomCraft中实现互动音乐


要在AtomCraft中成功创作交互式音乐,你需要理解4个关键功能:Blocks(区块)、Beat-sync(节奏同步)、AISACs和Selectors(选择器)。

 

下面这张图展示了ADX2中一个基本的交互式音乐工作流程。在这个例子中,作曲家用这4种关键功能来创作交互式音乐。作曲家自己就可以在AtomCraft中轻松完成集成工作,当然也可以由项目中的其他成员来完成。在运行时,游戏会向ADX2引擎发送数据,从而根据动作实时控制音乐。

 


使用区块


 

使用AtomCraft可以有很多强大的方式来实现交互式音乐。我们先来看一下区块回放系统。区块可以帮助你将Cue组织成垂直的段落,这些段落可以根据游戏场景以不同的顺序播放。这有点像一些音序器中常见的片段(pattern)系统。

 

区块具有以下这些特性:

 

实现步骤


 

第1步:将时间线的显示单位改为小节和节拍


■   打开Cue


右键点击标尺并选择Timebase Settings(时间单位设置)


 

■   在Timebase Settings(时间单位设置)窗口中,选择Bars/Beat(小节/节拍)


 

 第2步:在Cue中创建区块


■   右键点击时间线,在菜单中选择New Object(新建对象)。


 

■   选择Create Block(创建区块)。


这时在时间线顶端会出现一个新的区块


 

■   为你的音乐创建更多的区块

 

 

第3步:如果你愿意,可以修改区块的颜色以便更好地组织它们。


■   右键点击区块并选择Color Settings(颜色设置)。


 

第4步:添加音乐


■   为每种乐器或每个音乐循环类型分别创建一条轨道。

 


■   将循环片段拖拽到所需的轨道和区块中即可。

 

 第5步:定义区块行为


■   双击一个区块打开属性面板。

 


我们可以在这里修改区块的名称或长度。


 

区块目标决定了当前区块播放完毕后或者遇到转场点时应该跳转到什么地方。


 

这里一共有三种转场选项:


第一个是None(无),当到达区块结尾时会停止播放。

第二个是Next Block(下一区块)。

第三个是Block Destination(区块目标)。选择后面两种时,区块会跳转到我们所指定的位置。


■   如果选择第三个选项,会弹出Block Destination Setting(区块目标设置)窗口。

 


在这里我们可以添加或删除目标区块,并从4种转场选项中选择一种。例如,如果我们选择Sequential(顺序),并选择一个区块作为目标,则当区块播放到结尾时就会跳转到我们指定的这个区块。如果我们选择Random(随机),并插入所有备选区块,则当区块播放到结尾时,会随机跳转到其中一个区块。


现在让我们回到区块属性面板。


在这里我们还可以定义区块在转场之前循环播放的次数。输入-1代表无限循环,或者输入其他数字代表循环次数。

 


Block number of divisions(区块分割数量)可以将区块分割成几份,以每一份为单位产生转场。

 


例如,如果我们有一段4小节的循环片段,将分割数量设置为4并选择Division(分割)作为Block transition timing(区块转场时间点),则该区块会在下一小节的第1拍转场到目标区块。


 

第6步:根据需要添加转场轨道


我们可以仅在转场时(转场开始或结束时)播放一条特殊的轨道。


■   创建一条轨道并在区块结束的位置添加一个转场片段。


 

■   右键点击轨道并在菜单中选择Block Transition Playback Type(区块转场播放类型)→Playback Transition(转场时播放)。

 


这条轨道现在显示为不同的样式,代表它仅在转场时播放。

 


使用选择器和节奏同步


AtomCraft提供的另一个可以帮助你在游戏中轻松集成交互式音乐的功能叫做选择器。选择器是一些变量,它们可以为预先定义好的一组值,这些值称为选择器标签。在游戏运行时,Cue会检查选择器的值并只播放那些与特定选择器标签相关联的轨道。下面我们将使用选择器让音乐跟随游戏动作来改变。在这一节我们还将介绍节奏同步功能。

 

 

在AtomCraft中有一种为使用选择器的音乐轨道特别设计的Cue类型,称为“按选择器轨道转场”(Track transition by selector)。和其他Cue类型不同,当回放过程中选择器标签发生了变化,轨道会自动转场并交叉淡入淡出到与选择器标签匹配的轨道。这意味着我们可以根据游戏场景轻松切换音乐轨道,而且这一操作只消耗很少的资源。我们也可以同步在指定时间点(如在4小节循环片段的每个小节的第1拍)切换音乐轨道。


按选择器转场具有以下特性:


 

当然,“按选择器轨道转场”类型的Cue也有很多限制条件,因此这一Cue类型必须在创建时指定,且指定之后无法修改。

这些限制条件包括:


■   你无法在一条轨道中插入多个波形

■   你只能将波形放置在轨道的起始时间(00:00:00)

■   你无法在这一类型的Cue中使用序列标记

■   这一功能无法与区块功能同时使用

■   你必须为每条轨道设置选择器标签(且每个选择器必须不同)

■   你无法对一个波形区域设置随机回放时间点

■   你无法使用子序列和CueLink功能

■   你必须设置节奏同步信息

■   每个波形的采样率必须一致

 

实现步骤:

 

第1步:创建Cue

右键点击一个CueSheet,选择“Now Object”(新建对象)→“Create Cue Track Transition by Selector”(创建Cue:按选择器音轨转场)。


 

第2步:创建选择器和选择器标签

首先我们需要创建一个选择器。在工程树状菜单的Global Settings(全局设置)中,右键点击Selector(选择器)目录,选择“New Object”(新建对象)→“Create Selector”(创建选择器)。我们将新的选择器改名为“Music”。


 

现在我们需要创建选择器标签。右键点击选择器,选择“New Object”(新建对象)→“Create Selector Label”(创建选择器标签)。我们将新的选择器标签改名为“Navigation”。我们需要为每一条音轨创建选择器标签(Navigation、Combat……)。


 


第3步:指派选择器标签


要将选择器指派给音乐轨道:点击选择器标签页,指定要使用的选择器并选择一个选择器标签。

 


第4步:添加音乐


将音乐拖拽到相应的轨道即可。

 


第5步:创建节奏同步参数


节奏同步功能可以通过与速度以及/或者节拍的同步实现音乐轨道之间的无缝转场。我们也可以利用这一功能在回放过程中同步地改变音量。


要插入节奏同步参数:右键点击时间线,选择“New Object”(新建对象)→“Create BeatSync Parameter”(创建节奏同步参数)。


 

 


最后指定开始时间、BPM并选择希望改变音乐的节奏时间点。


 


第6步:调整交叉淡入淡出


点击Cue轨道并设置淡入淡出时间。

 


第7步:聆听结果并调整参数

我们可以在会话窗口中测试我们的实现。要打开会话窗口:选择Cue,点击“View”(查看)菜单并打开Session Window(会话窗口)。


 

点击播放按钮并改变选择器标签就可以测试轨道之间的转场效果。


 

使用AISACs


AtomCraft提供的最后一个可以帮助你在游戏中轻松集成交互式音乐的功能叫做AISAC。


AISAC是一个使用从游戏传递的值来控制音频参数的系统,这种功能通常也被声音设计师称为实时参数控制(Real-time Parameter Controls,RPC或RTPC)。在AtomCraft中,我们可以用这个功能来实现交互式音乐。在这种应用中,游戏会向Cue发送一些值,对音乐进行实时改变,以跟随游戏的动作。例如,使用AISAC可以根据游戏中的出现的情况淡入或淡出某些音乐层次。


 

ASIAC转场具有下列特性:


 

实现步骤


第1步:创建AISAC控制器


首先我们需要创建一个AISAC控制器将游戏与AISACs连接起来。AISAC控制器是一个识别名称,程序员可以从游戏向ADX2传递值,这些值会根据识别名称被映射到相应的AISAC曲线。

 


要创建AISAC控制器:前往工程树状菜单的Global Settings(全局设置),右键点击AISAC-Control目录,选择“New Object”(新建对象)→“Create AISAC-Control”(创建AISAC控制器)。

 


我们将它命名为“Music”。


第2步:创建AISACs


要向你的音乐播放器添加一个AISAC:选中一条轨道,点击AISAC面板上的“+”按钮,然后选择“Add AISAC”(添加AISAC)。

 


这时会弹出“Add AISAC”窗口,你可以在这里将参数与新的AISAC控制器进行关联。选中你的AISAC控制器“Music”,然后选择“Volume”(音量)曲线类型。

 

第3步:当上述窗口关闭之后,主窗口底部的FX/AISAC面板中的AISAC标签页会被选中,且会出现一条默认的曲线。现在我们可以绘制自己的音量曲线,只要在默认曲线上点击添加控制点并拖拽这些控制点来调整曲线即可(你也可以直接在右侧的面板中输入数值)。

 

要改变AISAC的曲线类型:只有靠右键点击一个控制点即可。

 

第4步:对所有的音乐层次重复上述步骤。

 

第5步:聆听结果并调整你的AISACs。

播放Cue,当音乐循环时从左至右依次拖拽AISAC游标,聆听AISAC对音乐所产生的效果。最后,对你的音量曲线进行相应的调整。

 

Demo 工程


如果你想实际听一听和看一看一些实现交互式音乐的例子,可以在下面下载我们为你制作的示例工程。

[注意:这个工程需要AtomCraft 2.27或更高版本]


http://blog.criware.cn/wp-content/uploads/2017/06/Interactive-Music.zip


在这个工程中,我们模拟了一个具有4种状态的游戏:


 

音乐的实现配合了一个简单的游戏流程,即玩家移动然后与敌人战斗。首先播放的是移动的音乐,如果玩家遭遇敌人,音乐的紧张程度会提高。