AnalyserNode: свойство maxDecibels
Базовая реализация Широко поддерживается
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.
Свойство maxDecibels интерфейса AnalyserNode представляет собой значение типа double, представляющее максимальное значение мощности в диапазоне шкалирования данных анализа FFT для преобразования в значения беззнаковых байтов — по сути, это задаёт максимальное значение для диапазона результатов при использовании getByteFrequencyData().
Значение
Значение типа double, представляющее максимальное значение децибел для шкалирования данных анализа FFT, где 0 дБ соответствует максимально громкому звуку, -10 дБ — это 1/10 от этого значения и т. д. Значение по умолчанию равно -30 дБ.
При получении данных из getByteFrequencyData(), любые частоты с амплитудой maxDecibels или выше будут возвращены как 255.
Исключения
-
IndexSizeErrorDOMException -
Выбрасывается, если установлено значение, меньшее или равное
AnalyserNode.minDecibels.
Примеры
В следующем примере показано базовое использование AudioContext для создания AnalyserNode, затем requestAnimationFrame и <canvas> для многократного сбора данных о частотах и построения вывода в стиле «графика Winamp» текущего аудиоввода. Для более полных примеров и информации обратитесь к демонстрации Voice-change-O-matic (см. строки 108–193 файла app.js для соответствующего кода).
const audioCtx = new AudioContext();
const analyser = audioCtx.createAnalyser();
analyser.minDecibels = -90;
analyser.maxDecibels = -10;
// …
analyser.fftSize = 256;
const bufferLength = analyser.frequencyBinCount;
console.log(bufferLength);
const dataArray = new Uint8Array(bufferLength);
canvasCtx.clearRect(0, 0, WIDTH, HEIGHT);
function draw() {
drawVisual = requestAnimationFrame(draw);
analyser.getByteFrequencyData(dataArray);
canvasCtx.fillStyle = "rgb(0 0 0)";
canvasCtx.fillRect(0, 0, WIDTH, HEIGHT);
const barWidth = (WIDTH / bufferLength) * 2.5;
let barHeight;
let x = 0;
for (let i = 0; i < bufferLength; i++) {
barHeight = dataArray[i];
canvasCtx.fillStyle = `rgb(${barHeight + 100} 50 50)`;
canvasCtx.fillRect(x, HEIGHT - barHeight / 2, barWidth, barHeight / 2);
x += barWidth + 1;
}
}
draw();
Спецификации
| Спецификация |
|---|
| Web Audio API # dom-analysernode-maxdecibels |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
maxDecibels |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | 4.4.3 |
См. также
© 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/AnalyserNode/maxDecibels