Files
XCEngine/docs/api/XCEngine/Audio/Reverbation/Reverbation.md

92 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. 真实参与处理的参数
以下参数当前会影响处理:
- `roomSize`
- `damping`
- `wetMix`
- `dryMix`
其中:
- `SetRoomSize()` 会更新 comb filter 的 feedback
- `SetDamping()` 会更新 comb filter 的阻尼系数
## 当前未接线或未充分使用的参数
- `width`
- `freeze`
这两个 setter 当前会保存值,但在已取证的 `ProcessAudio()` 路径里没有看到实际消费逻辑。
## 线程语义
- 当前实现没有内部加锁。
- 参数修改和样本处理默认不应视为并发安全。
## 当前实现限制
- 只读取首通道输入,再复制到所有输出通道。
- `width``freeze` 当前未参与真实处理。
- 没有看到该类型的直接单元测试。
## 相关方法
- [Constructor](Constructor.md)
- [Destructor](Destructor.md)
- [ProcessAudio](ProcessAudio.md)
- [SetRoomSize](SetRoomSize.md)
- [GetRoomSize](GetRoomSize.md)
- [SetDamping](SetDamping.md)
- [GetDamping](GetDamping.md)
- [SetWetMix](SetWetMix.md)
- [GetWetMix](GetWetMix.md)
- [SetDryMix](SetDryMix.md)
- [GetDryMix](GetDryMix.md)
- [SetWidth](SetWidth.md)
- [GetWidth](GetWidth.md)
- [SetFreeze](SetFreeze.md)
- [IsFreeze](IsFreeze.md)
## 相关文档
- [当前模块](../Audio.md)
- [IAudioEffect](../IAudioEffect/IAudioEffect.md)
- [AudioMixer](../AudioMixer/AudioMixer.md)
- [API 总索引](../../../main.md)