OfflineAudioContext()

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.

OfflineAudioContext() コンストラクターは、ウェブオーディオ API の一部で、新しい OfflineAudioContext オブジェクトインスタンスを生成して返します。これは音声出力機器ではなく AudioBuffer に音声を出力することができるものです。

構文

js
new OfflineAudioContext(options)

new OfflineAudioContext(numberOfChannels, length, sampleRate)

引数

OfflineAudioContext() コンストラクターの引数は BaseAudioContext.createBuffer メソッドに入力する引数と同じものを指定するか、あるいは options オブジェクトにそれらの引数を渡して指定することも可能です。いずれにせよ、個々の引数は同じものです。

numberOfChannels

整数で、結果の AudioBuffer が持つチャンネル数を指定します。

length

整数値で、音声コンテキスト用に作成するバッファーのサイズを指定します。サンプルフレームは、音声データの各チャンネルに対して、音声データの単一のサンプルを格納することができる単位です。例えば、 sampleRate が 48000Hz で 5 秒間のバッファーは 5 * 48000 = 240000 サンプルフレームの長さになります。

sampleRate

リニア音声データのサンプルレート(1 秒あたりのサンプルフレーム数)。すべてのユーザーエージェントは 8000Hz から 96000Hz の範囲に対応していますが、それよりも広い範囲に対応することもあります。最も有益なのは 44100Hz で、これは CD 音声で使用されるサンプルレートです。

注意すべき点は、引数なしで AudioContext コンストラクターを使用して新しい new AudioContext() が作成できるのに対し、 OfflineAudioContext() コンストラクターは AudioBuffer を作成しなければいけないので 3 つの引数が必要になる点です。これは新しい AudioBufferBaseAudioContext.createBuffer メソッドで作成したときと全く同じように動作します。詳しくはオーディオバッファー: フレーム、サンプル、チャンネルセクションをご覧ください。

返値

新しい OfflineAudioContext オブジェクトで、関連付けられた AudioBuffer はリクエストされたとおりに構成されます。

通常の AudioContext と同様に、 OfflineAudioContext はイベントの対象となることができます。そのため、このインターフェイスは EventTarget を実装しています。

js
const offlineCtx = new OfflineAudioContext({
  numberOfChannels: 2,
  length: 44100 * 40,
  sampleRate: 44100,
});
const source = offlineCtx.createBufferSource();
// …

動作する例全体は、 offline-audio-context-promise を GitHub リポジトリーで参照してください(ソースコードも参照してください)。

仕様書

Specification
Web Audio API
# dom-offlineaudiocontext-offlineaudiocontext

ブラウザーの互換性

BCD tables only load in the browser