ConvolverNode
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
ConvolverNode æ¥å£æ¯ä¸ä¸ªå¯¹ç»å® AudioBuffer 䏿§è¡çº¿æ§å·ç§¯ç AudioNodeï¼ä¸è¬ç¨æ¥åé³é¢æ··åææãæ¯ä¸ä¸ª ConvolverNode é½ä¼æä¸ä¸ªè¾å
¥å¼åè¾åºå¼ã
夿³¨ï¼æ´å¤çº¿æ§å·ç§¯ç论çç¸å ³ä¿¡æ¯ï¼è¯·åé Convolution article on Wikipedia.
| Number of inputs | 1 |
|---|---|
| Number of outputs | 1 |
| Channel count mode | "clamped-max" |
| Channel count | 1, 2, or 4 |
| Channel interpretation | "speakers" |
æé 彿°
ConvolverNode()-
å建ä¸ä¸ªæ°ç
ConvolverNode对象å®ä¾ã
屿§
ç»§æ¿å
¶ç¶çº§ç屿§*, AudioNode*.
ConvolverNode.buffer-
ä¸ä¸ªè¢«
ConvolverNodeç¨æ¥äº§çæ··åææçå声éãç«ä½å£°æå声éçé³é¢ç¼å²å¨ï¼å å«äº (å¯è½æ¯å¤å£°é) èå²ååº (IR)ã ConvolverNode.normalize-
å¸å°å¼ï¼å¨è®¾ç½®ç¼å²åºå±æ§æ¶ï¼å¯ç»å®æ¯å¦å¯¹æ¥èª
bufferçèå²ååºæçåçå½ä¸åè¿è¡ç¼©æ¾ã
æ¹æ³
没æå
·ä½çæ¹æ³ï¼ä»å
¶ç¶ç»§æ¿æ¹æ³ï¼AudioNode.
ConvolverNode ä¾å
ä¸é¢ç示ä¾å±ç¤ºäº AudioContext å建å·ç§¯èç¹çåºç¡ç¨æ³ã
夿³¨ï¼ä½ éè¦æ¾å°ä¸ä¸ªèå²ååºæ¥å®æä¸é¢ç示ä¾ã坿¥çæ¤å¤ çå®ä¾ã
let audioCtx = new window.AudioContext();
async function createReverb() {
let convolver = audioCtx.createConvolver();
// 仿件å è½½èå²ååº
let response = await fetch("path/to/impulse-response.wav");
let arraybuffer = await response.arrayBuffer();
convolver.buffer = await audioCtx.decodeAudioData(arraybuffer);
return convolver;
}
...
let reverb = await createReverb();
// someOtherAudioNode -> reverb -> destination
someOtherAudioNode.connect(reverb);
reverb.connect(audioCtx.destination);
è§è
| è§è |
|---|
| Web Audio API > # ConvolverNode > |