BaseAudioContext

Baseline 已广泛支持

此特性已得到良好支持,可在多种设备和浏览器版本上使用。自 2021 年 4 月起,所有浏览器均已支持此特性。

Web 音频 API 中的 BaseAudioContext 接口为在线和离线音频处理图提供了基础定义,分别由 AudioContextOfflineAudioContext 表示。您不会直接使用 BaseAudioContext,而是通过这两个继承的接口之一来使用它的功能。

BaseAudioContext 可以是事件的目标,因此它实现了 EventTarget 接口。

EventTarget BaseAudioContext

实例属性

BaseAudioContext.audioWorklet 只读 安全上下文

返回 AudioWorklet 对象,可用于创建和管理 AudioNode,其中实现 AudioWorkletProcessor 接口的 JavaScript 代码在后台运行以处理音频数据。

BaseAudioContext.currentTime 只读

返回一个双精度浮点数,表示用于调度的不断增加的硬件时间(以秒为单位)。它从 0 开始。

BaseAudioContext.destination 只读

返回一个 AudioDestinationNode,表示上下文中所有音频的最终目的地。可以将其视为音频渲染设备。

BaseAudioContext.listener 只读

返回 AudioListener 对象,用于 3D 空间化。

BaseAudioContext.sampleRate 只读

返回一个浮点数,表示此上下文中所有节点使用的采样率(每秒采样数)。AudioContext 的采样率不可更改。

BaseAudioContext.state 只读

返回 AudioContext 的当前状态。

实例方法

还实现了 EventTarget 接口的方法

BaseAudioContext.createAnalyser()

创建一个 AnalyserNode,可用于暴露音频时域和频域数据,例如用于创建数据可视化。

BaseAudioContext.createBiquadFilter()

创建一个 BiquadFilterNode,表示一个二阶滤波器,可配置为多种常见的滤波器类型:高通、低通、带通等。

BaseAudioContext.createBuffer()

创建一个新的、空的 AudioBuffer 对象,然后可以填充数据并通过 AudioBufferSourceNode 播放。

BaseAudioContext.createBufferSource()

创建一个 AudioBufferSourceNode,可用于播放和操作 AudioBuffer 对象中包含的音频数据。AudioBuffer 使用 AudioContext.createBuffer() 创建,或者在成功解码音频轨道时由 AudioContext.decodeAudioData() 返回。

BaseAudioContext.createConstantSource()

创建一个 ConstantSourceNode 对象,它是一个音频源,可连续输出单声道(单通道)声音信号,所有样本值都相同。

BaseAudioContext.createChannelMerger()

创建一个 ChannelMergerNode,用于将多个音频流的通道合并到单个音频流中。

BaseAudioContext.createChannelSplitter()

创建一个 ChannelSplitterNode,用于访问音频流的各个通道并单独处理它们。

BaseAudioContext.createConvolver()

创建一个 ConvolverNode,可用于将卷积效果(例如混响效果)应用于您的音频图。

BaseAudioContext.createDelay()

创建一个 DelayNode,用于将输入的音频信号延迟一定量。此节点还有助于在 Web 音频 API 图中创建反馈循环。

BaseAudioContext.createDynamicsCompressor()

创建一个 DynamicsCompressorNode,可用于对音频信号应用声学压缩。

BaseAudioContext.createGain()

创建一个 GainNode,可用于控制音频图的整体音量。

BaseAudioContext.createIIRFilter()

创建一个 IIRFilterNode,表示一个二阶滤波器,可配置为多种常见的滤波器类型。

BaseAudioContext.createOscillator()

创建一个 OscillatorNode,这是一个代表周期性波形的源。它基本上生成一个音调。

BaseAudioContext.createPanner()

创建一个 PannerNode,用于在 3D 空间中对输入的音频流进行空间化。

BaseAudioContext.createPeriodicWave()

创建一个 PeriodicWave,用于定义可用于确定 OscillatorNode 输出的周期性波形。

BaseAudioContext.createScriptProcessor() 已弃用

创建一个 ScriptProcessorNode,可用于通过 JavaScript 直接进行音频处理。

BaseAudioContext.createStereoPanner()

创建一个 StereoPannerNode,可用于对音频源应用立体声声像。

BaseAudioContext.createWaveShaper()

创建一个 WaveShaperNode,用于实现非线性失真效果。

BaseAudioContext.decodeAudioData()

异步解码 ArrayBuffer 中包含的音频文件数据。在这种情况下,通常在将 responseType 设置为 arraybuffer 后,从 XMLHttpRequestresponse 属性加载 ArrayBuffer。此方法仅适用于完整文件,不适用于音频文件的片段。

事件

statechange

AudioContext 的状态因调用其中一个状态更改方法(AudioContext.suspendAudioContext.resumeAudioContext.close)而改变时触发。

示例

js
const audioContext = new AudioContext();

const oscillatorNode = audioContext.createOscillator();
const gainNode = audioContext.createGain();
const finish = audioContext.destination;

规范

规范
Web Audio API
# BaseAudioContext

浏览器兼容性

另见