--- title: AudioBuffer slug: Web/API/AudioBuffer translation_of: Web/API/AudioBuffer ---
{{APIRef("Web Audio API")}}
AudioBuffer - это интерфейс короткого звукового ресурса (audio asset), находящегося в памяти и созданного из аудиофайла методом {{ domxref("AudioContext.decodeAudioData()") }}, или из исходных данных с помощью метода {{ domxref("AudioContext.createBuffer()") }}. Помещённые в AudioBuffer звуковые данные могут быть воспроизведены в {{ domxref("AudioBufferSourceNode") }}.
Объекты этого типа предназначены для хранения небольших звуковых фрагментов, обычно менее 45 секунд. Для более длинных звуков, объекты реализующие {{domxref("MediaElementAudioSourceNode")}} являются более подходящими. Этот буфер содержит данные в формате неперемещаемого IEE754 32-битного линейного ИКМ с номинальным диапазоном от -1 до +1, то есть 32-битный буфер с плавающей точкой каждого звукового фрагмента (samples) от -1.0 до 1.0. Если {{domxref("AudioBuffer")}} имеет несколько каналов, то они хранятся в отдельном буфере.
AudioBuffer.В этом примере показывается как создать объект AudioBuffer и заполнить его случайными белыми шумами. Вы можете найти полный пример в репозитории webaudio-examples. Так же доступна live версия.
// Стерео
var channels = 2;
// Создаёт пустой двухсекундный стерео-буфер
// с частотой звука AudioContext (sample rate)
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.
// AudioNode для проигрывания из AudioBuffer
var source = audioCtx.createBufferSource();
// устанавливает буфер в AudioBufferSourceNode
source.buffer = myArrayBuffer;
// присоединяет AudioBufferSourceNode к
// destination, чтобы мы могли слышать звук
source.connect(audioCtx.destination);
// Начать воспроизведение с источника
source.start();
}
| Спецификация | Статус | Комментарий |
|---|---|---|
| {{SpecName('Web Audio API', '#the-audiobuffer-interface', 'AudioBuffer')}} | {{Spec2('Web Audio API')}} | Исходное определение |
| Возможность | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Базовая поддержка | {{CompatChrome(14.0)}} {{property_prefix("webkit")}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(25)}} | {{CompatNo}} | {{CompatOpera(15)}} {{property_prefix("webkit")}} {{CompatOpera(22)}} |
6 {{property_prefix("webkit")}} |
|
|
{{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(27)}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} |
| constructor | {{CompatChrome(55.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOpera(42)}} | {{CompatUnknown}} |
| Возможность | Android | Android Webview | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile | Chrome для Android |
|---|---|---|---|---|---|---|---|---|---|
| Базовая поддержка | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile(25)}} | 1.2 | {{CompatNo}} | {{CompatVersionUnknown}} | 6 {{property_prefix("webkit")}} | {{CompatChrome(28.0)}} {{property_prefix("webkit")}} |
copyFromChannel() и copyToChannel() |
{{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile(27)}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatVersionUnknown}} | |
| constructor | {{CompatNo}} | {{CompatChrome(55.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOperaMobile(42)}} | {{CompatUnknown}} | {{CompatChrome(55.0)}} |