--- title: AudioBuffer slug: Web/API/AudioBuffer translation_of: Web/API/AudioBuffer ---

{{APIRef("Web Audio API")}}

Interfejs AudioBuffer przedstawia krótki zasób dźwiękowy znajdujący się w pamięci, stworzony z pliku dźwiękowego za pomocą metody {{ domxref("AudioContext.decodeAudioData()") }} lub z surowych danych przy użyciu {{ domxref("AudioContext.createBuffer()") }}. Dane audio umieszczone w AudioBuffer mogą być następnie odtwarzane przez przekazanie ich do {{ domxref("AudioBufferSourceNode") }}.

Obiekty tego typu są przeznaczone do przechowywania drobnych fragmentów dźwiękowych, zwykle mniej niż 45s. W przypadku dłuższych dźwięków, obiekty implementujące {{domxref("MediaElementAudioSourceNode")}} są bardziej odpowiednie. Bufor zawiera dane w następującym formacie: IEEE754 32 -bitowy liniowy PCM bez przeplotu o nominalnym zakresie między -1 i +1 , czyli 32-bitowy zmiennoprzecinkowy bufor z próbkami o znormalizowanych wartościach między -1.0 a 1.0. Jeśli {{domxref("AudioBuffer")}} ma wiele kanałów, są one przechowywane w osobnym buforze.

Właściwości

{{domxref("AudioBuffer.sampleRate")}} {{readonlyInline}}
Zwraca wartość typu float reprezentującą częstotliwość próbkowania danych PCM przechowywanych w buforze wyrażoną w próbkach na sekundę.
{{domxref("AudioBuffer.length")}} {{readonlyInline}}
Zwraca wartość typu int reprezentującą wielkość danych PCM przechowywanych w buforze wyrażoną jako liczba okien próbek.
{{domxref("AudioBuffer.duration")}} {{readonlyInline}}
Zwraca wartość typu double reprezentującą czas trwania danych PCM zapisanych w buforze wyrażoną w sekundach.
{{domxref("AudioBuffer.numberOfChannels")}} {{readonlyInline}}
Zwraca wartość typu int reprezentującą liczbę pojedynczych kanałów audio opisanych przez dane PCM zapisanych w buforze.

Metody

{{domxref("AudioBuffer.getChannelData()")}}
Zwraca tablicę {{jsxref("Float32Array")}} zawierającą dane PCM powiązane z kanałem audio określonym jako parametr channel (0 reprezentuje pierwszy kanał).
{{domxref("AudioBuffer.copyFromChannel()")}}
Kopiuje próbki z danego kanału w AudioBuffer do danej tablicy.
{{domxref("AudioBuffer.copyToChannel()")}}
Kopiuje próbki z danej tablicy do danego kanału w AudioBuffer.

Przykład

Następujący przykład kodu pokazuje jak stworzyć AudioBuffer i wypełnić go białym szumem. Pełną wersję kodu można znależć w naszym repozytorium audio-buffer demo; jest dostępna także uruchomiona na żywo wersja running live version.

// Stereo
var channels = 2;

// Tworzenie pustego, dwusekundowego buffera stereo
// na wskaźniku audio z AudioContext
var frameCount = audioCtx.sampleRate * 2.0;
var myArrayBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);

button.onclick = function() {
  // Wypełnienie buffera białym szumem;
  // Wartość losowa pomiędzy -1.0 a 1.0
  for (var channel = 0; channel < channels; channel++) {
    // To daje nam aktualną tablice zawierającą dane
    var nowBuffering = myArrayBuffer.getChannelData(channel);
    for (var i = 0; i < frameCount; i++) {
      // Math.random() znajduje się w przedziale [0; 1.0]
      // audio musi znajdować się w [-1.0; 1.0]
      nowBuffering[i] = Math.random() * 2 - 1;
    }
  }

  // Dostarczenie AudioBufferSourceNode.
  // To jest AudioNode dedykowane do używania wtedy, kiedy chcemy odtworzyć dany AudioBuffer
  var source = audioCtx.createBufferSource();

  // Określanie buffera w AudioBufferSourceNode
  source.buffer = myArrayBuffer;

  // Podłączanie AudioBufferSourceNode do
  // destynacji, dzięki czemu możemy usłyszeć dźwięk
  source.connect(audioCtx.destination);

  // start odtwarzania źródła
  source.start();

}

Specyfikacje

Specyfikacja Status Komentarz
{{SpecName('Web Audio API', '#the-audiobuffer-interface', 'AudioBuffer')}} {{Spec2('Web Audio API')}} Definicja wstępna.

Kompatybilność z przeglądarkami

{{CompatibilityTable}}
Cecha Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Wsparcie podstawowe 14 {{property_prefix("webkit")}} {{CompatGeckoDesktop(25)}} {{CompatNo}} 15 {{property_prefix("webkit")}}
22
6 {{property_prefix("webkit")}}
copyFromChannel() and copyToChannel() {{CompatUnknown}} {{CompatGeckoDesktop(27)}} {{CompatNo}} {{CompatUnknown}} {{CompatNo}}
Cecha Android Chrome Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Wsparcie podstawowe {{CompatNo}} 28 {{property_prefix("webkit")}} {{CompatGeckoMobile(25)}} 1.2 {{CompatNo}} {{CompatNo}} 6 {{property_prefix("webkit")}}
copyFromChannel() and copyToChannel() {{CompatNo}} {{CompatUnknown}} {{CompatGeckoMobile(27)}}   {{CompatNo}} {{CompatNo}} {{CompatNo}}

Zobacz także