AudioParam.setValueAtTime()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

AudioParam 인터페이스의 setValueAtTime() 메서드는 AudioContext.currentTime으로 측정된 정밀한 시간에 AudioParam 값의 즉각적인 변화를 예정합니다. 새로운 값은 value 매개변수에 주어집니다.

구문

js
var AudioParam = AudioParam.setValueAtTime(value, startTime);

매개변수

value

AudioParam이 주어진 시간에 변화시킬 값을 나타내는 부동점 number.

startTime

AudioContext가 처음 생성된 이후 값의 변화가 발생할 시간 (초로 표현함) 을 나타내는 double. 만약 이 값이 음수라면 TypeError가 발생합니다.

반환

AudioParam 객체에 대한 참조. 몇몇 브라우저에서 이 인터페이스의 오래된 구현은 void를 반환합니다.

예제

이 간단한 예제는 두 개의 제어 버튼을 가진 미디어 요소 소스 기능을 갖추고 있습니다 (소스 코드는 webaudio-examples repo에서 볼 수 있고, 작동 예제도 볼 수 있습니다). 버튼이 눌렸을 때, currGain 변수는 0.25만큼 증가하거나 감소하고, 그리고 나서 setValueAtTime() 메서드가 사용되어 지금으로부터 1초 후에 (audioCtx.currentTime + 1) gain 값을 currGain 과 같게 설정합니다.

js
// 오디오 컨텍스트를 생성합니다
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 targetAtTimePlus = document.querySelector(".set-target-at-time-plus");
var targetAtTimeMinus = document.querySelector(".set-target-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이 발생했을 때 무언가를 하기 위해 버튼을 설정합니다
targetAtTimePlus.onclick = function () {
  currGain += 0.25;
  gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};

targetAtTimeMinus.onclick = function () {
  currGain -= 0.25;
  gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};

명세서

Specification
Web Audio API
# dom-audioparam-setvalueattime

브라우저 호환성

BCD tables only load in the browser

같이 보기