Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web APIs
  3. AnalyserNode
  4. getFloatTimeDomainData()

AnalyserNode: getFloatTimeDomainData() method

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨April 2021⁩.

ThegetFloatTimeDomainData() method of theAnalyserNode Interface copies the current waveform, or time-domain, data into aFloat32Array array passed into it. Each array value is asample, the magnitude of the signal at a particular time.

The waveform is represented as PCM data, which has a nominal range of -1.0 to 1.0, but values can exceed the range such as when down-mixing stereo to mono.

Syntax

js
getFloatTimeDomainData(array)

Parameters

array

TheFloat32Array that the time domain data will be copied to.If the array has fewer elements than theAnalyserNode.fftSize, excess elements are dropped. If it has more elements than needed, excess elements are ignored.

Return value

None (undefined).

Examples

The following example shows basic usage of anAudioContext to create anAnalyserNode, thenrequestAnimationFrame and<canvas> to collect time domain data repeatedly and draw an "oscilloscope style" output of the current audio input.For more complete applied examples/information, check out ourVoice-change-O-matic demo (seeapp.js lines 108–193 for relevant code).

js
const audioCtx = new AudioContext();const analyser = audioCtx.createAnalyser();// …analyser.fftSize = 1024;const bufferLength = analyser.fftSize;console.log(bufferLength);const dataArray = new Float32Array(bufferLength);canvasCtx.clearRect(0, 0, WIDTH, HEIGHT);function draw() {  drawVisual = requestAnimationFrame(draw);  analyser.getFloatTimeDomainData(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] * 200.0;    const y = HEIGHT / 2 + v;    if (i === 0) {      canvasCtx.moveTo(x, y);    } else {      canvasCtx.lineTo(x, y);    }    x += sliceWidth;  }  canvasCtx.lineTo(canvas.width, canvas.height / 2);  canvasCtx.stroke();}draw();

Specifications

Specification
Web Audio API
# dom-analysernode-getfloattimedomaindata

Browser compatibility

See also

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp