Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

AudioBuffer

Wystąpił błąd skryptu na tej stronie. Edytorzy witryny zostali o tym powiadomieni. W tym czasie można poniżej zobaczyć część jej treści.

To tłumaczenie jest niekompletne. Pomóż przetłumaczyć ten artykuł z języka angielskiego.

{{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ż 45 s . 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łasnoś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.

Methods

{{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;

// Create an empty two second stereo buffer at the
// sample rate of the AudioContext
var frameCount = audioCtx.sampleRate * 2.0;
var myArrayBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);

button.onclick = function() {
  // Fill the buffer with white noise;
  // just random values between -1.0 and 1.0
  for (var channel = 0; channel < channels; channel++) {
    // This gives us the actual array that contains the data
    var nowBuffering = myArrayBuffer.getChannelData(channel);
    for (var i = 0; i < frameCount; i++) {
      // Math.random() is in [0; 1.0]
      // audio needs to be in [-1.0; 1.0]
      nowBuffering[i] = Math.random() * 2 - 1;
    }
  }

  // Get an AudioBufferSourceNode.
  // This is the AudioNode to use when we want to play an AudioBuffer
  var source = audioCtx.createBufferSource();

  // set the buffer in the AudioBufferSourceNode
  source.buffer = myArrayBuffer;

  // connect the AudioBufferSourceNode to the
  // destination so we can hear the sound
  source.connect(audioCtx.destination);

  // start the source playing
  source.start();

}

Specyfikacje

Specification Status Comment
{{SpecName('Web Audio API', '#the-audiobuffer-interface', 'AudioBuffer')}} {{Spec2('Web Audio API')}} Initial definition.

Kompatybilność z przeglądarkami

{{CompatibilityTable}}
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 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}}
Feature Android Chrome Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Basic support {{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

Autorzy i etykiety dokumentu

 Autorzy tej strony: mateuszdanek
 Ostatnia aktualizacja: mateuszdanek,