--- title: AudioWorkletNode slug: Web/API/AudioWorkletNode translation_of: Web/API/AudioWorkletNode ---
{{APIRef("Web Audio API")}} {{SeeCompatTable}}
Web Audio API 中的 AudioWorkletNode
接口代表了用户定义的{{domxref("AudioNode")}}的基类, 该基类可以与其他节点一起连接到音频路由图. 其具有关联的{{domxref("AudioWorkletProcessor")}}, 它在 Web Audio 执行实际的音频处理.
AudioWorkletNode
创建一个新的实例对象.也继承父类的属性, {{domxref("AudioNode")}}.
AudioWorkletProcessor
的过程中被实例化. 如果 AudioWorkletProcessor
有一个静态的 {{domxref("AudioWorkletProcessor.parameterDescriptors", "parameterDescriptors")}} getter, 从其返回的 {{domxref("AudioParamDescriptor")}} 数组用于在 AudioWorkletNode
创建 AudioParam
对象. 通过这种机制,使得 AudioParam
对象可以从 AudioWorkletNode
中访问. 你可以在与其关联的 AudioWorkletProcessor
中使用它的值.同样继承了其父类的方法, {{domxref("AudioNode")}}.
AudioWorkletNode 接口未定义其自己的任何方法.
在本示例中我们创建了 AudioWorkletNode
对象, 它会输出白噪声.
首先, 我们需要定义一个自定义的 {{domxref("AudioWorkletProcessor")}}, 它将输出白噪声并进行注册. 注意, 这需要在一个单独的文件中完成.
// white-noise-processor.js class WhiteNoiseProcessor extends AudioWorkletProcessor { process (inputs, outputs, parameters) { const output = outputs[0] output.forEach(channel => { for (let i = 0; i < channel.length; i++) { channel[i] = Math.random() * 2 - 1 } }) return true } } registerProcessor('white-noise-processor', WhiteNoiseProcessor)
接下来, 在脚本主文件中一个 AudioWorkletNode
实例, 并传递处理器的名称, 然后将该实例连接到一个audio graph.
const audioContext = new AudioContext() await audioContext.audioWorklet.addModule('white-noise-processor.js') const whiteNoiseNode = new AudioWorkletNode(audioContext, 'white-noise-processor') whiteNoiseNode.connect(audioContext.destination)
Specification | Status | Comment |
---|---|---|
{{SpecName('Web Audio API', '#audioworkletnode', 'AudioWorkletNode')}} | {{Spec2('Web Audio API')}} |
{{Compat("api.AudioWorkletNode")}}