AudioWorkletProcessor()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

AudioWorkletProcessor() 생성자는 AudioWorkletNode의 근본적인 오디오 프로세싱 메커니즘을 나타내는 새로운 AudioWorkletProcessor 객체를 생성합니다.

구문

참고: AudioWorkletProcessor 와 이것으로부터 파생된 클래스들은 사용자에 의해 제공된 코드로부터 직접적으로 초기화될 수 없습니다. 대신, 이것들은 오직 연관된 AudioWorkletNode들의 생성에 의해서만 내부적으로 생성됩니다.

js
new AudioWorkletProcessor(options);

매개변수

options

AudioWorkletNode constructoroptions 매개변수로서 전달되고 structured clone algorithm에 통과되는 객체. 사용 가능한 속성들은 다음과 같습니다:

numberOfInputs Optional

numberOfInputs 속성을 초기화할 값. 기본 값은 1입니다.

numberOfOutputs Optional

numberOfOutputs 속성을 초기화할 값. 기본 값은 1입니다.

outputChannelCount Optional

각 출력에 대한 채널의 수를 정의하는 배열. 예를 들자면, outputChannelCount: [n, m] 은 첫번째 출력의 채널의 수를 n 으로, 두번째 출력을 m 으로 명시합니다. 배열의 길이는 반드시 numberOfOutputs 와 일치해야 합니다.

parameterData Optional

key 가 사용자 정의 파라미터의 이름이고 value 가 이것의 초기 값인 채로, (이 노드의 parameters 속성에 있는) 이 노드의 사용자 정의 AudioParam의 초기 값들을 포함하는 객체.

processorOptions Optional

근본적인 AudioWorkletProcessor의 사용자 정의 초기화에 사용될 수 있는 모든 추가적인 데이터

처음 두 개의 속성에 대해 기본 값이 있어서, AudioWorkletNode constructor에 전달되는 options 객체가 없을지라도, 노드에 의해 AudioWorkletProcessor 생성자에 전달된 options 객체는 존재할 것이고 최소한 numberOfInputsnumberOfOutputs 을 가질 것이라는 데 주목하세요.

반환 값

새롭게 생성된 AudioWorkletProcessor 인스턴스.

예제

이 예제에서 우리는 AudioWorkletNode constructor에 사용자 정의 옵션들을 전달하고 어떻게 그것들의 structured clone이 우리의 AudioWorkletProcessor 생성자에 전달되는지 관찰합니다.

우선, 우리는 사용자 정의 AudioWorkletProcessor를 정의하고 등록할 필요가 있습니다. 이 작업은 별도의 파일에서 이루어져야 한다는 것에 주의하세요.

js
// test-processor.js
class TestProcessor extends AudioWorkletProcessor {
  constructor(options) {
    super();
    console.log(options.numberOfInputs);
    console.log(options.processorOptions.someUsefulVariable);
  }
  process(inputs, outputs, parameters) {
    return true;
  }
}

registerProcessor("test-processor", TestProcessor);

다음으로, 메인 스크립트 파일에서 우리는 프로세서를 로드하고, AudioWorkletNode 에 프로세서의 이름과 options 객체를 전달하며 AudioWorkletNode 의 인스턴스를 생성합니다.

options 객체에서 우리는 someUsefulVariable 키 아래에서 Map 인스턴스와 함께 processorOptions 를 전달합니다. 우리는 numberOfInputs 을 전달하지 않았고 어떻게 이것이 기본 값을 얻게 되는지 관찰해 봅시다.

js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const testNode = new AudioWorkletNode(audioContext, "test-processor", {
  processorOptions: {
    someUsefulVariable: new Map([
      [1, "one"],
      [2, "two"],
    ]),
  },
});

콘솔 출력은 다음과 같을 것입니다:

js
> 1 // AudioWorkletNode options.numberOfInputs가 기본 값으로 설정됨
> Map(2) {1 => "one", 2 => "two"} // someUsefulVariable 아래의 복제된 map

명세

Specification
Web Audio API
# dom-audioworkletprocessor-audioworkletprocessor

브라우저 호환성

BCD tables only load in the browser

같이 보기