SAAT - 音频 API 与工具包 封面

SAAT - 音频 API 与工具包

星露谷物语模组工具

适用于 SMAPI 的音频 API 与音频管理,无需 Harmony。添加自定义音轨。

前置 Mod

详情

面向 SMAPI 的音频 API 与音频管理,完全不使用 HarmonyLib。

为你的模组添加自定义音乐!


这个模组做什么?

SAAT 是一个框架,旨在在《星露谷物语》中添加、管理和修改音轨。此外,它还计划在日后改进音频引擎,因为 XNA / MonoGame 的音频引擎在内存管理和支持方面有所欠缺。它的目标是无需 Harmony。

你可以从 Github 上的文档 查看如何添加自定义音轨的示例


v1.1.2 新增:

  • 修复了一个会导致警告消息“Could not find a CueDefinition with the name 'title_day'”的 bug

v1.1.1 新增:

  • 一项故障安全功能,可在 cue 被错误调用 / 未找到时防止游戏崩溃。

-- 发生失败时,会播放一个“Defaulting Cue”。这个 cue 播放静音。

  • 强制将音轨添加到点唱机的能力。参见“addtojukebox”命令。

-- 这是为了覆盖迁移情况。从 Custom Music 迁移到 SAAT 的模组,由于 CM 需要使用前缀 (cm:) 表示法,其所有自定义音轨都会从点唱机播放列表中移除。SAAT 会验证点唱机中的所有音轨,并移除缺失的音轨以防止。

v1.1.0 新增:

  • 添加音轨设置。

-- 现在你可以在 tracks.json 中设置某个条目以持续循环。

-- 现在你可以设置某个条目,使其在创建新游戏时立即将自己添加到点唱机。

  • 命令“setdebug”已重命名为“audiodebug”,因为它极有可能与其他模组冲突。

  • 命令“gen_track_json”已重命名为“tracktemplate”。

  • 命令“audio_allocs”已重命名为“audioallocs”。

  • audioallocs 命令进行了一些格式修复。

  • audioallocs 命令现在有一个可选参数。添加音轨 id 将提供特定音轨的更多详细信息。

  • 进行了一些内部重构。

  • 文档更新。

当前功能:

允许将全新的音乐和音效添加到《星露谷物语》中

允许将音乐添加到点唱机中。

尚未实现 / 即将推出的功能:

音轨替换 / 覆盖

任何人都可以用另一条音轨替换现有音轨,以非破坏性方式覆盖原版资源。

音频信号处理(APS 或 DPS)

即将推出的功能,将允许音频进行低通、高通、变调、效果等处理,而无需创建另一条音轨。

恰当的内存管理

这将是该 API 的主要功能。目前,《星露谷物语》依赖 XNA / MonoGame 来处理音频的内存管理。其内存管理设计不佳,因为它要么全部加载,要么完全不加载。通常,音频会分块载入内存,而不是一次性全部保留。这会造成非常大的内存消耗。

例如,冬季音乐音轨会在游戏开始时加载到内存中。即使当前是春季。你在游戏四分之三的时间里都不会听到该音轨,但它仍然在消耗内存。

注意:API / 模组的这一部分将用 C 编写。为了确保性能,必须使用原生代码。

打包音频格式

结合恰当的内存管理,音频将按每个模组为单位压缩为二进制文件。这可以实现更快的加载 / 卸载 / 重新加载操作。

它不是必需的,但它会优化性能。尤其是对于较大的音频文件。

打包音频格式工具包

为了协助并鼓励内容创作者针对性能优化音频,将提供一款工具来创建上述打包音频格式。

源代码和文档