AudioParam: метод setValueCurveAtTime()
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.
Метод setValueCurveAtTime() интерфейса AudioParam планирует изменение значения параметра, следуя кривой, определенной списком значений.
Кривая представляет собой линейную интерполяцию между последовательностью значений, определенных в массиве чисел с плавающей точкой, которые масштабируются для вписывания в заданный интервал, начиная с startTime и на определенном промежутке времени.
Синтаксис
setValueCurveAtTime(values, startTime, duration)
Параметры
values-
Массив чисел с плавающей точкой, представляющий кривую значений, по которой
AudioParamбудет изменяться в течение указанногоduration. Каждое значение в массиве должно быть конечным числом; если какое-либо значение являетсяNaN,Infinity, или-Infinity, будет брошено исключениеTypeError. startTime-
Число с плавающей точкой, представляющее время (в секундах) после создания
AudioContext, в которое произойдёт изменение значения. Если это значение меньше, чемAudioContext.currentTime, оно ограниченоcurrentTime. duration-
Число с плавающей точкой, представляющее общее время (в секундах), в течение которого значение параметра
valueбудет меняться, следуя указанной кривой. Указанные значения равномерно распределены вдоль этого промежутка времени.
Возвращаемое значение
Ссылка на этот объект AudioParam. Некоторые более ранние реализации браузеров этого интерфейса возвращают undefined.
Исключения
-
InvalidStateErrorDOMException -
Бросается, если указанный массив
valuesсодержит меньше 2 элементов. RangeError-
Бросается, если указанное
startTimeотрицательное или не является конечным значением, илиdurationне является конечным, строго положительным числом. TypeError-
Бросается, если одно или несколько значений в массиве
valuesне являются конечными. Неконечные значения —NaN,Infinity, и-Infinity.
Примечания по использованию
После завершения изменения значения параметра по заданной кривой, его значение гарантированно совпадает с последним значением из набора значений, указанных в параметре values.
Примечание: Некоторые ранние реализации Web Audio API не обеспечивали этого, что приводило к непредсказуемым результатам.
Примеры
В этом примере у нас есть источник медиа с одной кнопкой (см. репозиторий webaudio-examples для исходного кода или посмотреть пример в действии.) При нажатии этой кнопки, setValueCurveAtTime() используется для изменения значения усиления между значениями, содержащимися в массиве waveArray:
// create audio context
const audioCtx = new AudioContext();
// set basic variables for example
const myAudio = document.querySelector("audio");
const valueCurve = document.querySelector(".value-curve");
// 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();
gainNode.gain.value = 0.5;
const currGain = gainNode.gain.value;
// connect the AudioBufferSourceNode to the gainNode
// and the gainNode to the destination
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// set button to do something onclick
const waveArray = new Float32Array(9);
waveArray[0] = 0.5;
waveArray[1] = 1;
waveArray[2] = 0.5;
waveArray[3] = 0;
waveArray[4] = 0.5;
waveArray[5] = 1;
waveArray[6] = 0.5;
waveArray[7] = 0;
waveArray[8] = 0.5;
valueCurve.onclick = () => {
gainNode.gain.setValueCurveAtTime(waveArray, audioCtx.currentTime, 2);
};
Спецификации
| Спецификация |
|---|
| Web Audio API # dom-audioparam-setvaluecurveattime |
Совместимость с браузерами
| Рабочие столы | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
setValueCurveAtTime |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | ≤37 |
В версиях Chrome до 46 используется ближайший сосед вместо линейной интерполяции.
См. также
© 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/setValueCurveAtTime