AnalyserNode.getByteFrequencyData()
Метод getByteFrequencyData()
интерфейса AnalyserNode
копирует текущие данные частоты в переданный в него Uint8Array Uint8Array
(en-US) (unsigned byte array).
Данные частоты состоят из целых чисел по шкале от 0 до 255.
Каждый элемент в массиве представляет собой значение в децибелах для определённой частоты. Частоты распределены линейно от 0 до 1/2 частоты дискретизации. Например, для частоты дискретизации 48000
последний элемент массива будет представлять значение в децибелах для 24000
Гц.
Если в массиве меньше элементов, чем в AnalyserNode.frequencyBinCount
(en-US), лишние элементы удаляются. Если в нем больше элементов, чем необходимо, лишние элементы игнорируются.
Синтаксис
js
var audioCtx = new AudioContext();
var analyser = audioCtx.createAnalyser();
var dataArray = new Uint8Array(analyser.frequencyBinCount); // Uint8Array должен иметь такой же размер, что и frequencyBinCount
void analyser.getByteFrequencyData(dataArray); // заполняет Uint8Array данными, полученными из getByteFrequencyData()
Параметры
array
-
Uint8Array
(en-US) , в который будут скопированы данные частотной области. Для любого образца, который не содержит данных, значение равно-Infinity
. Если в массиве меньше элементов, чем вAnalyserNode.frequencyBinCount
(en-US), лишние элементы удаляются. Если в нем больше элементов, чем необходимо, лишние элементы игнорируются.
Возвращаемое значение
None.
Пример
Следующий пример показывает базовое использование AudioContext
для создания AnalyserNode, затем requestAnimationFrame
и <canvas>
для повторения сбора частотных данных и вывода в стиле гистограммы winamp для текущего аудиовхода. Для получения дополнительных примеров / информации ознакомьтесь с нашей демонстрацией Voice-change-O-matic (см. соответствующий код в строках app.js lines 128–205 ).
js
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var analyser = audioCtx.createAnalyser();
...
analyser.fftSize = 256;
var bufferLength = analyser.frequencyBinCount;
console.log(bufferLength);
var 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);
var barWidth = (WIDTH / bufferLength) * 2.5;
var barHeight;
var x = 0;
for(var 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();
Параметры
- array
-
Uint8Array
(en-US), в который будут скопированы данные частотной области.
Спецификации
Specification |
---|
Web Audio API # dom-analysernode-getbytefrequencydata |
Совместимость с браузерами
BCD tables only load in the browser