AnalyserNode: свойство frequencyBinCount
Базовая поддержка Широко распространена
Это функция хорошо устоялась и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.
Чтение только свойство frequencyBinCount интерфейса AnalyserNode содержит общее количество точек данных, доступных для AudioContext sampleRate. Это половина значения value AnalyserNode.fftSize. Индексы двух методов имеют линейную зависимость от представляемых ими частот, от 0 до частоты Найквиста.
Значение
Целое беззнаковое число, равное количеству значений, которые AnalyserNode.getByteFrequencyData() и AnalyserNode.getFloatFrequencyData() копируют в предоставленный TypedArray.
По техническим причинам, связанным с определением быстрого преобразования Фурье, оно всегда равно половине значения AnalyserNode.fftSize. Поэтому это будет одно из 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, и 16384.
Примеры
В следующем примере показано основное использование AudioContext для создания AnalyserNode, затем requestAnimationFrame и <canvas> для многократного сбора данных частоты и отрисовки выходных данных в виде «графика-столбчатого графика» в стиле «winamp» текущего аудиовхода. Для более полных примеров/информации см. наш демонстрационный пример Voice-change-O-matic.
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 - 1;
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;
}
}
draw();
Спецификации
| Спецификация |
|---|
| Web Audio API # dom-analysernode-frequencybincount |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
frequencyBinCount |
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/frequencyBinCount