Spec-Zone.ru › Web APIs

AudioParam: свойство value

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

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

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

Свойство value интерфейса AudioParam получает или устанавливает значение этого AudioParam в текущий момент времени. Изначально значение устанавливается в AudioParam.defaultValue.

Установка value эквивалентна вызову AudioParam.setValueAtTime с временем, возвращаемым свойством AudioContext currentTime.

Значение

Число с плавающей запятой Number, указывающее значение параметра на текущий момент времени. Это значение будет находиться между значениями, указанными свойствами minValue и maxValue.

Описание

Точность и вариативность значения

Тип данных, используемый для хранения value внутри, — это число с одинарной точностью (32 бита), в то время как JavaScript использует числа с двойной точностью (64 бита). В результате значение, которое вы считываете со свойства value , может не совпадать точно с тем, что вы установили.

Рассмотрим этот пример:

const source = new AudioBufferSourceNode(/* … */);
const rate = 5.3;
source.playbackRate.value = rate;
console.log(source.playbackRate.value === rate);

Вывод лога будет false, потому что параметр скорости воспроизведения, rate, был преобразован в ближайшее к 5.3 число с плавающей запятой одинарной точности, что дает 5.300000190734863. Одним из решений является использование метода Math.fround(), который возвращает эквивалентное значение с одинарной точностью для заданного 64-битного JavaScript значения — при установке value, так:

const source = new AudioBufferSourceNode(/* … */);
const rate = Math.fround(5.3);
source.playbackRate.value = rate;
console.log(source.playbackRate.value === rate);

В этом случае вывод лога будет true.

Значение свойства, меняющегося со временем

Значение value AudioParam может быть постоянным или изменяться со временем. Это отражается в методе-геттере value, который возвращает значение параметра по состоянию на последний квант рендеринга аудио-движка, или момент, в который обрабатываются и обновляются аудио-буферы. Кроме обработки аудио-буферов, каждый квант рендеринга обновляет value каждого AudioParam по мере необходимости, исходя из текущего времени и любых установленных изменений значения параметра, основанных на времени.

При первом создании параметра его значение устанавливается в его значение по умолчанию, заданное в AudioParam.defaultValue. Это значение параметра в момент времени 0.0 секунд и оно сохраняется как значение параметра до первого кванта рендеринга, в котором значение изменяется.

Во время каждого кванта рендеринга браузер выполняет следующие действия, связанные с управлением значением параметра:

  • Если был использован метод-сеттер value, значение параметра изменяется на заданное значение.
  • Если текущее время равно или превышает время, указанное в предыдущем вызове setValueAtTime(), значение value изменяется на значение, переданное в setValueAtTime().
  • Если были вызваны методы изменения значения с плавным переходом и текущее время находится в диапазоне времени, в течение которого должен происходить плавный переход, значение обновляется на основе соответствующего алгоритма. К этим методам плавного изменения значения относятся linearRampToValueAtTime(), setTargetAtTime() и setValueCurveAtTime().

Таким образом, значение параметра поддерживается, чтобы точно отражать состояние параметра со временем.

Примеры

В этом примере мгновенно изменяется громкость GainNode на 40%.

const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0.4;
// which is identical to:
gainNode.gain.setValueAtTime(0.4, audioCtx.currentTime);

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

Спецификация
Web Audio API
# dom-audioparam-value

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
value
14До версии 66 значение усиления GainNode выполняло плавную интерполяцию для предотвращения «разорванного» звука (вместо мгновенного изменения).
12
25["До Firefox 134, установка value игнорировалась, когда выполнялась одновременно с запланированными событиями автоматизации.", "До Firefox 69, value не учитывало запланированные или градиентные изменения значения параметра; вместо этого возвращались только явно установленные значения."]
15До версии 53 значение усиления GainNode выполняло плавную интерполяцию для предотвращения «разорванного» звука (вместо мгновенного изменения).
6
18До версии 66 значение усиления GainNode выполняло плавную интерполяцию для предотвращения «разорванного» звука (вместо мгновенного изменения).
25Firefox for Android в настоящее время не учитывает запланированные или градиентные изменения значения параметра; возвращается только начальное значение или последнее явно установленное значение.
14До версии 47 значение усиления GainNode выполняло плавную интерполяцию для предотвращения «разорванного» звука (вместо мгновенного изменения).
6
1.0До версии 9.0 значение усиления GainNode выполняло плавную интерполяцию для предотвращения «разорванного» звука (вместо мгновенного изменения).
≤37

См. также

  • Использование 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/AudioParam/value

Spec-Zone.ru

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