除了关卡,《无尽魔塔》里的音乐也是自动生成的。我并没有觉得这些音乐有多好,但是如果你是刚起步的独立开发者,在开发一款以玩法为主导的游戏,不会做音乐而留给音乐的预算又有限(或者是零),那么你可以尝试一下这个方法。
一、首先需要准备一些工具:
cgMusic
这是用于生成MIDI音乐的关键工具,可以免费下载到:
http://www.codeminion.com/blogs/maciek/files/cgMusic_Setup.exe
REAPER
也可以是其它数字音频工作站(DAW)软件,比如FL Studio,但是推荐REAPER是因为它可以免费试用所有功能,价格也不算贵,而且后续更新做得也不错。我们需要的关键功能是读取SoundFont样本库,REAPER有免费的插件来实现,而FL Studio则需要花上不少钱才能得到这个功能 。
http://www.reaper.fm/download.php
VirtualMIDISynthMIDI
合成器软件。它提供的VST插件可以让REAPER将SoundFont里的样本结合MIDI的音符播放出不同“音色”的旋律。这里大概可以理解成,REAPER是Photoshop,SoundFont是字体,而这个VST就是让Photoshop能够正确绘制这些字体的插件。
http://coolsoft.altervista.org/en/virtualmidisynth?page=99999999#download
一些SoundFont资源
VirtualMIDISynth的官网推荐了一些比较“现代”的音色样本:
http://coolsoft.altervista.org/en/virtualmidisynth#soundfonts
比如用Arachono样本库生成的塞尔达主题曲:
如果你希望弄出芯片音乐的感觉(只能是有点像,因为不管是编曲还是生成机制都不一样),可以在这里下到一些样本库:
http://woolyss.com/chipmusic-soundfonts.php#soundfonts
《无尽魔塔》使用的是GeneralUser GS音色库。在安装完VirtualMIDISynth之后,将SF2文件添加到音色库链中:
二、用cgMusic生成MIDI曲谱
这是一个很有意思的过程,但是如果你像我一样,对音乐的结构、乐器编排或是和声等不太了解,需要一些耐心和运气才能生成出略微满意的结果。
打开cgMusic后,可以创建新项目或打开项目。这里你可以选择打开示例项目,听听不同的Structure(结构)和Arrangement (乐器编排)组合营造出的不同感觉,说不定就有接近你想要的。
我在这里主要介绍《无尽魔塔》的最后一章(地狱区)的音乐的生成。首先新建一个Modern Song Structure 和 Piano - Advanced (Disco)编排的项目:
这里的Seed(随机数种子)可以在创建后重新随机,所以不用担心截图里的值。
创建后就可以马上按Play听听效果了。
如果不满意,可以直接按Re-Randomize All全部随机一遍,会得到一首在同样的结构和编排下,完全不同的一首曲子。
如果你对旋律比较满意,但是觉得节奏太快或太慢,可以在Arrangement标签页下调整Tempo:
还有很多可以调整的部分,比如章节数目,每个章节的主调等等,但我觉得“全部随机”就已经够了。在不改变结构和编排的情况下,随机生成的曲子听起来都有类似的感觉。所以如果你真的想你的曲子听起来不一样,你需要写脚本来实现完全不同的结构和编排。
曲子调整好后,点击“Export to .MID"来生成MIDI文件。
三、将MIDI文件转换为MP3文件
MIDI文件的尺寸相比MP3都很小,因为它们一个就像纸张上的乐谱,一个就像磁带:前者只是一些符号和数字,而后者存取的是直接影响你耳膜振动的大量的信息。一首曲子从乐谱到磁带,需要演绎,我们这里的工作就是让机器去”演绎“。打开REAPER,拖入之前生成的MIDI文件:
这里提示MIDI里的5条音轨(我们之前编排的5个乐器)会分别导入为REAPER里的音轨。点击确定。
不要被这里复杂的界面吓到,因为大部分功能是暂时用不到的。这时点击播放按钮(左边中间偏下的最大的那个播放键),应该是听不到任何声音的,因为REAPER此时并不知道该怎么处理我们的MIDI音轨,所以我们需要给每条音轨配一位”演奏师“。点击第一条音轨(Melody)前面的FX按钮,选择该音轨的效果器:
这里选择之前安装的SynthFontVSTi插件后,如果你配置好了音色库链,就会自动映射MIDI通道和对应的音色。这时候再播放,第一条音轨已经有声音了。依次将其它音轨加上相同的效果器(所有FX按钮都变绿):
这时候播放出来的效果,跟游戏里面的基本一样了。最后,选择菜单File->Render...,将整个REAPER项目”渲染“为MP3文件:
后记:
感谢cgMusic的开发者Maciej Biedrzycki给我们带来的免费的音乐生成工具。我觉得如果仔细研究一下这个工具,是完全可能在游戏中实时生成旋律不错的音乐的——游戏音乐也可以玩rogue-like!
如果大家在折腾cgMusic的过程中随机出了不错的曲子,也可以共享一下文件。独乐乐不如众乐乐~
附:
《无尽魔塔》最后一章的MIDI和MP3文件:
http://pan.baidu.com/s/1mhT6gUs
很棒啊!感谢分享
无私!
记得早年在泰然论坛上有看到一个使用多个单位长度一样的音乐小节拼接成随机音乐,同时根据游戏节奏变化出不同气氛和快慢的分享;回头我找找链接(泰然现在改版太大,不认识了已经),配合楼主这个一起服用!
@flyspaceguo:希望能对后来者有帮助!话说你的配方找到没?