Skip to content

Latest commit

 

History

History
69 lines (53 loc) · 4.66 KB

audio-volume-validation.md

File metadata and controls

69 lines (53 loc) · 4.66 KB

音频增益验证

更新:2026-10-13。负责审查 R08 的基础原生增益检查,不是音频性能、实际声卡 首音或全部设备验收。现行音频路由见音频边界。

需要守住的行为

KS 和自动音乐层不受 Effect 音量及全局谱面命中音开关影响;继续接受原生 Master、Music 与后台衰减。普通效果音仍属于原生 Effect 路由。创建新声音、 准备结束或暂停后恢复时不能错误地恢复前台增益。

此前直接回归检查了 OJM SampleStore 的聚合增益和原生命中音开关。此次增加 原生声音对象与 BASS 声道属性的检查,不为验证而重写生产路由或添加音量补丁。

路线 测试使用的实际入口
可演奏 KS BeatmapSkinProvidingContainer → O2JamHitSampleInfo → Skin → 原生 Sample/声道
短自动音 Skin 的计划音频查找 → 原生 Sample/声道;登记长度低于 512 KiB 分流门槛
长自动音/BGM Skin 的原生 Track 准备 → 原生 TrackBass;登记长度高于 512 KiB,并确认 streaming 标志

测试用合成 WAV、BASS 无输出设备、手动原生音频帧,不读取用户 OJM/OJN, 不启动客户端、不播放用户音乐或打开实际声音设备。每次结束按原生所有权清理 声音、Sample 实例和 Skin/store;既有准备夹具默认输入保持原样。

自动验证范围

新增 21 项测试:3 条路线 × 3 个 Effect 值 × 两种命中音开关状态为 18 项; 每条路线的后台新建/暂停恢复为另 3 项。18 项分别切换六组代表性状态,不把 它写成全部设置值的完整笛卡尔积。

条件 覆盖值/预期
Effect 0、0.3、1;音乐声道增益不变,原生全局效果音采样库仍按 Effect 变化
Master / Music 0、0.8、1 / 0、0.5、1;任一为 0 时原生音乐声道静音
后台衰减调整 1 与 0.25;以原生 AudioManager adjustment 注入,不伪造 OS 焦点或修改客户端设置
声音自身音量 增益矩阵为 0.6;后台新建测试为默认 1
BeatmapHitsounds 开/关均验证 KS 查找和音乐声道;既有测试另覆盖开→关→开的 gate 行为及普通 sample 的原生拒绝
新建与恢复 后台创建、原生准备完成、暂停/恢复、Effect 随后改变、回到前台,增益均保持当前状态

在 native playback 对象上同时核对 AggregateVolume 和 Bass.ChannelGetAttribute 返回的 Volume,预期为 Master × Music × dimming × voice volume。普通效果 音的对照检查的是全局 native SampleStore 聚合值 Master × Effect × dimming, 不能据此称普通效果音也逐一播放或测量了真实输出。

最终相关宿主 174 项过滤回归全部通过,无失败/跳过;其中已包含新增 21 项, 不与首次专项执行重复计数。200 份实际正式源码的语义、模块、Realm、计分边界 通过,无新越界/例外;所有生产文件与上轮相同。模块/格式/宿主源码、项目、 资源及其他测试输入保护记录共 351 份,除所列夹具外核对不变。

证据和原夹具在 .artifacts/audio-volume-matrix-20261013/。初次编译遗漏了 AudioThread 的 using,修正后完整构建通过;首轮运行发现手动帧夹具从帧外调用 原生 Track 同步 Start/Stop 会等待自身队列,已中止并改成原生异步接口后再驱动 音频帧。没有以取消结果冒充成功,也没有为测试死锁修改生产 Track 或等待逻辑。 之后专项 21 项和最终 174 项通过;30 秒单测无进展保护未触发,无 dump 产物。

结论与剩余边界

基础原生增益自动验证缺口已补齐,这一范围未发现需要修补的生产音频问题。 测试夹具只增加 partial、可选 archive 输入和音频帧前的清理回调,原默认行为 保留;没有引入发布代码、UI、设置或可部署补丁。

这证明所选原生对象及声道属性的路由,不能代替实际听感、硬件混音、不同输出设备与原生混音路径、OS 焦点事件、任意 Mod/皮肤或完整 Player/预览混音链路。 合成 WAV 没有可听旋律;没有输出波形或声卡采集。部分既有预览/游玩/回放 回归一同通过,也不能据此推导完整场景覆盖。

R08 的远程宿主 CI 执行仍未在本轮验收;没有再次查询配置或把本机成功写成 远程绿色。R12 全链路、完整设备及原生 PCM 峰值风险继续单列。当前听感 DLL、 默认正式输出和历史候选保留;本轮没有 benchmark、客户端操作、安装、提交或 推送。NuGetAudit=false 只用于离线构建准备,不是依赖审计通过。