AudioWorkletNode: свойство parameters
Базовая поддержка Широко распространена
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Только для чтения parameters свойство интерфейса AudioWorkletNode возвращает связанную AudioParamMap — то есть, коллекцию типа Map из объектов AudioParam. Они создаются во время создания базового AudioWorkletProcessor в соответствии со статическим методом parameterDescriptors.
Значение
Объект AudioParamMap, содержащий экземпляры AudioParam. Они могут быть автоматизированы так же, как и стандартные AudioNode объекты, и их вычисленные значения могут использоваться в методе process вашего AudioWorkletProcessor.
Примеры
Для демонстрации создания и использования пользовательских AudioParam мы расширим пример с страницы AudioWorkletNode. Там мы создали простой узел, который выводит белый шум. Здесь, дополнительно, мы создадим пользовательский параметр усиления, чтобы напрямую изменять громкость вывода (хотя вы также можете использовать GainNode для этого).
Сначала нам нужно определить пользовательский AudioWorkletProcessor, и зарегистрировать его. Обратите внимание, что это должно быть сделано в отдельном файле.
Мы расширим обработчик, добавив статический метод parameterDescriptors. Он будет использоваться внутренне конструктором AudioWorkletNode для заполнения его parameters созданными объектами AudioParam.
// white-noise-processor.js
class WhiteNoiseProcessor extends AudioWorkletProcessor {
static get parameterDescriptors() {
return [
{
name: "customGain",
defaultValue: 1,
minValue: 0,
maxValue: 1,
automationRate: "a-rate",
},
];
}
process(inputs, outputs, parameters) {
const output = outputs[0];
output.forEach((channel) => {
for (let i = 0; i < channel.length; i++) {
channel[i] =
(Math.random() * 2 - 1) *
(parameters["customGain"].length > 1
? parameters["customGain"][i]
: parameters["customGain"][0]);
// note: a parameter contains an array of 128 values (one value for each of 128 samples),
// however it may contain a single value which is to be used for all 128 samples
// if no automation is scheduled for the moment.
}
});
return true;
}
}
registerProcessor("white-noise-processor", WhiteNoiseProcessor);
Далее, в нашем основном файле скриптов мы загрузим обработчик, создадим экземпляр AudioWorkletNode, передав ему имя обработчика, и подключим узел к аудио графу.
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("white-noise-processor.js");
const whiteNoiseNode = new AudioWorkletNode(
audioContext,
"white-noise-processor",
);
whiteNoiseNode.connect(audioContext.destination);
Теперь мы можем изменить усиление узла так:
const gainParam = whiteNoiseNode.parameters.get("customGain");
gainParam.setValueAtTime(0, audioContext.currentTime);
gainParam.linearRampToValueAtTime(0.5, audioContext.currentTime + 0.5);
Спецификации
| Спецификация |
|---|
| Web Audio API # dom-audioworkletnode-parameters |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
parameters |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
См. также
© 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/AudioWorkletNode/parameters