使声音循环播放
您需要的工具
为了从声音中间循环播放,这次我们将使用以下两个工具:
- 瓦沃萨乌
- XACT
下载并安装 Wavosaur
Wavosaur 是一个工具,用于编辑音频文件的波形数据。 Wavosaur 可从以下网站下载:
打开页面后,从图片中的红色框架链接下载文件。 有 32 位和 64 位版本,因此请使用执行环境中的内容。
Wavosaur 可以单独运行,无需安装。 将其解压缩到任何文件夹。
下载并安装 XACT
XACT 是一种工具,用于微调 Windows 和 Xbox 游戏声音,以便在游戏期间播放。
XACT 本身未单独分发,并随 XNA 游戏工作室和 DirectX SDK 一起提供。 这一次,我将使用 XNA 游戏工作室附带的版本。 您可以从以下链接下载 XNA 游戏工作室:
下载安装程序后,请运行安装程序以安装它。 XNA 游戏工作室仅正式支持 Windows 7,但已确认它也会在 Windows 10 环境中安装。
创建在 Wavosaur 中设置循环点的波形文件
准备好您希望循环播放的声音文件。 基本功能在 WAVE 文件中进行编辑,但基本语音数据也可以从 MP3 文件读取。 (此示例中使用的音频文件来自"H/MIX GALLERY"等网站,该文件来自"Pocle 地球 (k15.mp3)"文件。
运行 Wavosaur 并启动它。
屏幕将弹出。
将音频文件拖放到 Wavosaur 上。 将显示波形数据。
您可以通过用鼠标拖动波形数据来选择范围。 选择要循环的范围。
从菜单中选择"工具">"循环">"创建循环点"。 按下工具栏上的 L 按钮也是如此。
然后,所选内容的两侧将显示"开始"和"结束"。 此范围是循环的范围。
从菜单中选择"文件">"保存"以保存音频数据。
该文件基本上是一个 WAVE 文件。 将其保存到任何文件夹。 如果要再次编辑,可以将其拖放到 Wavosaur 中,以在途中对其进行编辑。
文件已保存。 XACT 使用此波形文件。 如果基于 MP3 文件进行编辑,则不再使用 MP3 文件。
在 XACT 中创建单声道播放声音所需的文件
从"开始"菜单中选择"微软 XNA 游戏工作室 4.0 刷新" - "微软交叉平台音频创建工具 3 (XACT3)"以启动它。 如果从 DirectX SDK 等安装,请启动它。
它立即进入屏幕。 XACT 只执行最简单的任务,因此,如果您想了解有关其他用途的信息,请查看 Web 等。 使用具有中间循环播放设置的波形文件不需要 XACT 执行任何特殊操作。
首先创建项目。 单击工具栏上的"新建项目"按钮。
指定项目的存储位置。
创建项目后,右键单击"波形后退"并选择"新波形银行"。
确认已创建波形银行后,右键单击"声音银行",然后选择"新建声音银行"。
屏幕将类似于图形。
将刚刚创建的波形文件拖放到波形库窗口中。
然后,将添加到波形银行的数据拖放到 Sound Bank 的左上角区域。
然后,将添加到声音区域的数据拖放到左下角的 Cue 区域。
选择 Sound 文件,并确保在"输入"中选中左下角属性的"Looping"。
完成后,单击工具栏上的"生成"按钮进行生成。
将显示一个窗口,但只需按"完成"按钮即可完成。
确保在保存项目的文件夹中创建了"Win"文件夹,并在其中创建了三个文件。
创建游戏项目
只需在 MonoGame 项目中注册文件并创建程序即可。 这一次,我在 Windows Project 中创建它。 我们已确认它适用于 Windows 应用商店应用和 Windows Mobile。
创建项目后,在"内容"文件夹中注册以前在 XACT 中创建的三个文件。 这并不意味着你必须是一个特殊的内容文件夹。
选择添加的三个文件后打开属性。
从"复制到输出目录"更改为"如果是新目录,请复制"。
对于 Windows 通用应用项目 (UAP),它不适用于上述设置。 请改为将生成操作更改为"内容"。
其余的将只由程序完成。 基本上,它与使用 XACT 的声音播放程序相同。
将 Microsoft.Xna.Framework.Audio 添加到要使用的命名空间。
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
在字段中添加以下三行"音频引擎"、"声音银行"和"波形库"。
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
AudioEngine audioEngine;
SoundBank soundBank;
WaveBank waveBank;
在 LoadContent 方法中,我们分别创建了音频引擎、SoundBank 和 WaveBank 的实例。 每个文件对应于添加到"内容"文件夹的三个文件,因此请指定相对于项目根文件夹的路径。
在这里,你立即得到Cue,并发挥它,但玩真正的游戏,你需要的地方。
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
audioEngine = new AudioEngine(@"Content/LoopSample.xgs");
soundBank = new SoundBank(audioEngine, "Content/Sound Bank.xsb");
waveBank = new WaveBank(audioEngine, "Content/Wave Bank.xwb");
soundBank.GetCue("k15").Play();
}
在此状态下运行,并检查循环是否从中间播放。 实际循环控制在 WAVE 文件或 XACT 阶段完成,因此无需以编程方式进行任何特殊设置。
关于压缩音频文件
XACT 允许您压缩音频文件并减小文件大小。 XNA 游戏工作室可以播放压缩的文件,但 MonoGame 不支持它,因此在播放时可能会引发异常或播放意外的声音。 您只能使用未压缩的波形文件。 正如你所看到的,文件大小会大大增加。
如果确实要减小文件大小,则需要调整波形文件的采样率等。
iPhone、Android、Linux 和 OUYA 支持
由于 XACT 是面向 Windows 和 Xbox 的工具,因此尚未在其他平台上正常工作。 如有必要,请尝试并决定是否采用它。