AudioParam.setTargetAtTime()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015ë 7ì.
AudioParam ì¸í°íì´ì¤ì setTargetAtTime() ë©ìëë AudioParam ê°ì ì ì§ì ì¸ ë³íì ììì ìì í©ëë¤. ì´ ë©ìëë ADSR ì벨ë¡íì decay í¹ì release ë¶ë¶ì ì ì©í©ëë¤.
구문
var paramRef = param.setTargetAtTime(target, startTime, timeConstant);
매ê°ë³ì
- target
-
주ì´ì§ ìì ìê°ì íë¼ë¯¸í°ê° ë³í를 ììí ê°.
- startTime
-
AudioContext.currentTimeê³¼ ê°ì ìê° ì¢íê³ìì ì§ìì ë³íê° ììë ìê°. ë§ì½ ì´ ê°ì´AudioContext.currentTimeë³´ë¤ ìê±°ë ê°ë¤ë©´, íë¼ë¯¸í°ë ì¦ì ë³í를 ììí ê²ì ëë¤. - timeConstant
-
target ê°ì í¥í ì§ìì ì ê·¼ì ìê° ìì ê° (ì´ ë¨ìë¡ ì£¼ì´ì§). ì´ ê°ì´ í´ìë¡, ë³íë ë ëë ¤ì§ ê²ì ëë¤.
ë°í
ì´ AudioParam ê°ì²´ì ëí 참조. ì´ ì¸í°íì´ì¤ì ëªëª ì¤ëë ë¸ë¼ì°ì 구íì void를 ë°íí©ëë¤.
ì¤ëª
ë³íë startTime ì ëª
ìë ìê°ì ììí´ target 매ê°ë³ìì ìí´ ì£¼ì´ì§ ê°ì í¥í´ ì§ìì ì¼ë¡ ìì§ì
ëë¤. timeConstant 매ê°ë³ìì ìí´ ì ìë ê°ìì¨ì ì§ìì ì
ëë¤. ê·¸ë¬ë¯ë¡ ê°ì ì ë target ì ìë²½í ëë¬íì§ ëª»í ê²ì´ì§ë§, timeConstant 길ì´ì ê° ìê° ë¨ê³ ì´íì, ê°ì ë ë¤ë¥¸ ì ìí´ target ì ë¤ê°ê°ê² ë ê²ì
ëë¤. (ì¼ì°¨ ì í ì°ì ìë¶ë³ ìì¤í
ì ì¬ì©íë) ìì í ê³µìì Web
Audio ëª
ì¸ììì íì¸í ì ììµëë¤.
ë§ì½ í¹ì í ìê°ê¹ì§ target ê°ì ì ëì ì¼ë¡ ëë¬í íìê° ìë¤ë©´, AudioParam.exponentialRampToValueAtTime()를 ì¬ì©í ì ììµëë¤. ê·¸ë¬ë, ìíì ì¸ ì´ì ë¡, ì´ ë©ìëë íì¬ ê°ì´ë target ê°ì´ 0 ì´ë©´ ìëíì§ ììµëë¤.
ì¢ì timeConstant ê³ ë¥´ê¸°
ììì ì¸ê¸ëìë¤ìí¼, ê° timeConstant ê° target ê°ì í¥í´ 63.2% ë§í¼ì© ìì§ì´ë©°, ê°ì ì§ìì ì¼ë¡ ë³íí©ëë¤. target ê°ì ëë¬íë ê²ì ëí´ ê±±ì í íìê° ììµëë¤. í ë² ì¶©ë¶í ê°ê¹ìì§ê³ ëë©´, ë£ë ì¬ëì ì¶ê°ì ì¸ ë³í를 ê°ì§íì§ ëª»í ê²ì
ëë¤.
ì¬ì©íë ê²½ì°ì ë°ë¼, target ê°ì 95% ë§í¼ ëë¬íë ê²ì ì¶©ë¶í ê²ì
ëë¤. ê·¸ ê²½ì°, timeConstant 를 ìíë 기ê°ì 1/3ë§í¼ ì¤ì í ì ììµëë¤.
ìê°ì´ ì§íí¨ì ë°ë¼ ì´ë»ê² ê°ì´ 0%ìì 100%ë¡ ë³ííëì§ì ëí´ìë ìëì í를 ì°¸ê³ í´ ë³´ì¸ì.
startTime ì´íë¡ì ìê° |
ê° |
|---|---|
0 * timeConstant |
0% |
0.5 * timeConstant |
39.3% |
1 * timeConstant |
63.2% |
2 * timeConstant |
86.5% |
3 * timeConstant |
95.0% |
4 * timeConstant |
98.2% |
5 * timeConstant |
99.3% |
n * timeConstant |
ìì
ì´ ìì ìë ë ê°ì ì ì´ ë²í¼ì ê°ì§ 미ëì´ ìì¤ê° ììµëë¤ (ìì¤ ì½ëë webaudio-examples
repoìì ë³¼ ì ìê³ , ìë ìì ë ë³¼ ì ììµëë¤). ì´ ë²í¼ì´ ëë ¸ì ë, setTargetAtTime() ì´ ì¬ì©ëì´ ê°ê° gain ê°ì 1.0ê¹ì§, ê·¸ë¦¬ê³ 0ê¹ì§ ììí ì¬ë¼ì§ê²(fade) íëë°, ì´ ì´íí¸ë 1ì´ íì ììëê³ ì´íí¸ê° ì§ìëë ìê°ì 길ì´ë timeConstantì ìí´ ì ì´ë©ëë¤.
// ì¤ëì¤ ì»¨í
ì¤í¸ë¥¼ ìì±í©ëë¤
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();
// ìì 를 ìí 기본 ë³ì를 ì¤ì í©ëë¤
var myAudio = document.querySelector("audio");
var pre = document.querySelector("pre");
var myScript = document.querySelector("script");
pre.innerHTML = myScript.innerHTML;
var atTimePlus = document.querySelector(".at-time-plus");
var atTimeMinus = document.querySelector(".at-time-minus");
// MediaElementAudioSourceNode를 ìì±í©ëë¤
// HTMLMediaElement를 ë
¸ë ë´ë¡ ì ë¬í©ëë¤
var source = audioCtx.createMediaElementSource(myAudio);
// gain ë
¸ë를 ìì±íê³ gain ê°ì 0.5ë¡ ì¤ì í©ëë¤
var gainNode = audioCtx.createGain();
gainNode.gain.value = 0.5;
var currGain = gainNode.gain.value;
// AudioBufferSourceNode를 gainNodeì ì°ê²°íê³
// gainNode를 destinationì ì°ê²°í©ëë¤
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// onclickì´ ë°ìíì ë 무ì¸ê°ë¥¼ í기 ìí´ ë²í¼ì ì¤ì í©ëë¤
atTimePlus.onclick = function () {
currGain = 1.0;
gainNode.gain.setTargetAtTime(1.0, audioCtx.currentTime + 1, 0.5);
};
atTimeMinus.onclick = function () {
currGain = 0;
gainNode.gain.setTargetAtTime(0, audioCtx.currentTime + 1, 0.5);
};
ëª ì¸ì
| Specification |
|---|
| Web Audio API > # dom-audioparam-settargetattime > |