TRY MOSH-LITE
GET MOSH-PRO

Building Music Visualizers

Audio-reactive effects that move with the music. The same technique covers YouTube track visualizers, short social clips, podcast videos and live VJ sets that respond to whatever is playing in the room.

What We Are Building

Let's build a YouTube music visualizer with Mosh-Pro. One preset, one track: a video clip underneath, a bar visualizer, a logo and a caption. Every part of it reacts to the audio rather than looping on a timer.

Load the Base Media First

The base media is whatever the effects run on top of - a still image, or a short video loop that keeps moving under the effects. For this demo we are using a video loop timed to the bar length of the music, but it can just as easily be a still image or any loop at all - the effects are what keep it interesting over time, not the footage.

Change the dimensions at any time with Settings → Export: a piece usually ships twice, 1920 × 1080 for YouTube and 1080 × 1920 for Reels, TikTok and Shorts. Uncheck Maintain Aspect Ratio to type an arbitrary pair - an Instagram feed post is 1080 × 1350, and a square is 1080 × 1080.

Mosh-Pro resizes effects and media to match the export size, so one preset covers every format. Aspect ratio changes are the exception: a layout balanced for a wide frame rarely lands the same way in a tall one, so you might need to scale some elements with the Transform effect.

Export at 60fps. At 30fps a kick can land up to 33ms late, which reads as loose. 60fps halves that. Settings → Export → Frame Rate.
The preset exported at 1920 by 1080 for YouTube
1920 × 1080 - the YouTube cut.
The same preset exported at 1080 by 1920 for Reels
1080 × 1920 - the Reels cut. Watch it as a Short.

Load the Audio

With the base media in, the audio is next - it drives everything, so set it before you add any effects. Settings → Audio → Audio Input has three sources:

Videothe input clip's own audio track.
Filean external MP3, WAV, M4A, OGG or FLAC. Overrides the video's audio.
Miclive input. The Export button becomes Record.
The Audio tab of the Settings panel
  • Gain scales how hard the input pushes the modulators - up for a quiet master, down when everything is pinned at maximum.
  • Smoothing sets how fast levels can change: high for slow swells, low for sharp per-beat hits. It makes much of the difference between a visualizer that feels tight and one that feels mushy.
  • Audio Start plus the export duration pulls a loop from the middle of a track.

Audio Modulators

A modulator drives an effect parameter over time instead of holding a fixed value. Click the sine-wave button beside any slider, set Type to audio, and that parameter follows the input volume. Freq picks which part of the spectrum it listens to:

alloverall level. Everything moves together.
lowthe kick. For anything that should punch on the beat.
midmelody and vocal. Slower movement.
hihats and cymbals. Fast and sparkly.
custa band you draw yourself.

Custom Frequency Bands

The named bands are broad. To catch one element - a synth stab, the snare and not the kick - set Freq to cust and drag a rectangle across the spectrum below.

The box is the band being listened to. Watch the Amount handle above jump as peaks cross into it - that number is what reaches the effect.

Horizontal position and width pick the frequency range. Vertical position and height set the amplitude window - the loudness range that maps onto Min and Max. Narrow it vertically and the modulator ignores everything until a sound crosses a threshold.

Right-click the modulator button to copy and paste a modulator between parameters.

Min and Max set the range the parameter travels. Left at 0 to 1, most effects will blow out at the top of the range - the Bulge here runs 0 to 0.37, so the frame breathes on the beat.

BPM Timing

Audio modulators react to the track. The rest - sine, bounce, step, noise - run on their own loop clock, which by default runs on a 4 second loop. To sync to the BPM, turn on Settings → General → BPM and that clock becomes one bar: 2.0 seconds at 120 BPM.

Synching bulge and jitter to BPM time.
The BPM row of the Settings General tab, enabled at 120

Type the BPM in, or click BPM Tap on each beat - eight taps gets close. Stop for two seconds and the next tap starts a fresh count. To read the tempo from live audio try this BPM tracker. To check you have it right, watch the two dots beside the BPM field while the track plays.

Bounce is the shape to reach for once the clock is locked to the bar. It snaps up fast and eases back down, which is the shape a hit actually has - the attack lands on the beat and the tail decays before the next one,

Same effect and timing with 4 different modulator shapes.
bouncehits on the beat and decays before the next one.
sinesways through the beat instead of landing on it.
linearramps up and snaps back to the start. A sawtooth.
noisea smooth random wander, never the same twice.
BPM sync only affects modulators with Loop checked. Unchecked, a modulator spreads across the whole export duration instead - right for a slow drift, wrong for anything that should hit on the beat. See Modulator Speed.

Switching Effects On the Bar

A step modulator only outputs 0 or 1. Put one on an effect's Amount with Loop checked and the effect snaps in and out in time rather than fading. One step is a whole on-then-off - Speed sets how many of those fit in a bar.

Speed 0.25one step per bar - two beats on, two off. The slowest useful setting.
Speed 0.5one step every two beats.
Speed 1one step per beat.
Speed 2two steps per beat - eighth notes. Strobing rather than switching.
A step modulator on a Caption's Opacity at Speed 0.25 - one step per bar, four bars at 120 BPM. Sound on: it snaps on the click.
To flip which half is on, set the modulator's Min to 1 and Max to 0. This inverts the pattern without touching Speed - the effect now lands where the gap was.

You can use a similar technique to randomize params in time to the beat. Use a rand modulator with Loop checked. At Speed 0.25 you get a new value per bar.

Tile with Size and Offset both on rand at Speed 0.25. The layout rerolls on the downbeat and then holds for the whole bar - nothing drifts in between.

Keyframes for Verse and Chorus

A short clip works with one look, but a longer track wants some variety. Use the keys type to manually enter keyframes. Switch between 0 and 1 on a group's Opacity to toggle the whole group.

A keys modulator on a group's Opacity, stepping between 0 and 1
Square corners cut on the bar; sloped ones fade a section in over a build.

Build one group per section - heavy glitch for the chorus, restrained for the verse - and keyframe their opacities as mirror images so one hands over to the other.

For more control, work in the Expanded Keyframe Editor under the preview rather than the small one on the modulator itself. Click the expand button on any keyframed modulator to open it. This allows you to easily switch between all keyframed effects and to move the playhead. Right-click to copy all keys to a different effect.

The Expanded Keyframe Editor in use - switching between parameters in the side list, and shaping a curve against the preview.

The Audio Visualizer Effect

Everything so far modulates other effects. The Audio Visualizer draws the audio itself - a bar spectrum rendered into the frame, no modulator needed.

  • Bar Count runs 20 to 200 - high counts read as a smooth spectrum, low ones as chunky blocks that hold their shape under other effects.
  • Mirror reflects around the centre.
  • Radial wraps the spectrum into a ring pointing outward from the centre, which suits a central logo. Mirror keeps the ring symmetrical.
  • Edge Damp pulls the outer bars down so the shape tapers.
  • Color 1-3 are the gradient, low to high.
The Audio Visualizer as single-sided bars The Audio Visualizer in radial mode, mirrored, wrapped around an empty centre The Audio Visualizer as chunky mirrored bars The Audio Visualizer as a high-count mirrored spectrum rotated upright
Variations on the Audio Visualizer including a 3D transform.

The visualizer on its own is a plain block of bars. Put it in a group with Isolate Effects checked and you can stack effects on the bars alone, leaving the footage underneath untouched.

The Whole Stack, Top to Bottom

Here is the preset from this visualizer in full. Effects run top to bottom, so each one sees the result of everything above it.

The Mosh-Pro window with the full preset stack in the effects panel
Audio Fade a Color Correction sitting on the base video, with Brightness on an audio modulator reading the mids and travelling 0.3 to 0.5. The footage itself breathes with the track before anything is drawn on top of it.
Av Bars a group with its own stack inside - Audio Visualizer, Transform, Bulge, Glow, Rainbow, Feedback. Isolate Effects is on, so all of that lands on the bars and leaves the footage alone.
Kaleido, Wobble, Mirror extra interest, off for most of the track. Each one is keyframed to drop in at a particular point and back out again, so the look changes without the preset changing.
Strobe keyframed to ramp up into the drops. Use it sparingly - it is the loudest thing in the stack and stops reading as an event if it is on all the time.
Logo a second isolated group: the logo image, a Luma Mesh, a Glow, a bounce Bulge and an RGB Shift, in that order. Keyframed in and out against the bars.
Caption last, so nothing distorts it - the track credit, bottom left, at 0.62 opacity.

Dynamic Brightness

The Audio Fade effect at the top is a great way to make the base layer feel reactive. One Color Correction effect with an audio modulator on Brightness makes the whole frame lift and settle with the music, so everything drawn over it is sitting on something that is already moving.

Audio Fade off. The footage just plays.
Audio Fade on, same five seconds. It sits darker and lifts on the audio.

Keep it light. The range here is 0.3 to 0.5 - a fifth of the slider - and on the mid band rather than the lows, so it swells on the body of the track instead of snapping on every kick. It should read like the lighting in the room breathing, not like a flicker effect. Turn it off and on a few times while the track plays: most people cannot say what changed, but the version without it looks flat.

Logo Group

The logo group uses the Luma Mesh effect on a PNG to give a gentle 3D tilt, as if it were a card turning in space rather than a flat image pasted on the frame. This is combined with a Bulge effect on the beat to make it bounce. In addition we use subtle RGB Shift and Glow effects. We then use keyframed group opacity to drop the logo in and out of the track.

The logo group on its own, everything else switched off. The tilt is the Luma Mesh; the pulse on the beat is the bounce Bulge under it.

The tilt gives it constant movement, the BPM bounce keeps it in time, and the keyframes give it structure. Any one on its own gets boring; together they carry four minutes.

Extra Interest

To give more visual interest over time, we have 4 extra effects on the base layer that drop in and out via keyframes. The Strobe effect is used sparingly and ramps up during drops.

Kaleido folds the frame into a rotating star. Sides is on a slow random, so the fold count changes on the bar.
Wobble ripples the whole picture. Subtle on its own, and enough to stop a held shot feeling static.
Mirror reflects one half onto the other. Its Side is on a linear loop, so the axis travels.
Strobe, at Speed 8. Click to play - this one flashes hard and is keyframed to fire only into the drops.

Try it Out

Take the preset and try it out. Download av-guide-2.pmpreset, drop it into your presets folder - Main Menu → Presets → Open Presets Folder - and pick it from the Preset dropdown. Everything on this page is in it. A preset holds the effects and their modulators, not the media, so five things are yours to supply:
  • audio track, under Settings → Audio
  • base media - the image or loop it all runs on
  • the BPM of your track, under Settings → General, or the keyframed sections will not line up
  • a logo image, in the Media effect inside the logo group
  • your own caption text, in the Caption effect at the bottom of the stack

Live VJing with Mosh-Pro

Point the audio input at a mic and the same modulators react to whatever is in the room - visuals behind a live band or DJ, moving with what the room hears rather than a cued timeline. Use an external webcam to mosh a live feed of the performer or the crowd.

Where it ends up: a projection, a room, and nobody looking at a laptop.

MIDI Control

Set a modulator's Type to midi, click Learn, and move a knob. Knobs and sliders map across the parameter's full range; keys use note velocity.

MIDI works in Live mode only - it is not recorded into an export, so record a set with OBS. Driving it from a DAW on the same machine needs MIDI routed back into the system first - on macOS, Audio MIDI Setup. See MIDI Modulators.

Using MIDI control to drive Tile parameters in real time - Size and Offset on two faders, changing while the clip plays.

You do not need much hardware. Pick up a MIDI controller for around $50 - the KORG nanoKONTROL2 is a nice slim one, and what is in the clip above.

Key Commands

Cmd-1 … Cmd-9jump to the first nine presets. Order them the way you intend to play them.
Cmd-→ / Cmd-←next and previous preset.
Cmd-Rrandom preset - a useful panic button.
Cmd-MMosh: randomize the current effect values.
Cmd-Ddisable all effects. The kill switch.
Cmd-Ppop the preview out into its own window.

Preset folders keep set lists apart, so a folder per gig means Cmd-1 through Cmd-9 always land on the right nine.

Working the Dynamics

Ride the room's brightness with the audio. Put a Color Correction at the very bottom of the effect list and give its Brightness an audio modulator. Brightness 0 is neutral and −1 is black, so roughly Min −0.6 to Max 0 darkens the picture through quiet passages and lets it back up on loud ones - which gives the drop somewhere to go.

Strobe is a good one to save for the drop. Keep it on a MIDI knob or a key so you can bring it in on the one and take it straight back out. A few bars goes a long way.

Sending It to a Projector

Cmd-P pops the preview into its own window. Drag it onto the projector or second display and run it full screen, and the effect list, presets and modulators stay on the laptop. Turn on Settings → General → Preview → Always On Top so it cannot slip behind the app.

Working with Other VJ Apps

To feed a VJ rig, turn on Settings → General → Send to Spout/Syphon and Mosh-Pro publishes as a live video source to Resolume, VDMX, TouchDesigner or anything else reading Spout or Syphon.

Going the other way, to pull another VJ app into Mosh-Pro, push its output to a virtual webcam and pick that up in Settings → General → Web Cam.

Mosh-Pro publishing over Syphon with Resolume taking the feed as a live source
Mosh-Pro to Resolume via Syphon

Where to Take It

Any parameter of any effect takes an audio modulator, so none of this is specific to the effects used here - the effect reference is 67 deep and every slider can be driven by the track.

Put the wild stuff in a group and keep it switched off for most of the track - Data Mosh, Hard Glitch, Pixel Sort, Slit Scan - then let the drop fire it.

Use the Media effect to load in abstract geometric loops over the base layer. Use a WEBM with alpha, or set Blend Mode to additive and the black drops out on its own.

Making everything audio-reactive is easy. The problem is that when everything moves at once, nothing stands out and the frame just churns. Use a light touch by switching out effects over time and by pulling Min and Max into a narrow range so the parameter moves a little rather than slamming end to end.

Have Fun!

Above all, have fun with it. Hit the Mosh button to turn up combinations you would never reach on purpose - lock the parts you want to keep, then mosh the rest.

If you need inspiration, check out the #share-your-creations channel on our Discord, and these audio-reactive examples by flashmemories.

© 2026 Airtight Interactive