ãã®è¨äºã§ã¯ãã¢ããªãçµç±ããé³å£°ä¼éæ¹æ³ã®è¨è¨ãããéã«ãååãªæ å ±ã«åºã¥ããæ±ºæãããå©ãã¨ãªãããã Web Audio API ã®ç¹å¾´ãããã«åãã¦ãããããã®èå¾ã«ããé³å£°çè«ã«ã¤ãã¦èª¬æãã¾ãããã®è¨äºã¯ããªããçç·´ã®ãµã¦ã³ãã¨ã³ã¸ãã¢ã«ããããã¨ã¯ã§ããªããã®ã®ãWeb Audio API ãåãçç±ãçè§£ããããã®ååãªèæ¯ãæä¾ãã¾ãã
ãªã¼ãã£ãªã°ã©ãWeb Audio API ã¯ããªã¼ãã£ãªã³ã³ããã¹ãå é¨ã§ã®ãªã¼ãã£ãªãªãã¬ã¼ã·ã§ã³ã«å¯¾ãããã³ããªã³ã°ãå«ã¿ãã¢ã¸ã¥ã©ã¼ã«ã¼ãã£ã³ã°ãå¯è½ã¨ããããã«ãã¶ã¤ã³ããã¦ãã¾ãããåºæ¬ã¨ãªãé³å£°æä½ãæãè¦ç´ ã¯ããªã¼ãã£ãªã«ã¼ãã³ã°ã©ããå½¢ä½ãããã«ãäºãã«æ¥ç¶ããããªã¼ãã£ãªãã¼ãã«ããã¾ããæ§ã ãªã¿ã¤ãã®ãã£ã³ãã«ã¬ã¤ã¢ã¦ãã¨å ±ã«ãããã¤ãã®é³å£°æºãã¾ããåä¸ã®ã³ã³ããã¹ãå é¨ã«ã¦æ¯æããã¦ãã¾ãããã®ã¢ã¸ã¥ã©ã¼ãã¶ã¤ã³ã¯ãè¤éãªãªã¼ãã£ãªæ©è½ãããã¤ãããã¯ãªé³é¿å¹æã¨å ±ã«åµé ããããã«å¿ è¦ãªæè»æ§ãä¸ãã¦ãã¾ãã
ãªã¼ãã£ãªãã¼ãã¯ããããå ¥åºåãçµç±ãæ¥ç¶ãããåä¸ãããã¯è¤æ°ã®é³å£°æºããéå§ãããä¸é£ã®ãã§ã¼ã³ãä½ããä¸ã¤ä»¥ä¸ã®ãã¼ããçµç±ãã¤ã¤ãæçµçãªè¡ãå ã«å±ãçµäºãã¾ãããã ãããã¨ãã°ãé³å£°ãã¼ã¿ãè¦è¦åãããã¨ã®ã¿ãæ±ããå ´åãªã©ã¯ããã®ãããªç®çå°ã¯çãã¦æ§ãã¾ãããã·ã³ãã«ã§å ¸åç㪠Web Audio ã¯ã¼ã¯ããã¼ã§ã¯ã以ä¸ã®ããã«ãªãã¾ã:
<audio>
ã¿ã°ããªã·ã¬ã¼ã¿ã¼ãã¹ããªã¼ã çã¨ãã£ãã該å½ã³ã³ããã¹ãå
ã§ã®é³å£°æºã®ä½æãã¡ã¢: ä¿¡å·ä¸ã§å©ç¨ã§ãããªã¼ãã£ãªãã£ã³ãã«ã®æ°åã¯ã2.0 ã 5.1 ã®ããã«ããã°ãã°ãæ°å¤ã®å½¢å¼ã§è¡¨ç¾ããã¾ããããã¯channel notationã¨å¼ã°ãã¾ããæåã®æ°å¤ã¯ã該å½ã®ä¿¡å·ãå«ãã§ãããªã¼ãã£ãªãã£ã³ãã«ã®æ°ã§ããããªãªãã®å¾ã«ããæ°å¤ã¯ãä½é³å¢å¼·ç¨åºåã¨ãã¦ç¢ºä¿ããã¦ãããã£ã³ãã«ã®æ°ã示ãã¦ãã¾ãããããã¯ãã°ãã°ãµãã¦ã¼ãã¡ã¼ã¨ãç§°ããã¾ãã
åå ¥åºåã¯ãäºãã«ç¹å®ã®ãªã¼ãã£ãªã¬ã¤ã¢ã¦ãã代表ãããä¸ã¤ä»¥ä¸ã®ãªã¼ãã£ãªãã£ã³ãã«ã«ããæ§æããã¾ããåå¥ã®ãã£ã³ãã«æ§é ããããã¯ãã¢ãã©ã«ãã¹ãã¬ãªãã¯ã¢ããã5.1 çãå«ãã§ãµãã¼ãããã¦ãã¾ãã
é³å£°æºã¯ããã¤ãã®æ¹æ³ã§åå¾ã§ãã¾ã:
<video>
ã <audio>
ã®ãããª)HTML media elements ããåå¾ãMediaStream
ã«ããç´æ¥åå¾ããªã¼ãã£ãªã·ã°ãã«ã®ããã»ã¹ä¸ã§ã¯ããµã³ããªã³ã°ã¨ã¯é£ç¶çãªä¿¡å·ã颿£çãªä¿¡å·ã¸å¤æãããã¨ãæå³ãã¾ãããããã¯å¥ã®è¨ãæ¹ãããã¨ããã³ãã®ã©ã¤ãæ¼å¥ã®ãããªé£ç¶çãªé³æ³¢ããã³ã³ãã¥ã¼ã¿ã¼ããã®é³å£°ãåºå¥ããããããã¯ã§å¦çã§ããããã«ãªã(颿£æéä¿¡å·ã®)ä¸é£ã®ãµã³ãã«ã«å¤æãã¾ãã
ãã詳ããæ å ±ã¯ãWikipedia ã® Sampling(Signal processing)ããè¦ããã¨ãã§ãã¾ãã
ãªã¼ãã£ãªãããã¡ã¼: ãã¬ã¼ã ããµã³ãã«ããã£ã³ãã«ã»ã¯ã·ã§ã³AudioBuffer
ã¯ããã£ã³ãã«ã®æ°(ã¢ãã©ã«ã®å ´å㯠1,ã¹ãã¬ãªã®å ´å㯠2ãç)ããããã¡ã¼é·ããªãã¡ãããã¡ã¼ã«æ ¼ç´ããã¦ãããµã³ãã«ãã¬ã¼ã æ°ããµã³ãã«ã¬ã¼ãããªãã¡ 1 ç§éã«åçããããµã³ãã«ãã¬ã¼ã æ°ãããã®ãã©ã¡ã¼ã¿ã¼ã¨ãã¦æã£ã¦ãã¾ãã
ä¾ã¨ãã¦ãfloat32 åã®å¤ 1 ã¤ã¯ã(ã¹ãã¬ãªã®å ´åã¯å·¦å´ãããã¯å³å´ã¨ãã£ã)ç¹å®ã®ãã£ã³ãã«ã«ããã¦ãåç¹å®æç¹ããããªã¼ãã£ãªã¹ããªã¼ã ã®å¤ã表ãã¦ãã¾ãããã¬ã¼ã ã¾ãã¯ãµã³ãã«ãã¬ã¼ã ã¯ãä¸å®æç¹ã«ããããé³å£°ãåçããå ¨ãã£ã³ãã«åã®å¤ãã¹ã¦ã®ã¾ã¨ã¾ãã§ããå ¨ãã£ã³ãã«ã®å ¨ãµã³ãã«ãä¸ç·ã«åçããã¾ã(ã¹ãã¬ãªãªãã° 2 ãã£ã³ãã«åã5.1 ãªãã° 6 ãã£ã³ãã«åãç)ã
ãµã³ãã«ã¬ã¼ãã¨ã¯ã1 ç§éã«åçããããããããµã³ãã«ã®æ°(ã¾ãã¯ã1 ãã¬ã¼ã ã®ãµã³ãã«ãã¹ã¦ãåæã«åçããããã¨ããããã¬ã¼ã )ã§ãããåä½ã¯ Hz ã§æ¸¬å®ããã¾ãããµã³ãã«ã¬ã¼ããé«ã¾ãã«ã¤ããé³è³ªã¯åä¸ãã¾ãã
ã¢ãã©ã«ã¨ã¹ãã¬ãªã®ãªã¼ãã£ãªãããã¡ã¼ãè¦ã¦ã¿ã¾ããããããã㯠1 ç§éã44100Hz ã§åçããã¾ãã
ãããã¡ãåçãããã¨ãæãå·¦ã®ãµã³ãã«ãã¬ã¼ã ãèãããæ¬¡ã«ãã®ãµã³ãã«ãã¬ã¼ã ã®ããé£ã®ãµã³ãã«ãã¬ã¼ã ãç¶ãã¦ããã¾ããã¹ãã¬ãªã®å ´åã両æ¹ã®ãã£ã³ãã«ããåæã«è´ããã¾ãããµã³ãã«ãã¬ã¼ã ã¯ããã£ã³ãã«ã®æ°ã¨ã¯ç¬ç«ãã¦ããããé常ã«ä¾¿å©ã§ãããæ£ç¢ºã«é³å£°ãåãæ±ãæå¹ãªææ®µã¨ãã¦ãæéã表ç¾ãã¦ããã¾ãã
ã¡ã¢: ãã¬ã¼ã æ°ããç§æ°ãå¾ãããã«ã¯ããã¬ã¼ã æ°ããµã³ãã«ã¬ã¼ãã§åã«é¤ç®ããã ãã§ãããµã³ãã«æ°ãããã¬ã¼ã æ°ãå¾ãããã«ã¯ããã£ã³ãã«æ°ã§åã«é¤ç®ããã ãã§ãã
以ä¸ã¯ããã¤ãã®åç´ãªãµã³ãã«ã§ã:
var context = new AudioContext();
var buffer = context.createBuffer(2, 22050, 44100);
ã¡ã¢: ãã¸ã¿ã«ãªã¼ãã£ãªã«ããã¦ã44100Hz(44.1kHz ã¨ã表è¨ããã)ã¯ä¸è¬çãªãµã³ããªã³ã°å¨æ³¢æ°ã§ãããªã 44.1kHz ãªã®ã§ãããï¼
第ä¸ã«ã人éã®è³ã®å¯è´ç¯å²ã¯ã大éæã« 20 ãã 20000Hz ã®ç¯å²ã§ããNyquist-Shannon ã®ãµã³ããªã³ã°å®çã«ããããµã³ããªã³ã°å¨æ³¢æ°ã¯åç¾ãããæå¤§å¨æ³¢æ°ã® 2 å以ä¸ã§ãªãã¦ã¯ãªãã¾ããããããã£ã¦ããµã³ããªã³ã°ã¬ã¼ã㯠40kHz 以ä¸ã§ãªãã¦ã¯ãªãã¾ããã
第äºã«ãã·ã°ãã«ã¯ãµã³ããªã³ã°åã«ãå½ä¿¡å·ã®çºçããããªãããããã¼ãã¹ãã£ã«ã¿ãªã³ã°ããã¦ããªããã°ãªãã¾ãããçæ³çãã¼ãã¹ãã£ã«ã¿ã¼ã 20kHz 以ä¸ã®å¨æ³¢æ°ã(æ¸è¡°ãããã«)å®ç§ã«éãã20kHz 以ä¸ã®å¨æ³¢æ°ãå®ç§ã«é®æãã䏿¹ã§ãå®éã«ã¯ã卿³¢æ°ãé¨åçã«æ¸è¡°ããå ´æã¨ãªãããã©ã³ã¸ã·ã§ã³ãã³ããå¿ è¦ã§ãããã®ãã³ããåºããªãã«ã¤ããæ¸è¡°ãã£ã«ã¿ã¼ãä½ãã®ã¯ç°¡åãã¤å¹ççã«ãªãã¾ãã44.1kHz ãµã³ããªã³ã°å¨æ³¢æ°ã¯ã2.05kHz ã®ãã©ã³ã¸ã·ã§ã³ãã³ããä¸ãã¾ãã
ãã®å¼ã³åºããããå ´åããã£ã³ãã«æ° 2 ã®ã¹ãã¬ãªãããã¡ã¼ãåå¾ããAudioContext ä¸ã§(é常ã«ä¸è¬çã§ãé常ã®ãµã¦ã³ãã«ã¼ãã§ã¯ã»ã¨ãã©ã¯ã¬ã¼ãã¨ãªã)44100Hz ã«ã¦åçããã鳿ºãã0.5 ç§éç¶ãã¾ã: 22050 ãã¬ã¼ã /44100Hz = 0.5 ç§ã
var context = new AudioContext();
var buffer = context.createBuffer(1, 22050, 22050);
ãã®å¼ã³åºããããå ´åãã¢ãã©ã«ãããã¡ã¼ããã£ã³ãã«æ° 1 ã§åå¾ããAudioContext ä¸ã§ 44100Hz ã«ã¦åçãããéã«èªåã§ 44100Hz ã¸åãµã³ããªã³ã°ãã(ãããã£ã¦ 44100 ãã¬ã¼ã ã¨ãªã)ã1 ç§éç¶ãã¾ã: 44100 ãã¬ã¼ã /44100Hz = 1 ç§ã
ã¡ã¢: ãªã¼ãã£ãªã®åãµã³ããªã³ã°ã¯ãç»åã®ãµã¤ãºå¤æ´ã¨é常ã«ä¼¼ããã®ã§ããä¾ãã° 16x16 ã®ç»åãããã32x32 ã®ã¹ãã¼ã¹ãæºããããã¨ãã¾ãããµã¤ãºå¤æ´(ãããã¯åãµã³ããªã³ã°)ãè¡ããçµæã¨ãã¦(ãµã¤ãºå¤æ´ã¢ã«ã´ãªãºã ã®éãã«ä¾åãã¦ãã¼ããããã¨ãã¸ãã§ãããã¨)ç»è³ªã®ä½ä¸ãä¼´ãã¾ãããã¹ãã¼ã¹ãæ¸ãããµã¤ãºå¤æ´æ¸ã¿ç»åãä½ãã¾ããåãµã³ããªã³ã°ããããªã¼ãã£ãªãã¾ã£ããåãã§ããã¹ãã¼ã¹ãä¿ã¦ããã®ã®ãå®éã«ã¯é«é³åã®ã³ã³ãã³ããé«é³ãé©åã«åç¾ãããã¨ã¯ã§ãã¾ããã
ãããã¡ã¼ã»ã¯ã·ã§ã³ã®å¹³é¢æ§å¯¾äº¤å·®æ§Web AudioAPI ã¯å¹³é¢çãªãããã¡ã¼å½¢å¼ãæ¡ç¨ãã¦ãã¾ããå·¦å³ã®ãã£ã³ãã«ã¯ã以ä¸ã®ããã«æ ¼ç´ããã¦ãã¾ã:
LLLLLLLLLLLLLLLLRRRRRRRRRRRRRRRR (for a buffer of 16 frames)
ããã¯é³å£°å¦çã«ãããä¸è¬çãªå½¢å¼ã§ã: ããã«ããåãã£ã³ãã«ã®ç¬ç«ããå¦çãç°¡åã«ãªãã¾ãã
代ããã®æ¹å¼ã¨ãã¦ã¯ã交差çãªå½¢å¼ãç¨ãããã¾ã:
LRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLR (for a buffer of 16 frames)
ãã®å½¢å¼ã¯ã大æãããªå¦çãå¿ è¦ã¨ããªãé³å£°ããæ ¼ç´ãåçããç®çã¨ãã¦ä¸è¬çã§ããä¾ãã°ãã³ã¼ãæ¸ã¿ MP3 鳿¥½ã¹ããªã¼ã ãªã©ãããã¾ãã
Web Audio API ã¯ãé³å£°å¦çã«é©ãããã¨ãçç±ã«ãå¹³é¢çãªãããã¡ã¼ã®ã¿ãæ¡ç¨ãã¦ãã¾ããé常ã¯å¹³é¢çã§ãããåçç¨ã«é³å£°ããµã¦ã³ãã«ã¼ãã¸éãããéã¯ã交差çã«å¤æããã¾ããå対ã«ãMP3 é³å£°ããã³ã¼ããããå ´åãå ã ã¯äº¤å·®å½¢å¼ã ã£ããã®ã®ãé³å£°å¦çã®ããå¹³é¢å½¢å¼ã¸ã¨å¤æããã¾ãã
ãªã¼ãã£ãªãã£ã³ãã«ç°ãªããªã¼ãã£ãªãããã¡ã¼ã§ã¯ãããããç°ãªã£ãæ°ã®ãã£ã³ãã«ãå«ãã§ãã¾ã: ããåºæ¬çãªã¢ãã©ã«ã¨ã¹ãã¬ãª(ãããããã£ã³ãã«æ° 1 㨠2)ããå§ã¾ããããè¤éãªã¯ã¢ããããã㯠5.1 ã®ãããªãç°ãªããµã¦ã³ããµã³ãã«ãåãã£ã³ãã«ã«å«ã¾ãããããªãããªé³å£°ä½é¨ãå°ãã»ãããããã¾ãããã£ã³ãã«ã¯é常ã以ä¸ã®ãã¼ãã«ã«ç¤ºããããæ¨æºçãªç¥èªã«ãã£ã¦ç¤ºããã¾ã:
Mono0: M: mono
Stereo 0: L: left 1: R: right
Quad 0: L: left 1: R: right 2: SL: surround left 3: SR: surround right
5.1 0: L: left 1: R: right 2: C: center 3: LFE: subwoofer 4: SL: surround left 5: SR: surround right
ã¢ããããã·ã³ã°ã¨ãã¦ã³ããã·ã³ã°
å
¥åã¨åºåã®ãã£ã³ãã«æ°ãä¸è´ããªãå ´åã以ä¸ã®ã«ã¼ã«ã«åºã¥ãã¦ã¢ããããã·ã³ã°ã¾ãã¯ãã¦ã³ããã·ã³ã°ãè¡ããã¾ããããã¯AudioNode.channelInterpretation
ããããã£ã speakers
ã¾ã㯠discrete
ã¸ã¨ã»ãããã¦ã³ã³ããã¼ã«ã§ãã¾ãã
speakers
1
(Mono) 2
(Stereo) ã¢ãã©ã«ããã¹ãã¬ãªã¸ã®ã¢ããããã¯ã¹ã
M
å
¥åãã£ã³ãã«ã¯(L
㨠R
ã®)両åºåãã£ã³ãã«ç¨ã«ä½¿ããã¾ãã
output.L = input.M
output.R = input.M
1
(Mono) 4
(Quad) ã¢ãã©ã«ããã¯ã¢ããã¸ã®ã¢ããããã¯ã¹ã
M
å
¥åãã£ã³ãã«ã¯(L
㨠R
ã®)ãã³ãµã©ã¦ã³ãåºåãã£ã³ãã«ç¨ã«ä½¿ããã¾ãã(SL
㨠SR
ã®)ãµã©ã¦ã³ãåºåãã£ã³ãã«ã¯ç¡é³ã§ãã
output.L = input.M
output.R = input.M
output.SL = 0
output.SR = 0
1
(Mono) 6
(5.1) ã¢ãã©ã«ãã 5.1.ã¸ã®ã¢ããããã¯ã¹ã
M
å
¥åãã£ã³ãã«ã¯(C
ã®)ãã³ä¸å¤®åºåãã£ã³ãã«ç¨ã«ä½¿ããã¾ãããã®ä»ãã¹ã¦ã®(L
, R
, LFE
, SL
, SR
)åºåãã£ã³ãã«ã¯ç¡é³ã§ãã
output.L = 0
output.R = 0
output.C = input.M
output.LFE = 0
output.SL = 0
output.SR = 0
2
(Stereo) 1
(Mono) ã¹ãã¬ãªããã¢ãã©ã«ã¸ã®ãã¦ã³ããã¯ã¹ã
L
㨠R
ã®)両å
¥åãã£ã³ãã«ã¯çããçµåãããåä¸åºåãã£ã³ãã«(M
)ã«ãªãã¾ãã
output.M = 0.5 * (input.L + input.R)
2
(Stereo) 4
(Quad) ã¹ãã¬ãªããã¯ã¢ããã¸ã®ã¢ããããã¯ã¹ã
L
㨠R
)å
¥åãã£ã³ãã«ã¯ãããã(L
㨠R
ã®)ãã³ãµã©ã¦ã³ãåºåãã£ã³ãã«ç¨ã«ä½¿ããã¾ãã(SL
㨠SR
ã®)ãµã©ã¦ã³ãåºåãã£ã³ãã«ã¯ç¡é³ã§ãã
output.L = input.L
output.R = input.R
output.SL = 0
output.SR = 0
2
(Stereo) 6
(5.1) ã¹ãã¬ãªãã 5.1.ã¸ã®ã¢ããããã¯ã¹ã
L
㨠R
)å
¥åãã£ã³ãã«ã¯ãããã(L
㨠R
ã®)ãã³ãµã©ã¦ã³ãåºåãã£ã³ãã«ç¨ã«ä½¿ããã¾ãã(SL
㨠SR
ã®)ãµã©ã¦ã³ãåºåãã£ã³ãã«ãä¸å¤®ãã£ã³ãã«(C
)ããµãã¦ã¼ãã¡ã¼(LFE
)ã¯ãã¹ã¦åæ§ã«ç¡é³ã§ãã
output.L = input.L
output.R = input.R
output.C = 0
output.LFE = 0
output.SL = 0
output.SR = 0
4
(Quad) 1
(Mono) ã¯ã¢ããããã¢ãã©ã«ã¸ã®ãã¦ã³ããã¯ã¹ã
L
, R
, SL
, SR
)å
¥åãã£ã³ãã«ã¯çããçµåãããåä¸åºåãã£ã³ãã«(M
)ã«ãªãã¾ãã
output.M = 0.25 * (input.L + input.R + input.SL + input.SR)
4
(Quad) 2
(Stereo) ã¯ã¢ããããã¹ãã¬ãªã¸ã®ãã¦ã³ããã¯ã¹ã両左å
¥åãã£ã³ãã«
L
㨠SL
)ã¯çããçµåãããåä¸å·¦åºåãã£ã³ãã«(L
)ã«ãªãã¾ããåæ§ã«ã両å³å
¥åãã£ã³ãã«(R
㨠SR
)ã¯çããçµåãããåä¸å³åºåãã£ã³ãã«(R
)ã«ãªãã¾ãã
output.L = 0.5 * (input.L + input.SL
)
output.R = 0.5 * (input.R + input.SR
)
4
(Quad) 6
(5.1) ã¯ã¢ãããã 5.1.ã¸ã®ã¢ããããã¯ã¹ã
L
, R
, SL
, SR
)å
¥åãã£ã³ãã«ã¯ãããã(L
㨠R
ã®)åºåãã£ã³ãã«ç¨ã«ä½¿ããã¾ããä¸å¤®ãã£ã³ãã«(C
)ããµãã¦ã¼ãã¡ã¼(LFE
)ã¯ç¡é³ã§ãã
output.L = input.L
output.R = input.R
output.C = 0
output.LFE = 0
output.SL = input.SL
output.SR = input.SR
6
(5.1) 1
(Mono) 5.1.ããã¢ãã©ã«ã¸ã®ãã¦ã³ããã¯ã¹ãå·¦ãã£ã³ãã«(L
, SL
)ãå³ãã£ã³ãã«(R
, SR
)ãä¸å¤®ãã£ã³ãã«ã¯ããããæ··åããã¾ãããµã©ã¦ã³ããã£ã³ãã«ã¯å
ãã«æ¸è¡°ãããæ¨æºå´é¢ãã£ã³ãã«ã¯å©ç¨ã®ããã«ãåä¸ãã£ã³ãã«ãâ2/2
ã§ä¹ç®ãããã®ã¨ãã¦åºåãè£å¼·ããã¾ãããµãã¦ã¼ãã¡ã¼(LFE)
ãã£ã³ãã«ã¯å¤±ããã¾ãã
output.M = 0.7071 * (input.L + input.R) + input.C + 0.5 * (input.SL + input.SR)
6
(5.1) 2
(Stereo) 5.1.ããã¹ãã¬ãªã¸ã®ãã¦ã³ããã¯ã¹ã
SL
㨠SR
)ã¨åç®ãããåå´é¢ãã£ã³ãã«ã¸æ··åããã¾ãã2 ãã£ã³ãã«ã¸ã¨ããã¯ã¹ãã¦ã³ãããéç¨ã¯ä½å´åã§è¡ãããåã
ã®å ´åã«ã¤ãã¦ãâ2/2
ã§ä¹ç®ããã¾ãããµãã¦ã¼ãã¡ã¼ (LFE
) ãã£ã³ãã«ã¯å¤±ããã¾ãã
output.L = input.L + 0.7071 * (input.C + input.SL)
output.R = input.R
+ 0.7071 * (input.C + input.SR)
6
(5.1) 4
(Quad) 5.1.ããã¯ã¢ããã¸ã®ãã¦ã³ããã¯ã¹ã
L
㨠R
)ã¨åç®ãããåå´é¢ãã£ã³ãã«ã¸æ··åããã¾ãã2 ãã£ã³ãã«ã¸ã¨ããã¯ã¹ãã¦ã³ãããéç¨ã¯ä½å´åã§è¡ãããåã
ã®å ´åã«ã¤ãã¦ãâ2/2
ã§ä¹ç®ããã¾ãããµã©ã¦ã³ããã£ã³ãã«ã¸ã®ä¼éã«ã¯å¤åãããã¾ããããµãã¦ã¼ãã¡ã¼ (LFE
) ãã£ã³ãã«ã¯å¤±ããã¾ãã
output.L = input.L + 0.7071 * input.C
output.R = input.R + 0.7071 * input.C
output.SL = input.SL
output.SR = input.SR
ãã®ä»ã鿍æºã¬ã¤ã¢ã¦ã 鿍æºãã£ã³ãã«ã¬ã¤ã¢ã¦ã㯠channelInterpretation
ã discrete
ã¸ã»ãããããã®ã¨ãã¦æä½ããã¾ãã
discrete
å (x
) å (y
) (x<y
ã®å ´å) 颿£ãã£ã³ãã«ã®ã¢ããããã¯ã¹ã
x
) å (y
) (x>y
ã®å ´å) 颿£ãã£ã³ãã«ã®ãã¦ã³ããã¯ã¹ã
ååããªã¼ãã£ãªè¦è¦åã¯åºåãªã¼ãã£ãªãã¼ã¿(åºæ¬çã«ã¯ã²ã¤ã³ã¾ãã¯å¨æ³¢æ°ãã¼ã¿)ã«æéæ¯ã«ã¢ã¯ã»ã¹ãããã¨ã§è¡ãããæ´ã«ã°ã©ããªã©ã®è¦è¦ååºåã¸æ¸¡ãããã®ã°ã©ãã£ã«ã«æè¡ãç¨ãããã¾ããWeb Audio API 㯠AnalyserNode
ã§ãçµç±ãã¦æ¸¡ããããªã¼ãã£ãªä¿¡å·ã夿ããå©ç¨ãããã¨ãã§ãã¾ãããã ããã®åºåã¯ã<canvas>
ãªã©ã®ãããªè¦è¦åæè¡ã¸åãæ¸¡ãããªã¼ãã£ãªãã¼ã¿ã§ãã
以ä¸ã®ã¡ã½ãããå©ç¨ãã¦ããã¼ã¿ã®åå¾ãå¯è½ã§ãã
AnalyserNode.getFloatFrequencyData()
ç¾å¨ã®å¨æ³¢æ°ãã¼ã¿ã渡ããã Float32Array
åé
åã«ã³ãã¼ãã¾ãã
AnalyserNode.getByteFrequencyData()
ç¾å¨ã®å¨æ³¢æ°ãã¼ã¿ã渡ããã Uint8Array
åé
å(符å·ãªããã¤ãé
å)ã«ã³ãã¼ãã¾ãã
AnalyserNode.getFloatTimeDomainData()
ç¾å¨ã®æ³¢å½¢ãã¼ã¿ã¾ãã¯ã¿ã¤ã ãã¡ã¤ã³ãã¼ã¿ã渡ãããFloat32Array
åé
åã«ã³ãã¼ãã¾ãã
AnalyserNode.getByteTimeDomainData()
ç¾å¨ã®æ³¢å½¢ãã¼ã¿ã¾ãã¯ã¿ã¤ã ãã¡ã¤ã³ãã¼ã¿ã渡ãããUint8Array
åé
å(符å·ãªããã¤ãé
å)ã«ã³ãã¼ãã¾ãã
ã¡ã¢: ãã詳ããæ å ±ã¯ãWeb Audio API è¨äºä¸ã® Visualizations with Web Audio API ãåç §ãã¦ãã ããã
ç«ä½å(Web Audio API ã® PannerNode
㨠AudioListener
ãã¼ãã«ãã£ã¦æä½ããã)ç«ä½é³é¿åã«ãã£ã¦ããªã¼ãã£ãªã·ã°ãã«ã®ã空éãä»ããç¹ã«ãããä½ç½®ãæ¯ãèããã¢ãã«åãããã¨ãã§ãããã®é³å£°ããªã¹ãã¼ãèããã¨ãã§ãã¾ãã
ãã³ãã¼ã®ä½ç½®ã¯ãç´è¡åº§æ¨ã®å³å´ã«æããã¦ãã¾ãããããã©ã¼å¹æãä½ãã«å¿ è¦ãªãé度ãã¯ãã«ãç¨ããç§»åãããã¦æ¹åã³ã¼ã³ãç¨ããæ¹åæ§ãããã¾ãããã®ã³ã¼ã³ã¯ãä¾ãã°ç¡æåæ§é³æºãªã©ã®ãããã¨ã¦ã大ãããªãå¾ã¾ãã
ãªã¹ãã¼ã®ä½ç½®ã¯ãç´è¡åº§æ¨ã®å³å´ã«æããã¦ãã¾ãã度ãã¯ãã«ãç¨ããç§»åã¨ããªã¹ãã¼ã®é ããã¤ã³ãããã¦ãã(é é¨å´ã¨é¡é¢å´ã®)äºæ¹åãã¯ã¿ã¼ãç¨ããæ¹åæ§ãããã¾ãããããã¯ãããããªã¹ãã¼ã®é é¨ã®é ç¹ããã®æ¹åã¨ããªã¹ãã¼ã®é¼»ã«ãã¤ã³ãããã¦ããæ¹åã¨ãå®ç¾©ãã¦ããããããã¯ç´è§ã¨ãªã£ã¦ãã¾ãã
ã¡ã¢: ãã詳ããæ å ±ã¯ãWeb audio spatialization basics ãåç §ãã¦ãã ããã
ãã¡ã³ã¤ã³ã¨ãã¡ã³ã¢ã¦ããªã¼ãã£ãªç¨èªã§ã¯ãfan-in ã¯ChannelMergerNode
ãä¸é£ã®åä¸å
¥åã½ã¼ã¹ãåããåä¸ãã«ããã£ã³ãã«ä¿¡å·ãåºåããããã»ã¹ãæå³ãã¾ãã
Fan-out ã¯ãã®å¯¾ã¨ãªãããã»ã¹ãæå³ãã¾ããChannelSplitterNode
ãä¸ã¤ã®ãã«ããã£ã³ãã«å
¥åæºãåããè¤æ°ã®ã¢ãã©ã«åºåä¿¡å·ãåºåãã¾ãã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4