ì°½ìì ì¸ ì½ë를 ìì±í ë ì격íê² ì³ê±°ë í린 길ì ììµëë¤. ì¬ë¬ë¶ì´ ë³´ì, ì±ë¥, ì ê·¼ì±ì ê³ ë ¤íë í, ì¬ë¬ë¶ì ì¬ë¬ë¶ë§ì ì¤íì¼ì ì ìí ì ììµëë¤. ì´ ë¬¸ììì, ì°ë¦¬ë ëª ê°ì§ì ì¢ì ìµê´ë¤ â Web Audio API를 ê°ì§ê³ ìì íë ë° ìì´ìì ê°ì´ëë¼ì¸, í, ê·¸ë¦¬ê³ í¸ë¦ë¤ â ì ê³µì íê³ ì í©ëë¤.
ì¬ì´ë/íì¼ ë¡ë©í기Web Audio API를 ê°ì§ê³ ì¬ì´ë를 ë¡ë©íë 4ê°ì§ì 주ìí ë°©ë²ì´ ìê³ ì´ë¤ ê²ì ì¬ì©í´ì¼ íëì§ì ê´í´ì ì¡°ê¸ í·ê°ë¦´ ì ììµëë¤.
íì¼ì ê°ì§ê³ ìì
í ë, íì¼ì HTMLMediaElement
(ì: <audio>
ëë <video>
ìì) ë¡ ê°ì ¸ì¤ê±°ë, íì¼ì ê°ì ¸ìì ë²í¼ë¡ ëì½ëíë ë°©ë²ì´ ììµëë¤. ì 쪽 모ë ìëíë íë¹í ë°©ë²ì´ì§ë§, ì ì²´ 길ì´ì í¸ëì ê°ì§ê³ ìì
í ëë ì ì를 ì´ì©íë ë°©ë²ì´ ëì± ì¼ë°ì ì´ê³ , ìíê°ì ì§§ì í¸ëì ê°ì§ê³ ìì
í ëë íìê° ì¼ë°ì ì
ëë¤.
미ëì´ ììë¤ì ë°ì¤ë¡ë¶í° ì¤í¸ë¦¬ë° ì§ìì ë°ìµëë¤. ì¤ëì¤ë ë¸ë¼ì°ì ê° ì¬ìì´ ëë기 ì´ì ì íì¼ì ëë¨¸ì§ ë¶ë¶ì ë¡ë©í ì ìë¤ê³ ê²°ì íì ë ì¬ìì ììí©ëë¤. ì¬ë¬ë¶ì Web Audio API ì¬ì©í기 ììµììì Web Audio API를 ê°ì§ê³ ì´ê²ì ì´ë»ê² ì¬ì©íëì§ì ëí ìì 를 ë³´ì¤ ì ììµëë¤.
ê·¸ë¬ë, ë§ì½ ë²í¼ ë ¸ë를 ì¬ì©íë¤ë©´ ì¬ë¬ë¶ì ë ë§ì ì ì´ë¥¼ í ì ììµëë¤. ì¬ë¬ë¶ì íì¼ì ìì²íê³ ì´ê²ì´ ë¡ë©ë기를 기ë¤ë ¤ì¼ íì§ë§ (ì´ ê¸ì ì´ ì¹ì ì ì´ê²ì íë ì¢ì ë°©ë²ì ë³´ì¬ì¤ëë¤), ê·¸ ë¤ìì ì¬ë¬ë¶ì ë°ì´í°ì ì§ì ì ê·¼í ì ìëë°, ì´ë ëì± ì ë°í ì¡°ìì´ ê°ë¥í¨ì ì미í©ëë¤.
ë§ì½ ì¬ë¬ë¶ì´ ì ì ì ì¹´ë©ë¼ë ë§ì´í¬ë¡ë¶í°ì ì¤ëì¤ë¡ ìì
íë ë°©ë²ì ì°¾ê³ ìë¤ë©´ ì¬ë¬ë¶ì Media Stream APIì MediaStreamAudioSourceNode
ì¸í°íì´ì¤ë¥¼ íµí´ ê·¸ê²ì ì ê·¼í ì ììµëë¤. ì´ê²ì WebRTCì ë
¹ìì´ë ì¤ëì¤ ë¶ìì ìíë ìí©ì ìë§ìµëë¤.
ë§ì§ë§ ë°©ë²ì ì¬ë¬ë¶ë§ì ì¬ì´ë를 ìì±íë ê²ì¸ë°, ì´ë OscillatorNode
ë ë²í¼ë¥¼ ë§ë¤ê³ ë°ì´í°ë¥¼ ì±ìë£ë ë°©ë²ì¼ë¡ ì´ë£¨ì´ì§ ì ììµëë¤. ì¤ì¤ë ì´í°ì ë²í¼ë¡ ì¬ì´ë를 ìì±í기 ìí´ ì´ ììµììì ì¬ë¬ë¶ë§ì ì
기를 ë§ëë ë°©ë²ì ëí´ì ììë³´ì¸ì.
Web Audio API ëª ì¸ë ëììì´ ì§ííê³ ìì¼ë©° ì¹ì ìë ëë¶ë¶ì ê²ë¤ì²ë¼, ë¸ë¼ì°ì ë¤ìì ì¼ê´ëê² ìëíë ë° ìì´ ëª ê°ì§ 문ì ê° ììµëë¤. ì¬ê¸°ì ì°ë¦¬ë í¬ë¡ì¤ ë¸ë¼ì°ì 문ì ë¤ì í´ê²°í기 ìí ìµì ë¤ì ì´í´ë³´ê² ìµëë¤.
standardised-audio-context
(íì¤íë ì¤ëì¤ ì»¨í
ì¤í¸) npm í¨í¤ì§ê° ìëë°, ì´ë ì§ìì ì¼ë¡ ë¸ë¼ì°ì ê°ì API 기ë¥ì ë§ë¤ê³ , 문ì ë¤ì´ ë°ìëë©´ í´ê²°í©ëë¤. ì´ê²ì ê³ì ê°ë°ëê³ ìì¼ë©° íì¬ ëª
ì¸ì ë¤ì§ì§ ì기 ìí´ ë
¸ë ¥íê³ ììµëë¤.
ëí ë¼ì´ë¸ë¬ë¦¬ë¥¼ ì¬ì©íë ìµì ë ìëë°, ì¬ë¬ë¶ì´ ì¬ì©íë ê²½ì°ì ìì¡´íë ëª ê°ì§ê° ììµëë¤. ì¢ì ì¬ë¼ì´ëë¡ë, howler.jsê° ì¢ì ì íì ëë¤. ì´ê²ì í¬ë¡ì¤ ë¸ë¼ì°ì 를 ì§ìíê³ , ì ì©í 기ë¥ë¤ì ì ê³µí©ëë¤. ë¹ë¡ ì´ê²ì´ Web Audio APIì ë¸ë¦° 모ë íí°ë¤ê³¼ ë¤ë¥¸ ì´íí¸ë¤ì ì´ì©íì§ë ìì§ë§, ì¬ë¬ë¶ì í기를 ìíë ëë¶ë¶ì ê²ë¤ì í ì ììµëë¤.
ë§ì½ ì¬ë¬ë¶ì´ ì¬ì´ë ìì± ëë ëì± ì 기 기ë°ì ìµì ì ì°¾ê³ ìë¤ë©´, tone.jsê° íë¥í ë¼ì´ë¸ë¬ë¦¬ì ëë¤. ì´ê²ì ê³ ê¸ ì¤ì¼ì¥´ë§ 기ë¥, ì ìì¬ì´ì , ì´íí¸, ê·¸ë¦¬ê³ Web Audio API ììì ê°ë°ë ì§ê´ì ì¸ ìì ì ì¶ì 기ë¥ë¤ì ì ê³µí©ëë¤.
BBC's Research & Development departmentë¡ë¶í°ì R-audioë, "Web Audioìì ëì± ì§ê´ì ì´ê³ , ì ì¸ì ì¸ ì¸í°íì´ì¤"를 ì ê³µí기를 목íë¡ íë React ì»´í¬ëí¸ ë¼ì´ë¸ë¬ë¦¬ì ëë¤. ë§ì½ ì¬ë¬ë¶ì´ JSX를 ìì±íë ë° ìµìíë¤ë©´ ì´ê²ì ì´í´ë³¼ë§í ê°ì¹ê° ìì ê²ì ëë¤.
ìë ì¬ì ì ì±ë¸ë¼ì°ì ë¤ì ìë ì¬ì ì ì± ê¸°ë¥ì 구íí기 ììíëë°, ì´ë ì¼ë°ì ì¼ë¡ ë¤ìê³¼ ê°ì´ ìì½ë ì ììµëë¤.
"Create or resume context from inside a user gesture".
"ì ì ì ì¤ì² ë´ë¶ë¡ë¶í° 컨í ì¤í¸ë¥¼ ìì±íê±°ë ì¬ê°íììì¤".
íì§ë§ ì¤ì ë¡ ì´ê²ì 무ìì ì미íë ê²ì¼ê¹ì? ì ì ì ì¤ì²ë ì ì ê° ë°ììí¨ ì´ë²¤í¸ë¥¼ ì미íë ê²ì¼ë¡ ì´í´ë ì ìëë°, ì´ë ë³´íµ click
ì´ë²¤í¸ì
ëë¤. ë¸ë¼ì°ì 벤ëë¤ì Web Audio 컨í
ì¤í¸ë ìëì ì¼ë¡ ì¤ëì¤ë¥¼ ì¬ìíëë¡ íì©ëì´ì ¸ìë ì ëë¤ê³ ê²°ì íìµëë¤; ëì ê·¸ê²ë¤ì ì ì ì ìí´ ììëì´ì¼ë§ í©ëë¤. ì´ê²ì ìëíë©´ ìë ì¬ìëë ì¤ëì¤ë ì ë§ ì§ì¦ëê³ ê±°ì¬ë¦´ ì ì기 ë문ì
ëë¤. íì§ë§ ì°ë¦¬ë ì´ë»ê² ì´ê²ì ë¤ë£°ê¹ì?
ì¬ë¬ë¶ì´ ì¤ëì¤ ì»¨í
ì¤í¸ë¥¼ ìì±í ë (offline ëë online ë ë¤) ì´ê²ì state
(ìí)ì í¨ê» ìì±ëëë°, ì´ê²ì suspended
, running
, ëë closed
ì¼ ì ììµëë¤.
AudioContext
를 ê°ì§ê³ ìì
í ë, ë§ì½ ì¬ë¬ë¶ì´ ì¤ëì¤ ì»¨í
ì¤í¸ë¥¼ click
ì´ë²¤í¸ ë´ë¶ìì ìì±íë¤ë©´ ìíë ìëì ì¼ë¡ running
ì¼ë¡ ì¤ì ë ê²ì
ëë¤. ì¬ê¸° click
ì´ë²¤í¸ ë´ë¶ë¡ë¶í° 컨í
ì¤í¸ë¥¼ ìì±íë ê°ë¨í ìì ê° ììµëë¤:
const button = document.querySelector("button");
button.addEventListener(
"click",
function () {
const audioCtx = new AudioContext();
},
false,
);
ê·¸ë¬ë ë§ì½, ì¬ë¬ë¶ì´ ì ì ì ì¤ì² ë°ê¹¥ìì 컨í
ì¤í¸ë¥¼ ìì±íë¤ë©´, ì´ê²ì ìíë suspended
ë¡ ì¤ì ë ê²ì´ê³ ì ì ìí¸ ìì© ì´íì ììë íìê° ìì ê²ì
ëë¤. ì°ë¦¬ë ê°ì í´ë¦ ì´ë²¤í¸ ìì 를 ì¬ê¸°ì ì¬ì©íê³ , 컨í
ì¤í¸ì ìí를 ìííê³ , ë§ì½ ì´ê²ì´ ì°ê¸°ëìë¤ë©´(suspended), resume()
ë©ìë를 ì¬ì©íì¬ ììí©ëë¤.
const audioCtx = new AudioContext();
const button = document.querySelector("button");
button.addEventListener(
"click",
function () {
// 컨í
ì¤í¸ê° ì°ê¸°ë ìíì ìëì§ ê²ì¬í©ëë¤ (ìë ì¬ì ì ì±
)
if (audioCtx.state === "suspended") {
audioCtx.resume();
}
},
false,
);
ì¬ë¬ë¶ì ëì OfflineAudioContext
ì ê°ì§ê³ ìì
í ì ìëë°, ì´ ê²½ì° ì¬ë¬ë¶ì ì°ê¸°ë ì¤ëì¤ ì»¨í
ì¤í¸ë¥¼ startRendering()
ë©ìëë¡ ì¬ê°í ì ììµëë¤.
ë§ì½ ì¬ë¬ë¶ì ì¹ì¬ì´í¸ë ì í리ì¼ì´ì ì´ ì¬ì´ë롤 í¬í¨íë¤ë©´, ì¬ë¬ë¶ì ì ì ê° ê·¸ê²ì ì ì´í ì ìê² íì©í´ì¼ë§ í©ëë¤. ë¤ì ë§íì§ë§ ê·¸ë ì§ ìëë¤ë©´, ì´ê²ì ì§ì¦ë ê²ì ëë¤. ì´ê²ì ì¬ì/ì ì§ ê·¸ë¦¬ê³ ë³¼ë¥¨/ììê±° ì ì´ë¡ ë¬ì±ë ì ììµëë¤. Web Audio API ì¬ì©í기 ììµìë ì´ë»ê² ì´ê²ì íëì§ì ëí´ ë¤ë£¹ëë¤.
ë§ì½ ì¬ë¬ë¶ì´ ì¤ëì¤ë¥¼ ì¼ê³ ëë ë²í¼ì ê°ì§ê³ ìë¤ë©´, ARIA role="switch"
í¹ì±ì ê·¸ê²ì ì¬ì©íë ê²ì ë³´ì¡° 기ì ì ê·¸ ë²í¼ì ì íí 목ì ì´ ë¬´ìì¸ì§ì ëí ì í¸ë¥¼ ë³´ë´ê³ , ê·¸ë¼ì¼ë¡ì¨ ì±ì ëì± ì ê·¼ ê°ë¥íê² ë§ë¤ê¸° ìí ì¢ì ìµì
ì
ëë¤. ì¬ê¸° ì´ë»ê² ì´ê²ì ì¬ì©íëì§ì ëí ë°ëª¨ê° ììµëë¤.
ì¬ë¬ë¶ì Web Audio API ë´ìì ë§ì ë³ííë ê°ë¤ì ê°ì§ê³ ìì
íê³ ì ì ìê² ì´ê²ë¤ì ëí ì ì´ë¥¼ ì ê³µí기를 ìí ê²ì´ë¯ë¡, range input
ì ì¢
ì¢
ì¬ì©í ì ì´ì ì¢ì ì íì
ëë¤. ì´ê²ì ì¬ë¬ë¶ì´ ìµìì ìµëê° ë¿ë§ ìëë¼ step
í¹ì±ì¼ë¡ ì¦ê°ë ëí ì¤ì í ì ìì¼ë¯ë¡ ì¢ì ìµì
ì
ëë¤.
AudioParam
ì¸í°íì´ì¤ íì
ì ê·¸ ìì ì ê°ì²´ì¸, AudioNode
ê°ì ì¡°ìíë ë ê°ì§ ë°©ë²ì´ ììµëë¤. 첫째ë ìì±ì íµí´ ì§ì ê°ì ì¤ì íë ê²ì
ëë¤. ì를 ë¤ìë©´ ë§ì½ ì°ë¦¬ê° GainNode
ì gain
ê°ì ë³ê²½í기를 ìíë¤ë©´ ì°ë¦¬ë ì´ì ê°ì´ í ê²ì
ëë¤:
gainNode.gain.value = 0.5;
ì´ê²ì 볼륨ì ì ë°ì¼ë¡ ì¤ì í ê²ì
ëë¤. ê·¸ë¬ë, ë§ì½ ì¬ë¬ë¶ì´ ì´ ê°ë¤ì ì¤ì í기 ìí´ AudioParam
ì ì ìë ë©ìëë¤ ì¤ ì´ë¤ ê²ì´ë¼ë ì¬ì©íë¤ë©´, ê·¸ê²ë¤ì ì기ì ìì± ì¤ì ì ëí´ ì°ì ê¶ì ì»ì ê²ì
ëë¤. ì를 ë¤ì´ ë§ì½, ì¬ë¬ë¶ì´ gain
ê°ì 2ì´ ëì 1ê¹ì§ ìì¹ìí¤ê¸°ë¥¼ ìíë¤ë©´, ì¬ë¬ë¶ì ë¤ìê³¼ ê°ì´ í ì ììµëë¤:
gainNode.gain.setValueAtTime(1, audioCtx.currentTime + 2);
ì´ê²ì, ì´ì ìì ê° ì½ëì ë¤ì ì¬ ì§ë¼ë, ì´ì ìì 를 (ë¹ì°í ê·¸ëì¼ íë¯) ë®ì´ì¸ ê²ì ëë¤.
ì´ê²ì ëª
ì¬íì¸ì. ë§ì½ ì¬ë¬ë¶ì ì¹ì¬ì´í¸ë ì í리ì¼ì´ì
ì´ íì´ë°ê³¼ ì¤ì¼ì¥´ë§ì ì구íë¤ë©´, ê°ì ì¤ì í기 ìí´ AudioParam
ë©ìë를 ì¬ì©íë ê²ì´ ìµì ì
ëë¤. ë§ì½ ì¬ë¬ë¶ì´ ì´ê²ì´ íììë¤ê³ íì íì ë¤ë©´, value
ìì±ì¼ë¡ ì¤ì íë ê²ë ê´ì°®ìµëë¤.
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