AudioNode
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
AudioNode ã¤ã³ã¹ã¿ã³ã¹ã¯ãé³å£°å¦çã¢ã¸ã¥ã¼ã«ã表ãä¸è¬çãªã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ãã
ãã¨ãã°ä»¥ä¸ã®ãã®ã表ãã¾ãã
- 鳿º (HTML ã®
<audio>è¦ç´ ã<video>è¦ç´ ãOscillatorNodeãªã©) - é³å£°ã®åºåå
- ä¸éå¦çã¢ã¸ã¥ã¼ã« (ãã¨ãã°ã
BiquadFilterNodeãConvolverNodeãªã©ã®ãã£ã«ã¿ã¼) - ããªã¥ã¼ã å¶å¾¡ (
GainNodeãªã©)
ã¡ã¢:
AudioNode ã¯ã¤ãã³ãã®ã¿ã¼ã²ããã«ãªããã¨ãããããã®ãã EventTarget ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£
ãã¦ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
AudioNode.contextèªåå°ç¨-
対å¿ãã
BaseAudioContextãè¿ãã¾ããããã¯ãã®ãã¼ããåå ãã¦ããå¦çã°ã©ãã表ããªãã¸ã§ã¯ãã§ãã AudioNode.numberOfInputsèªåå°ç¨-
ãã®ãã¼ãã«ä¾çµ¦ãããå ¥åã®æ°ãè¿ãã¾ãã鳿ºãã¼ãã¯
numberOfInputsããããã£ã®å¤ã0ã§ãããã¼ãã¨ããå®ç¾©ã§ãã AudioNode.numberOfOutputsèªåå°ç¨-
ãã®ãã¼ãããã®åºåã®æ°ãè¿ãã¾ãã
AudioDestinationNodeãªã©ã®åºåå ãã¼ãã¯ããã®å±æ§ã®å¤ã0ã§ãã AudioNode.channelCount-
ãã®ãã¼ãã¸ã®å ¥åã«ã¤ãã¦ã¢ããããã·ã³ã°ã¨ãã¦ã³ããã·ã³ã°ãè¡ãéãä½åã®ãã£ã³ãã«ãç¨ããããæ±ºå®ããã¨ãç¨ããæ´æ°ã§ããã©ã®ããã«ç¨ããããããããã³æ£ç¢ºãªå®ç¾©ã¯ã
AudioNode.channelCountModeã®å¤ã«ããã¾ãã AudioNode.channelCountMode-
ãã®ãã¼ãã®å ¥åã¨åºåã®éã§ãã£ã³ãã«ã対å¿ä»ããæ¹æ³ã表ãåæå¤ã§ãã
AudioNode.channelInterpretation-
ãã£ã³ãã«ã®æå³ã表ãåæå¤ã§ãããã®æå³ã¯ãé³å£°ã®ã¢ããããã·ã³ã°ã¨ãã¦ã³ããã·ã³ã°ãã©ã®ããã«è¡ãããæ±ºå®ãã¾ãã åãããå¤ã¯
"speakers"ããã³"discrete"ã§ãã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
ã¤ã³ã¿ã¼ãã§ã¤ã¹ EventTarget ç±æ¥ã®ã¡ã½ãããå®è£
ãã¦ãã¾ãã
AudioNode.connect()-
ãã®ãã¼ãã®åºåããé³å£°ãã¼ã¿ãããã¯
AudioParamã®å¤ã¨ãã¦ãå¥ã®ãã¼ãã®å ¥åã«æ¥ç¶ãã¾ãã AudioNode.disconnect()-
ãã®ãã¼ããæ¥ç¶æ¸ã¿ã®å¥ã®ãã¼ãããåæãã¾ãã
説æ
>é³å£°ã«ã¼ãã£ã³ã°ã°ã©ã

ããããã® AudioNode ã«å
¥åã¨åºåããããè¤æ°ã®é³å£°ãã¼ããæ¥ç¶ãããã¨ã«ãã å¦çã°ã©ã ãçµã¿ç«ã¦ããã¾ãããã®ã°ã©ã㯠AudioContext å
ã«ãããããããã®é³å£°ãã¼ã㯠1 åã®é³å£°ã³ã³ããã¹ãã«ã®ã¿æå±ã§ãã¾ãã
鳿ºãã¼ã ã¯å
¥åãæããã1 åãããã¯è¤æ°ã®åºåãæã¡ãé³å£°ãçæã§ãã¾ãã䏿¹ãåºåå
ãã¼ã ã¯åºåãæããããããã«ãå
¥åã¯ãã¹ã¦ã¹ãã¼ã«ã¼ (ãããã¯é³å£°ã³ã³ããã¹ããç¨ããä½ããã®é³å£°åºåããã¤ã¹) ã§ç´æ¥åçããã¾ããããã«ãå
¥åã¨åºåãæã¤ å¦çãã¼ã ãããã¾ããæ£ç¢ºãªå¦çå
容ã¯ããããã® AudioNode ã«ãã£ã¦éãã¾ãããä¸è¬ã«ããã¼ãã¯å
¥åãèªã¿åããé³å£°é¢ä¿ã®ä½ããã®å¦çãè¡ããåºåã¨ãªãæ°ããå¤ãçæãã¾ãããããã¯ã(ãã¨ãã°ãå¦ççµæã«ã¯å¥ã§ã¢ã¯ã»ã¹ãã AnalyserNode ã§è¡ãããããã«) é³å£°ããã®ã¾ã¾ééããã¾ãã
ã°ã©ãå
ã®ãã¼ããå¤ããªãã»ã©ãé
å»¶ã大ãããªãã¾ãããã¨ãã°ãã°ã©ãã®é
å»¶ã 500ms ã®å ´åã鳿ºãã¼ããé³å£°ãåçããã¨ããã®é³å£°ãã¹ãã¼ã«ã¼ã§èãããã¾ã§ã«ã¯ 0.5 ç§ãããã¾ãã(ãããã¯ãä¸å±¤ã®é³å£°ããã¤ã¹å
ã§ã®é
å»¶ã«ãããããã«é·ããªãããããã¾ãã) ãã®ããã対話åã®é³å£°ãç¨æãããå ´åã¯ãã°ã©ããã§ããã ãå°ããããã¦ã¼ã¶ã¼ãæä½ããé³å£°ãã¼ãã¯ã°ã©ãã®æå¾ã«é
ç½®ããã¹ãã§ãããã¨ãã°ãããªã¥ã¼ã å¶å¾¡ (GainNode) ã¯ãããªã¥ã¼ã ã®å¤æ´ãããã«åæ ããããããæå¾ã®ãã¼ãã«ããã¹ãã§ãã
ããããã®å ¥åããã³åºåã«ã¯ã決ããããæ°ã® ãã£ã³ãã« ãããã¾ãããã¨ãã°ãã¢ãã©ã«ã®é³å£°ã«ã¯ãã£ã³ãã«ã 1 åãããã¹ãã¬ãªã®é³å£°ã«ã¯ãã£ã³ãã«ã 2 åããã¾ããã¦ã§ããªã¼ãã£ãª API ã¯ãå¿ è¦ã«å¿ãã¦ãã£ã³ãã«ã®æ°ãã¢ããããã·ã³ã°ããã¦ã³ããã·ã³ã°ãã¾ãã詳細ã¯ãã¦ã§ããªã¼ãã£ãªã®ä»æ§ã確èªãã¦ãã ããã
å ¨é³å£°ãã¼ãã®ä¸è¦§ã¯ãã¦ã§ããªã¼ãã£ãª API ã®ãã¼ã ãã¼ã¸ãåç §ãã¦ãã ããã
AudioNode ã®çæ
AudioNode ãçæããã«ã¯ã2 種é¡ã®æ¹æ³ãããã¾ããã³ã³ã¹ãã©ã¯ã¿ã¼ ã«ããæ¹æ³ã¨ããã¡ã¯ããªã¼ã¡ã½ãã ã«ããæ¹æ³ã§ãã
// ã³ã³ã¹ãã©ã¯ã¿ã¼
const analyserNode = new AnalyserNode(audioCtx, {
fftSize: 2048,
maxDecibels: -25,
minDecibels: -60,
smoothingTimeConstant: 0.5,
});
// ãã¡ã¯ããªã¼ã¡ã½ãã
const analyserNode = audioCtx.createAnalyser();
analyserNode.fftSize = 2048;
analyserNode.maxDecibels = -25;
analyserNode.minDecibels = -60;
analyserNode.smoothingTimeConstant = 0.5;
ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ãã®ãããã¡ã¯ããªã¼ã¡ã½ããã使ãã®ãã両æ¹ãæ··ãã¦ä½¿ãã®ãèªç±ã§ãããã ããã³ã³ã¹ãã©ã¯ã¿ã¼ã使ãã¨ä»¥ä¸ã®å©ç¹ãããã¾ãã
- ãã¹ã¦ã®å¼æ°ãçææã«è¨å®ã§ããåå¥ã«è¨å®ããå¿ è¦ãããã¾ããã
- é³å£°ãã¼ãã®ãµãã¯ã©ã¹ã使ãããã¨ãã§ãã¾ããå®éã®å¦çã¯ãã©ã¦ã¶ã¼ã®å é¨ã§è¡ããã夿´ã§ãã¾ããããé³å£°ãã¼ãã®ã©ããã¼ãæ¸ããã¨ã§ç¬èªã®ããããã£ãã¡ã½ãããæä¾ã§ãã¾ãã
- ããã©ã¼ãã³ã¹ãè¥å¹²è¯ãã§ããChrome ã«ããã¦ã Firefox ã«ããã¦ãããã¡ã¯ããªã¼ã¡ã½ããã¯å é¨ã§ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³ã¾ãã
æ´å²ã®æ¦è¦: ã¦ã§ããªã¼ãã£ãªã®ä»æ§ã®æåã®ãã¼ã¸ã§ã³ã§ã¯ããã¡ã¯ããªã¼ã¡ã½ããã®ã¿ãå®ç¾©ãã¦ãã¾ããã2013 å¹´ 10 æã®ãã¶ã¤ã³ã¬ãã¥ã¼ã®å¾ããã¡ã¯ããªã¼ã¡ã½ããã«æ¯ã¹ã¦å¤ãã®å©ç¹ããããããã³ã³ã¹ãã©ã¯ã¿ã¼ã追å ãããã¨ã«ãªãã¾ãããã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ã2016 å¹´ 8 æã 10 æã«ä»æ§ã«å ãããã¾ããããã¡ã¯ããªã¼ã¡ã½ããã¯å¼ãç¶ã仿§ã«å«ã¾ãã鿍奍ã«ã¯ãªã£ã¦ãã¾ããã
ä¾
ãã®ã·ã³ãã«ãªã³ã¼ãæçã¯ãé³å£°ãã¼ããããã¤ãçæããAudioNode ã®ããããã£ãã¡ã½ããã®ä½¿ãæ¹ã示ãã¦ãã¾ãããã®ãããªä½¿ç¨æ³ã®ä¾ã¯ãã¦ã§ããªã¼ãã£ãª API ã®ã©ã³ãã£ã³ã°ãã¼ã¸ãããªã³ã¯ããã¦ããä¾ (ãã¨ãã° Violent Theremin) ã®ã©ãã§ãè¦ããã¨ãã§ãã¾ãã
const audioCtx = new AudioContext();
const oscillator = new OscillatorNode(audioCtx);
const gainNode = new GainNode(audioCtx);
oscillator.connect(gainNode).connect(audioCtx.destination);
oscillator.context;
oscillator.numberOfInputs;
oscillator.numberOfOutputs;
oscillator.channelCount;
仿§æ¸
| 仿§æ¸ |
|---|
| Web Audio API > # AudioNode > |