この翻訳は不完全です。英語から この記事を翻訳 してください。

The OfflineAudioContext interface is an AudioContext interface representing an audio-processing graph built from linked together AudioNodes. In contrast with a standard AudioContext, an OfflineAudioContext doesn't render the audio to the device hardware; instead, it generates it, as fast as it can, and outputs the result to an AudioBuffer.

コンストラクター

OfflineAudioContext.OfflineAudioContext()
新しい OfflineAudioContext のインスタンスを作成します。

プロパティ

親インターフェースである BaseAudioContext からのプロパティも継承します。

OfflineAudioContext.length 読取専用
サンプルフレーム数で表されるバッファの大きさの整数値。

イベントハンドラー

OfflineAudioContext.oncomplete
Is an EventHandler called when processing is terminated, that is when the complete event (of type OfflineAudioCompletionEvent) is raised, after the event-based version of OfflineAudioContext.startRendering() is used.

メソッド

親インターフェースである BaseAudioContext からのメソッドも継承します。

OfflineAudioContext.resume()
Resumes the progression of time in an audio context that has previously been suspended.
OfflineAudioContext.suspend()
Schedules a suspension of the time progression in the audio context at the specified time and returns a promise.
OfflineAudioContext.startRendering()
Starts rendering the audio, taking into account the current connections and the current scheduled changes. This page covers both the event-based version and the promise-based version.

この例では、AudioContext と OfflineAudioContext 二つのオブジェクトを作っています。AudioContext はXHR (AudioContext.decodeAudioData)でオーディオトラックを読み込むのに使い、OfflineAudioContext でAudioBufferSourceNode の中に音声をレンダリングし、そしてその音声を再生します。オフライン音声グラフのセットアップが終わった後、OfflineAudioContext.startRendering を使って AudioBuffer にレンダリングする必要があります。

startRendering() のPromiseが解決されるとレンダリングは完了し、出力結果の AudioBuffer がPromiseの結果として戻されます。

At this point we create another audio context, create an AudioBufferSourceNode inside it, and set its buffer to be equal to the promise AudioBuffer. This is then played as part of a simple standard audio graph.

Note: For a working example, see our offline-audio-context-promise Github repo (see the source code too.)

// オンラインとオフラインのオーディオコンテキストを定義

var audioCtx = new AudioContext();
var offlineCtx = new OfflineAudioContext(2, 44100 * 40, 44100);

source = offlineCtx.createBufferSource();

// XHRで音声トラックを読み込み、
// decodeAudioData でデコードして OfflineAudioContext で再生する。

function getData() {
  request = new XMLHttpRequest();

  request.open('GET', 'viper.ogg', true);

  request.responseType = 'arraybuffer';

  request.onload = function() {
    var audioData = request.response;

    audioCtx.decodeAudioData(audioData, function(buffer) {
      myBuffer = buffer;
      source.buffer = myBuffer;
      source.connect(offlineCtx.destination);
      source.start();
      //source.loop = true;
      offlineCtx.startRendering().then(function(renderedBuffer) {
        console.log('Rendering completed successfully');
        var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
        var song = audioCtx.createBufferSource();
        song.buffer = renderedBuffer;

        song.connect(audioCtx.destination);

        play.onclick = function() {
          song.start();
        }
      }).catch(function(err) {
          console.log('Rendering failed: ' + err);
          // 注意: OfflineAudioContext の startRendering が二回以上呼び出されるとPromise はリジェクトされます。
      });
    });
  }

  request.send();
}

// getData で処理を開始する。

getData();

仕様

Specification Status Comment
Web Audio API
OfflineAudioContext の定義
草案 Initial definition

ブラウザーの互換性

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応14 あり25 なし156
OfflineAudioContext() constructor551 ?53 なし42 ?
length51 あり あり なし38 なし
oncomplete141225 なし156
resume49 あり なし なし36 なし
suspend49 あり なし なし36 なし
startRendering141225 なし156
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応1414 あり2615 ? あり
OfflineAudioContext() constructor551551 ?5342 ?6.0
length5151 あり あり38 なし5.0
oncomplete あり14 あり2615 ? あり
resume4949 あり なし36 なし5.0
suspend4949 あり なし36 なし5.0
startRendering あり14 あり2615 ? あり

1. Before Chrome 59, the default values were not supported.

参考

ドキュメントのタグと貢献者

このページの貢献者: niusounds
最終更新者: niusounds,