AudioParam: exponentialRampToValueAtTime() メソッド

exponentialRampToValueAtTime()AudioParam インターフェイスのメソッドで、 AudioParam の値を指数関数的に徐々に変化させます。変更は 直前の イベントで指定した時刻に始まり、value 引数で指定された新しい値まで指数関数的な変化が続き、 endTime 引数で指定された時刻に新しい値に到達します。

メモ: 指数関数的な変化は、周波数や再生レートを変化させる場合、直線的な変化よりも有益であると考えられています。これは、人間の耳の動作に起因しています。

構文

js
exponentialRampToValueAtTime(value, endTime)

引数

value

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

endTime

倍精度浮動小数点値で、値の変化が停止する、変化開始後の正確な時刻(秒単位)を表します。

返値

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

この例では、 2 つの制御ボタンを持つメディアソースがあります(ソースコードは audio-param リポジトリー、またはこの例をライブで参照してください)。これらのボタンが押されると、 exponentialRampToValueAtTime() を使用して、それぞれゲイン値を 1.0 までフェードアップし、 0 までフェードダウンします。これはフェードイン/フェードアウトのエフェクトにかなり有益です。

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

// 例のための基本的な変数を設定
const myAudio = document.querySelector("audio");

const expRampPlus = document.querySelector(".exp-ramp-plus");
const expRampMinus = document.querySelector(".exp-ramp-minus");

// MediaElementAudioSourceNode を作成
// HTMLMediaElement を投入します。
const source = audioCtx.createMediaElementSource(myAudio);

// ゲインノードを作成し、そのゲイン値を 0.5 に設定します。
const gainNode = audioCtx.createGain();

// AudioBufferSourceNode を gainNodeに、
// gainNode を出力先に接続します。
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// onclick で何かするようにボタンを設定
expRampPlus.onclick = () => {
  gainNode.gain.exponentialRampToValueAtTime(1.0, audioCtx.currentTime + 2);
};

expRampMinus.onclick = () => {
  gainNode.gain.exponentialRampToValueAtTime(0.01, audioCtx.currentTime + 2);
};

メモ: 最後の関数で降下する値には、 0 ではなく 0.01 が使用されました。 0 を使用すると、 invalid or illegal string エラーが発生するためです。

仕様書

Specification
Web Audio API
# dom-audioparam-exponentialramptovalueattime

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
exponentialRampToValueAtTime

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support

関連情報