Spec-Zone.ru › Web APIs

Метод AudioParam: exponentialRampToValueAtTime()

Метод exponentialRampToValueAtTime() интерфейса AudioParam планирует постепенное экспоненциальное изменение значения параметра AudioParam. Изменение начинается в момент, указанный для предыдущего события, следует экспоненциальной кривой до нового значения, заданного в параметре value, и достигает нового значения в момент, указанный в параметре endTime.

Примечание: Экспоненциальные кривые считаются более полезными при изменении частот или скоростей воспроизведения, чем линейные, из-за особенностей работы слуха человека.

Синтаксис

exponentialRampToValueAtTime(value, endTime)

Параметры

value

Число с плавающей точкой, представляющее значение, к которому будет плавно изменён параметр AudioParam к указанному моменту времени.

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 возникает ошибка «недопустимая или неверная строка» — значение должно быть положительным.

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

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

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
exponentialRampToValueAtTime 14 12
25Не работает (см. ошибку 1171438 и ошибку 1567777).
15 6
18Устанавливает целевое значение громкости в указанное время, но не выполняет плавное изменение, что приводит к поведению этой функции как setValueAtTime().
25Не работает (см. ошибку 1171438 и ошибку 1567777).
14 6 1.0 ≤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/exponentialRampToValueAtTime

Spec-Zone.ru

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