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 > |