mozilla
Your Search Results

    AudioBuffer

    AudioBufferインターフェースはメモリ上の短い音声を表すもので、それはAudioContext.decodeAudioData()メソッドを使ってオーディオファイルから、またはAudioContext.createBuffer()を使って生のデータから生成されます。AudioBufferに入れた後は、その音声はAudioBufferSourceNodeに渡せば再生できます。

    これらのオブジェクトは短い、一般的には45秒未満の、断片的な音声を保持するために設計されています。それよりも長い音声は、MediaElementAudioSourceNodeのオブジェクトが適しています。バッファには次の形式でデータが書き込まれます: ノンインターリーブ IEEE754 32bit リニア PCMで、-1から+1の範囲で正規化されています。つまり、32bit 浮動小数点バッファで、それぞれのサンプルは-1.0から1.0の間です。AudioBufferに複数のチャンネルがある場合は、それぞれ分かれたバッファに格納されます。

    プロパティ

    AudioBuffer.sampleRate 読取専用
    バッファに格納されたPCMデータの1秒あたりのサンプル数をfloatで返す
    AudioBuffer.length 読取専用
    バッファに格納されたPCMデータの長さをintegerで返す
    AudioBuffer.duration 読取専用
    バッファに格納されたPCMデータの時間(秒)をdoubleで返す
    AudioBuffer.numberOfChannels 読取専用
    バッファに格納されたPCMデータのチャンネルの数をintegerで返す

    メソッド

    AudioBuffer.getChannelData()
    引数channel(0が最初のチャンネルを表す)のチャンネルに結び付けられたPCMデータをFloat32Arrayで返す
    AudioBuffer.copyFromChannel()
    サンプルを、AudioBufferの指定のチャンネルから、コピー先の配列へコピーする
    AudioBuffer.copyToChannel()
    サンプルを、コピー元の配列から、AudioBufferの指定のチャンネルへコピーする

    次の簡単な例では、AudioBufferの生成し、バッファにランダムなホワイトノイズを書き込む方法を示しています。audio-buffer demo リポジトリには完全なソースコードと、すぐに実行できるバージョンがあります。

    // ステレオ
    var channels = 2;
    
    // AudioContextのサンプルレートで2秒間の空のステレオバッファを生成する
    var frameCount = audioCtx.sampleRate * 2.0;
    var myArrayBuffer = audioCtx.createBuffer(channels, 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();
    
    }
    

    仕様

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

    ブラウザ互換性

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
    Basic support 14 webkit 25 (25) 未サポート 15 webkit
    22
    6 webkit
    copyFromChannel()copyToChannel() ? 27 (27) 未サポート ? ?
    Feature Android Chrome Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
    Basic support 未サポート 28 webkit 25.0 (25) 1.2 未サポート 未サポート webkit
    copyFromChannel()copyToChannel() 未サポート ? 27.0 (27)   未サポート 未サポート ?

    参考

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

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