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

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 無し
oncomplete14 有り25 無し156
resume49 有り 無し 無し36 無し
suspend49 有り 無し 無し36 無し
startRendering14 有り25 無し156
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本サポート1414 有り2615 ? ?
OfflineAudioContext() constructor551551 ?5342 ? ?
length5151 有り 有り38 無し ?
oncomplete 有り14 有り2615 ? ?
resume4949 有り 無し36 無し ?
suspend4949 有り 無し36 無し ?
startRendering 有り14 有り2615 ? ?

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

参考

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

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