AudioBufferSourceNode

by 3 contributors:

This translation is incomplete. Please help translate this article from English.

草案
このページは完成していません。

The AudioBufferSourceNode インタフェーエスはメモリ上にある音声データ (AudioBuffer) を扱うオーディオソースを表します。このオブジェクトはオーディオソースとなる AudioNode です。

AudioBufferSourceNode は入力がなく、その出力は 1 つで、出力されるチャンネル数は AudioBufferSourceNode.buffer で参照される AudioBuffer のチャンネル数によって決まります。この属性値が NULL の場合、つまりバッファがセットされていない場合、無音が出力されます。AudioBufferSourceNodeは一度しか再生できません。つまり、AudioBufferSourceNode.start()の呼び出しは一度しかできません。もし、再び再生するならば、別のAudioBufferSourceNodeを生成する必要があります。これらのノードは安価に生成でき、AudioBufferは何度も再生できます。よくAudioBufferSourceNodeは「撃ちっぱなし」で使わなければならない、と言われます。つまり、一度再生を始めると、そのノードへの参照はなくなり、自動的にガベージコレクトされます。

AudioBufferSourceNode.stop()は何度も呼ぶことができます。AudioBufferSourceNodeがバッファの最後に達していないならば、最後の呼び出しがその前の呼び出しを上書きします。


The AudioBufferSourceNode takes the content of an AudioBuffer and m

  • Number of inputs 0
  • Number of outputs 1
  • Channel count defined by the associated AudioBuffer

プロパティ

AudioNodeを継承しています。

AudioBufferSourceNode.buffer
再生される音声のAudioNode、またはNULLならば無音のチャンネルです
AudioBufferSourceNode.detune
セント単位のデチューンを表すAudioParamk-rate。デフォルト値は0
AudioBufferSourceNode.loop
AudioBufferの最後に達したとき再び再生するかを表すブール値。デフォルトはfalse
AudioBufferSourceNode.loopStart
AudioBufferを再び再生する位置(秒単位)を表すdoubleの値。デフォルトは0
AudioBufferSourceNode.loopEnd
AudioBufferの再生を停止する(そしてループする)位置(秒単位)を表すdoubleの値。デフォルトは0
AudioBufferSourceNode.playbackRate
再生される音声の速度要素を表すAudioParama-rate。出力にピッチの修正が適用されない場合は、サンプルのピッチの変更に使われます。

イベントハンドラ

AudioBufferSourceNode.onended
endedイベントに関するコールバックを格納したイベントハンドラ

メソッド

AudioNode を継承しています。

AudioBufferSourceNode.start()
設定された音声の再生をスケジュールします
AudioBufferSourceNode.stop()
設定された音声の再生の停止をスケジュールします

次の例は、2秒間のバッファを生成し、ホワイトノイズを書き込み、AudioBufferSourceNodeで再生します。コメントは何をしているかを簡単に説明しています。

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var button = document.querySelector('button');
var pre = document.querySelector('pre');
var myScript = document.querySelector('script');

pre.innerHTML = myScript.innerHTML;

// ステレオ
var channels = 2;
// AudioContextのサンプルレートで2秒間の空のステレオバッファを生成する
var frameCount = audioCtx.sampleRate * 2.0;

var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);

button.onclick = function() {
  // バッファにホワイトノイズを書き込む;
  // 単なる-1.0から1.0の間の乱数の値である
  for (var channel = 0; channel < channels; channel++) {
   // 実際のデータの配列を得る
   var nowBuffering = myArrayBuffer.getChannelData(channel);
   for (var i = 0; i < frameCount; i++) {
     // Math.random()は[0; 1.0]である
     // 音声は[-1.0; 1.0]である必要がある
     nowBuffering[i] = Math.random() * 2 - 1;
   }
  }

  // AudioBufferSourceNodeを得る
  // これはAudioBufferを再生するときに使うAudioNodeである
  var source = audioCtx.createBufferSource();
  // AudioBufferSourceNodeにバッファを設定する
  source.buffer = myArrayBuffer;
  // AudioBufferSourceNodeを出力先に接続すると音声が聞こえるようになる
  source.connect(audioCtx.destination);
  // 音源の再生を始める
  source.start();
}

注: decodeAudioDataの例は、AudioContext.decodeAudioDataのページを参照してください。

仕様

Specification Status Comment
Web Audio API
The definition of 'AudioBufferSourceNode' in that specification.
草案  

ブラウザ互換性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 14 webkit 23.0 (23.0) 未サポート 15 webkit
22
6 webkit
detune property (有) 40.0 (40.0) 未サポート ? ?
Feature Android Chrome Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Basic support 未サポート 28 webkit 25.0 (25.0) 1.2 未サポート 未サポート 6 webkit
detune property 未サポート (有) (有) (有) 未サポート 未サポート ?

Chrome notes

The buffer property was removed in 44.0.

 

関連情報

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

Contributors to this page: maruhiro, fscholz, chikoski
最終更新者: maruhiro,