AudioParam: setValueAtTime() メソッド

setValueAtTime()AudioParam インターフェイスのメソッドで、 AudioContext.currentTime を基準にした正確な時刻に AudioParam の値を瞬時に変更します。新しい値は value 引数で指定します。

構文

js
setValueAtTime(value, startTime)

引数

value

指定された時刻に AudioParam が変更される値を表す浮動小数点数です。

startTime

倍精度浮動小数点値で、 AudioContext が最初に作成されてから、値の変更が起こるまでの時間(秒単位)を表します。時間が AudioContext.currentTime より小さい場合、変更は即座に起こります。この値が負の場合、 TypeError が発生します。

返値

この AudioParam オブジェクトへの参照です。一部の古いブラウザーの実装では、このインターフェイスは undefined を返します。

この単純な例では、2つのコントロールボタンを持つメディア要素のソースが特徴です(ソースコードは webaudio-examples リポジトリーを参照するか、またはこの例をライブで表示してください)。ボタンが押されると、変数 currGain は 0.25 ずつ増加/減少します。次に、 setValueAtTime() メソッドを使用して、ゲインの値を currGain と等しく、現在から 1 秒後 (audioCtx.currentTime + 1) に設定します。

js
// 音声コンテキストの作成
const AudioContext = window.AudioContext || window.webkitAudioContext;
const audioCtx = new AudioContext();

// 例のための基本的な値を設定
const myAudio = document.querySelector("audio");
const pre = document.querySelector("pre");
const myScript = document.querySelector("script");

pre.innerHTML = myScript.innerHTML;

const targetAtTimePlus = document.querySelector(".set-target-at-time-plus");
const targetAtTimeMinus = document.querySelector(".set-target-at-time-minus");

// MediaElementAudioSourceNode を作成
// Feed the HTMLMediaElement into it
const source = audioCtx.createMediaElementSource(myAudio);

// ゲインノードを作成し、ゲイン値を 0.5 に設定
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0.5;
let currGain = gainNode.gain.value;

// AudioBufferSourceNode を gainNodeに、
// gainNode を出力先に接続
source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// onclick で何かするようにボタンを設定
targetAtTimePlus.onclick = () => {
  currGain += 0.25;
  gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};

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

仕様書

Specification
Web Audio API
# dom-audioparam-setvalueattime

ブラウザーの互換性

BCD tables only load in the browser

関連情報