简介
本文主要列举几种常见的音效实现在web平台下的实现,项目实现的源代码已上传 github,喜欢的话就点个star吧,也可点击 项目地址 进行测试(chrome体验最佳)。
Audio API基本概念
Audio API 提供了控制音频的一个依据,它量化了音频在web系统上的流通轨迹,使得开发者可以通过 Audio Context对象来指定多种音频的流通渠道,并且在流通的过程中实现丰富的音频处理。
在实现上,Audio API将音频路径量化为一个个相连的节点,音频节点通过它们的输入输出相连,形成了一道道可控的音频通路,并最终汇集在同一个目的地destination(通常是扬声器或耳机等播放器)。一个典型的audio音效工作流如下所示:
以上音频的实现步骤可分为:
1.创建音频环境上下文(Audio Context);
2.在音频环境中创建音源(source),该对象可以为振荡器、Audio标签对象等等;
3.创建音效节点,如混响、双二阶滤波器、平移、压缩;
4.为音频选择一个终点(destination),如系统扬声器;
5.连接音源到音效节点,以及连接音效节点到终点,以构成音频播放的通路。
通过图示,我们可以将音频处理分解为三个节点的相连:源节点、分析和处理节点、目的节点。在中间的处理节点上,可以通过底层API实现音效,如使用BiquadFilterNode调整音色(即滤波器)、使用ChannelSplitterNode分割左右声道、使用GainNode调整增益值实现音乐的淡入淡出。