Spec-Zone.ru › Web APIs

AnalyserNode: свойство fftSize

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Свойство fftSize интерфейса AnalyserNode — это значение типа unsigned long и представляет размер окна в выборках, используемый при выполнении быстрого преобразования Фурье (FFT) для получения данных частотной области.

Значение

Целое беззнаковое число, представляющее размер окна FFT, заданное в количестве выборок. Большее значение приведет к большей детализации в частотной области, но меньшей детализации в амплитудной области.

Должно быть степенью двойки от 25 до 215, то есть одним из: 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, и 32768. По умолчанию 2048.

Исключения

IndexSizeError DOMException

Выбрасывается, если заданное значение не является степенью двойки или находится вне допустимого диапазона.

Примеры

В следующем примере показано базовое использование AudioContext для создания AnalyserNode, а затем requestAnimationFrame и <canvas> для многократного сбора данных временной области и отображения выходных данных в стиле "осциллографа" текущего аудиовхода. Более полные примеры/информация см. в нашем демо Voice-change-O-matic (см. строки 108–193 в app.js для соответствующего кода).

const audioCtx = new AudioContext();
const analyser = audioCtx.createAnalyser();

// …

analyser.fftSize = 2048;
const bufferLength = analyser.frequencyBinCount;
const dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);

// draw an oscilloscope of the current audio source

function draw() {
  drawVisual = requestAnimationFrame(draw);

  analyser.getByteTimeDomainData(dataArray);

  canvasCtx.fillStyle = "rgb(200 200 200)";
  canvasCtx.fillRect(0, 0, WIDTH, HEIGHT);

  canvasCtx.lineWidth = 2;
  canvasCtx.strokeStyle = "rgb(0 0 0)";

  canvasCtx.beginPath();

  const sliceWidth = (WIDTH * 1.0) / bufferLength;
  let x = 0;

  for (let i = 0; i < bufferLength; i++) {
    const v = dataArray[i] / 128.0;
    const y = (v * HEIGHT) / 2;

    if (i === 0) {
      canvasCtx.moveTo(x, y);
    } else {
      canvasCtx.lineTo(x, y);
    }

    x += sliceWidth;
  }

  canvasCtx.lineTo(canvas.width, canvas.height / 2);
  canvasCtx.stroke();
}

draw();

Спецификации

Спецификация
Web Audio API
# dom-analysernode-fftsize

Совместимость с браузерами

Десктопные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
fftSize 14 12 25 15 6 18 25 14 6 1.0 4.4.3

См. также

  • Использование Web Audio API

© 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/fftSize

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API