辅助功能*

目录

killersound 技巧: 为 Flash Lite 优化数字音频

分层的音效文件

首先下载并展开与本教程配套的 layering_audio.zip 存档文件。该文件中有一个 FLA 文件, 两个 SWF 文件和一个名为 silent.wav 的文件。

打开 C0064.fla 文件。您将在“工作区”上看到图 1 中显示的图像。该文件是由四部分合成的: 小提琴、铜管乐器、弦乐器和钢琴。 如果进入 “库”, 您可以单独聆听各个部分。所有四个部分都在名为 Musical Elements 的文件夹中。在本教程中, 您将制作一个 Flash Lite SWF 电影并使之运行于 Nokia 6600 手机上。

注意: 您可以从 David Mannl's Flash Lite 网站获取各种移动设备的最新的预先配置过的模板。 这些模板已设置为正确的屏幕尺寸。

 C0064.fla 文件包含四个部分。

图 1: C0064.fla 文件包含四个部分。

每个部分单独录制和优化, 并作为独立的声音文件导入 Flash。为使音效在自己的层正确播放并与其它音效合成, 所有的音效文件 (以及使用此技术的任何音效文件) 必须具有相同的长度, 或者彼此之间的比例相同 (以毫秒或还会更加精确的示例数来计算)。 在本例中, 所有四个部分具有相同的长度。彩色块代表这些部分在时间线上播放的实例。如果您在 Flash 应用程序中运行电影, 您将在各部分播放时听到音乐。

图 2 显示了 Flash 时间线。每个部分都有自己的一层, 并开始同一个关键帧 (16), silent 层除外, 我将在稍后讨论它。 所有音乐元素在同一关键帧开始非常重要。 后面将对此详细解释。

 在时间线上, 每个部分都有自己的一层, 并开始同一个关键帧。

图 2: 在时间线上, 每个部分都有自己的一层, 并开始同一个关键帧。

导出至 Flash Lite 时, 最好不要马上开始音效, 应提供多个空白帧来缓存数据。某些处理器较慢的设备开始显示内容需要一秒钟左右的时间;因此, 如果音频开始的过快, 开始部分可能会被截掉。

设置和编辑声音封装点

现在转至 strings - event 层并单击嵌入音效的第 16 帧。 在 “帧属性” 窗口中, 您可以看到附带的音效名为 C0064strings.wav, 该音效重复 10 次。单击 “编辑” 按钮, 打开 “编辑封装” 窗口。单击 “帧” 按钮 (右下方) 将时间线刻度从秒转换为帧。 (使用该窗口底部的缩放按钮) 一直缩小, 直到看到应用于此部分的六个封装点 (见图 3)。

您可以应用封装点 (小方块) 来改变音效的音量。

图 3: 您可以应用封装点 (小方块) 来改变音效的音量。

在声音窗口中显示为小方块的封装点是音量点。您可以单击或拖动这些点来创建音量效果。您可以为各个声音层调整合适的音量水平, 以获得最佳的合成音量。声音窗口中的两个窗口代表左右声道。除非要创建声音漂移之类的特效, 否则应确保在两个窗口中镜像动作。

您可以看到, 在 C0064strings.wav 循环播放两次后, 使用封装点进行了一次快速的逐步淡出。这一部分保持无声状态, 直至第五个实例或循环播放。将第五个实例开始处的那一点放大至最大 (见图 4)。这应该位于大约第 399 帧处。您可以在采样视图和时间视图之间切换 (窗口底部缩放按钮右侧的两个按钮)。 封装点在第五个实例或循环开始处设置。使用这一技巧时, 需要达到这样的精确度, 才能确保流畅的合成。

 放大至最大, 以准确地操作封装点。

图 4: 放大至最大, 以准确地操作封装点。

现在, 来看看其它各层, 以及封装点在其上的应用方式。例如, 小提琴部分的封装点并未设至最大, 因为您不希望小提琴的声音喧宾夺主。这种合成只是诸多可能性之一。例如, 您可以选择开始音乐时只有吉他, 然后在加入大提琴部分, 依此类推。合成中的部分越多, 就有越多的可能性。但是, 声音的层数是有限制的。我建议在 Flash Lite 中最多使用超过四到五层。随着技术的进步, 移动设备和 Flash Lite 播放器更加健壮, 这种限制可能不再存在。还应记住的是, 目前, 对于某个具体关键帧中的任何声音, 最多只能应用八个封装点 - 因此, 聪明并有创造性地使用它们。当然, 如果您在一个新的关键帧中开始了一个新的实例, 您就有八个新的封装点了。

Stream 和 Event 声音

正如您所看到的, 所有层 (除了 silent 层) 的 sync 设置都是 event。对于 event, Flash Lite 单独导出和读取各个声音层。 这种方法的好处是, Flash Lite 把声音文件看作实例。当 Flash Lite 加载单个组件或声音文件时, 与图形的处理方式相同。因此, 无论各个声音文件在它自己的层中循环多少次, Flash Lite 不会使用额外的文件空间来在时间线上循环播放声音文件, 也不会将声音层绑定至动画。当使用 event sync 设置时, 声音文件独立于图形运行。

有时候, 如果设备的处理器速度慢, 就会发生问题。如果内存不够用, Flash Lite 将无法同时读取一帧中的所有层。 这可能导致声音层彼此之间不能同步。为解决这一问题, 我们使用一个很小的 silent 音频文件在音乐开始处将播放器置于 stream 模式, 这足以使 event 音效开始播放。 可以发现, 唯一设置为 streamsilent 层使用这一极小的声音并在其它音乐层之前开始。用设置为 stream 的声音开始音乐能够使各层保持同步。 我单独提供了此文件 (silent.wav), 以备您将来使用之需。

如要使用 stream 作为所有分层声音的同步设置, 动画将被绑定至时间线。 使用此设置, Flash Lite 将所有声音作为单个声音文件在单一通道上导出和读取。这将锁定所有声音文件处于同步, 因此不再需要 silent 音效。 但是, 该设置不具备将组件作为循环实例使用所产生的文件小的优势。同时, 当使用 stream时, 只要电影中有足够的帧, 音乐会一直运行。 与 event 设置不同, 如果没有足够的帧来包含音频或者有动作停止了电影的播放, 采用 stream 设置的音乐将被截断。

压缩

对于压缩, 您可以使用全局压缩设置, 也可以为每个声音文件单独设置压缩。频率低的声音, 例如大提琴音, 压缩比可以非常大。其它如鼓点等, 如果过分压缩, 可能会截断。单独设置压缩的好处在于, 您可以通过压缩比大的部分减小文件大小, 同时对逼真度更为敏感的部分设置较小的压缩比, 从而得到更好的音质。为单个文件设置压缩的方法是: 在 “库” 窗口中找到单个文件, 在文件上单击右键, 然后在 “导出设置” 对话框中进行压缩设置。

根据文件大小的限制不同, 全局设置压缩可能更容易 (见图 5)。注意, stream音效 (silent.wav) 的压缩设置为最大的可能压缩, 这是因为该音效是无声的, 文件可以尽量地小。

您可以在导出 SWF 文件时全局设置压缩。

图 5: 您可以在导出 SWF 文件时全局设置压缩。

记住, 您制作的音效很可能会通过微小的单频扬声器播放;因此, 音质的好坏受到扬声器的限制。理想情况下, 您最好使用实际设备进行测试。 但是, 我发现 ADPCM, 11kHz, 4 bit, Mono 这样一组全局导出设置在大多数情况下都能得到不错的结果。对于微小的扬声器, 它在音质和最小的文件大小之间取得了平衡。要注意的是, 使用 Flash Lite 和本技巧, ADPCM 是取得无缝循环播放的唯一导出格式。桌面 Flash 产品使用 MP3 可得到更高的压缩比, 但 Flash Lite 如果使用 MP3 压缩导出, 将无法在移动设备上播放。Flash Lite 如果使用 MP3 压缩, 将会在每个循环点留下一个间隙, 当音效循环播放时, 会有一秒的间隔。在桌面上播放 SWF 文件不会有这个问题, 加载到移动设备后则会出现。