aboutsummaryrefslogtreecommitdiff
path: root/files/ko/web/api/audioworkletnode/index.md
blob: 04bda37b534d8e56ee825e02e410842e8c1794f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
---
title: AudioWorkletNode
slug: Web/API/AudioWorkletNode
tags:
  - API
  - Audio
  - AudioWorkletNode
  - Experimental
  - Interface
  - Reference
  - Web Audio API
browser-compat: api.AudioWorkletNode
---
{{APIRef("Web Audio API")}}

> **참고:** 이 인터페이스는 [secure contexts](/ko/docs/Web/Security/Secure_Contexts) 바깥에서 이용 가능하지만, {{domxref("BaseAudioContext.audioWorklet")}} 속성은 그렇지 않습니다. 따라서 사용자 정의 {{domxref("AudioWorkletProcessor")}}는 [secure contexts](/ko/docs/Web/Security/Secure_Contexts) 바깥에서 정의될 수 없습니다.

[Web Audio API](/ko/docs/Web/API/Web_Audio_API)의 **`AudioWorkletNode`** 인터페이스는 사용자에 의해 정의된, 다른 노드들과 마찬가지로 오디오 라우팅 그래프에 연결될 수 있는, {{domxref("AudioNode")}}에 대한 base 클래스를 나타냅니다.  **`AudioWorkletNode`** 는 연관된 {{domxref("AudioWorkletProcessor")}}를 가지고 있는데, 이는 Web Audio 렌더링 스레드에서 실제적인 오디오 프로세싱을 합니다.

## 생성자

- {{domxref("AudioWorkletNode.AudioWorkletNode", "AudioWorkletNode()")}}
  - : `AudioWorkletNode` 객체의 새로운 인스턴스를 생성합니다.

## 속성

_또한 부모인 {{domxref("AudioNode")}}로부터 속성을 상속받습니다_.

- {{domxref("AudioWorkletNode.port")}} {{readonlyinline}}
  - : 노드와 노드에 연관된 {{domxref("AudioWorkletProcessor")}} 사이에서 양방향 소통을 위해 사용되는 {{domxref("MessagePort")}}를 반환합니다. 다른 쪽 끝은 프로세서의 {{domxref("AudioWorkletProcessor.port", "port")}} 속성 아래에서 사용 가능합니다.
- {{domxref("AudioWorkletNode.parameters")}} {{readonlyinline}}
  - : {{domxref("AudioParam")}} 객체들의 모임인 {{domxref("AudioParamMap")}}을 반환합니다. 이것들은 근본적인 `AudioWorkletProcessor` 의 생성 중에 초기화됩니다. 만약 `AudioWorkletProcessor` 가 정적 {{domxref("AudioWorkletProcessor.parameterDescriptors", "parameterDescriptors")}} getter를 가지고 있다면, 이것으로부터 반환되는 {{domxref("AudioParamDescriptor")}} 배열이 `AudioWorkletNode` 위에서 `AudioParam` 객체들을 생성하기 위해 사용됩니다. 이 메커니즘을 이용하여 여러분의 `AudioWorkletNode` 에서 접근 가능한 여러분만의 `AudioParam` 객체들을 만드는 것이 가능합니다. 그리고 나서 여러분은 연관된 `AudioWorkletProcessor`에서 그것들의 값을 사용할 수 있습니다.

### 이벤트 처리기

- {{domxref("AudioWorkletNode.onprocessorerror")}}
  - : 연관된 {{domxref("AudioWorkletProcessor")}}에서 오류가 나왔을 때 발생됩니다. 한 번 발생되고 나면, 프로세서와 그 결과로서 노드도 생애 주기동안 쭉 무음을 출력할 것입니다.

## 메서드

_부모인 {{domxref("AudioNode")}}로부터 메서드를 상속받습니다_.

_`AudioWorkletNode` 인터페이스는 자신만의 어떠한 메서드도 정의하지 않습니다._

## 예제

이 예제에서 우리는 백색소음을 출력하는 사용자 정의 `AudioWorkletNode` 를 생성합니다.

우선, 우리는 백색소음을 출력하는 사용자 정의 {{domxref("AudioWorkletProcessor")}}를 정의하고 등록할 필요가 있습니다. 이 작업은 별도의 파일에서 이루어져야 함에 주의하세요.

```js
// 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` 의 인스턴스를 생성하고, 이 노드를 오디오 그래프에 연결할 것입니다.

```js
const audioContext = new AudioContext()
await audioContext.audioWorklet.addModule('white-noise-processor.js')
const whiteNoiseNode = new AudioWorkletNode(audioContext, 'white-noise-processor')
whiteNoiseNode.connect(audioContext.destination)
```

## 명세

{{Specifications}}

## 브라우저 호환성

{{Compat}}

## 같이 보기

- [Web Audio API](/en-US/docs/Web/API/Web_Audio_API)
- [Web Audio API 사용하기](/en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API)