This page was translated from English by the community. Learn more and join the MDN Web Docs community.
AudioWorkletNode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2021년 4월.
참고 :
이 인터페이스는 secure contexts 바깥에서 이용 가능하지만, BaseAudioContext.audioWorklet 속성은 그렇지 않습니다. 따라서 사용자 정의 AudioWorkletProcessor는 secure contexts 바깥에서 정의될 수 없습니다.
Web Audio API의 AudioWorkletNode 인터페이스는 사용자에 의해 정의된, 다른 노드들과 마찬가지로 오디오 라우팅 그래프에 연결될 수 있는, AudioNode에 대한 base 클래스를 나타냅니다. AudioWorkletNode 는 연관된 AudioWorkletProcessor를 가지고 있는데, 이는 Web Audio 렌더링 스레드에서 실제적인 오디오 프로세싱을 합니다.
생성자
AudioWorkletNode()-
AudioWorkletNode객체의 새로운 인스턴스를 생성합니다.
속성
또한 부모인 AudioNode로부터 속성을 상속받습니다.
AudioWorkletNode.port읽기 전용-
노드와 노드에 연관된
AudioWorkletProcessor사이에서 양방향 소통을 위해 사용되는MessagePort를 반환합니다. 다른 쪽 끝은 프로세서의port속성 아래에서 사용 가능합니다. AudioWorkletNode.parameters읽기 전용-
AudioParam객체들의 모임인AudioParamMap을 반환합니다. 이것들은 근본적인AudioWorkletProcessor의 생성 중에 초기화됩니다. 만약AudioWorkletProcessor가 정적parameterDescriptorsgetter를 가지고 있다면, 이것으로부터 반환되는AudioParamDescriptor배열이AudioWorkletNode위에서AudioParam객체들을 생성하기 위해 사용됩니다. 이 메커니즘을 이용하여 여러분의AudioWorkletNode에서 접근 가능한 여러분만의AudioParam객체들을 만드는 것이 가능합니다. 그리고 나서 여러분은 연관된AudioWorkletProcessor에서 그것들의 값을 사용할 수 있습니다.
이벤트 처리기
AudioWorkletNode.onprocessorerror-
연관된
AudioWorkletProcessor에서 오류가 나왔을 때 발생됩니다. 한 번 발생되고 나면, 프로세서와 그 결과로서 노드도 생애 주기동안 쭉 무음을 출력할 것입니다.
메서드
부모인 AudioNode로부터 메서드를 상속받습니다.
AudioWorkletNode 인터페이스는 자신만의 어떠한 메서드도 정의하지 않습니다.
예제
이 예제에서 우리는 백색소음을 출력하는 사용자 정의 AudioWorkletNode 를 생성합니다.
우선, 우리는 백색소음을 출력하는 사용자 정의 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 에 전달하며 AudioWorkletNode 의 인스턴스를 생성하고, 이 노드를 오디오 그래프에 연결할 것입니다.
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 |
|---|
| Web Audio API> # AudioWorkletNode> |
브라우저 호환성
Enable JavaScript to view this browser compatibility table.