Метод AudioParam: exponentialRampToValueAtTime()
Метод exponentialRampToValueAtTime() интерфейса AudioParam планирует постепенное экспоненциальное изменение значения параметра AudioParam. Изменение начинается в момент, указанный для предыдущего события, следует экспоненциальной кривой до нового значения, заданного в параметре value, и достигает нового значения в момент, указанный в параметре endTime.
Примечание: Экспоненциальные кривые считаются более полезными при изменении частот или скоростей воспроизведения, чем линейные, из-за особенностей работы слуха человека.
Синтаксис
exponentialRampToValueAtTime(value, endTime)
Параметры
Возвращаемое значение
Ссылка на объект AudioParam. В некоторых браузерах более ранние реализации этого интерфейса возвращают undefined.
Примеры
В этом примере используется источник медиа с двумя кнопками управления (обратитесь к репозиторию audio-param для исходного кода или к живому примеру). При нажатии этих кнопок используется exponentialRampToValueAtTime(), чтобы плавно изменять значение усиления до 1.0 и обратно до 0 соответственно. Это очень полезно для эффектов плавного включения/выключения:
// create audio context
const audioCtx = new AudioContext();
// set basic variables for example
const myAudio = document.querySelector("audio");
const expRampPlus = document.querySelector(".exp-ramp-plus");
const expRampMinus = document.querySelector(".exp-ramp-minus");
// Create a MediaElementAudioSourceNode
// Feed the HTMLMediaElement into it
const source = audioCtx.createMediaElementSource(myAudio);
// Create a gain node and set its gain value to 0.5
const gainNode = audioCtx.createGain();
// connect the AudioBufferSourceNode to the gainNode
// and the gainNode to the destination
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// set buttons to do something onclick
expRampPlus.onclick = () => {
gainNode.gain.exponentialRampToValueAtTime(1.0, audioCtx.currentTime + 2);
};
expRampMinus.onclick = () => {
gainNode.gain.exponentialRampToValueAtTime(0.01, audioCtx.currentTime + 2);
};
Примечание: В последней функции использовалось значение 0.01 для плавного изменения до нуля, а не 0, так как при использовании 0 возникает ошибка «недопустимая или неверная строка» — значение должно быть положительным.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
exponentialRampToValueAtTime |
14 | 12 | 15 | 6 | 18Устанавливает целевое значение громкости в указанное время, но не выполняет плавное изменение, что приводит к поведению этой функции какsetValueAtTime(). |
14 | 6 | 1.0 | ≤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/exponentialRampToValueAtTime