AudioParam

Web Audio API의 AudioParam 인터페이스는 오디오에 관련된 파라미터를 나타내는데, 보통 (GainNode.gain (en-US)과 같은) AudioNode의 파라미터입니다.

AudioParam 은 특정한 값이나 값의 변화로 설정될 수 있고, 특정한 시간에 그리고 특정한 패턴을 따라 일어나도록 예정될 수 있습니다.

AudioParam 은 이벤트의 리스트를 가지고 있고, 이는 초기적으로는 비어 있습니다. 이 이벤트의 리스트는 값이 언제 그리고 어떻게 변화할지를 정의합니다. 이 리스트가 비어있지 않을 때, AudioParam.value 특성을 사용한 변화는 무시됩니다. 이 이벤트의 리스트는 우리가 임의적인 타임라인 기반의 자동화 커브를 사용해 아주 정밀한 시간에 일어나야만 하는 변화들을 예정할 수 있게 합니다. 사용되는 이 시간은 AudioContext.currentTime (en-US)에 정의된 것입니다.

AudioParam 유형

두 종류의 AudioParam 이 있는데, 그것은 a-ratek-rate 파라미터입니다. 각 AudioNode는 명세에서 이것의 파라미터들 중 어떤 것이 a-rate 이고 어떤 것이 k-rate 인지 정의합니다.

a-rate

a-rate AudioParam 은 오디오 신호의 각 샘플 프레임에 대해 현재의 오디오 파라미터 값을 취합니다.

k-rate

k-rate AudioParam 은 처리되는 전체 블럭에 대해 같은 초기 오디오 파라미터 값을 사용합니다. 즉, 128 샘플 프레임입니다. 다른 말로 하자면, 오디오가 노드에 의해 처리되는 동안 같은 값이 오디오에 있는 모든 프레임에 적용됩니다.

속성

AudioParam.defaultValue 읽기 전용

AudioParam 을 생성하는 특정한 AudioNode에 의해 정의되는 특성의 초기 값을 나타냅니다.

AudioParam.maxValue 읽기 전용

파라미터의 명목상의 (효과적인) 범위에 대한 최대로 가능한 값을 나타냅니다.

AudioParam.minValue 읽기 전용

파라미터의 명목상의 (효과적인) 범위에 대한 최소로 가능한 값을 나타냅니다.

AudioParam.value

현재 시간에 대한 파라미터의 현재 값을 나타냅니다. 초기적으로는 defaultValue의 값으로 설정됩니다.

메서드

AudioParam.setValueAtTime()

정밀한 시간에서 AudioParam 의 값에 즉각적인 변화를 예정합니다. 이 시간은 AudioContext.currentTime (en-US)과 비교하여 측정됩니다. 새로운 값은 value 매개변수에 의해 주어집니다.

AudioParam.linearRampToValueAtTime()

AudioParam 의 값에 점진적인 선형적 변화를 예정합니다. 이 변화는 previous 이벤트에 명시된 시간에 시작하고, value 매개변수에 주어진 새로운 값까지 선형적인 경사(ramp)를 따라 변경된 후, endTime 매개변수에 주어진 시간에서 새로운 값에 도달합니다.

AudioParam.exponentialRampToValueAtTime()

AudioParam 의 값에 점진적인 지수적 변화를 예정합니다. 이 변화는 previous 이벤트에 명시된 시간에 시작하고, value 매개변수에 주어진 새로운 값까지 지수적인 경사를 따라 변경된 후, endTime 매개변수에 주어진 시간에서 새로운 값에 도달합니다.

AudioParam.setTargetAtTime()

AudioParam 의 값에 변화의 시작을 예정합니다. 이 변화는 startTime 에 명시된 시간에 시작해 target 매개변수에 주어진 값을 향해 지수적으로 움직입니다. 이 지수적인 감소(decay) 비율은 timeConstant 매개변수에 의해 정의되는데, 이 값은 초 단위로 측정된 시간입니다.

AudioParam.setValueCurveAtTime()

AudioParam 의 값들이 주어진 구간에 맞도록 조정된 부동점 숫자들의 배열을 따르게 예정합니다. 수의 구간은 주어진 시작 시간에 시작하고, 주어진 지속 시간에 걸쳐 이어집니다.

AudioParam.cancelScheduledValues()

AudioParam 에 예정된 모든 미래의 변화들을 취소합니다.

AudioParam.cancelAndHoldAtTime()

AudioParam 에 예정된 모든 미래의 변화들을 취소하나 다른 메서드를 사용해 추가적인 변화가 만들어질 때까지 주어진 시간에서 값을 유지합니다.

예제

첫째는 기본적인 예제인데 GainNode (en-US)gain 값을 설정하는 것을 보여줍니다. gain 은 a-rate AudoParam의 예시인데, 왜냐하면 이 값은 잠재적으로 오디오의 각각의 샘플 프레임에 대해 다르게 설정될 수 있기 때문입니다.

js
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

var gainNode = audioCtx.createGain();
gainNode.gain.value = 0;

다음 예제는 DynamicsCompressorNode (en-US)가 몇 개의 파라미터 값들을 조작하는 것을 보여줍니다. 이 값들은 k-rate AudioParam의 예시인데, 왜냐하면 이것들은 한번에 전체 오디오 블럭에 대해 설정되기 때문입니다.

js
var compressor = audioCtx.createDynamicsCompressor();
compressor.threshold.setValueAtTime(-50, audioCtx.currentTime);
compressor.knee.setValueAtTime(40, audioCtx.currentTime);
compressor.ratio.setValueAtTime(12, audioCtx.currentTime);
compressor.attack.setValueAtTime(0, audioCtx.currentTime);
compressor.release.setValueAtTime(0.25, audioCtx.currentTime);

명세서

Specification
Web Audio API
# AudioParam

브라우저 호환성

BCD tables only load in the browser

같이 보기