AudioParam
Базовая поддержка Широко доступно *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Интерфейс AudioParam API Web Audio представляет собой параметр, связанный со звуком, обычно параметр AudioNode (например, GainNode.gain).
Параметр AudioParam может быть задан определённым значением или изменением значения, а также может быть запланирован на определённое время и по определённому шаблону.
У каждого AudioParam есть список событий, изначально пустой, определяющий, когда и как значения изменяются. Когда этот список не пустой, изменения, использующие атрибуты AudioParam.value, игнорируются. Этот список событий позволяет планировать изменения, которые должны произойти в очень точное время, используя произвольные кривые автоматизации на основе временной шкалы. Используемое время определяется в AudioContext.currentTime.
Типы AudioParam
Существует два типа: параметры a-rate и k-rate. Каждый AudioNode определяет, какие из его параметров являются a-rate или k-rate в спецификации.
a-rate
Параметр a-rate AudioParam принимает текущее значение параметра аудио для каждого кадра образца аудиосигнала.
k-rate
Параметр k-rate AudioParam использует одно начальное значение параметра аудио для всего блока, обрабатываемого; то есть 128 кадров образцов. Другими словами, одно и то же значение применяется ко всем кадрам аудио при обработке узлом.
Свойства экземпляра
-
AudioParam.defaultValueТолько для чтения -
Представляет начальное значение атрибута, как определено конкретным
AudioNode, создающимAudioParam. -
AudioParam.maxValueТолько для чтения -
Представляет максимальное возможное значение для номинального (эффективного) диапазона параметра.
-
AudioParam.minValueТолько для чтения -
Представляет минимальное возможное значение для номинального (эффективного) диапазона параметра.
AudioParam.value-
Представляет текущее значение параметра на текущее время; изначально установлено в значение
defaultValue.
Методы экземпляра
AudioParam.setValueAtTime()-
Планирует мгновенное изменение значения
AudioParamв точное время, измеренное относительноAudioContext.currentTime. Новое значение задаётся параметромvalue. AudioParam.linearRampToValueAtTime()-
Планирует постепенное линейное изменение значения
AudioParam. Изменение начинается в момент времени, указанный для предыдущего события, следует линейной кривой до нового значения, заданного в параметреvalue, и достигает нового значения в момент времени, указанный в параметреendTime. AudioParam.exponentialRampToValueAtTime()-
Планирует постепенное экспоненциальное изменение значения
AudioParam. Изменение начинается в момент времени, указанный для предыдущего события, следует экспоненциальной кривой до нового значения, заданного в параметреvalue, и достигает нового значения в момент времени, указанный в параметреendTime. AudioParam.setTargetAtTime()-
Планирует начало изменения значения
AudioParam. Изменение начинается в момент времени, указанный вstartTime, и экспоненциально приближается к значению, заданному параметромtarget. Скорость экспоненциального затухания задаётся параметромtimeConstant, который измеряется в секундах. AudioParam.setValueCurveAtTime()-
Планирует, чтобы значения
AudioParamследовали набору значений, определённому массивом чисел с плавающей точкой, масштабированным для вписывания в заданный интервал, начиная с заданного начального времени и охватывающего заданную продолжительность времени. AudioParam.cancelScheduledValues()-
Отменяет все запланированные будущие изменения значения
AudioParam. AudioParam.cancelAndHoldAtTime()-
Отменяет все запланированные будущие изменения значения
AudioParamно сохраняет его значение в заданный момент времени до тех пор, пока не будут сделаны дальнейшие изменения с помощью других методов.
Примеры
Сначала базовый пример, показывающий GainNode, у которого установлено значение gain. gain — это пример параметра a-rate AudioParam, так как значение может быть установлено по-разному для каждого кадра образца аудио.
const audioCtx = new AudioContext(); const gainNode = audioCtx.createGain(); gainNode.gain.value = 0;
Далее пример, показывающий DynamicsCompressorNode с изменёнными значениями параметров. Это примеры типов параметров k-rate AudioParam , так как значения устанавливаются для всего аудио-блока сразу.
const compressor = audioCtx.createDynamicsCompressor(); compressor.threshold.setValueAtTime(-50, audioCtx.currentTime); compressor.knee.setValueAtTime(40, audioCtx.currentTime); compressor.ratio.setValueAtTime(12, audioCtx.currentTime); compressor.attack.setValueAtTime(0, audioCtx.currentTime); compressor.release.setValueAtTime(0.25, audioCtx.currentTime);
Спецификации
| Спецификация |
|---|
| Web Audio API # AudioParam |
Совместимость браузеров
| Рабочий стол | Мобильный телефон | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
AudioParam |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | ≤37 |
automationRate |
68 | 79 | Нет | 55 | 14 | 68 | Нет | 48 | 14 | 10.0 | 68 |
cancelAndHoldAtTime |
57 | 79 | Нет | 44 | 14.1 | 57 | Нет | 43 | 14.5 | 7.0 | 57 |
cancelScheduledValues |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | ≤37 |
defaultValue |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | ≤37 |
exponentialRampToValueAtTime |
14 | 12 | 15 | 6 | 18Устанавливает целевое значение громкости в указанное время, но не выполняет плавную регулировку, что приводит к поведению функции, подобномуsetValueAtTime(). |
14 | 6 | 1.0 | ≤37 | ||
linearRampToValueAtTime |
14 | 12 | 15 | 6 | 18Устанавливает целевое значение громкости в указанное время, но не выполняет плавную регулировку, что приводит к поведению функции, подобномуsetValueAtTime(). |
14 | 6 | 1.0 | ≤37 | ||
maxValue |
52 | 79 | 53 | 39 | 6 | 52 | 53 | 41 | 6 | 6.0 | 52 |
minValue |
52 | 79 | 53 | 39 | 6 | 52 | 53 | 41 | 6 | 6.0 | 52 |
setTargetAtTime |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | ≤37 |
setValueAtTime |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | ≤37 |
setValueCurveAtTime |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | ≤37 |
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 |
См. также
© 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