# 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 ``` - 带反馈的延迟效果 - 自动渐弱回声处理 ---