AudioWorkletNode
报告反馈
注意:虽然此接口在安全上下文之外可用,但BaseAudioContext.audioWorklet
属性不可用,因此无法在安全上下文之外定义自定义AudioWorkletProcessor
。
构造函数
AudioWorkletNode()
-
AudioWorkletNode
是Web Audio API中的一种接口,它表示一个用户定义的AudioNode
的基类,可以将其与其他节点一起连接到音频路由图中。它有一个关联的AudioWorkletProcessor
,该处理器在 Web Audio 渲染线程中执行实际的音频处理。
实例属性
创建一个新的 AudioWorkletNode
对象实例。.
- 还从其父级
AudioNode
继承属性 - 返回一个
MessagePort
,用于在节点与其关联的AudioWorkletProcessor
之间进行双向通信。另一个端点在处理器的port
属性下可用。
事件
processorerror
-
返回一个
AudioParamMap
- 一个AudioParam
对象的集合。它们是在创建底层AudioWorkletProcessor
时实例化的。如果AudioWorkletProcessor
具有静态的parameterDescriptors
getter,则从其中返回的AudioParamDescriptor
数组将用于在AudioWorkletNode
上创建AudioParam
对象。通过这种机制,可以使您自己的AudioParam
对象在您的AudioWorkletNode
中可访问。然后,您可以在关联的AudioWorkletProcessor
中使用它们的值。
实例方法
当关联的AudioWorkletProcessor
中抛出错误时触发。一旦触发,处理器和节点将在此后的生命周期中始终输出静音。.
还从其父级AudioNode
继承方法
示例
AudioWorkletNode
接口本身没有定义任何方法。
在此示例中,我们创建一个自定义的 AudioWorkletNode
,它输出随机噪声。
首先,我们需要定义一个自定义的
AudioWorkletProcessor
,它将输出随机噪声,并将其注册。请注意,这应在单独的文件中完成。// random-noise-processor.js
class RandomNoiseProcessor 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("random-noise-processor", RandomNoiseProcessor);
js
首先,我们需要定义一个自定义的
AudioWorkletProcessor
,它将输出随机噪声,并将其注册。请注意,这应在单独的文件中完成。const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("random-noise-processor.js");
const randomNoiseNode = new AudioWorkletNode(
audioContext,
"random-noise-processor",
);
randomNoiseNode.connect(audioContext.destination);
规范
接下来,在我们的主脚本文件中,我们将加载处理器,创建一个 AudioWorkletNode 的实例,并向其传递处理器的名称,然后将该节点连接到音频图中。 |
---|
Web Audio API # AudioWorkletNode |
浏览器兼容性
规范