Skip to main content

Visualizer

Real-time FFT (and optional PCM) frames for building audio visualizations. Get the singleton with getVisualizer():

import { getVisualizer } from 'react-native-queue-player';

const viz = getVisualizer();

const unsubscribe = viz.subscribe(
{ fftSize: 1024, updateIntervalMs: 33 },
(frame) => {
// frame.fft is an ArrayBuffer of fftSize/2 magnitudes
},
(reason) => {
// 'hls-source' | 'visualization-disabled'
},
);

// later
unsubscribe();

Methods

subscribe(
config: VisualizerConfig,
onFrame: (frame: VisualizerFrame) => void,
onError: (reason: VisualizerErrorReason) => void,
): () => void

getSubscriberCount(): number

When the last subscriber disposes, native FFT processing stops.

Types

type VisualizerConfig = {
fftSize: 256 | 512 | 1024 | 2048;
updateIntervalMs: number;
includeSamples?: boolean; // also deliver raw PCM
};

type VisualizerFrame = {
fft: ArrayBuffer; // length fftSize / 2
samples?: ArrayBuffer; // length fftSize, when includeSamples is true
sampleRate: number;
};

Notes

  • Visualization must be enabled at configure({ visualizationEnabled: true }) (the default). Disabling it skips the audio-tap chain, and subscribe reports 'visualization-disabled'.
  • HLS sources can't be tapped; the error callback reports 'hls-source'.

In React, see useVisualizerState, which throttles frames and hands you typed Float32Arrays.