Spec-Zone.ru › Web APIs

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.

Исключения

InvalidStateError DOMException

Бросается, если указанный массив 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 используется ближайший сосед вместо линейной интерполяции.

См. также

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

Spec-Zone.ru

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