mirror of
				https://github.com/unanmed/HumanBreak.git
				synced 2025-10-31 12:12:58 +08:00 
			
		
		
		
	
		
			
				
	
	
	
		
			3.9 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			3.9 KiB
		
	
	
	
	
	
	
	
AudioEffect API 文档
本文档由 DeepSeek R1 模型生成并微调。
类描述
音频处理管道的核心抽象类,为构建音频效果链提供基础框架。所有效果器通过输入/输出节点串联,形成可定制的音频处理流水线。
核心架构
音频播放流程:
graph LR
    Source --> Effect1
    Effect1 --> Effect2[...]
    Effect2 --> GainNode
    GainNode --> Destination
抽象成员说明
| 成员 | 类型 | 说明 | 
|---|---|---|
| input | AudioNode | 效果器输入节点(必须实现) | 
| output | AudioNode | 效果器输出节点(必须实现) | 
核心方法说明
connect
function connect(target: IAudioInput, output?: number, input?: number): void;
连接至下游音频节点
| 参数 | 类型 | 说明 | 
|---|---|---|
| target | IAudioInput | 目标效果器/节点 | 
| output | number | 当前效果器输出通道(可选) | 
| input | number | 目标效果器输入通道(可选) | 
disconnect
function disconnect(
    target?: IAudioInput,
    output?: number,
    input?: number
): void;
断开与下游节点的连接
abstract start
function start(): void;
效果器激活时调用(可用于初始化参数)
abstract end
function end(): void;
效果器停用时调用(可用于资源回收)
自定义效果器示例
混响效果器实现
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(立体声控制)
graph LR
    Input --> Panner[PannerNode]
    Panner --> Output
- 控制声相/3D 空间定位
- 支持设置声音方位和位置
VolumeEffect(音量控制)
graph LR
    Input --> Gain[GainNode]
    Gain --> Output
- 全局音量调节
- 支持实时音量渐变
ChannelVolumeEffect(多声道控制)
graph LR
    Input --> Splitter[ChannelSplitter]
    Splitter --> Gain1
    Splitter --> Gain2
    Gain1 --> Merger
    Gain2 --> Merger
    Merger --> Output
- 6 声道独立音量控制
- 支持环绕声场调节
DelayEffect(延迟效果)
graph LR
    Input --> Delay[DelayNode]
    Delay --> Output
- 基础延迟效果
- 精确到采样级的延迟控制
EchoEffect(回声效果)
graph LR
    Input --> Gain
    Gain --> Delay
    Delay --> Gain[反馈循环]
    Gain --> Output
- 带反馈的延迟效果
- 自动渐弱回声处理