From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/ja/web/api/offlineaudiocontext/index.html | 144 ++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 files/ja/web/api/offlineaudiocontext/index.html (limited to 'files/ja/web/api/offlineaudiocontext') diff --git a/files/ja/web/api/offlineaudiocontext/index.html b/files/ja/web/api/offlineaudiocontext/index.html new file mode 100644 index 0000000000..2187df4738 --- /dev/null +++ b/files/ja/web/api/offlineaudiocontext/index.html @@ -0,0 +1,144 @@ +--- +title: OfflineAudioContext +slug: Web/API/OfflineAudioContext +translation_of: Web/API/OfflineAudioContext +--- +
{{APIRef("Web Audio API")}}
+ +
OfflineAudioContext インターフェイスは {{domxref("AudioContext")}} インターフェイスの一種で、{{domxref("AudioNode")}} をつなげて造られる音声処理グラフを表しています。通常の {{domxref("AudioContext")}} と異なり、OfflineAudioContext で処理された音声はハードウェアから再生されることはありません。処理された結果は {{domxref("AudioBuffer")}} に出力されます。
+ +
 
+ +

{{InheritanceDiagram}}

+ +

コンストラクター

+ +
+
{{domxref("OfflineAudioContext.OfflineAudioContext()")}}
+
新しい OfflineAudioContext のインスタンスを作成します。
+
+ +

プロパティ

+ +

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

+ +
+
{{domxref('OfflineAudioContext.length')}} {{readonlyinline}}
+
サンプルフレーム数で表されるバッファの大きさの整数値。
+
+ +

イベントハンドラー

+ +
+
{{domxref("OfflineAudioContext.oncomplete")}}
+
+

処理終了時に呼ばれる {{domxref("EventHandler")}} イベントハンドラーです。 {{event("complete")}} イベント (型は {{domxref("OfflineAudioCompletionEvent")}} )を受け取ります。このイベントは、{{domxref("OfflineAudioContext.startRendering()")}} のイベント駆動型が利用された場合、処理終了時に送出さます。

+
+
+ +

メソッド

+ +

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

+ +
+
{{domxref("OfflineAudioContext.resume()")}}
+
Resumes the progression of time in an audio context that has previously been suspended.
+
{{domxref("OfflineAudioContext.suspend()")}}
+
Schedules a suspension of the time progression in the audio context at the specified time and returns a promise.
+
{{domxref("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.
+
+ +

+ +

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

+ +

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

+ +

At this point we create another audio context, create an {{domxref("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();
+ +

仕様書

+ + + + + + + + + + + + + + +
仕様書状態備考
{{SpecName('Web Audio API', '#OfflineAudioContext', 'OfflineAudioContext')}}{{Spec2('Web Audio API')}}初回定義
+ +

ブラウザーの対応

+ +
+ + +

{{Compat("api.OfflineAudioContext")}}

+
+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf