AudioWorkletГлобальнаяОбласть
Базовая Широкодоступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.
Интерфейс AudioWorkletGlobalScope API Веб-аудио представляет собой глобальную среду выполнения для пользовательского кода, который определяет настраиваемые классы, производные от AudioWorkletProcessor.
Каждый BaseAudioContext имеет один AudioWorklet, доступный через свойство audioWorklet, который выполняет свой код в отдельной AudioWorkletGlobalScope.
Поскольку глобальная среда выполнения общая для текущей BaseAudioContext, можно определять любые другие переменные и выполнять любые действия, разрешенные в модулях работы, кроме определения классов, производных от AudioWorkletProcessor.
Свойства экземпляра
Этот интерфейс также наследует свойства, определенные в родительском интерфейсе WorkletGlobalScope.
-
currentFrameТолько для чтения -
Возвращает целое число, представляющее постоянно увеличивающийся текущий образец кадра блока аудиосигнала, обрабатываемого в данный момент. Он увеличивается на 128 (размер кванта рендеринга) после обработки каждого блока аудиосигнала.
-
currentTimeТолько для чтения -
Возвращает значение с плавающей точкой, представляющее постоянно увеличивающееся время контекста блока аудиосигнала, обрабатываемого в данный момент. Оно равно свойству
currentTimeBaseAudioContext, к которому принадлежит модуль работы. -
sampleRateТолько для чтения -
Возвращает число с плавающей точкой, представляющее частоту дискретизации связанного
BaseAudioContext.
Методы экземпляра
Этот интерфейс также наследует методы, определенные в родительском интерфейсе WorkletGlobalScope.
registerProcessor()-
Регистрирует класс, производный от интерфейса
AudioWorkletProcessor. Затем этот класс можно использовать, создавAudioWorkletNode, передав его зарегистрированное имя.
Примеры
В этом примере мы выводим все глобальные свойства в консоль в конструкторе пользовательского AudioWorkletProcessor.
Сначала нам нужно определить обработчик и зарегистрировать его. Обратите внимание, что это должно быть сделано в отдельном файле.
// AudioWorkletProcessor defined in : test-processor.js
class TestProcessor extends AudioWorkletProcessor {
constructor() {
super();
// Logs the current sample-frame and time at the moment of instantiation.
// They are accessible from the AudioWorkletGlobalScope.
console.log(currentFrame);
console.log(currentTime);
}
// The process method is required - output silence,
// which the outputs are already filled with.
process(inputs, outputs, parameters) {
return true;
}
}
// Logs the sample rate, that is not going to change ever,
// because it's a read-only property of a BaseAudioContext
// and is set only during its instantiation.
console.log(sampleRate);
// You can declare any variables and use them in your processors
// for example it may be an ArrayBuffer with a wavetable
const usefulVariable = 42;
console.log(usefulVariable);
registerProcessor("test-processor", TestProcessor);
Далее, в главном файле скриптов мы загрузим обработчик, создадим экземпляр AudioWorkletNode — передав ему имя обработчика — и подключим узел к аудиографике. Мы должны увидеть вывод вызовов console.log() в консоли:
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const testNode = new AudioWorkletNode(audioContext, "test-processor");
testNode.connect(audioContext.destination);
Спецификации
| Спецификация |
|---|
| API Веб-аудио # AudioWorkletГлобальнаяОбласть |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
AudioWorkletGlobalScope |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
currentFrame |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
currentTime |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
registerProcessor |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
sampleRate |
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/AudioWorkletGlobalScope