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.
setValueAtTime()
は AudioParam
インターフェイスのメソッドで、 AudioContext.currentTime
を基準にした正確な時刻に AudioParam
の値を瞬時に変更します。新しい値は value 引数で指定します。
構文
setValueAtTime(value, startTime)
引数
value
-
指定された時刻に AudioParam が変更される値を表す浮動小数点数です。
startTime
-
倍精度浮動小数点値で、
AudioContext
が最初に作成されてから、値の変更が起こるまでの時間(秒単位)を表します。時間がAudioContext.currentTime
より小さい場合、変更は即座に起こります。この値が負の場合、TypeError
が発生します。
返値
この AudioParam
オブジェクトへの参照です。一部の古いブラウザーの実装では、このインターフェイスは undefined
を返します。
例
この単純な例では、2つのコントロールボタンを持つメディア要素のソースが特徴です(ソースコードは webaudio-examples リポジトリーを参照するか、またはこの例をライブで表示してください)。ボタンが押されると、変数 currGain
は 0.25 ずつ増加/減少します。次に、 setValueAtTime()
メソッドを使用して、ゲインの値を currGain
と等しく、現在から 1 秒後 (audioCtx.currentTime + 1
) に設定します。
// 音声コンテキストの作成
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