HumanBreak/docs/api/user-client-modules/AudioEffect.md

208 lines
3.9 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.

# AudioEffect API 文档
本文档由 `DeepSeek R1` 模型生成并微调。
---
## 类描述
音频处理管道的核心抽象类,为构建音频效果链提供基础框架。所有效果器通过输入/输出节点串联,形成可定制的音频处理流水线。
---
## 核心架构
音频播放流程:
```mermaid
graph LR
Source --> Effect1
Effect1 --> Effect2[...]
Effect2 --> GainNode
GainNode --> Destination
```
---
## 抽象成员说明
| 成员 | 类型 | 说明 |
| -------- | ----------- | -------------------------- |
| `input` | `AudioNode` | 效果器输入节点(必须实现) |
| `output` | `AudioNode` | 效果器输出节点(必须实现) |
---
## 核心方法说明
### `connect`
```typescript
function connect(target: IAudioInput, output?: number, input?: number): void;
```
连接至下游音频节点
| 参数 | 类型 | 说明 |
| ------ | ------------- | -------------------------- |
| target | `IAudioInput` | 目标效果器/节点 |
| output | `number` | 当前效果器输出通道(可选) |
| input | `number` | 目标效果器输入通道(可选) |
---
### `disconnect`
```typescript
function disconnect(
target?: IAudioInput,
output?: number,
input?: number
): void;
```
断开与下游节点的连接
---
### `abstract start`
```typescript
function start(): void;
```
效果器激活时调用(可用于初始化参数)
---
### `abstract end`
```typescript
function end(): void;
```
效果器停用时调用(可用于资源回收)
---
## 自定义效果器示例
### 混响效果器实现
```typescript
export class ReverbEffect extends AudioEffect {
private convolver: ConvolverNode;
private dryGain: GainNode;
private wetGain: GainNode;
constructor(ac: AudioContext) {
super(ac);
// 创建节点网络
this.dryGain = ac.createGain();
this.wetGain = ac.createGain();
this.convolver = ac.createConvolver();
// 定义输入输出
this.input = this.dryGain;
this.output = this.ac.createGain();
// 构建处理链
this.dryGain.connect(this.output);
this.dryGain.connect(this.convolver);
this.convolver.connect(this.wetGain);
this.wetGain.connect(this.output);
}
/** 设置混响强度 */
setMix(value: number) {
this.dryGain.gain.value = 1 - value;
this.wetGain.gain.value = value;
}
/** 加载脉冲响应 */
async loadImpulse(url: string) {
const response = await fetch(url);
const buffer = await this.ac.decodeAudioData(
await response.arrayBuffer()
);
this.convolver.buffer = buffer;
}
start() {
this.output.gain.value = 1;
}
end() {
this.output.gain.value = 0;
}
}
```
---
## 内置效果器说明
### StereoEffect立体声控制
```mermaid
graph LR
Input --> Panner[PannerNode]
Panner --> Output
```
- 控制声相/3D 空间定位
- 支持设置声音方位和位置
### VolumeEffect音量控制
```mermaid
graph LR
Input --> Gain[GainNode]
Gain --> Output
```
- 全局音量调节
- 支持实时音量渐变
### ChannelVolumeEffect多声道控制
```mermaid
graph LR
Input --> Splitter[ChannelSplitter]
Splitter --> Gain1
Splitter --> Gain2
Gain1 --> Merger
Gain2 --> Merger
Merger --> Output
```
- 6 声道独立音量控制
- 支持环绕声场调节
### DelayEffect延迟效果
```mermaid
graph LR
Input --> Delay[DelayNode]
Delay --> Output
```
- 基础延迟效果
- 精确到采样级的延迟控制
### EchoEffect回声效果
```mermaid
graph LR
Input --> Gain
Gain --> Delay
Delay --> Gain[反馈循环]
Gain --> Output
```
- 带反馈的延迟效果
- 自动渐弱回声处理
---