AudioWorkletProcessor()

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

같이 보기