๐ก Concepts (why it's built this way)
A quick look at why VJam works this way ๐ก Understanding the setup makes you faster at using it.
๐ฅ Dual engines (two visual engines)
VJam runs two visual engines:
- MilkDrop (~945) ๐ flashy WebGL visuals that react beautifully to sound โ the classic music visualizer
- p5.js (~426) ๐ free-form visuals drawn by code (shapes, particles, 3D, shaders)
Why two? ๐ MilkDrop creates the swirling base, and p5 adds effects on top. So it's not one flat image โ it's a visual that builds up live. Together, that's 1,300+ presets ๐จ
The controls match that setup ๐ tap = add a p5 on top / swipe = swap the MilkDrop base. So you can change things up mid-set without blowing up the whole look (โ ๐จ Presets chapter).
๐ฑ Decks are independent
- Deck A and B each have their own engine (changing one doesn't affect the other)
- The crossfade is an opacity blend (overlaying and mixing the two)
- That's what lets Deck A and B keep separate states while you move between them with the fader (โ ๐ฑ Deck chapter)
๐ซง Visuals you can feel โ designing the sound reaction
- VJam's visuals aren't meters and numbers โ they're built for reactions you can feel instantly: bursts on the beat, pulsing, shifting color
- So you can tell at a glance that it's locked to the music
- Preset authoring details are kept in the internal developer documentation.
๐๏ธ Modulation (drive parameters with sound)
- You can tie a preset's parameters (size, speed, color, etc.) to the sound automatically
- In the Cockpit parameter panel, tap a purple chip (Mod) to bind a source ๐
bass / mid / treble / rms / strength / beatPulse / bpm - Example: bind "particle size" to bass โ the particles pop bigger on the kick ๐ฅ
- That replaces static visuals with ones that breathe with the music
๐ Related
- Stack presets in practice โ ๐จ Presets
- Learn deck control โ ๐ฑ Deck A/B
- Feed audio and check reaction โ ๐ Audio input
- Check terminology โ ๐ Glossary
- Look up controls only โ ๐ Reference