React to Audio
Use useAudio() to subscribe to real-time volume and frequency spectrum from system audio output.
Basic usage
import { useAudio } from "@fluxlay/react";
function Wallpaper() {
const { rms } = useAudio();
return (
<div
style={{
width: "100vw",
height: "100vh",
backgroundColor: `hsl(280, 80%, ${rms * 100}%)`
}}
/>
);
}rms is the perceived loudness in the range 0.0 – 1.0. Map it to brightness, scale, or any other visual parameter.
Render a spectrum bar visualizer
function Visualizer() {
const { spectrum } = useAudio({ numBands: 64 });
return (
<div style={{ display: "flex", alignItems: "flex-end", height: "100vh" }}>
{spectrum.map((value, i) => (
<div
key={i}
style={{
flex: 1,
height: `${value * 100}%`,
backgroundColor: `hsl(${(i / spectrum.length) * 280}, 80%, 60%)`
}}
/>
))}
</div>
);
}Adjust the band count via numBands (default is 32).
macOS permissions
On macOS, you'll be prompted to allow "Screen & System Audio Recording" the first time you use audio capture. Enable Fluxlay under System Settings > Privacy & Security > Screen Recording.
Notes
- Audio data streams at roughly 30fps.
- Returns
{ rms: 0, peak: 0, spectrum: [] }until the first sample arrives. - Only works inside the Fluxlay desktop app.
See the useAudio Reference for full API details.