2026-03-22 01:56:16 +08:00
|
|
|
|
# AudioMixer
|
|
|
|
|
|
|
|
|
|
|
|
**命名空间**: `XCEngine::Audio`
|
|
|
|
|
|
|
|
|
|
|
|
**类型**: `class`
|
|
|
|
|
|
|
|
|
|
|
|
**头文件**: `XCEngine/Audio/AudioMixer.h`
|
|
|
|
|
|
|
|
|
|
|
|
**描述**: 音频混音器,管理效果链、通道音量和 3D 空间化参数。
|
|
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
|
|
AudioMixer 是 XCEngine 音频模块中的混音器类,负责将多个音频效果串联处理、管理通道音量和 3D 空间化参数。混音器支持添加或移除 IAudioEffect 效果(如 Reverbation、Equalizer、FFTFilter),支持输出到父混音器形成混音树结构。
|
|
|
|
|
|
|
|
|
|
|
|
## 公共方法
|
|
|
|
|
|
|
|
|
|
|
|
| 方法 | 描述 |
|
|
|
|
|
|
|------|------|
|
2026-03-26 01:54:45 +08:00
|
|
|
|
| [`SetVolume`](set-volume.md) | 设置混音器音量 |
|
|
|
|
|
|
| [`GetVolume`](get-volume.md) | 获取混音器音量 |
|
|
|
|
|
|
| [`SetMute`](set-mute.md) | 设置静音状态 |
|
|
|
|
|
|
| [`IsMute`](is-mute.md) | 检查静音状态 |
|
|
|
|
|
|
| [`AddEffect`](add-effect.md) | 添加音频效果 |
|
|
|
|
|
|
| [`RemoveEffect`](remove-effect.md) | 移除音频效果 |
|
|
|
|
|
|
| [`ClearEffects`](clear-effects.md) | 清除所有效果 |
|
|
|
|
|
|
| [`ProcessAudio`](process-audio.md) | 处理音频数据 |
|
|
|
|
|
|
| [`SetOutputMixer`](set-output-mixer.md) | 设置输出混音器 |
|
|
|
|
|
|
| [`GetOutputMixer`](get-output-mixer.md) | 获取输出混音器 |
|
|
|
|
|
|
| [`Set3DParams`](set-3d-params.md) | 设置 3D 空间化参数 |
|
|
|
|
|
|
| [`Get3DParams`](get-3d-params.md) | 获取 3D 空间化参数 |
|
|
|
|
|
|
| [`SetChannelVolume`](set-channel-volume.md) | 设置通道音量 |
|
|
|
|
|
|
| [`GetChannelVolume`](get-channel-volume.md) | 获取通道音量 |
|
2026-03-22 01:56:16 +08:00
|
|
|
|
|
|
|
|
|
|
## 使用示例
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
#include <XCEngine/Audio/AudioMixer.h>
|
|
|
|
|
|
#include <XCEngine/Audio/Reverbation.h>
|
|
|
|
|
|
#include <XCEngine/Audio/Equalizer.h>
|
|
|
|
|
|
|
|
|
|
|
|
using namespace XCEngine::Audio;
|
|
|
|
|
|
|
|
|
|
|
|
void SetupMixerWithEffects() {
|
|
|
|
|
|
AudioMixer* mixer = new AudioMixer();
|
|
|
|
|
|
mixer->SetVolume(0.8f);
|
|
|
|
|
|
|
|
|
|
|
|
Reverbation* reverb = new Reverbation();
|
|
|
|
|
|
reverb->SetRoomSize(0.5f);
|
|
|
|
|
|
reverb->SetWetMix(0.3f);
|
|
|
|
|
|
|
|
|
|
|
|
Equalizer* eq = new Equalizer();
|
|
|
|
|
|
eq->SetBandCount(4);
|
|
|
|
|
|
|
|
|
|
|
|
mixer->AddEffect(eq);
|
|
|
|
|
|
mixer->AddEffect(reverb);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void RouteToParentMixer(AudioMixer* child, AudioMixer* parent) {
|
|
|
|
|
|
child->SetOutputMixer(parent);
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [Audio 模块总览](../audio.md) - Audio 模块总览
|
|
|
|
|
|
- [IAudioEffect](../i-audio-effect/i-audio-effect.md) - 音频效果接口
|
|
|
|
|
|
- [Audio3DParams](../audio-3d-params/audio-3d-params.md) - 3D 空间化参数
|