Spec-Zone.ru › Web APIs

AudioBufferSourceNode

Базовая версия Широко доступна

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Интерфейс AudioBufferSourceNode представляет собой AudioScheduledSourceNode, который представляет собой источник звука, состоящий из аудиоданных в памяти, хранящихся в AudioBuffer.

Этот интерфейс особенно полезен для воспроизведения звука, имеющего особенно строгие требования к точности временных характеристик, например, для звуков, которые должны соответствовать определённому ритму и могут храниться в памяти вместо воспроизведения с диска или сети. Для воспроизведения звуков, требующих точного времени, но которые должны передаваться по сети или воспроизводиться с диска, используйте AudioWorkletNode для реализации их воспроизведения.

EventTarget AudioNode AudioScheduledSourceNode AudioBufferSourceNode

У AudioBufferSourceNode нет входов и ровно один выход, имеющий такое же количество каналов, как и AudioBuffer, указанное свойством buffer. Если буфер не задан, то есть, если buffer равен null, на выходе присутствует один канал тишины (каждый образец равен 0).

AudioBufferSourceNode можно воспроизвести только один раз; после каждого вызова start() необходимо создать новый узел, если вы хотите воспроизвести тот же звук снова. К счастью, создание этих узлов очень недорого, и сами AudioBuffer могут быть повторно использованы для нескольких воспроизведений звука. Действительно, вы можете использовать эти узлы в режиме «выстрелил и забыл»: создайте узел, вызовите start() для начала воспроизведения звука и даже не беспокойтесь о том, чтобы удерживать ссылку на него. Он будет автоматически удален из памяти в соответствующее время, что не произойдёт, пока звук не закончится воспроизведение.

Разрешены несколько вызовов stop(). Последний вызов заменяет предыдущий, если AudioBufferSourceNode ещё не достиг конца буфера.

The AudioBufferSourceNode takes the content of an AudioBuffer and m

Количество входов 0
Количество выходов 1
Количество каналов определяется связанным AudioBuffer

Конструктор

AudioBufferSourceNode()

Создаёт и возвращает новый объект AudioBufferSourceNode. В качестве альтернативы можно использовать фабричный метод BaseAudioContext.createBufferSource(); см. Создание AudioNode.

Свойства экземпляра

Наследует свойства от родительского элемента, AudioScheduledSourceNode.

AudioBufferSourceNode.buffer

An AudioBuffer that defines the audio asset to be played, or when set to the value null, defines a single channel of silence (in which every sample is 0.0).

AudioBufferSourceNode.detune

A k-скорость AudioParam representing detuning of playback in cents. This value is compounded with playbackRate to determine the speed at which the sound is played. Its default value is 0 (meaning no detuning), and its nominal range is -∞ to ∞.

AudioBufferSourceNode.loop

A Boolean attribute indicating if the audio asset must be replayed when the end of the AudioBuffer is reached. Its default value is false.

AudioBufferSourceNode.loopStart Optional

A floating-point value indicating the time, in seconds, at which playback of the AudioBuffer must begin when loop is true. Its default value is 0 (meaning that at the beginning of each loop, playback begins at the start of the audio buffer).

AudioBufferSourceNode.loopEnd Optional

A floating-point number indicating the time, in seconds, at which playback of the AudioBuffer stops and loops back to the time indicated by loopStart, if loop is true. The default value is 0.

AudioBufferSourceNode.playbackRate

A k-скорость AudioParam that defines the speed factor at which the audio asset will be played, where a value of 1.0 is the sound's natural sampling rate. Since no pitch correction is applied on the output, this can be used to change the pitch of the sample. This value is compounded with detune to determine the final playback rate.

Методы экземпляра

Наследует методы от родительского элемента, AudioScheduledSourceNode, и переопределяет следующие методы:.

start()

Schedules playback of the audio data contained in the buffer, or begins playback immediately. Additionally allows the start offset and play duration to be set.

Примеры

В этом примере мы создаём буфер продолжительностью две секунды, заполняем его белым шумом, а затем воспроизводим его с помощью AudioBufferSourceNode. Комментарии должны ясно объяснять происходящее.

Примечание: Вы также можете запустить код онлайн, или просмотреть исходный код.

const audioCtx = new AudioContext();

// Create an empty three-second stereo buffer at the sample rate of the AudioContext
const myArrayBuffer = audioCtx.createBuffer(
  2,
  audioCtx.sampleRate * 3,
  audioCtx.sampleRate,
);

// Fill the buffer with white noise;
//just random values between -1.0 and 1.0
for (let channel = 0; channel < myArrayBuffer.numberOfChannels; channel++) {
  // This gives us the actual ArrayBuffer that contains the data
  const nowBuffering = myArrayBuffer.getChannelData(channel);
  for (let i = 0; i < myArrayBuffer.length; 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
const 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();

Примечание: Для примера с decodeAudioData() см. страницу AudioContext.decodeAudioData().

Спецификации

Спецификация
Web Audio API
# AudioBufferSourceNode

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
AudioBufferSourceNode 55 79 53 42 14.1 55 53 42 14.5 6.0 55
AudioBufferSourceNode 14 12 25 15 6 18 25 14 6 1.0 4.4.3
buffer 14 12
25Firefox в настоящее время обрабатывает значение null неправильно. Вместо создания узла, генерирующего одноканальный звук без сигнала, узел становится непригодным к использованию и будет проигнорирован, если вы попытаетесь его подключить к чему-либо.
15 6 18
25Firefox для Android в настоящее время обрабатывает значение null неправильно. Вместо создания узла, генерирующего одноканальный звук без сигнала, узел становится непригодным к использованию и будет проигнорирован, если вы попытаетесь его подключить к чему-либо.
14 6 1.0 4.4.3
detune 44 13 40 31 14.1 44 40 32 14.5 4.0 44
loop 15 12 25 15 6 18 25 14 6 1.0 4.4.3
loopEnd 24 12 25 15 7 25 25 14 7 1.5 4.4.3
loopStart 24 12 25 15 7 25 25 14 7 1.5 4.4.3
playbackRate 14 12 25 15 6 18 25 14 6 1.0 4.4.3
start 24 12 25 15 7 25 25 14 7 1.5 4.4.3

См. также

  • Использование Web Audio API
  • Web Audio API

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API