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, andsubscribereports'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.