2.4 KiB
2.4 KiB
Reverbation
命名空间: XCEngine::Audio
类型: class
头文件: XCEngine/Audio/Reverbation.h
描述: 一个基础混响效果器,内部使用 comb filter 和 all-pass filter 结构生成简化空间残响。
角色概述
Reverbation 是当前 IAudioEffect 派生效果器里最接近传统混响器的一种实现。它采用经典的:
- 多组 comb filter
- 多组 all-pass filter
来生成基础 reverberation 尾音。
当前实现行为
1. 会真正改写输入样本
ProcessAudio() 会逐帧读取输入样本,经过 comb/all-pass 处理后,把结果写回 buffer。因此它不是参数占位器,而是真正参与样本处理的效果器。
2. 当前按“首通道输入 -> 全通道复制输出”工作
实现中每一帧只取:
float input = buffer[i * channels];
也就是只读第一个通道的输入,再把最终 outSample 写回所有通道。
这意味着当前更像是“单声道混响核心 + 多通道镜像输出”,而不是严格意义上的多声道独立混响。
3. 真实参与处理的参数
以下参数当前会影响处理:
roomSizedampingwetMixdryMix
其中:
SetRoomSize()会更新 comb filter 的 feedbackSetDamping()会更新 comb filter 的阻尼系数
当前未接线或未充分使用的参数
widthfreeze
这两个 setter 当前会保存值,但在已取证的 ProcessAudio() 路径里没有看到实际消费逻辑。
线程语义
- 当前实现没有内部加锁。
- 参数修改和样本处理默认不应视为并发安全。
当前实现限制
- 只读取首通道输入,再复制到所有输出通道。
width和freeze当前未参与真实处理。- 没有看到该类型的直接单元测试。
相关方法
- Constructor
- Destructor
- ProcessAudio
- SetRoomSize
- GetRoomSize
- SetDamping
- GetDamping
- SetWetMix
- GetWetMix
- SetDryMix
- GetDryMix
- SetWidth
- GetWidth
- SetFreeze
- IsFreeze