AnalyserNode: свойство minDecibels
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.
Свойство minDecibels интерфейса AnalyserNode — это значение с плавающей точкой, представляющее минимальное значение мощности в диапазоне масштабирования данных анализа FFT для преобразования в значения без знака байта. — по сути, это определяет минимальное значение для диапазона результатов при использовании getByteFrequencyData().
Значение
Число с плавающей точкой, представляющее минимальное значение децибел для масштабирования данных анализа FFT, где 0 дБ соответствует самому громкому возможному звуку, -10 дБ — это 1/10 от этого значения и т. д. Значение по умолчанию — -100 дБ.
При получении данных от getByteFrequencyData(), любые частоты с амплитудой minDecibels или ниже будут возвращены как 0.
Примечание: Если установлено значение больше, чем AnalyserNode.maxDecibels, будет выброшено исключение INDEX_SIZE_ERR.
Примеры
Следующий пример демонстрирует базовое использование 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-mindecibels |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
minDecibels |
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/minDecibels