A plain-English look at what turns a song into moving visuals — the FFT, frequency bands, amplitude and beat detection that drive every audio-reactive scene.
A music visualizer looks like magic: the picture breathes, pulses and flickers in perfect step with the track. Under the hood it is not magic at all — it is a short, repeating loop of measure the sound, then draw something that reflects the measurement. Once you understand the handful of measurements involved, every visualizer you have ever seen suddenly makes sense, and tuning one to your own music becomes intentional instead of trial-and-error.
This post walks through that loop from the ground up. You can follow along by opening any scene in the Novus editor and watching the numbers move as your track plays.
Sixty times a second, the app asks the browser one question: what does the audio look like right now? The answer comes back as a set of numbers — how loud the track is, how much energy sits in the bass versus the treble, and whether a beat just landed. The visualizer engine reads those numbers and maps them onto whatever it draws: the height of a bar, the radius of a ring, the speed of a particle, the brightness of a glow.
That is the whole trick. Everything else — particle fields, 3D tunnels, lyric typography — is a different way of drawing the same underlying measurements. Change the mapping and you change the personality of the scene without touching the audio math at all.
Browsers ship a built-in audio engine called the Web Audio API. When you upload a song, Novus routes it through an AnalyserNode, which runs a Fast Fourier Transform (FFT) on the signal. The FFT is the single most important idea in visualization, and it is worth a one-sentence explanation: it takes a slice of the raw waveform — just air-pressure values over time — and tells you which frequencies are present and how strong each one is.
In other words, the raw audio is a single wiggly line; the FFT turns that line into a spectrum — a row of bins running from deep bass on the left to bright treble on the right, each bin holding a loudness value. That spectrum is the raw material every engine draws from.
A full spectrum can have hundreds of bins, which is more detail than most scenes need. So engines usually collapse it into a few bands: bass (the kick and sub, roughly 20–250 Hz), mids (vocals and most instruments, ~250 Hz–4 kHz), and treble (cymbals, air and sparkle, ~4–20 kHz). Grouping this way is why a bass-heavy EDM drop makes the whole scene slam while a delicate hi-hat only tickles the edges.
See it for yourself
Load a track you know well, then watch a spectrum-style scene: the leftmost bars are your kick and bass, the rightmost are your hats and cymbals. It is the fastest way to build intuition for what each band is doing. We go deeper in the Tune Audio Reactivity tutorial.
Alongside the spectrum, engines track overall loudness. Two common measures are peak amplitude (the single loudest sample in the current slice) and RMS (root-mean-square, a smoothed average that tracks perceived loudness more gently). Peak is twitchy and great for snappy accents; RMS is calm and great for slow swells that should not jitter.
Beats are a special case. A beat is really an onset — a sudden jump in energy, usually in the bass, relative to the recent average. Detect that jump and you can fire an event: a burst of particles, a flash, a camera kick. Because a beat is defined relative to the recent average, a quiet passage and a loud passage can both register beats correctly, which is what keeps a visualizer feeling in time across a whole song.
Now the fun part. Each engine takes those measurements — per-band levels, amplitude, beat events — and maps them onto its visual parameters. The Spectrum engine maps each band to a bar height. The Particles engine maps bass to emission rate and beats to bursts. The Tunnel engine maps energy to how fast the corridor rushes past. Same inputs, wildly different outputs. This is exactly why choosing an engine matters so much, which is the subject of our companion post, Choosing the Right Visualizer Engine for Your Genre.
A few shared controls shape how the mapping feels, and every Novus engine exposes the same set. Sensitivity scales how hard the visuals respond to a given level — turn it up and quiet tracks come alive; turn it down and loud masters stop clipping into a strobe. The audio attack and release envelope decides how quickly a value is allowed to change: a slow release gives fluid, cinematic motion, while a fast attack gives sharp, percussive hits. And Beat response sets how hard the whole scene hits when a beat lands — every engine produces a visible hit on every beat, with Beat shake adding a physical frame kick on top. Everything ships with sensible defaults, and you can nudge each one in the editor to taste.
Why your visuals sometimes feel “too much”
A loud, heavily-compressed master leaves little dynamic range for the visualizer to react to, so everything pins to maximum and the motion turns into a strobe. Lower the Sensitivity a notch and lengthen the audio release — the scene calms down and the beats read more clearly.
Different music wants different settings. Bass-forward genres (EDM, hip-hop, dubstep) reward a high Beat response and a touch of Beat shake so every kick lands visibly. Acoustic and ambient tracks shine with gentler Sensitivity and a longer release so the visuals drift rather than snap. Vocal-led songs benefit from mid-band emphasis so the imagery tracks the melody. The Tune Audio Reactivity tutorial has starting points for each, and you can experiment live in the editor.
The best way to internalize all of this is to play. Open the editor, drop in a track, and browse the full engine catalog — switch between Spectrum, Particles and Tunnel on the same song and watch how identical audio produces completely different motion. If you want to hear individual frequency bands in isolation, the Audio Effects Generator is a handy sandbox. Then read From Upload to Export to turn your favorite look into a finished video.
Ready to make your own?
Open the editor, drop in a track, and export a watermark-free video — free, no account.
Open the Editor