# Novus Visualizers > A free, browser-based visual-effects workstation for music. 29 audio-reactive engines and 180 editable modes render and export entirely on the visitor's own machine. No subscription, no billing, no watermark, no export quota. An account is optional and is only needed for durable cloud saves, private assets and community features. ## What it does - Music visualizers from an uploaded audio file, in a guided editor (https://sonicweaver.com/editor) or a node-graph workstation (https://sonicweaver.com/studio). - Lyric videos (https://sonicweaver.com/lyric-videos), cover art and Spotify Canvas loops (https://sonicweaver.com/albums), stream overlays (https://sonicweaver.com/overlays), and audio effects (https://sonicweaver.com/audio-effects). - Rendering, audio analysis, beat detection and video export all run client-side in the browser. Exports belong to the person who made them and carry no attribution requirement. ## Engines - [Particles](https://sonicweaver.com/templates/particles): 7 modes (Dust Storm, Waterfall, Starfield, Fountain Burst, Orbit Swarm, Constellation, Firefly Drift). Docs: https://sonicweaver.com/help/visualizers/particles - [Trails](https://sonicweaver.com/templates/trails): 6 modes (Comet Shower, Ribbon Flow, Snake/Braid, Orbit Trace, Flow Field, Echo Streaks). Docs: https://sonicweaver.com/help/visualizers/trails - [Bloom](https://sonicweaver.com/templates/bloom): 6 modes (Petal Bloom, Ink Diffusion, Cellular Growth, Vine/Mycelium, Crystal Growth, Ripple Blossom). Docs: https://sonicweaver.com/help/visualizers/bloom - [Character Motion](https://sonicweaver.com/templates/character-motion): 6 modes (Glyph Field, Word Wave, ASCII Cascade, 2D Puppet, 3D Performer, Crowd/Clone). Docs: https://sonicweaver.com/help/visualizers/character-motion - [Radial](https://sonicweaver.com/templates/radial): 7 modes (Pulse Orb, Concentric Rings, Mandala, Sunburst, Orbit Halo, Logo Crown, Glow Ring). Docs: https://sonicweaver.com/help/visualizers/radial - [Spectrum](https://sonicweaver.com/templates/spectrum): 6 modes (Line Spectrum, Mirrored Area, Ribbon Surface, Spectrogram Waterfall, Frequency Ridge, Spectral Mesh). Docs: https://sonicweaver.com/help/visualizers/spectrum - [Bars](https://sonicweaver.com/templates/bars): 7 modes (Linear Equalizer, Center Mirror, Stacked Bands, Radial Bars, 3D Columns, Piano/Step Grid, Classic Studio). Docs: https://sonicweaver.com/help/visualizers/bars - [Tunnel](https://sonicweaver.com/templates/tunnel): 6 modes (Concentric Rings, Corridor Grid, Warp Field, Spectrum Tube, Waveform Tube, Particle Vortex). Docs: https://sonicweaver.com/help/visualizers/tunnel - [Waveform](https://sonicweaver.com/templates/waveform): 6 modes (Line, Mirrored, Filled, Ribbon, Oscilloscope/Lissajous, 3D Surface). Docs: https://sonicweaver.com/help/visualizers/waveform - [Logo](https://sonicweaver.com/templates/logo): 7 modes (Waveform Ring, Spectrum Halo, Orbiting Bars, Particle Aura, Pulse Frame, Kinetic Reveal, Vinyl Spin). Docs: https://sonicweaver.com/help/visualizers/logo - [Lattice](https://sonicweaver.com/templates/lattice): 6 modes (Kaleidoscope, Tessellation, Wire Polyhedron, Isometric Grid, Truss Web, Prism Stack). Docs: https://sonicweaver.com/help/visualizers/lattice - [Terrain](https://sonicweaver.com/templates/terrain): 6 modes (Ridge Lines, Wire Mesh, Contour Map, Canyon Scroll, Dune Field, Peak Silhouette). Docs: https://sonicweaver.com/help/visualizers/terrain - [Stage Lights](https://sonicweaver.com/templates/stage): 7 modes (Beam Fan, Laser Sweep, Spot Rig, Par Wall, Strobe Bars, Follow Spot, Haze Rays). Docs: https://sonicweaver.com/help/visualizers/stage - [Harmonic Constellation](https://sonicweaver.com/templates/harmonic-constellation): 6 modes (Peak Stars, Harmonic Web, Transient Flare, Parallax Drift, Chroma Halo, Comet Persistence). Docs: https://sonicweaver.com/help/visualizers/harmonic-constellation - [Chladni Resonance Plate](https://sonicweaver.com/templates/chladni-plate): 6 modes (Sand Scatter, Nodal Lines, Square Plate, Circular Plate, Metal Sheen, Mode Lock). Docs: https://sonicweaver.com/help/visualizers/chladni-plate - [Voronoi Stained Glass](https://sonicweaver.com/templates/voronoi-glass): 6 modes (Cell Bloom, Lead Came, Shatter Split, Band Cells, Glow Harmony, Print Still). Docs: https://sonicweaver.com/help/visualizers/voronoi-glass - [Procedural Night City](https://sonicweaver.com/templates/night-city): 6 modes (Skyline Bands, Window Field, Traffic Trails, Sign Flicker, Rain Parallax, Rooftop Pan). Docs: https://sonicweaver.com/help/visualizers/night-city - [Spectral Topography](https://sonicweaver.com/templates/spectral-topography): 6 modes (Heat Ribbon, Contour Lines, Iso Bands, Ridge Plot, Wire Relief, Flyover). Docs: https://sonicweaver.com/help/visualizers/spectral-topography - [Fluid Ink Feedback](https://sonicweaver.com/templates/fluid-ink): 6 modes (Ink Bloom, Dye Injection, Curl Swirl, Filament Detail, Dissipation Veil, Marble Fold). Docs: https://sonicweaver.com/help/visualizers/fluid-ink - [Arrangement Tunnel](https://sonicweaver.com/templates/arrangement-tunnel): 6 modes (Section Rings, Beat Rungs, Energy Profile, Marker Gates, Look-Ahead Map, Structure Ribbon). Docs: https://sonicweaver.com/help/visualizers/arrangement-tunnel - [Cover-Art Relief](https://sonicweaver.com/templates/cover-art-relief): 6 modes (Depth Emboss, Lateral Wave, Shimmer Grain, Contour Slice, Parallax Tilt, Flat Safe). Docs: https://sonicweaver.com/help/visualizers/cover-art-relief - [Kinetic Lyric Typescape](https://sonicweaver.com/templates/kinetic-typescape): 7 modes (Word Pop, Line Slide, Depth Stack, Karaoke Fill, Scatter Settle, Static Readable, Typewriter). Docs: https://sonicweaver.com/help/visualizers/kinetic-typescape - [Stereo Phase Garden](https://sonicweaver.com/templates/stereo-phase-garden): 6 modes (Mirror Stems, Petal Bloom, Orbit Seeds, Phase Warning, Width Canopy, Mono Safe). Docs: https://sonicweaver.com/help/visualizers/stereo-phase-garden - [Horizon Scenes](https://sonicweaver.com/templates/horizon-scenes): 6 modes (Coastal Sunset, Synthwave Drive, Desert Dusk, Mountain Lake, Neon Harbor, Moonlit Sea). Docs: https://sonicweaver.com/help/visualizers/horizon-scenes - [Disco](https://sonicweaver.com/templates/disco-lights): 6 modes (Mirror Ball, Light Rays, Dance Floor, Glitter Rain, Spotlight Haze, Roller Rink). Docs: https://sonicweaver.com/help/visualizers/disco-lights - [Liquid](https://sonicweaver.com/templates/liquid-flow): 6 modes (Mesh Gradient, Droplets, Lava Lamp, Chrome Blob, Oil Slick, Aurora Silk). Docs: https://sonicweaver.com/help/visualizers/liquid-flow - [Portal](https://sonicweaver.com/templates/portal-rings): 6 modes (Neon Portal, Star Gate, Wormhole, Hex Gate, Eclipse Ring, Rift). Docs: https://sonicweaver.com/help/visualizers/portal-rings - [Now Playing](https://sonicweaver.com/templates/now-playing): 6 modes (Elegant Circle, Classic Player, Vinyl Sleeve, Minimal Card, Blurred Cover, Polaroid). Docs: https://sonicweaver.com/help/visualizers/now-playing - [Sketchbook](https://sonicweaver.com/templates/sketchbook): 6 modes (Pencil Lines, Ink Doodles, Charcoal Rings, Notebook Grid, Scribble Bars, Blueprint). Docs: https://sonicweaver.com/help/visualizers/sketchbook ## Start here - [Home](https://sonicweaver.com/): what the product is. - [Features](https://sonicweaver.com/features): capability overview. - [Templates](https://sonicweaver.com/templates): one page per engine, with its modes. - [Compare](https://sonicweaver.com/compare): any two engines driven by one bundled loop from a single analyser frame, plus the same project shown in the guided Classic editor and in the Studio node workstation. Both selections are URL-synced (`?a=engine:mode&b=engine:mode&track=`), so a comparison is a shareable link. - [Quick setup](https://sonicweaver.com/quick-setup): the shortest path from an audio file to an export. - [Help centre](https://sonicweaver.com/help): 6 reference articles. - [Glossary](https://sonicweaver.com/glossary): 45 definitions for the vocabulary this product uses (FFT, onset, beat grid, envelope, deterministic export, alpha channel) each with a stable anchor of the form https://sonicweaver.com/glossary#slug. - [Tutorials](https://sonicweaver.com/tutorials): 13 step-by-step guides. - [Blog](https://sonicweaver.com/blog): 72 articles on visualizer craft. - [Changelog](https://sonicweaver.com/changelog): release history. - [Tool map](https://sonicweaver.com/tool-map): 91 destinations grouped by purpose, the human-readable index of the whole site. ## Policies and provenance - [Accessibility](https://sonicweaver.com/accessibility): what is implemented, what is tested, and what is not done yet. - [Editorial policy](https://sonicweaver.com/editorial-policy): review, sources, corrections, AI assistance, and the explainer cluster around https://sonicweaver.com/glossary and https://sonicweaver.com/help/visualizers. - [AI and crawler access](https://sonicweaver.com/ai-policy): the human-readable half of robots.txt, listing every AI agent this site names, why the two groups are treated differently, and what the site asks of an agent that quotes it. - [Languages](https://sonicweaver.com/languages): which locales this host actually renders, and which of the estate's 5 shared locales are not translated here yet. - [Security](https://sonicweaver.com/security): response headers, ad-free and cross-origin-isolated routes, stated limits, and how to report a vulnerability (visualizers@novusstreamsolutions.com). - [Press kit](https://sonicweaver.com/press-kit): naming, logo use, boilerplate and licensing summary. - [System status](https://sonicweaver.com/status): which subsystems can be affected by a server incident and which cannot. - [Social accounts](https://sonicweaver.com/social): every official Novus Stream Solutions profile, the same list this site publishes as the publisher Organization's sameAs. - [Privacy](https://sonicweaver.com/privacy) · [Terms](https://sonicweaver.com/terms) · [Cookies](https://sonicweaver.com/cookies) · [Community guidelines](https://sonicweaver.com/community-guidelines) ## Other apps by the same publisher Different hosts, same publisher. The tools are free, browser-only and need no account, and nothing is uploaded; Novus Restaurant is a published data site rather than a browser tool. The apex site (https://novusstreamsolutions.com) owns the cross-host sitemap index and the full roster. - [Novus Convert](https://convert.novusstreamsolutions.com): Convert and compress audio, video and images in the browser. The tool to reach for when a track arrives in a format the editor will not open, or when a finished export needs to be smaller before upload. - [NSS Background Remover](https://bgremover.novusstreamsolutions.com): Cut out backgrounds and upscale images locally. Useful for preparing a logo, an artist photo or a cover image before it becomes a layer in a visualizer. - [Novus Examples](https://examples.novusstreamsolutions.com): Generated sample files with exact spec sheets, including audio and video in specific codecs and containers, for testing an import or an export path without risking a real track. - [Novus PDF Studio](https://pdf.novusstreamsolutions.com): Merge, split, sign and compress PDFs in the browser. Same no-upload, no-account model as this site. - [Novus Learn](https://learn.novusstreamsolutions.com): Turn an article, paper, video or textbook into cited study material and quizzes. - [Novus AI Stats](https://aistats.novusstreamsolutions.com): Track and analyse what you build with AI, local-first. - [Novus Striker](https://striker.novusstreamsolutions.com): Arcade soccer that runs entirely in a browser tab. - [Novus Restaurant](https://restaurant.novusstreamsolutions.com): Public food-market intelligence built from official data sources, with the provenance shown next to every observation. ## Machine-readable - [Sitemap](https://sonicweaver.com/sitemap.xml) - [Full text of this site (llms-full.txt)](https://sonicweaver.com/llms-full.txt): everything below, plus the complete text of every help article, tutorial, blog post and glossary entry, and the full control reference for every engine. - [Novus Visualizers | All updates](https://sonicweaver.com/rss.xml) - [Novus Visualizers | Blog](https://sonicweaver.com/blog/rss.xml) - [Novus Visualizers | Tutorials](https://sonicweaver.com/tutorials/rss.xml) - [robots.txt](https://sonicweaver.com/robots.txt) - [MCP endpoint](https://sonicweaver.com/mcp): the same registries over Model Context Protocol, for a client that speaks it. ## Terms of use for this content The site's software, design and written content are proprietary and all rights are reserved (see https://sonicweaver.com/press-kit). Quoting with attribution and a link is welcome. Visitor-created exports are NOT covered by that reservation: they belong to the visitor. # Full content Everything above, expanded. The complete engine and control reference, every help article, every glossary definition, every tutorial and blog post, the FAQ and the release history, in plain markdown. Links are absolute. --- ## Engine and control reference Every engine in the public catalog, with each of its modes and every control the editors expose for it. Control keys are the names used in a `.novusvis` document and in the URL parameters above, so an answer quoting one of these keys is quoting the real thing. ### Particles URL: https://sonicweaver.com/templates/particles · Reference: https://sonicweaver.com/help/visualizers/particles Stable id: `particles` · Engine version: 4.0.0 · Setup effort: medium Layered point, path, area, and volume emitters with calm time-based motion. Focus: Dust, water, stars, fountains, orbits, and linked constellations #### Modes (7) - **Dust Storm** (`dust-storm`) [default]: Layered atmospheric dust moving across a wide volume. Open it at https://sonicweaver.com/editor?engine=particles&mode=dust-storm - **Waterfall** (`waterfall`): Gravity-led streams with mist and splash layers. Open it at https://sonicweaver.com/editor?engine=particles&mode=waterfall - **Starfield** (`starfield`): Deep parallax stars crossing the frame in twelve seconds. Open it at https://sonicweaver.com/editor?engine=particles&mode=starfield - **Fountain Burst** (`fountain-burst`): Bounded beat-emitted arcs that settle under gravity. Open it at https://sonicweaver.com/editor?engine=particles&mode=fountain-burst - **Orbit Swarm** (`orbit-swarm`): Multi-band particles orbit a shared focal point. Open it at https://sonicweaver.com/editor?engine=particles&mode=orbit-swarm - **Constellation** (`constellation`): Sparse linked nodes that breathe with mid frequencies. Open it at https://sonicweaver.com/editor?engine=particles&mode=constellation - **Firefly Drift** (`firefly-drift`): Warm bokeh fireflies drift on curling paths; each beat calls a flight of them to a glowing swarm core, then lets them scatter again. Open it at https://sonicweaver.com/editor?engine=particles&mode=firefly-drift #### Controls (44) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#f5f5f5`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#9ca3af`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#050508`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryShape`: **Geometry** (Geometry, select). Geometry. Options: Circle, Ellipse, Line, Polygon, Star, Rounded Rectangle, Square, Triangle, Soft Glow. Default `circle`. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `directionX`: **Direction X** (Motion, range). Normalized horizontal motion direction. Range -1–1. Default `0`; animatable. - `directionY`: **Direction Y** (Motion, range). Normalized vertical motion direction. Range -1–1. Default `-0.15`; animatable. - `directionZ`: **Direction Z** (Motion, range). Normalized depth motion direction. Range -1–1. Default `0`; animatable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `drag`: **Drag** (Motion, range). Drag. Range 0–1. Default `0.08`; animatable, audio-bindable. - `turbulence`: **Turbulence** (Motion, range). Turbulence. Range 0–2. Default `0.15`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `emitterType`: **Emitter** (Particles, select). Emitter. Options: Point, Path, Area, Volume. Default `volume`. - `particleCount`: **Particle count** (Particles, range). Saved quality-independent particle target. Range 16–2600. Default `900`; animatable. - `particleSize`: **Particle size** (Particles, range). Particle size. Range 0.1–40. Default `0.7`; animatable, audio-bindable. - `lifetime`: **Lifetime** (Particles, range). Particle lifetime in seconds. Range 0.25–60. Default `10`; animatable. - `spawnRate`: **Spawn rate** (Particles, range). Spawn rate. Range 0–500. Default `36`; animatable, audio-bindable. - `gravity`: **Gravity** (Particles, range). Gravity. Range -2–2. Default `0`; animatable, audio-bindable. - `connectionDistance`: **Connection distance** (Particles, range). Connection distance. Range 0–0.5. Default `0.12`; animatable, audio-bindable. --- ### Trails URL: https://sonicweaver.com/templates/trails · Reference: https://sonicweaver.com/help/visualizers/trails Stable id: `trails` · Engine version: 4.0.0 · Setup effort: medium Persistent splines, ribbons, flow fields, and resampled motion paths. Focus: Comets, ribbons, braids, orbits, flow fields, and echoes #### Modes (6) - **Comet Shower** (`comet-shower`) [default]: Long luminous heads with decaying multi-band tails. Open it at https://sonicweaver.com/editor?engine=trails&mode=comet-shower - **Ribbon Flow** (`ribbon-flow`): Wide layered ribbons following a smooth curl field. Open it at https://sonicweaver.com/editor?engine=trails&mode=ribbon-flow - **Snake/Braid** (`snake-braid`): Interwoven spline strands with phase-offset motion. Open it at https://sonicweaver.com/editor?engine=trails&mode=snake-braid - **Orbit Trace** (`orbit-trace`): Persistent orbital paths wrapping a central safe zone. Open it at https://sonicweaver.com/editor?engine=trails&mode=orbit-trace - **Flow Field** (`flow-field`): Dense particles reveal a deterministic curl-noise field. Open it at https://sonicweaver.com/editor?engine=trails&mode=flow-field - **Echo Streaks** (`echo-streaks`): Short streaks repeat through a controlled feedback buffer. Open it at https://sonicweaver.com/editor?engine=trails&mode=echo-streaks #### Controls (41) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#a3e635`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#22d3ee`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#030806`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryShape`: **Geometry** (Geometry, select). Geometry. Options: Circle, Ellipse, Line, Polygon, Star, Rounded Rectangle, Square, Triangle, Soft Glow. Default `circle`. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `directionX`: **Direction X** (Motion, range). Normalized horizontal motion direction. Range -1–1. Default `0`; animatable. - `directionY`: **Direction Y** (Motion, range). Normalized vertical motion direction. Range -1–1. Default `-0.15`; animatable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `turbulence`: **Turbulence** (Motion, range). Turbulence. Range 0–2. Default `0.15`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `trailCount`: **Trail count** (Trails, range). Saved quality-independent trail target. Range 1–400. Default `44`; animatable. - `trailLength`: **Trail length** (Trails, range). Trail length. Range 0.1–12. Default `1.8`; animatable, audio-bindable. - `trailDecay`: **Trail decay** (Trails, range). Trail decay. Range 0–0.99. Default `0.9`; animatable, audio-bindable. - `braidCount`: **Braid strands** (Trails, range). Parallel braided strands. Range 1–12. Default `3`; animatable. - `flowField`: **Flow field** (Trails, select). Flow field. Options: None, Curl, Vortex, Noise, Radial. Default `curl`. --- ### Bloom URL: https://sonicweaver.com/templates/bloom · Reference: https://sonicweaver.com/help/visualizers/bloom Stable id: `bloom` · Engine version: 4.0.0 · Setup effort: medium Organic growth simulations for petals, ink, cells, tendrils, crystals, and ripples. Focus: Controlled growth fronts with complete idle compositions #### Modes (6) - **Petal Bloom** (`petal-bloom`) [default]: Layered radial petals unfold over a musical phrase. Open it at https://sonicweaver.com/editor?engine=bloom&mode=petal-bloom - **Ink Diffusion** (`ink-diffusion`): Soft reaction-diffusion fronts spread through the canvas. Open it at https://sonicweaver.com/editor?engine=bloom&mode=ink-diffusion - **Cellular Growth** (`cellular-growth`): Audio-reactive cells divide within bounded neighborhoods. Open it at https://sonicweaver.com/editor?engine=bloom&mode=cellular-growth - **Vine/Mycelium** (`vine-mycelium`): Branching tendrils seek space without unbounded acceleration. Open it at https://sonicweaver.com/editor?engine=bloom&mode=vine-mycelium - **Crystal Growth** (`crystal-growth`): Symmetric facets advance from deterministic seed points. Open it at https://sonicweaver.com/editor?engine=bloom&mode=crystal-growth - **Ripple Blossom** (`ripple-blossom`): Concentric growth waves form petal interference patterns. Open it at https://sonicweaver.com/editor?engine=bloom&mode=ripple-blossom #### Controls (44) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#f472b6`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#34d399`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#080407`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `symmetry`: **Symmetry** (Geometry, range). Repeated geometry symmetry. Range 1–64. Default `1`; animatable. - `noiseDeformation`: **Noise deformation** (Geometry, range). Noise deformation. Range 0–1. Default `0`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `rotationSpeed`: **Rotation** (Motion, range). Slow global rotation for radial/tunnel/bloom structures. Range 0–2. Default `0`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `bloomAmount`: **Bloom amount** (Effects, range). Emissive bloom strength for organic growth engines. Range 0–2. Default `0.45`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `growthModel`: **Growth model** (Growth, select). Growth model. Options: Petal, Reaction Diffusion, Cellular, Branching, Crystal, Ripple. Default `petal`. - `seedCount`: **Seeds** (Growth, range). Initial growth seeds. Range 1–256. Default `7`; animatable. - `growthRate`: **Growth rate** (Growth, range). Growth rate. Range 0–1. Default `0.12`; animatable, audio-bindable. - `branching`: **Branching** (Growth, range). Branching. Range 0–1. Default `0.45`; animatable, audio-bindable. - `spread`: **Spread** (Growth, range). Spread. Range 0–2. Default `0.55`; animatable, audio-bindable. - `cellSize`: **Cell size** (Growth, range). Cell or petal base size. Range 2–100. Default `14`; animatable. - `lifecycle`: **Lifecycle** (Growth, range). Full growth lifecycle in seconds. Range 1–120. Default `12`; animatable. --- ### Character Motion URL: https://sonicweaver.com/templates/character-motion · Reference: https://sonicweaver.com/help/visualizers/character-motion Stable id: `character-motion` · Engine version: 4.0.0 · Setup effort: hard Glyph choreography and production 2D/3D skeleton animation in one engine. Focus: Type fields, cutout rigs, mesh rigs, clips, IK, retargeting, and crowds #### Modes (6) - **Glyph Field** (`glyph-field`) [default]: Individual glyphs travel along editable geometry paths. Open it at https://sonicweaver.com/editor?engine=character-motion&mode=glyph-field - **Word Wave** (`word-wave`): Words deform along a beat-mapped waveform baseline. Open it at https://sonicweaver.com/editor?engine=character-motion&mode=word-wave - **ASCII Cascade** (`ascii-cascade`): Layered ASCII streams cascade at a measured pace. Open it at https://sonicweaver.com/editor?engine=character-motion&mode=ascii-cascade - **2D Puppet** (`2d-puppet`): Cutout layers driven by a constrained two-dimensional rig. Open it at https://sonicweaver.com/editor?engine=character-motion&mode=2d-puppet - **3D Performer** (`3d-performer`): Imported skinned mesh with retargetable animation clips. Open it at https://sonicweaver.com/editor?engine=character-motion&mode=3d-performer - **Crowd/Clone** (`crowd-clone`): A reusable rig is cloned with deterministic timing offsets. Open it at https://sonicweaver.com/editor?engine=character-motion&mode=crowd-clone #### Controls (39) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#fbbf24`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#a78bfa`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#06050a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `displayText`: **Display text** (Character, text). Editable word/glyph string for word-wave and glyph modes. Default `NOVUS`; animatable. - `glyphSet`: **Glyph set** (Character, text). Character set used by glyph-field and ascii modes. Default `NØVUS△○□`. - `letterSpacing`: **Letter spacing** (Character, range). Normalized spacing between word characters. Range 0–0.5. Default `0.08`; animatable. - `characterCount`: **Character count** (Character, range). Glyph, word, or clone count. Range 1–1000. Default `48`; animatable. - `pathDeformation`: **Path deformation** (Character, range). Path deformation. Range 0–2. Default `0.6`; animatable, audio-bindable. - `clipSpeed`: **Clip speed** (Rig, range). Clip speed. Range 0.05–4. Default `1`; animatable, audio-bindable. - `crowdTimingSpread`: **Crowd timing** (Rig, range). Crowd timing. Range 0–2. Default `0.18`; animatable, audio-bindable. --- ### Radial URL: https://sonicweaver.com/templates/radial · Reference: https://sonicweaver.com/help/visualizers/radial Stable id: `radial` · Engine version: 4.0.0 · Setup effort: easy Logo-aware circles, rings, mandalas, rays, and orbiting crowns. Focus: Automatic layout around a central logo or media safe zone #### Modes (7) - **Pulse Orb** (`pulse-orb`) [default]: A bounded audio-deformed orb surrounds the center safe zone. Open it at https://sonicweaver.com/editor?engine=radial&mode=pulse-orb - **Concentric Rings** (`concentric-rings`): Layered rings respond to independent frequency bands. Open it at https://sonicweaver.com/editor?engine=radial&mode=concentric-rings - **Mandala** (`mandala`): Symmetric path repetition forms evolving mandala geometry. Open it at https://sonicweaver.com/editor?engine=radial&mode=mandala - **Sunburst** (`sunburst`): Frequency rays fan around protected central media. Open it at https://sonicweaver.com/editor?engine=radial&mode=sunburst - **Orbit Halo** (`orbit-halo`): Multiple ellipses orbit on slow phase-separated paths. Open it at https://sonicweaver.com/editor?engine=radial&mode=orbit-halo - **Logo Crown** (`logo-crown`): A responsive crown automatically clears a logo safe zone. Open it at https://sonicweaver.com/editor?engine=radial&mode=logo-crown - **Glow Ring** (`glow-ring`): A thick neon ring shaped by the spectrum sheds glowing echoes on every hit around a breathing core. Open it at https://sonicweaver.com/editor?engine=radial&mode=glow-ring #### Controls (43) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#818cf8`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#c084fc`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#05040b`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `symmetry`: **Symmetry** (Geometry, range). Repeated geometry symmetry. Range 1–64. Default `1`; animatable. - `twist`: **Twist** (Geometry, range). Twist. Range -12.566–12.566. Default `0`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `rotationSpeed`: **Rotation** (Motion, range). Slow global rotation for radial/tunnel/bloom structures. Range 0–2. Default `0`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `innerRadius`: **Inner radius** (Radial, range). Inner radius. Range 0–1. Default `0.22`; animatable, audio-bindable. - `outerRadius`: **Outer radius** (Radial, range). Outer radius. Range 0.01–2. Default `0.38`; animatable, audio-bindable. - `centerSafeZone`: **Logo safe zone** (Radial, range). Reserved center radius for logo/media. Range 0–0.9. Default `0.2`; animatable. - `ringCount`: **Ring count** (Radial, range). Number of concentric structures. Range 1–64. Default `8`; animatable. - `angularSweep`: **Angular sweep** (Radial, range). Angular sweep. Range 1–360. Default `360`; animatable, audio-bindable. - `radialDeformation`: **Radial deformation** (Radial, range). Radial deformation. Range 0–1. Default `0.3`; animatable, audio-bindable. --- ### Spectrum URL: https://sonicweaver.com/templates/spectrum · Reference: https://sonicweaver.com/help/visualizers/spectrum Stable id: `spectrum` · Engine version: 4.0.0 · Setup effort: easy Frequency-domain lines, areas, ribbons, spectrograms, ridges, and meshes. Focus: Linear, log, and mel-scaled spectral history with per-band palettes #### Modes (6) - **Line Spectrum** (`line-spectrum`) [default]: A smooth log-frequency line with stable peak behavior. Open it at https://sonicweaver.com/editor?engine=spectrum&mode=line-spectrum - **Mirrored Area** (`mirrored-area`): Filled frequency areas mirror across the baseline. Open it at https://sonicweaver.com/editor?engine=spectrum&mode=mirrored-area - **Ribbon Surface** (`ribbon-surface`): Frequency bins project along a curved ribbon surface. Open it at https://sonicweaver.com/editor?engine=spectrum&mode=ribbon-surface - **Spectrogram Waterfall** (`spectrogram-waterfall`): Spectral history flows through time without frame-rate coupling. Open it at https://sonicweaver.com/editor?engine=spectrum&mode=spectrogram-waterfall - **Frequency Ridge** (`frequency-ridge`): A focused ridge emphasizes bounded band transitions. Open it at https://sonicweaver.com/editor?engine=spectrum&mode=frequency-ridge - **Spectral Mesh** (`spectral-mesh`): Frequency history becomes an editable three-dimensional mesh. Open it at https://sonicweaver.com/editor?engine=spectrum&mode=spectral-mesh #### Controls (40) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#8b5cf6`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#22d3ee`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#050510`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `noiseDeformation`: **Noise deformation** (Geometry, range). Noise deformation. Range 0–1. Default `0`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `binCount`: **Bins** (Spectrum, range). Resampled visible bin count. Range 8–512. Default `96`; animatable. - `historyDepth`: **History** (Spectrum, range). Spectral history frames. Range 1–512. Default `64`; animatable. - `spectralSmoothing`: **Smoothing** (Spectrum, range). Smoothing. Range 0–0.95. Default `0.72`; animatable, audio-bindable. - `verticalAnchor`: **Vertical anchor** (Spectrum, select). Where the spectrum baseline sits in the frame. Options: Low, Bottom, Center. Default `bottom`. - `mirror`: **Mirror reflection** (Spectrum, boolean). Reflect the spectrum across its baseline (floor-reflection look). Default `false`. --- ### Bars URL: https://sonicweaver.com/templates/bars · Reference: https://sonicweaver.com/help/visualizers/bars Stable id: `bars` · Engine version: 4.0.0 · Setup effort: easy Dedicated equalizer bars with mirrors, stacks, paths, depth, and peak hold. Focus: Precision bar layout with independent materials and band mapping #### Modes (7) - **Linear Equalizer** (`linear-equalizer`) [default]: A refined baseline equalizer with rounded caps. Open it at https://sonicweaver.com/editor?engine=bars&mode=linear-equalizer - **Center Mirror** (`center-mirror`): Bars expand symmetrically above and below center. Open it at https://sonicweaver.com/editor?engine=bars&mode=center-mirror - **Stacked Bands** (`stacked-bands`): Bass, mid, and treble materials stack per column. Open it at https://sonicweaver.com/editor?engine=bars&mode=stacked-bands - **Radial Bars** (`radial-bars`): Equalizer bars distribute around a central safe zone. Open it at https://sonicweaver.com/editor?engine=bars&mode=radial-bars - **3D Columns** (`3d-columns`): Beveled columns use lights and depth-aware materials. Open it at https://sonicweaver.com/editor?engine=bars&mode=3d-columns - **Piano/Step Grid** (`piano-step-grid`): Quantized frequency steps form a musical grid. Open it at https://sonicweaver.com/editor?engine=bars&mode=piano-step-grid - **Classic Studio** (`classic-studio`): Glossy bars on a mirrored glass floor, with floating peak caps and beat sparks rising through drifting dust. Open it at https://sonicweaver.com/editor?engine=bars&mode=classic-studio #### Controls (41) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#22d3ee`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#34d399`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#020809`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `barCount`: **Bar count** (Bars, range). Visible bar count. Range 4–256. Default `64`; animatable. - `barWidth`: **Bar width** (Bars, range). Bar width. Range 0.05–1. Default `0.72`; animatable, audio-bindable. - `barGap`: **Bar gap** (Bars, range). Bar gap. Range 0–1. Default `0.18`; animatable, audio-bindable. - `heightScale`: **Bar height** (Bars, range). Fraction of the frame the tallest bar can reach. Range 0.2–1. Default `0.5`; animatable. - `reflection`: **Floor reflection** (Bars, range). Mirrored floor reflection below the bars. Range 0–1. Default `0`; animatable. - `capShape`: **Cap shape** (Bars, select). Cap shape. Options: Square, Round, Diamond, Pill. Default `round`. - `baseline`: **Baseline** (Bars, select). Baseline. Options: Bottom, Center, Top, Path. Default `bottom`. - `mirroring`: **Mirroring** (Bars, range). Mirror bars around the baseline. Range 0–1. Default `0`; animatable. - `stackCount`: **Stacks** (Bars, range). Vertical band stacks. Range 1–12. Default `1`; animatable. - `peakHoldMs`: **Peak hold** (Bars, range). Peak hold duration in milliseconds. Range 0–5000. Default `420`; animatable. - `bevelDepth`: **Bevel/depth** (Bars, range). Bevel/depth. Range 0–1. Default `0.08`; animatable, audio-bindable. --- ### Tunnel URL: https://sonicweaver.com/templates/tunnel · Reference: https://sonicweaver.com/help/visualizers/tunnel Stable id: `tunnel` · Engine version: 4.0.0 · Setup effort: medium Looping depth corridors, tubes, fields, and camera paths with deterministic fog. Focus: Editable cross-sections, surface audio deformation, twist, and camera motion #### Modes (6) - **Concentric Rings** (`concentric-rings`) [default]: Evenly spaced ring segments move through a looping depth field. Open it at https://sonicweaver.com/editor?engine=tunnel&mode=concentric-rings - **Corridor Grid** (`corridor-grid`): Walls and floor form a measured perspective corridor. Open it at https://sonicweaver.com/editor?engine=tunnel&mode=corridor-grid - **Warp Field** (`warp-field`): A point field accelerates visually while velocity stays bounded. Open it at https://sonicweaver.com/editor?engine=tunnel&mode=warp-field - **Spectrum Tube** (`spectrum-tube`): FFT bins deform a tube surface through bounded envelopes. Open it at https://sonicweaver.com/editor?engine=tunnel&mode=spectrum-tube - **Waveform Tube** (`waveform-tube`): Time-domain samples travel along the tunnel cross-section. Open it at https://sonicweaver.com/editor?engine=tunnel&mode=waveform-tube - **Particle Vortex** (`particle-vortex`): Particles spiral through a shared camera-space vortex. Open it at https://sonicweaver.com/editor?engine=tunnel&mode=particle-vortex #### Controls (42) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#06b6d4`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#6366f1`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#02040a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryShape`: **Geometry** (Geometry, select). Geometry. Options: Circle, Ellipse, Line, Polygon, Star, Rounded Rectangle, Square, Triangle, Soft Glow. Default `circle`. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `twist`: **Twist** (Geometry, range). Twist. Range -12.566–12.566. Default `0`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `rotationSpeed`: **Rotation** (Motion, range). Slow global rotation for radial/tunnel/bloom structures. Range 0–2. Default `0`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `crossSection`: **Cross section** (Tunnel, select). Cross section. Options: Circle, Square, Hexagon, Grid, Tube, Custom Path. Default `circle`. - `segmentCount`: **Segments** (Tunnel, range). Visible depth segments. Range 8–128. Default `34`; animatable. - `depth`: **Depth** (Tunnel, range). Depth. Range 1–40. Default `14`; animatable, audio-bindable. - `fieldOfView`: **Field of view** (Tunnel, range). Field of view. Range 15–140. Default `58`; animatable, audio-bindable. - `fog`: **Fog** (Tunnel, range). Fog. Range 0–1. Default `0.36`; animatable, audio-bindable. - `cameraPath`: **Camera path** (Tunnel, range). Camera path. Range 0–1. Default `0.2`; animatable, audio-bindable. - `surfaceDeformation`: **Surface deformation** (Tunnel, range). Surface deformation. Range 0–1. Default `0.25`; animatable, audio-bindable. --- ### Waveform URL: https://sonicweaver.com/templates/waveform · Reference: https://sonicweaver.com/help/visualizers/waveform Stable id: `waveform` · Engine version: 4.0.0 · Setup effort: easy Time-domain lines, fills, ribbons, XY scopes, and historical surfaces. Focus: Stable sample windows, channel mixing, phase, depth, and surface history #### Modes (6) - **Line** (`line`) [default]: A clean anti-aliased oscilloscope line. Open it at https://sonicweaver.com/editor?engine=waveform&mode=line - **Mirrored** (`mirrored`): A symmetric waveform mirrors around its baseline. Open it at https://sonicweaver.com/editor?engine=waveform&mode=mirrored - **Filled** (`filled`): A translucent waveform area holds a stable idle silhouette. Open it at https://sonicweaver.com/editor?engine=waveform&mode=filled - **Ribbon** (`ribbon`): A dimensional waveform ribbon reacts to phase and depth. Open it at https://sonicweaver.com/editor?engine=waveform&mode=ribbon - **Oscilloscope/Lissajous** (`oscilloscope-lissajous`): Stereo channels map to an XY oscilloscope path. Open it at https://sonicweaver.com/editor?engine=waveform&mode=oscilloscope-lissajous - **3D Surface** (`3d-surface`): Waveform history forms a lit three-dimensional surface. Open it at https://sonicweaver.com/editor?engine=waveform&mode=3d-surface #### Controls (39) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#14b8a6`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#67e8f9`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#030a0a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `gain`: **Gain** (Waveform, range). Gain. Range 0–5. Default `1`; animatable, audio-bindable. - `waveSmoothing`: **Smoothing** (Waveform, range). Spatial smoothing across neighbouring samples. Range 0–0.95. Default `0.55`; animatable, audio-bindable. - `waveWindow`: **Wave window** (Waveform, range). How much of the previous frame's wave is carried into this one. Range 0–0.95. Default `0.55`; animatable, audio-bindable. - `phase`: **Phase** (Waveform, range). Phase. Range -6.283–6.283. Default `0`; animatable, audio-bindable. - `ribbonDepth`: **Ribbon depth** (Waveform, range). Ribbon depth. Range 0–2. Default `0.12`; animatable, audio-bindable. - `surfaceHistory`: **Surface history** (Waveform, range). 3D surface history lines. Range 2–256. Default `48`; animatable. --- ### Logo URL: https://sonicweaver.com/templates/logo · Reference: https://sonicweaver.com/help/visualizers/logo Stable id: `logo` · Engine version: 4.0.0 · Setup effort: medium Brand-first scenes: reactive geometry arranged around your artwork, never over it. Focus: Rings, halos, orbiting bars and auras that automatically clear a centred logo #### Modes (7) - **Waveform Ring** (`waveform-ring`) [default]: The time-domain trace bent into a ring around your logo. Open it at https://sonicweaver.com/editor?engine=logo&mode=waveform-ring - **Spectrum Halo** (`spectrum-halo`): Concentric arcs, each carrying its own frequency band. Open it at https://sonicweaver.com/editor?engine=logo&mode=spectrum-halo - **Orbiting Bars** (`orbiting-bars`): A full equalizer ring orbiting the artwork. Open it at https://sonicweaver.com/editor?engine=logo&mode=orbiting-bars - **Particle Aura** (`particle-aura`): A drifting particle halo that breathes with the mix. Open it at https://sonicweaver.com/editor?engine=logo&mode=particle-aura - **Pulse Frame** (`pulse-frame`): A rectangular badge frame, built for square and vertical formats. Open it at https://sonicweaver.com/editor?engine=logo&mode=pulse-frame - **Kinetic Reveal** (`kinetic-reveal`): Wedges light in turn so the mark assembles across a bar. Open it at https://sonicweaver.com/editor?engine=logo&mode=kinetic-reveal - **Vinyl Spin** (`vinyl-spin`): Your artwork as the label of a spinning record: grooves light band by band and every beat flings light off the rim. Open it at https://sonicweaver.com/editor?engine=logo&mode=vinyl-spin #### Controls (43) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#fbbf24`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#fb7185`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#080608`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryShape`: **Geometry** (Geometry, select). Geometry. Options: Circle, Ellipse, Line, Polygon, Star, Rounded Rectangle, Square, Triangle, Soft Glow. Default `circle`. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `rotationSpeed`: **Rotation** (Motion, range). Slow global rotation for radial/tunnel/bloom structures. Range 0–2. Default `0`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `logoImage`: **Logo image** (Logo, text). Image URL or data URL composited at the centre. Uploading in the editor writes this key. Default ``. - `logoScale`: **Logo size** (Logo, range). Artwork size as a fraction of the frame. Range 0.02–0.6. Default `0.22`; animatable. - `logoOpacity`: **Logo opacity** (Logo, range). Artwork opacity. Range 0–1. Default `1`; animatable. - `centerSafeZone`: **Clearance** (Logo, range). Extra space kept clear around the artwork. Range 0–0.9. Default `0.18`; animatable. - `ringCount`: **Rings** (Logo, range). Concentric elements around the artwork. Range 1–24. Default `4`; animatable. - `barCount`: **Bars** (Logo, range). Orbiting bar count. Range 8–180. Default `56`; animatable. - `gain`: **Waveform gain** (Logo, range). Waveform gain. Range 0–5. Default `1.6`; animatable, audio-bindable. --- ### Lattice URL: https://sonicweaver.com/templates/lattice · Reference: https://sonicweaver.com/help/visualizers/lattice Stable id: `lattice` · Engine version: 4.0.0 · Setup effort: medium Mirrors, tilings, wireframes and trusses: hard-edged geometry that switches on the beat. Focus: Kaleidoscopes, tessellations, wireframe solids, isometric grids, and expanding prisms #### Modes (6) - **Kaleidoscope** (`kaleidoscope`) [default]: A mirrored wedge repeats around the frame, its profile cut from the spectrum. Open it at https://sonicweaver.com/editor?engine=lattice&mode=kaleidoscope - **Tessellation** (`tessellation`): A still hex tiling that beats light in travelling stripes. Open it at https://sonicweaver.com/editor?engine=lattice&mode=tessellation - **Wire Polyhedron** (`wire-polyhedron`): A rotating wireframe solid whose vertices ride their own bands. Open it at https://sonicweaver.com/editor?engine=lattice&mode=wire-polyhedron - **Isometric Grid** (`isometric-grid`): An isometric block field where every column is a frequency. Open it at https://sonicweaver.com/editor?engine=lattice&mode=isometric-grid - **Truss Web** (`truss-web`): Node rings wired to their neighbours; struts carry current on the beat. Open it at https://sonicweaver.com/editor?engine=lattice&mode=truss-web - **Prism Stack** (`prism-stack`): One polygon is born per beat and travels outward carrying that hit. Open it at https://sonicweaver.com/editor?engine=lattice&mode=prism-stack #### Controls (44) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#38bdf8`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#e2e8f0`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#04060b`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryShape`: **Geometry** (Geometry, select). Geometry. Options: Circle, Ellipse, Line, Polygon, Star, Rounded Rectangle, Square, Triangle, Soft Glow. Default `circle`. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `symmetry`: **Symmetry** (Geometry, range). Repeated geometry symmetry. Range 1–64. Default `1`; animatable. - `twist`: **Twist** (Geometry, range). Twist. Range -12.566–12.566. Default `0`; animatable, audio-bindable. - `noiseDeformation`: **Noise deformation** (Geometry, range). Noise deformation. Range 0–1. Default `0`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `rotationSpeed`: **Rotation** (Motion, range). Slow global rotation for radial/tunnel/bloom structures. Range 0–2. Default `0`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `latticeSides`: **Polygon sides** (Lattice, range). Edges per tile, prism, and truss ring. Range 3–16. Default `6`; animatable. - `cellCount`: **Grid density** (Lattice, range). Tiles across the frame, or rings in the truss. Range 2–48. Default `12`; animatable. - `nodeCount`: **Nodes** (Lattice, range). Wireframe vertex count. Range 8–400. Default `64`; animatable. - `cellFill`: **Cell fill** (Lattice, range). How solid a lit cell reads against its outline. Range 0–1. Default `0.28`; animatable, audio-bindable. - `latticeJitter`: **Jitter** (Lattice, range). Beat-quantized irregularity in the lattice, so the grid breathes. Range 0–1. Default `0.18`; animatable, audio-bindable. --- ### Terrain URL: https://sonicweaver.com/templates/terrain · Reference: https://sonicweaver.com/help/visualizers/terrain Stable id: `terrain` · Engine version: 4.0.0 · Setup effort: medium The last few seconds of the track rendered as receding landscape. Focus: Ridge lines, contour maps, canyons, dunes, wire meshes, and silhouettes #### Modes (6) - **Ridge Lines** (`ridge-lines`) [default]: Stacked hidden-line ridges recede toward the horizon. Open it at https://sonicweaver.com/editor?engine=terrain&mode=ridge-lines - **Wire Mesh** (`wire-mesh`): Rows and columns cross into a see-through heightfield. Open it at https://sonicweaver.com/editor?engine=terrain&mode=wire-mesh - **Contour Map** (`contour-map`): Filled elevation bands read as a topographic plate. Open it at https://sonicweaver.com/editor?engine=terrain&mode=contour-map - **Canyon Scroll** (`canyon-scroll`): The field mirrors above and below a travelling corridor. Open it at https://sonicweaver.com/editor?engine=terrain&mode=canyon-scroll - **Dune Field** (`dune-field`): Wide soft forms for lyric and ambient backgrounds. Open it at https://sonicweaver.com/editor?engine=terrain&mode=dune-field - **Peak Silhouette** (`peak-silhouette`): Layered silhouettes against a sky that lights on the beat. Open it at https://sonicweaver.com/editor?engine=terrain&mode=peak-silhouette #### Controls (40) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#34d399`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#94a3b8`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#03070a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `noiseDeformation`: **Noise deformation** (Geometry, range). Noise deformation. Range 0–1. Default `0`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `relief`: **Relief** (Terrain, range). Vertical exaggeration of the landscape. Range 0–1. Default `0.55`; animatable, audio-bindable. - `horizon`: **Horizon** (Terrain, range). Where the furthest row sits in the frame. Range 0.05–0.9. Default `0.32`; animatable. - `rowSpacing`: **Perspective** (Terrain, range). How hard rows bunch and narrow toward the horizon. Range 0.05–1. Default `0.55`; animatable. - `roughness`: **Roughness** (Terrain, range). Smooth rolling hills at 0, sharp ridged peaks at 1. Range 0–1. Default `0.35`; animatable, audio-bindable. - `historyDepth`: **History** (Terrain, range). Rows of track history kept on screen. Range 4–128. Default `64`; animatable. --- ### Stage Lights URL: https://sonicweaver.com/templates/stage · Reference: https://sonicweaver.com/help/visualizers/stage Stable id: `stage` · Engine version: 4.0.0 · Setup effort: easy A lighting rig rather than a readout: beams, haze, pools and chases cued by the beat. Focus: Beam fans, lasers, spot rigs, par walls, battens, and follow spots #### Modes (7) - **Beam Fan** (`beam-fan`) [default]: One rig position throwing a fan of beams across the stage. Open it at https://sonicweaver.com/editor?engine=stage&mode=beam-fan - **Laser Sweep** (`laser-sweep`): Side rigs fire thin lasers that sweep across the frame. Open it at https://sonicweaver.com/editor?engine=stage&mode=laser-sweep - **Spot Rig** (`spot-rig`): Fixtures hung along a truss, each with a cone and a floor pool. Open it at https://sonicweaver.com/editor?engine=stage&mode=spot-rig - **Par Wall** (`par-wall`): A back wall of par cans chasing group by group. Open it at https://sonicweaver.com/editor?engine=stage&mode=par-wall - **Strobe Bars** (`strobe-bars`): Horizontal battens pulsing in sequence: bounded bars, never a full-frame flash. Open it at https://sonicweaver.com/editor?engine=stage&mode=strobe-bars - **Follow Spot** (`follow-spot`): A single fixture tracking a target that only moves on the beat. Open it at https://sonicweaver.com/editor?engine=stage&mode=follow-spot - **Haze Rays** (`haze-rays`): Wide volumetric rays cross through rolling fog the kick pumps, with dust glinting in the beams. Open it at https://sonicweaver.com/editor?engine=stage&mode=haze-rays #### Controls (41) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#fcd34d`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#e879f9`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#040308`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `rotationSpeed`: **Rotation** (Motion, range). Slow global rotation for radial/tunnel/bloom structures. Range 0–2. Default `0`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `fixtureCount`: **Fixtures** (Rig, range). Lamps on the rig. Range 1–64. Default `12`; animatable. - `beamSpread`: **Beam spread** (Rig, range). Cone angle of each beam. Range 0.002–0.35. Default `0.035`; animatable, audio-bindable. - `beamArc`: **Rig arc** (Rig, range). How wide the fan throws across the stage. Range 0.05–1. Default `0.62`; animatable, audio-bindable. - `haze`: **Haze** (Rig, range). Atmospheric haze: what makes a beam visible in the air. Range 0–1. Default `0.35`; animatable, audio-bindable. - `fixtureDecay`: **Fixture decay** (Rig, range). Seconds a struck lamp takes to fall back. Range 0.04–2. Default `0.34`; animatable. - `chaseGroups`: **Chase groups** (Rig, range). Beats it takes the chase to work around the rig. Range 1–12. Default `4`; animatable. --- ### Harmonic Constellation URL: https://sonicweaver.com/templates/harmonic-constellation · Reference: https://sonicweaver.com/help/visualizers/harmonic-constellation Stable id: `harmonic-constellation` · Engine version: 4.0.0 · Setup effort: medium Spectral peaks become stars, and harmonically related peaks link into changing constellations. Focus: Peak fields, harmonic graphs, transient flares, parallax skies, and pitch-class halos #### Modes (6) - **Peak Stars** (`peak-stars`) [default]: Only the spectrum's local maxima, drawn as a bare field of stars. Open it at https://sonicweaver.com/editor?engine=harmonic-constellation&mode=peak-stars - **Harmonic Web** (`harmonic-web`): Peaks whose frequencies sit near an integer ratio join into a graph. Open it at https://sonicweaver.com/editor?engine=harmonic-constellation&mode=harmonic-web - **Transient Flare** (`transient-flare`): Onsets throw brief spikes from the loudest partial; the field stays dim between them. Open it at https://sonicweaver.com/editor?engine=harmonic-constellation&mode=transient-flare - **Parallax Drift** (`parallax-drift`): Three depth layers of stars, each drifting at its own rate. Open it at https://sonicweaver.com/editor?engine=harmonic-constellation&mode=parallax-drift - **Chroma Halo** (`chroma-halo`): Peaks folded into twelve pitch classes arranged as a ring. Open it at https://sonicweaver.com/editor?engine=harmonic-constellation&mode=chroma-halo - **Comet Persistence** (`comet-persistence`): Each partial is tracked between frames and drags a fading trail. Open it at https://sonicweaver.com/editor?engine=harmonic-constellation&mode=comet-persistence #### Controls (39) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#c7d2fe`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#38bdf8`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#03040c`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `starDensity`: **Star density** (Constellation, range). How many spectral peaks are promoted to stars. Range 0.05–1. Default `0.55`; animatable, audio-bindable. - `harmonicTolerance`: **Harmonic tolerance** (Constellation, range). How near an integer a frequency ratio must be to draw a link. Range 0.01–0.5. Default `0.12`; animatable, audio-bindable. - `linePersistence`: **Line persistence** (Constellation, range). How long links, flares and comet trails survive. Range 0–1. Default `0.45`; animatable, audio-bindable. - `cameraDrift`: **Camera drift** (Constellation, range). Slow rotation of the star field. Range 0–1. Default `0.3`; animatable, audio-bindable. - `flareGain`: **Flare gain** (Constellation, range). Size and count of the spikes a transient throws. Range 0–1. Default `0.7`; animatable, audio-bindable. - `bloomCap`: **Bloom cap** (Constellation, range). Ceiling on each star's halo, so a dense mix cannot wash to white. Range 0–1. Default `0.6`; animatable, audio-bindable. --- ### Chladni Resonance Plate URL: https://sonicweaver.com/templates/chladni-plate · Reference: https://sonicweaver.com/help/visualizers/chladni-plate Stable id: `chladni-plate` · Engine version: 4.0.0 · Setup effort: easy Analytic nodal patterns that reorganise as the dominant tone crosses a resonance. Focus: Sand figures, nodal contours, plate modes, and deterministic scientific posters #### Modes (6) - **Sand Scatter** (`sand-scatter`) [default]: Grains walk downhill into the nodes and the figure assembles over time. Open it at https://sonicweaver.com/editor?engine=chladni-plate&mode=sand-scatter - **Nodal Lines** (`nodal-lines`): The zero contour traced directly, with no grains at all. Open it at https://sonicweaver.com/editor?engine=chladni-plate&mode=nodal-lines - **Square Plate** (`square-plate`): The signed field as filled regions: a woven two-tone lattice. Open it at https://sonicweaver.com/editor?engine=chladni-plate&mode=square-plate - **Circular Plate** (`circular-plate`): Radial and angular modes on a round plate: rings and spokes, not a lattice. Open it at https://sonicweaver.com/editor?engine=chladni-plate&mode=circular-plate - **Metal Sheen** (`metal-sheen`): The plate as a lit surface, shaded by how steeply it bends. Open it at https://sonicweaver.com/editor?engine=chladni-plate&mode=metal-sheen - **Mode Lock** (`mode-lock`): Tone lock held fully on: one figure, deterministic, for print. Open it at https://sonicweaver.com/editor?engine=chladni-plate&mode=mode-lock #### Controls (37) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#fde68a`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#a8a29e`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#0b0a08`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `sandCount`: **Sand count** (Plate, range). Grains settling into the nodal lines. Range 200–9000. Default `2600`; animatable. - `damping`: **Damping** (Plate, range). How quickly grains settle, and how tightly. Range 0–1. Default `0.45`; animatable, audio-bindable. - `toneLock`: **Tone lock** (Plate, range). How decisively a new tone must dominate before the mode pair moves. Range 0–1. Default `0.5`; animatable, audio-bindable. - `lineThickness`: **Line thickness** (Plate, range). Nodal line and plate border weight. Range 0.4–6. Default `1.6`; animatable, audio-bindable. --- ### Voronoi Stained Glass URL: https://sonicweaver.com/templates/voronoi-glass · Reference: https://sonicweaver.com/help/visualizers/voronoi-glass Stable id: `voronoi-glass` · Engine version: 4.0.0 · Setup effort: easy A gap-free cell partition that illuminates by band without ever flashing the frame. Focus: Cell partitions, leading, band readouts, harmonic colour, and print stills #### Modes (6) - **Cell Bloom** (`cell-bloom`) [default]: Drifting seeds with a soft highlight at each: illuminated glass. Open it at https://sonicweaver.com/editor?engine=voronoi-glass&mode=cell-bloom - **Lead Came** (`lead-came`): The leading dominates and the cells stay nearly unfilled. Open it at https://sonicweaver.com/editor?engine=voronoi-glass&mode=lead-came - **Shatter Split** (`shatter-split`): Onsets split the loudest cell, so the partition itself gains cells over a phrase. Open it at https://sonicweaver.com/editor?engine=voronoi-glass&mode=shatter-split - **Band Cells** (`band-cells`): Seeds arranged in five columns, one per analysis band: a readout, not a scatter. Open it at https://sonicweaver.com/editor?engine=voronoi-glass&mode=band-cells - **Glow Harmony** (`glow-harmony`): Cell colour chosen by harmonic relation rather than by index. Open it at https://sonicweaver.com/editor?engine=voronoi-glass&mode=glow-harmony - **Print Still** (`print-still`): No drift and no beat response: a deterministic still for print. Open it at https://sonicweaver.com/editor?engine=voronoi-glass&mode=print-still #### Controls (38) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#c4b5fd`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#34d399`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#07060d`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `cellCount`: **Cell count** (Glass, range). How many cells partition the frame. Range 6–220. Default `48`; animatable. - `borderWidth`: **Border width** (Glass, range). Weight of the leading between cells. Range 0–8. Default `1.8`; animatable, audio-bindable. - `glowCap`: **Glow cap** (Glass, range). Ceiling on cell illumination, so a beat cannot flash the frame. Range 0.05–1. Default `0.55`; animatable, audio-bindable. - `cellPersistence`: **Cell persistence** (Glass, range). How slowly a cell releases its illumination. Range 0–1. Default `0.55`; animatable, audio-bindable. - `seedDrift`: **Seed drift** (Glass, range). How far cell seeds wander. Range 0–1. Default `0.35`; animatable, audio-bindable. --- ### Procedural Night City URL: https://sonicweaver.com/templates/night-city · Reference: https://sonicweaver.com/help/visualizers/night-city Stable id: `night-city` · Engine version: 4.0.0 · Setup effort: medium An original stylized skyline generated from the spectrum: windows, signs, traffic, and weather. Focus: Skylines, window fields, traffic trails, abstract signage, rain, and camera moves #### Modes (6) - **Skyline Bands** (`skyline-bands`) [default]: The silhouette alone: buildings as spectrum, three ranks deep. Open it at https://sonicweaver.com/editor?engine=night-city&mode=skyline-bands - **Window Field** (`window-field`): Camera pushed in until the windows are the subject. Open it at https://sonicweaver.com/editor?engine=night-city&mode=window-field - **Traffic Trails** (`traffic-trails`): A street-level layer of long-exposure light streaks. Open it at https://sonicweaver.com/editor?engine=night-city&mode=traffic-trails - **Sign Flicker** (`sign-flicker`): Abstract sign blocks fire on onsets against a dim skyline. Open it at https://sonicweaver.com/editor?engine=night-city&mode=sign-flicker - **Rain Parallax** (`rain-parallax`): Three depth layers of rain over a wet, reflecting street. Open it at https://sonicweaver.com/editor?engine=night-city&mode=rain-parallax - **Rooftop Pan** (`rooftop-pan`): A slow lateral camera move parallaxed across the three ranks. Open it at https://sonicweaver.com/editor?engine=night-city&mode=rooftop-pan #### Controls (38) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#f0abfc`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#22d3ee`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#05040a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `cityDensity`: **City density** (City, range). Buildings per rank and traffic volume. Range 0.1–1. Default `0.55`; animatable, audio-bindable. - `parallax`: **Parallax** (City, range). Separation between the three building ranks. Range 0–1. Default `0.4`; animatable, audio-bindable. - `weather`: **Weather** (City, range). Rain density and street wetness. Range 0–1. Default `0.35`; animatable, audio-bindable. - `signGain`: **Sign gain** (City, range). Size and brightness of the abstract sign blocks. Range 0–1. Default `0.6`; animatable, audio-bindable. - `detailBudget`: **Detail budget** (City, range). Share of windows drawn per building. Range 0.1–1. Default `0.6`; animatable, audio-bindable. --- ### Spectral Topography URL: https://sonicweaver.com/templates/spectral-topography · Reference: https://sonicweaver.com/help/visualizers/spectral-topography Stable id: `spectral-topography` · Engine version: 4.0.0 · Setup effort: medium The spectrum's history as a contour map: frequency across, time down, rhythm visible as banding. Focus: Contour maps, iso-bands, ridge plots, wireframe relief, and flyovers #### Modes (6) - **Heat Ribbon** (`heat-ribbon`) [default]: Every past frame shaded by magnitude: the plot itself, no geometry. Open it at https://sonicweaver.com/editor?engine=spectral-topography&mode=heat-ribbon - **Contour Lines** (`contour-lines`): Iso-level curves traced through the history, like a survey map. Open it at https://sonicweaver.com/editor?engine=spectral-topography&mode=contour-lines - **Iso Bands** (`isobands`): The map as filled regions between levels rather than as lines. Open it at https://sonicweaver.com/editor?engine=spectral-topography&mode=isobands - **Ridge Plot** (`ridge-plot`): Each past frame as an offset line, drawn back to front so nearer ridges occlude. Open it at https://sonicweaver.com/editor?engine=spectral-topography&mode=ridge-plot - **Wire Relief** (`wire-relief`): The history as a projected wireframe under a fixed viewpoint. Open it at https://sonicweaver.com/editor?engine=spectral-topography&mode=wire-relief - **Flyover** (`flyover`): The same surface with the camera travelling along the time axis. Open it at https://sonicweaver.com/editor?engine=spectral-topography&mode=flyover #### Controls (39) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#5eead4`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#94a3b8`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#04070a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `bandResolution`: **Band resolution** (Topography, range). Columns across the frequency axis. Range 24–128. Default `64`; animatable. - `contourSpacing`: **Contour spacing** (Topography, range). Gap between iso-levels on the map. Range 0.04–0.5. Default `0.12`; animatable, audio-bindable. - `heightScale`: **Height scale** (Topography, range). Relief of the projected surface. Range 0–1. Default `0.55`; animatable, audio-bindable. - `fog`: **Fog** (Topography, range). How quickly the far end fades into the background. Range 0–1. Default `0.35`; animatable, audio-bindable. - `viewpoint`: **Viewpoint** (Topography, range). Horizon height for the projected modes. Range 0–1. Default `0.45`; animatable, audio-bindable. --- ### Fluid Ink Feedback URL: https://sonicweaver.com/templates/fluid-ink · Reference: https://sonicweaver.com/help/visualizers/fluid-ink Stable id: `fluid-ink` · Engine version: 4.0.0 · Setup effort: medium Pigment injected into a bounded feedback field, so the image carries the whole track's history. Focus: Spreading stains, vortices, filaments, marbling, and dye injection #### Modes (6) - **Ink Bloom** (`ink-bloom`) [default]: Slow and viscous: pigment spreads outward and stays. Open it at https://sonicweaver.com/editor?engine=fluid-ink&mode=ink-bloom - **Dye Injection** (`dye-injection`): Many small injection points, each carrying its own colour. Open it at https://sonicweaver.com/editor?engine=fluid-ink&mode=dye-injection - **Curl Swirl** (`curl-swirl`): The field rotates about its centre, so pigment traces spirals. Open it at https://sonicweaver.com/editor?engine=fluid-ink&mode=curl-swirl - **Filament Detail** (`filament-detail`): Treble stretches blobs into threads on one axis. Open it at https://sonicweaver.com/editor?engine=fluid-ink&mode=filament-detail - **Dissipation Veil** (`dissipation-veil`): High dissipation: the field is always nearly clearing. Open it at https://sonicweaver.com/editor?engine=fluid-ink&mode=dissipation-veil - **Marble Fold** (`marble-fold`): A shear folds the sheet back over itself, producing marbled bands. Open it at https://sonicweaver.com/editor?engine=fluid-ink&mode=marble-fold #### Controls (37) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#60a5fa`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#fb7185`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#04040a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `viscosity`: **Viscosity** (Ink, range). How slowly pigment spreads. Range 0–1. Default `0.55`; animatable, audio-bindable. - `dissipation`: **Dissipation** (Ink, range). How quickly the field clears. Range 0.008–0.3. Default `0.04`; animatable, audio-bindable. - `curl`: **Curl** (Ink, range). Rotation and shear applied to the field each frame. Range 0–1. Default `0.35`; animatable, audio-bindable. - `injectionPoints`: **Injection points** (Ink, range). How many places pigment enters. Range 1–12. Default `3`; animatable. - `qualityCeiling`: **Quality ceiling** (Ink, range). Simulation grid size as a fraction of output. Range 0.15–1. Default `0.5`; animatable. --- ### Arrangement Tunnel URL: https://sonicweaver.com/templates/arrangement-tunnel · Reference: https://sonicweaver.com/help/visualizers/arrangement-tunnel Stable id: `arrangement-tunnel` · Engine version: 4.0.0 · Setup effort: medium Sections, beats and energy as a forward-moving tunnel that makes song structure visible. Focus: Section rings, beat ladders, energy profiles, boundary gates, and strip charts #### Modes (6) - **Section Rings** (`section-rings`) [default]: Each analysed section colours a band of the tunnel wall. Open it at https://sonicweaver.com/editor?engine=arrangement-tunnel&mode=section-rings - **Beat Rungs** (`beat-rungs`): The beat grid as ladder rungs, with heavier downbeats so bars are countable. Open it at https://sonicweaver.com/editor?engine=arrangement-tunnel&mode=beat-rungs - **Energy Profile** (`energy-profile`): The tunnel radius IS the energy history: a profile you fly through. Open it at https://sonicweaver.com/editor?engine=arrangement-tunnel&mode=energy-profile - **Marker Gates** (`marker-gates`): Section boundaries become solid gates the camera passes through. Open it at https://sonicweaver.com/editor?engine=arrangement-tunnel&mode=marker-gates - **Look-Ahead Map** (`lookahead-map`): A flattened strip chart with a playhead: past behind, unknown ahead. Open it at https://sonicweaver.com/editor?engine=arrangement-tunnel&mode=lookahead-map - **Structure Ribbon** (`structure-ribbon`): One continuous ribbon whose twist encodes section changes. Open it at https://sonicweaver.com/editor?engine=arrangement-tunnel&mode=structure-ribbon #### Controls (37) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#fb923c`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#818cf8`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#05050c`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `tunnelSpeed`: **Speed** (Arrangement, range). How quickly the tunnel travels. Range 0–1. Default `0.45`; animatable, audio-bindable. - `tunnelProfile`: **Profile** (Arrangement, range). How strongly energy widens the tunnel. Range 0–1. Default `0.5`; animatable, audio-bindable. - `lookAhead`: **Look ahead** (Arrangement, range). Share of the strip chart given to what has not played. Range 0–1. Default `0.4`; animatable, audio-bindable. - `markerLabels`: **Marker ticks** (Arrangement, boolean). Draw a tick group at each section boundary. Default `true`. --- ### Cover-Art Relief URL: https://sonicweaver.com/templates/cover-art-relief · Reference: https://sonicweaver.com/help/visualizers/cover-art-relief Stable id: `cover-art-relief` · Engine version: 4.0.0 · Setup effort: easy Your artwork as a layered relief: lows raise it, mids ripple it, highs make it shimmer. Focus: Embossed relief, lateral waves, surface shimmer, separated plates, and a flat safe mode #### Modes (6) - **Depth Emboss** (`depth-emboss`) [default]: Lows raise the centre plates and light their edges. Open it at https://sonicweaver.com/editor?engine=cover-art-relief&mode=depth-emboss - **Lateral Wave** (`lateral-wave`): Mids shear the slices sideways in a travelling wave. Open it at https://sonicweaver.com/editor?engine=cover-art-relief&mode=lateral-wave - **Shimmer Grain** (`shimmer-grain`): Highs add a surface sparkle and nothing moves. Open it at https://sonicweaver.com/editor?engine=cover-art-relief&mode=shimmer-grain - **Contour Slice** (`contour-slice`): The artwork opens into separated horizontal plates. Open it at https://sonicweaver.com/editor?engine=cover-art-relief&mode=contour-slice - **Parallax Tilt** (`parallax-tilt`): Layered copies separate with the beat to suggest depth. Open it at https://sonicweaver.com/editor?engine=cover-art-relief&mode=parallax-tilt - **Flat Safe** (`flat-safe`): No displacement at all: the artwork, with the response entirely outside it. Open it at https://sonicweaver.com/editor?engine=cover-art-relief&mode=flat-safe #### Controls (38) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#e7e5e4`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#c084fc`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#070609`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `coverImage`: **Cover artwork** (Artwork, text). The artwork to build the relief from; rights stay with you. Default ``. - `depthStrength`: **Depth strength** (Artwork, range). How far lows raise the relief. Range 0–1. Default `0.5`; animatable, audio-bindable. - `edgeStrength`: **Edge light** (Artwork, range). Lit edges along each slice, which is what reads as depth. Range 0–1. Default `0.4`; animatable, audio-bindable. - `displacementCap`: **Displacement cap** (Artwork, range). Hard ceiling on how far any slice may move. Range 0–1. Default `0.5`; animatable, audio-bindable. - `sliceCount`: **Slice count** (Artwork, range). Horizontal plates the artwork is cut into. Range 8–160. Default `48`; animatable. - `cropInset`: **Crop inset** (Artwork, range). Margin around the placed artwork. Range 0–0.3. Default `0.06`; animatable, audio-bindable. --- ### Kinetic Lyric Typescape URL: https://sonicweaver.com/templates/kinetic-typescape · Reference: https://sonicweaver.com/help/visualizers/kinetic-typescape Stable id: `kinetic-typescape` · Engine version: 4.0.0 · Setup effort: easy Caption phrases as timed spatial typography, with a readable non-kinetic mode always available. Focus: Word pops, sliding lines, depth stacks, karaoke fills, and a static readable mode #### Modes (7) - **Word Pop** (`word-pop`) [default]: One word at a time, scaled by onset, with the phrase dim beneath. Open it at https://sonicweaver.com/editor?engine=kinetic-typescape&mode=word-pop - **Line Slide** (`line-slide`): Whole lines travel through the safe box, clamped so nothing leaves it. Open it at https://sonicweaver.com/editor?engine=kinetic-typescape&mode=line-slide - **Depth Stack** (`depth-stack`): Upcoming lines stacked in perspective with the current one nearest. Open it at https://sonicweaver.com/editor?engine=kinetic-typescape&mode=depth-stack - **Karaoke Fill** (`karaoke-fill`): The line is held and fills left to right as the phrase plays. Open it at https://sonicweaver.com/editor?engine=kinetic-typescape&mode=karaoke-fill - **Scatter Settle** (`scatter-settle`): Words arrive scattered and settle into their line positions. Open it at https://sonicweaver.com/editor?engine=kinetic-typescape&mode=scatter-settle - **Static Readable** (`static-readable`): No motion at all: one line, centred, on a solid contrast plate. Open it at https://sonicweaver.com/editor?engine=kinetic-typescape&mode=static-readable - **Typewriter** (`typewriter`): Lines type out letter by letter under a blinking caret with a faint ink bleed, and earlier lines fade up the page. Open it at https://sonicweaver.com/editor?engine=kinetic-typescape&mode=typewriter #### Controls (38) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#fef08a`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#f472b6`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#08060a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `captionText`: **Caption lines** (Typography, text). One phrase per line; LRC, SRT and VTT import in the caption editor land here. Default `Your lyrics here One phrase per line Timed to the beat`. - `typeScale`: **Type scale** (Typography, range). Base type size as a fraction of the frame. Range 0.03–0.2. Default `0.09`; animatable, audio-bindable. - `tracking`: **Tracking** (Typography, range). Extra spacing between characters. Range 0–0.2. Default `0.02`; animatable, audio-bindable. - `readingSpeed`: **Reading speed** (Typography, range). Characters per second a phrase is held for. Range 4–24. Default `12`; animatable. - `emphasis`: **Emphasis** (Typography, range). How strongly a beat scales or moves the text. Range 0–1. Default `0.5`; animatable, audio-bindable. - `safeZone`: **Caption safe zone** (Typography, range). Margin text may never leave. Range 0–0.3. Default `0.08`; animatable. --- ### Stereo Phase Garden URL: https://sonicweaver.com/templates/stereo-phase-garden · Reference: https://sonicweaver.com/help/visualizers/stereo-phase-garden Stable id: `stereo-phase-garden` · Engine version: 4.0.0 · Setup effort: medium Correlation, width and phase grow mirrored stems and petals; mono collapses toward the centre. Focus: Mirrored stems, phase blooms, orbiting seeds, correlation meters, and mono comparison #### Modes (6) - **Mirror Stems** (`mirror-stems`) [default]: Stems spread either side of a centre line by stereo width; mono closes them. Open it at https://sonicweaver.com/editor?engine=stereo-phase-garden&mode=mirror-stems - **Petal Bloom** (`petal-bloom`): Correlation opens a radial flower: wide opens it, mono closes it to a bud. Open it at https://sonicweaver.com/editor?engine=stereo-phase-garden&mode=petal-bloom - **Orbit Seeds** (`orbit-seeds`): Seeds orbit at a radius set by width, in a direction set by balance. Open it at https://sonicweaver.com/editor?engine=stereo-phase-garden&mode=orbit-seeds - **Phase Warning** (`phase-warning`): The mastering readout: a correlation meter, a width bar and an explicit verdict. Open it at https://sonicweaver.com/editor?engine=stereo-phase-garden&mode=phase-warning - **Width Canopy** (`width-canopy`): A canopy whose spread across the frame is the stereo width history. Open it at https://sonicweaver.com/editor?engine=stereo-phase-garden&mode=width-canopy - **Mono Safe** (`mono-safe`): Draws only what survives a mono fold-down, so the two can be compared. Open it at https://sonicweaver.com/editor?engine=stereo-phase-garden&mode=mono-safe #### Controls (38) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#6ee7b7`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#7dd3fc`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#04080a`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `symmetry`: **Symmetry** (Geometry, range). Repeated geometry symmetry. Range 1–64. Default `1`; animatable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `correlationSmoothing`: **Correlation smoothing** (Stereo, range). How steadily the garden follows a noisy correlation reading. Range 0–0.95. Default `0.6`; animatable, audio-bindable. - `growthSpeed`: **Growth speed** (Stereo, range). How quickly stems, petals and seeds move. Range 0–1. Default `0.5`; animatable, audio-bindable. - `widthExaggeration`: **Width exaggeration** (Stereo, range). Scales the measured width for visibility, never the correlation. Range 0–1. Default `0.5`; animatable, audio-bindable. - `safePhaseWarning`: **Phase warning** (Stereo, boolean). Show the unsafe-phase band when the mix would partially cancel in mono. Default `true`. --- ### Horizon Scenes URL: https://sonicweaver.com/templates/horizon-scenes · Reference: https://sonicweaver.com/help/visualizers/horizon-scenes Stable id: `horizon-scenes` · Engine version: 4.0.0 · Setup effort: easy Original audio-reactive landscapes: a horizon, a sky and a sun that the mix drives, from lo-fi coasts to neon highways. Focus: Sunsets, oceans, synthwave roads, deserts, lakes and harbours with a lyric-safe lower third #### Modes (6) - **Coastal Sunset** (`coastal-sunset`) [default]: A banded lo-fi sun over layered swell; every beat rolls a spectrum-shaped wave to the shore and the wet sand keeps its high-water line. Open it at https://sonicweaver.com/editor?engine=horizon-scenes&mode=coastal-sunset - **Synthwave Drive** (`synthwave-drive`): A neon grid highway runs into a scanlined sun ringed by the spectrum, with oncoming headlights launched on the beat. Open it at https://sonicweaver.com/editor?engine=horizon-scenes&mode=synthwave-drive - **Desert Dusk** (`desert-dusk`): Dune ridges under a shimmering dusk sky; the bass lifts the dunes, the highs shimmer the air and beats blow sand across the frame. Open it at https://sonicweaver.com/editor?engine=horizon-scenes&mode=desert-dusk - **Mountain Lake** (`mountain-lake`): Layered peaks mirrored in a still lake; each beat sends a ripple out from the sun's reflection and shakes the mirror image. Open it at https://sonicweaver.com/editor?engine=horizon-scenes&mode=mountain-lake - **Neon Harbor** (`neon-harbor`): A night harbour of piers, boats and a lighthouse; beats chase light down the string lights and the reflections stretch with the mix. Open it at https://sonicweaver.com/editor?engine=horizon-scenes&mode=neon-harbor - **Moonlit Sea** (`moonlit-sea`): An engraved sea under a full moon; the swell follows the waveform and beats send light racing down the moon path. Open it at https://sonicweaver.com/editor?engine=horizon-scenes&mode=moonlit-sea #### Controls (38) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#fb923c`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#c026d3`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#0b0620`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `horizonLevel`: **Horizon height** (Scene, range). Where the horizon sits: lower leaves more sky, higher leaves more water or ground. Range 0.4–0.72. Default `0.58`; animatable, audio-bindable. - `sunScale`: **Sun size** (Scene, range). Size of the sun, moon or beacon the scene's motion comes from. Range 0.5–1.6. Default `1`; animatable, audio-bindable. - `haze`: **Haze** (Scene, range). Atmosphere: sea mist, heat shimmer, road smoke or harbour fog, depending on the scene. Range 0–1. Default `0.45`; animatable, audio-bindable. - `lyricBand`: **Lyric-safe band** (Scene, range). How much the lower third is calmed and darkened so captions stay readable. Range 0–1. Default `0.55`; animatable. - `grain`: **Film grain** (Scene, range). Analog grain over the scene; the synthwave highway adds VHS scanlines. Range 0–1. Default `0.25`; animatable. --- ### Disco URL: https://sonicweaver.com/templates/disco-lights · Reference: https://sonicweaver.com/help/visualizers/disco-lights Stable id: `disco-lights` · Engine version: 4.0.0 · Setup effort: easy An 80s club in six shots: a turning mirror ball, scissoring light rays, a lit dance floor, glitter, haze and a neon roller rink, all timed to the beat. Focus: Mirror balls, light rays, dance floors, glitter, haze-cutting spots and roller rinks #### Modes (6) - **Mirror Ball** (`mirror-ball`) [default]: A faceted ball turns and throws its spots across the room; each beat flares a volley and fires rays to it through the haze. Open it at https://sonicweaver.com/editor?engine=disco-lights&mode=mirror-ball - **Light Rays** (`light-rays`): Coloured shafts fan from a single star and scissor against each other; beats kick them apart and race light out along them. Open it at https://sonicweaver.com/editor?engine=disco-lights&mode=light-rays - **Dance Floor** (`dance-floor`): A perspective floor of light tiles: the spectrum runs up the columns and every beat sends a ripple of light out from the centre tile. Open it at https://sonicweaver.com/editor?engine=disco-lights&mode=dance-floor - **Glitter Rain** (`glitter-rain`): Glitter falls and turns in the light; each hit flashes a third of it and fires a fresh spray that settles into a drift on the floor. Open it at https://sonicweaver.com/editor?engine=disco-lights&mode=glitter-rain - **Spotlight Haze** (`spotlight-haze`): Floor cans sweep their spots across the wall through thick haze; the beat pumps the haze and pushes a lit puff up into the light. Open it at https://sonicweaver.com/editor?engine=disco-lights&mode=spotlight-haze - **Roller Rink** (`roller-rink`): Neon comets circle the lanes of an oval rink and speed up with the energy; each beat spirals a new one out from the centre. Open it at https://sonicweaver.com/editor?engine=disco-lights&mode=roller-rink #### Controls (36) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#f0abfc`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#fbbf24`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#12031c`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `haze`: **Haze** (Club, range). Density of the fog the beams, spots and rays cut through. Range 0–1. Default `0.5`; animatable, audio-bindable. - `lightCount`: **Light count** (Club, range). How many spots, shafts, tiles, glitter flakes, cans or lanes each shot uses. Range 0.4–1.6. Default `1`; animatable. - `swing`: **Swing** (Club, range). How far the lights sweep and how hard each beat kicks them. Range 0–1.5. Default `0.7`; animatable, audio-bindable. - `sparkle`: **Sparkle** (Club, range). Strength of the glints and flashes that fire on hits. Range 0–1. Default `0.6`; animatable, audio-bindable. --- ### Liquid URL: https://sonicweaver.com/templates/liquid-flow · Reference: https://sonicweaver.com/help/visualizers/liquid-flow Stable id: `liquid-flow` · Engine version: 4.0.0 · Setup effort: easy Liquid surfaces that move with the music: flowing gradients, glowing beads, lava wax, chrome, oil film and silk. Focus: Mesh gradients, droplets, lava lamps, chrome, oil films and silk #### Modes (6) - **Mesh Gradient** (`mesh-gradient`) [default]: Soft blobs of colour pushed by the bass, with colour drops poured from a glowing core on every beat and a frosted equalizer that keeps its high-water line. Open it at https://sonicweaver.com/editor?engine=liquid-flow&mode=mesh-gradient - **Droplets** (`droplets`): Glowing glass beads orbit a mother drop, merging and splitting; every beat flings new beads across the frame and leaves a tide line of tiny drops. Open it at https://sonicweaver.com/editor?engine=liquid-flow&mode=droplets - **Lava Lamp** (`lava-lamp`): Warm wax buds from a molten pool on the beat, swells with the low end, rises as high as the hit was loud and sinks back, marking its high-water line. Open it at https://sonicweaver.com/editor?engine=liquid-flow&mode=lava-lamp - **Chrome Blob** (`chrome-blob`): A glossy liquid-metal blob in a soft studio whose surface ripples with the spectrum; beats make it jiggle and fling chrome drops across a mirror floor. Open it at https://sonicweaver.com/editor?engine=liquid-flow&mode=chrome-blob - **Oil Slick** (`oil-slick`): Thin-film rainbow bands swirl around an oil drop on wet asphalt, shimmering with the highs; each beat spreads a new film ring out across the frame. Open it at https://sonicweaver.com/editor?engine=liquid-flow&mode=oil-slick - **Aurora Silk** (`aurora-silk`): Satin ribbons fan out from a glowing knot and twist across the frame; every beat sends a bright ripple running down the silk. Open it at https://sonicweaver.com/editor?engine=liquid-flow&mode=aurora-silk #### Controls (38) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#a78bfa`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#38bdf8`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#07040f`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `viscosity`: **Viscosity** (Liquid, range). Thicker liquid moves slower, bridges between drops sooner and ripples less. Range 0–1. Default `0.5`; animatable, audio-bindable. - `density`: **Density** (Liquid, range). How many blobs, beads, film bands or ribbons fill the frame. Range 0.4–2. Default `1`; animatable, audio-bindable. - `gloss`: **Gloss** (Liquid, range). Strength of the specular highlights and sheen on every liquid surface. Range 0–2. Default `1`; animatable, audio-bindable. - `grain`: **Grain** (Liquid, range). Fine film grain that keeps the smooth gradients from banding. Range 0–1. Default `0.3`; animatable. - `eqHeight`: **Equalizer** (Liquid, range). Height of the frosted equalizer under the gradient; 0 hides it. Range 0–1. Default `0.55`; animatable, audio-bindable. --- ### Portal URL: https://sonicweaver.com/templates/portal-rings · Reference: https://sonicweaver.com/help/visualizers/portal-rings Stable id: `portal-rings` · Engine version: 4.0.0 · Setup effort: easy Luminous gateways: rings of light that pull the frame inward, with the spectrum on their rim. Focus: Neon portals, star gates, wormholes, hex gates, eclipses and rifts #### Modes (6) - **Neon Portal** (`neon-portal`) [default]: A neon ring rising over a synthwave grid pulls the starfield inward, the spectrum standing on its rim with held peak caps. Open it at https://sonicweaver.com/editor?engine=portal-rings&mode=neon-portal - **Star Gate** (`star-gate`): Square gate frames with glowing chevrons lurch one gate closer on every beat, out of a bright far gate. Open it at https://sonicweaver.com/editor?engine=portal-rings&mode=star-gate - **Wormhole** (`wormhole`): An hourglass of light seen from the side: its axis bends with the mids and every beat sends a pulse out of the throat. Open it at https://sonicweaver.com/editor?engine=portal-rings&mode=wormhole - **Hex Gate** (`hex-gate`): Nested hexagons drift apart, snap into alignment on each hit and fire bolts through a honeycomb. Open it at https://sonicweaver.com/editor?engine=portal-rings&mode=hex-gate - **Eclipse Ring** (`eclipse-ring`): A black disc ringed by a filament corona that flares on the beat and flings plasma across the sky. Open it at https://sonicweaver.com/editor?engine=portal-rings&mode=eclipse-ring - **Rift** (`rift`): A vertical tear of light that widens with the energy and throws shards to both edges on the hits. Open it at https://sonicweaver.com/editor?engine=portal-rings&mode=rift #### Controls (36) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#e879f9`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#22d3ee`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#05020d`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `portalScale`: **Portal size** (Portal, range). Size of the gateway each mode is built around. Range 0.6–1.4. Default `1`; animatable, audio-bindable. - `swirl`: **Swirl** (Portal, range). How fast the gateway turns, twists and writhes. Range 0–2. Default `1`; animatable, audio-bindable. - `haze`: **Nebula haze** (Portal, range). Atmospheric glow behind the gateway. Range 0–1. Default `0.5`; animatable. --- ### Now Playing URL: https://sonicweaver.com/templates/now-playing · Reference: https://sonicweaver.com/help/visualizers/now-playing Stable id: `now-playing` · Engine version: 4.0.0 · Setup effort: medium Finished release cards: your cover art, title and artist framed by a live spectrum, a progress bar and a timer. Focus: Cover art framing, track titles, progress bars, timers and player layouts #### Modes (6) - **Elegant Circle** (`elegant-circle`) [default]: The cover as a round core ringed by a circular spectrum, mirrored spectra running out to both edges, and the title, progress bar and timer beneath. Open it at https://sonicweaver.com/editor?engine=now-playing&mode=elegant-circle - **Classic Player** (`classic-player`): A player screen: thumbnail, title and a large timecode over a dot-matrix equalizer with a glowing spectrum curve and a progress bar. Open it at https://sonicweaver.com/editor?engine=now-playing&mode=classic-player - **Vinyl Sleeve** (`vinyl-sleeve`): The record slides out of its sleeve and spins, its grooves glowing band by band while the tonearm tracks the song. Open it at https://sonicweaver.com/editor?engine=now-playing&mode=vinyl-sleeve - **Minimal Card** (`minimal-card`): A quiet glass card with the artwork and title above one hairline waveform that crosses the frame and marks the song position. Open it at https://sonicweaver.com/editor?engine=now-playing&mode=minimal-card - **Blurred Cover** (`blurred-cover`): The artwork blurred to fill the frame, the sharp cover floating over a mirrored spectrum silhouette. Open it at https://sonicweaver.com/editor?engine=now-playing&mode=blurred-cover - **Polaroid** (`polaroid`): The cover as an instant photo hanging from a string of lights, swaying on the beat with the caption written on it. Open it at https://sonicweaver.com/editor?engine=now-playing&mode=polaroid #### Controls (42) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#e2e8f0`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#a78bfa`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#0a0a12`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `titleText`: **Title** (Track, text). Track title; leave empty to use the song title from the text panel. Default ``. - `artistText`: **Artist** (Track, text). Artist name; leave empty to use the artist from the text panel. Default ``. - `coverImage`: **Cover artwork** (Artwork, text). The artwork the layout is built around; rights stay with you. Default ``. - `showProgress`: **Progress bar** (Track, boolean). Show how far into the song you are. Default `true`. - `showTimer`: **Timer** (Track, boolean). Show the elapsed time and the track length. Default `true`. - `artScale`: **Artwork size** (Artwork, range). Size of the cover, record or photo in the layout. Range 0.6–1.4. Default `1`; animatable. - `textScale`: **Text size** (Track, range). Size of the title, artist and timer type. Range 0.6–1.5. Default `1`; animatable. - `spectrumSize`: **Spectrum size** (Artwork, range). How far the spectrum, equalizer, waveform, grooves or lights respond to the mix. Range 0–2. Default `1`; animatable, audio-bindable. - `swayAmount`: **Sway** (Artwork, range). How far the photo swings on each beat and in the idle breeze. Range 0–2. Default `1`; animatable, audio-bindable. --- ### Sketchbook URL: https://sonicweaver.com/templates/sketchbook · Reference: https://sonicweaver.com/help/visualizers/sketchbook Stable id: `sketchbook` · Engine version: 4.0.0 · Setup effort: easy Hand-drawn visuals on paper: pencil strokes, ink and charcoal that sketch the music as it plays. Focus: Pencil waves, doodles, charcoal, notebook grids, scribbles and blueprints #### Modes (6) - **Pencil Lines** (`pencil-lines`) [default]: Each beat, a pencil draws the waveform out from a graphite knot to both edges of grainy paper. Open it at https://sonicweaver.com/editor?engine=sketchbook&mode=pencil-lines - **Ink Doodles** (`ink-doodles`): Doodles fly out of an ink blot on the beat, sprout stroke by stroke and dry from glossy to matt. Open it at https://sonicweaver.com/editor?engine=sketchbook&mode=ink-doodles - **Charcoal Rings** (`charcoal-rings`): Rough charcoal rings burst from a smudged core, thicken with the bass and smear as they spread. Open it at https://sonicweaver.com/editor?engine=sketchbook&mode=charcoal-rings - **Notebook Grid** (`notebook-grid`): A ballpoint bar chart on ruled paper, redrawn bar by bar as a pen sweeps across on the beat. Open it at https://sonicweaver.com/editor?engine=sketchbook&mode=notebook-grid - **Scribble Bars** (`scribble-bars`): Mirrored bars coloured in with frantic graphite and red chalk scribbles, re-scribbled by each beat. Open it at https://sonicweaver.com/editor?engine=sketchbook&mode=scribble-bars - **Blueprint** (`blueprint`): White drafting on blueprint blue: a part shaped by the spectrum, dimensioned live as it plays. Open it at https://sonicweaver.com/editor?engine=sketchbook&mode=blueprint #### Controls (38) - `primaryColor`: **Primary color** (Style, color). Primary color used by the engine palette. Default `#1c1917`; animatable. - `secondaryColor`: **Secondary color** (Style, color). Secondary color used by the engine palette. Default `#57534e`; animatable. - `backgroundColor`: **Background** (Style, color). Background used by the engine palette. Default `#f5f0e6`; animatable. - `opacity`: **Opacity** (Transform, range). Visualizer opacity. Range 0–1. Default `1`; animatable. - `frameMargin`: **Frame margin** (Transform, range). Breathing room kept clear at the frame edges. Audio-driven geometry is soft-limited to fit inside it; geometry scale deliberately is not. Range 0–0.25. Default `0.035`; animatable. - `sensitivity`: **Sensitivity** (Audio, range). Bounded overall audio response. Range 0–3. Default `1`; animatable. - `spectrumRange`: **Spectrum range** (Audio, range). Fraction of the frequency range the visual spans. The top of the FFT is near-silent air on most material, so at 1 the right-hand edge of every spectrum visual barely moves. Range 0.2–1. Default `0.86`; animatable. - `audioSource`: **Primary audio source** (Audio, select). Primary audio source. Options: Bass, LowMid, Mid, HighMid, Treble, Rms, Peak, Onset, Beat, Bpm Phase. Default `bass`. - `frequencyFocus`: **Frequency focus** (Audio, select). Which part of the spectrum drives this visual; while no explicit audio source is set, the motion envelope follows this selection. Options: Full Spectrum, Bass Heavy, Mid Focus, Treble Focus, FFT band 1, FFT band 2, FFT band 3, FFT band 4, FFT band 5, FFT band 6, FFT band 7, FFT band 8, FFT band 9, FFT band 10, FFT band 11, FFT band 12, FFT band 13, FFT band 14, FFT band 15, FFT band 16, FFT band 17, FFT band 18, FFT band 19, FFT band 20, FFT band 21, FFT band 22, FFT band 23, FFT band 24, FFT band 25, FFT band 26, FFT band 27, FFT band 28, FFT band 29, FFT band 30, FFT band 31, FFT band 32. Default `full`. - `burstIntensity`: **Burst intensity** (Audio, range). Glow and trail swell on sharp hits; 0 keeps bursts off. Range 0–3. Default `0`; animatable. - `bedLevel`: **Ambient bed** (Effects, range). Prominence of the standing background layer behind the beat-born elements. Range 0–1.5. Default `1`; animatable. - `wakeLength`: **Wake length** (Effects, range). How far motion trails stretch behind beat-born travelers; 0 removes the wake. Range 0–2. Default `1`; animatable. - `sourceGlow`: **Pulse core** (Effects, range). Prominence of the source element the beat emanations fire from; 0 hides it. Range 0–2. Default `1`; animatable. - `peakMemory`: **Peak memory** (Effects, range). How long peak markers hold before fading; 0 disables the memory layer. Range 0–2. Default `1`; animatable. - `audioAmount`: **Audio contribution** (Audio, range). Maximum contribution from the primary audio route. Range 0–1. Default `0.55`; animatable. - `audioDynamics`: **Audio dynamics** (Audio, range). How much of the band's movement reaches the visual. 1 = full dynamics; 0 holds it at a steady level for a calmer, more constant look. Range 0–1. Default `1`; animatable. - `audioAttackMs`: **Audio attack** (Audio, range). Envelope attack in milliseconds. Range 0–2000. Default `45`; animatable. - `audioReleaseMs`: **Audio release** (Audio, range). Envelope release in milliseconds. Range 0–5000. Default `240`; animatable. - `geometryScale`: **Geometry scale** (Geometry, range). Geometry scale. Range 0.05–8. Default `1`; animatable, audio-bindable. - `thickness`: **Thickness** (Geometry, range). Thickness. Range 0.1–100. Default `2`; animatable, audio-bindable. - `speed`: **Speed** (Motion, range). Time-based motion; default major cycle is 6–12 seconds. Range 0–2. Default `0.1`; animatable, audio-bindable. - `colorMode`: **Color mode** (Style, select). Duo palette, primary→secondary gradient, or full rainbow sweep. Options: Duo, Gradient, Spectrum. Default `duo`. - `glow`: **Glow** (Effects, range). Glow. Range 0–2. Default `0.55`; animatable, audio-bindable. - `globalGlow`: **Global glow** (Effects, range). Shared emissive strength across the frame. Range 0–2. Default `0.35`; animatable, audio-bindable. - `pulseIntensity`: **Pulse intensity** (Effects, range). Beat pulse scale for spawn, size, and shake. Range 0–2. Default `1`; animatable, audio-bindable. - `beatResponse`: **Beat response** (Audio, range). How hard every engine hits on each detected beat. Range 0–2. Default `1.2`; animatable, audio-bindable. - `beatSmoothing`: **Beat smoothing** (Audio, range). How long each beat hit rings out before it settles. Range 0–0.9. Default `0.35`; animatable, audio-bindable. - `beatAttack`: **Beat attack** (Audio, range). Seconds for a hit to swell to full. 0 snaps instantly. Range 0–0.5. Default `0`; animatable, audio-bindable. - `beatRelease`: **Beat release** (Audio, range). Seconds for a hit to fade, overriding Beat smoothing. 0 follows it. Range 0–1.5. Default `0`; animatable, audio-bindable. - `shakeAmount`: **Beat shake** (Effects, range). Frame kick strength on each beat. Range 0–2. Default `0.6`; animatable, audio-bindable. - `feedback`: **Motion echo** (Effects, range). Motion echo. Range 0–0.97. Default `0`; animatable, audio-bindable. - `blur`: **Blur** (Effects, range). Blur. Range 0–40. Default `0`; animatable, audio-bindable. - `chromaticAberration`: **Chromatic aberration** (Effects, range). Chromatic aberration. Range 0–1. Default `0`; animatable, audio-bindable. - `beatSyncAll`: **Beat sync all** (Audio, boolean). Route beat energy into spawn, shake, pulse, speed, and scale. Default `true`. - `lineWobble`: **Hand wobble** (Sketch, range). How far every stroke wanders from a ruler line, like a hand-held pencil. Range 0–1. Default `0.5`; animatable, audio-bindable. - `lineBoil`: **Line boil** (Sketch, range). How often lines are redrawn with a fresh wobble, like hand-drawn animation; 0 holds them steady. Range 0–1. Default `0.5`; animatable, audio-bindable. - `paperGrain`: **Paper grain** (Sketch, range). Strength of the paper tooth that breaks up the strokes. Range 0–1. Default `0.6`; animatable, audio-bindable. - `strokeDensity`: **Stroke density** (Sketch, range). Extra pencil passes, tighter hatching and denser scribbles. Range 0–1. Default `0.5`; animatable, audio-bindable. --- ## Help articles ### Create your first visualizer URL: https://sonicweaver.com/help/first-visualizer Choose an engine, attach audio, tune a mode, and export from Classic or Studio. #### Start with a canonical engine Open Templates and choose from Particles, Trails, Bloom, Character Motion, Radial, Spectrum, Bars, Tunnel, Waveform, Logo, Lattice, Terrain, Stage Lights, Harmonic Constellation, Chladni Resonance Plate, Voronoi Stained Glass, Procedural Night City, Spectral Topography, Fluid Ink Feedback, Arrangement Tunnel, Cover-Art Relief, Kinetic Lyric Typescape, Stereo Phase Garden, Horizon Scenes, Disco, Liquid, Portal, Now Playing and Sketchbook. A mode changes the engine configuration without creating a separate template. - Use in Classic for the guided workflow. - Open in Studio for layers, nodes, timeline, geometry, and rigs. - Preview and export use the same fixed-step renderer. #### Audio and beat grid Attach audio, run detection, then correct BPM, time signature, grid offset, or individual markers. Bind controls through bounded mappings rather than raw FFT values. #### Save or export Guests can export locally or download a `.novusvis` document. Sign in to save revisions in Turso and optionally upload audio privately. --- ### Classic and Studio URL: https://sonicweaver.com/help/classic-and-studio Understand the two editors and move between them without serialization loss. #### Classic Classic renders the same control schemas as Studio in a focused workflow for audio, engine mode, geometry, direction, color, captions, logos, overlays, beat effects, trim, recommendations, and export. #### Studio Studio exposes the normalized layer tree, node graph, timeline, inspector, asset browser, direct canvas manipulation, and character rig workspace on desktop, tablet, and phone. #### Round trips Both editors edit one `NovusComposition`. Classic preserves graph and timeline data it does not expose, so opening a document in either editor does not flatten it. The shared graph evaluator runs live in Studio preview and Classic playback, so LFO, math, envelope, remap, merge, and effect nodes change the image in both editors. --- ### Account security and recovery URL: https://sonicweaver.com/help/account-security Username/password accounts, passkeys, recovery codes, and active sessions without email. #### Why sign in Guest editing and export stay free. Signing in adds durable Turso revisions, private assets, cross-device access, profiles, community, and notifications. #### Recovery Novus sends no email. Save the recovery codes shown at signup and add a passkey. Codes are hashed, single-use, and replaced as a complete set. - Use a passkey or username plus an unused recovery code at `/recover`. - Recovery creates a short-lived HttpOnly session and never returns a reset token in JSON. - Without a passkey, recovery code, or authenticated trusted session, the account cannot be self-recovered. #### Sessions and admins Security settings list active devices without exposing session tokens. Admins use the normal account session; privileged changes require a fresh passkey and create an immutable audit record. --- ### Saving projects and assets URL: https://sonicweaver.com/help/saving-projects Autosave states, conflicts, revisions, local import, and optional private audio uploads. #### Autosave Signed-in edits are debounced and flushed on explicit save and visibility changes. The editor reports saving, saved, offline, conflict, or failed. Revision tokens prevent another device from being silently overwritten. #### Guest work Guests have no durable browser library. Save opens authentication and claims the current in-memory document. Export `.novusvis` before leaving if you do not want to sign in. #### Private assets Uploads use short-lived scoped tokens, checksums, magic-byte/decode validation, and quarantine. Choose once per project whether audio is included in cloud saving. If not, another device requests the matching file by fingerprint. --- ### Publishing and community URL: https://sonicweaver.com/help/community Private-by-default projects, immutable posts, remix attribution, reports, and moderation. #### Publish explicitly A project stays private until you publish. Publication freezes one revision and generates or accepts a separately validated public preview. Later private edits do not change the post. #### Interact safely Like, save, follow, comment, remix with attribution, block, or report. Reports can target posts, comments, profiles, and assets. Moderation decisions arrive in the notification inbox. #### Remixes A remix is a private copy of the published engine, geometry, graph, and timeline. Private source audio and media are removed; attach your own assets. The source attribution reconnects when publishing. --- ### Preview and browser export URL: https://sonicweaver.com/help/exporting Deterministic local export, formats, audio, captions, alpha, and device capability limits. #### Parity Live preview, still capture, and video export use the same composition graph, fixed-step clock, and audio-frame contract. Identical timestamps and seeds produce equivalent frames within the renderer tolerance. #### Capability limits Novus encodes with WebCodecs where the browser provides it and falls back to the browser's own MediaRecorder, which produces WebM. There is no FFmpeg or WASM transcode: that route was removed because it could never load behind this site's Content Security Policy and its encoder core is GPL licensed. Supported desktop hardware may export up to 4K. Constrained phones are limited to 1080p to avoid failed or corrupted exports. #### Local rendering Rendering remains on your device; there is no cloud-render queue. Audio inclusion, trims, captions, platform dimensions, frame rate, and alpha support depend on the selected format. --- ## Glossary ### Audio analysis What the analyser measures in your track, and what the numbers mean. **Bass, mid and treble bands** (https://sonicweaver.com/glossary#frequency-bands) Groups of neighbouring frequency bins summarised into a single number each, so a control can be driven by “how much bass is happening” instead of by hundreds of individual bins. In Novus: Any audio-bindable control can be routed to a band; the bands are the same ones the export path computes, so a binding behaves identically in preview and in the rendered file. **FFT (Fast Fourier Transform)** (https://sonicweaver.com/glossary#fft) The calculation that turns a slice of audio into a list of how much energy sits at each frequency. Every bar, ring and ridge you see reacting to pitch rather than loudness is reading an FFT. In Novus: Run once per rendered frame against the current audio window; the result is the frame's frequency bins. **Frequency bin** (https://sonicweaver.com/glossary#frequency-bin) One slot in the FFT result, covering a narrow span of frequencies. More bins means finer pitch detail and a busier picture; fewer means a smoother, calmer shape. In Novus: Exposed as a bar or bin count on the engines that draw the spectrum directly. Controls: `binCount`, `barCount` **Gain** (https://sonicweaver.com/glossary#gain) A multiplier applied to the audio signal before anything draws it. Turning gain up makes a quiet track drive the visuals as hard as a loud one; it changes the picture, not the exported audio. Controls: `gain` **Mel scale** (https://sonicweaver.com/glossary#mel-scale) A way of spacing frequency bins that matches how human hearing works: fine detail low down, coarser detail high up. A mel-scaled spectrum looks more like the music sounds than a linear one does. **Oscilloscope / Lissajous** (https://sonicweaver.com/glossary#oscilloscope) A waveform drawn as a line on an XY plane instead of left-to-right. Feed the left channel to X and the right to Y and the shape tells you about the stereo image: a diagonal line is mono, a circle is wide. **Peak** (https://sonicweaver.com/glossary#peak) The single loudest sample in the current window. Unlike RMS it reacts to one sharp hit, which makes it useful for flashes and useless for anything you want to stay steady. **Peak hold** (https://sonicweaver.com/glossary#peak-hold) A marker that jumps instantly to a bar's highest recent value and then falls back slowly. It is what makes an equalizer readable: the bars move too fast to follow, the caps do not. Controls: `peakHoldMs` **RMS** (https://sonicweaver.com/glossary#rms) Root mean square: the average loudness of the current audio window. It moves smoothly and is the right signal for size, brightness or drift; it is a poor signal for anything that should snap. **Spectral smoothing** (https://sonicweaver.com/glossary#spectral-smoothing) How much each frame's spectrum is blended with the frames before it. High smoothing gives a calm, flowing shape that lags the music slightly; low smoothing is twitchy and immediate. Controls: `spectralSmoothing` **Spectrogram** (https://sonicweaver.com/glossary#spectrogram) A picture of frequency over time: one axis is pitch, the other is history, and brightness is energy. Scroll it and the last few seconds of the track become a landscape. In Novus: Engines that keep spectral history expose how many past frames to hold. Controls: `historyDepth` **Transient** (https://sonicweaver.com/glossary#transient) The very short, very loud start of a sound: a stick hitting a snare, a pick hitting a string. Transients are what make a mix feel percussive, and they are what onset detection looks for. **Waveform vs spectrum** (https://sonicweaver.com/glossary#waveform-vs-spectrum) A waveform draws the audio signal itself: amplitude against time, the shape you see in an audio editor. A spectrum draws the FFT of that signal: energy against pitch. They are two different views of the same second of music, and picking the wrong one is the most common reason a visualizer “doesn't react”. In Novus: Both are first-class engines rather than modes of one another. ### Beat and timing How Novus decides when a beat happened and what reacts to it. **Audio amount** (https://sonicweaver.com/glossary#audio-amount) How far the audio is allowed to push a control away from its base value. At zero the control holds still; at one the music has full authority. It is the difference between a visualizer that reacts and one that thrashes. Controls: `audioAmount` **Audio binding** (https://sonicweaver.com/glossary#audio-binding) A bounded route from an audio signal to a control: pick a source, pick a range, and the control moves inside that range only. Bounded is the important word; a raw FFT value wired straight into a size is how visualizers blow up on a loud chorus. In Novus: Any control marked audio-bindable in the engine reference can take one. **Beat** (https://sonicweaver.com/glossary#beat) A musically meaningful pulse: the thing you would tap along to. Not every onset is a beat, which is why Novus tracks them separately: onsets are what happened, beats are what counts. In Novus: Every engine mode is required to respond visibly to the beat latch; a mode that ignores it fails the render registry test. **Beat grid** (https://sonicweaver.com/glossary#beat-grid) The editable map of where the beats are: tempo, time signature, an offset for the first downbeat, and any individual markers you have moved. Detection proposes it; you own it. In Novus: Corrections to the grid are stored in the composition, so the grid you fixed is the grid the export uses. **Beat latch** (https://sonicweaver.com/glossary#beat-latch) The internal signal that goes to full on a detected beat and then falls back on its own. It is what lets a shape punch on the kick without the renderer needing to know anything about tempo. Controls: `beatSyncAll`, `beatAttack`, `beatRelease`, `beatSmoothing` **BPM** (https://sonicweaver.com/glossary#bpm) Beats per minute: the tempo. Detection estimates it from the spacing of detected beats, and you can correct the estimate by hand when a track's intro fools it. **BPM phase** (https://sonicweaver.com/glossary#bpm-phase) Where you are between one beat and the next, as a number from 0 to 1. Binding to phase rather than to the beat itself gives you smooth motion that stays locked to tempo: a rotation that completes exactly one turn per bar, for example. **Envelope (attack and release)** (https://sonicweaver.com/glossary#envelope) The shape of a reaction over time: attack is how fast it rises, release is how slowly it falls. A short attack with a long release is a punch that lingers; long attack and short release is a swell that snaps off. In Novus: The beat smoothing control sets both time constants together, so one slider takes you from a hard strobe to a gentle breath. Controls: `beatAttack`, `beatRelease`, `beatSmoothing` **LFO** (https://sonicweaver.com/glossary#lfo) A low-frequency oscillator: a slow, repeating wave used as a source of motion rather than as sound. Route one into a control and it sways on its own whether or not the music is doing anything. In Novus: An LFO node in the Studio graph, evaluated by the same graph evaluator that runs during Classic playback. **Onset** (https://sonicweaver.com/glossary#onset) The moment a new sound starts. Onset detection watches for a sudden rise in energy and reports it as an instant, which is why it fires on hi-hats and guitar stabs as well as on kicks. ### Composition The document model both editors read and write. **Composition** (https://sonicweaver.com/glossary#composition) The document. One versioned file holding the layer tree, the node graph, the timeline, the beat grid and every control value, which both editors read and write. Opening a document in the other editor does not flatten what that editor cannot show. In Novus: Exported and imported as a .novusvis file; guests can download one without an account. **Engine** (https://sonicweaver.com/glossary#engine) A renderer with a published control schema and a stable id: the unit Novus builds visualizers out of. Engines are not presets: changing an engine's controls reshapes it rather than picking a different template. In Novus: Every engine's full control table is published on its reference page. **Engine version and migration** (https://sonicweaver.com/glossary#engine-version) Each engine's control schema carries a version. When a schema changes, a migration rewrites older documents into the new shape rather than dropping the values it no longer recognises. **Global vs layer scope** (https://sonicweaver.com/glossary#global-vs-layer) Some settings belong to the whole composition (resolution, the beat grid, the master clock) and some belong to one layer. Changing a global setting moves everything; changing a layer setting moves one thing. **Keyframe** (https://sonicweaver.com/glossary#keyframe) A control value pinned to a specific time. Between two keyframes the value is interpolated, which gives you scripted motion the music cannot override. **Layer** (https://sonicweaver.com/glossary#layer) One stacked element of the composition: an engine instance, an image, a caption, a logo. Layers composite in order, and each carries its own controls and its own audio routing. **Mode** (https://sonicweaver.com/glossary#mode) A named starting configuration of one engine: a set of control values with a title, not a separate renderer. Switching mode changes numbers; switching engine changes the code that draws. **Node graph** (https://sonicweaver.com/glossary#node-graph) The wiring diagram behind a composition: audio sources, maths, envelopes, remaps and merges, connected into the controls they drive. It is optional; a composition with no graph is a valid composition. In Novus: Edited in Studio, but evaluated in both editors, so a graph you built in Studio still animates during Classic playback. **Preset** (https://sonicweaver.com/glossary#preset) Any saved set of control values. A mode is a preset the catalogue ships; anything you save yourself is a preset too, and both are just values over the same schema. **Safe zone** (https://sonicweaver.com/glossary#safe-zone) A protected region of the frame that generated geometry must leave alone, usually the centre, so a logo or a face is never drawn over. Controls: `centerSafeZone`, `logoScale` **Seed** (https://sonicweaver.com/glossary#seed) The number that starts every random decision an engine makes. Same seed, same audio, same picture, which is what makes a preview worth trusting as a prediction of the export. **Timeline** (https://sonicweaver.com/glossary#timeline) The time axis of the composition: trims, sections, keyframes and markers. It is the same clock the export walks, so what you scrub is what you render. ### Rendering and export What happens between the canvas and the file you upload. **Alpha channel** (https://sonicweaver.com/glossary#alpha-channel) Per-pixel transparency, so a visualizer can be laid over other footage with no black box around it. Only some export formats can carry it; choosing a format without alpha is the usual reason a transparent export arrives opaque. **Aspect ratio** (https://sonicweaver.com/glossary#aspect-ratio) The shape of the frame: 16:9 for landscape video, 9:16 for vertical, 1:1 for square. Engines lay themselves out from the frame's shape, so switching ratio re-composes rather than crops. **Bitrate** (https://sonicweaver.com/glossary#bitrate) How many bits per second the encoder is allowed to spend. Too low and fast motion smears into blocks; past a point, more bitrate only makes the upload slower. **Codec vs container** (https://sonicweaver.com/glossary#codec-container) The codec is how the pictures are compressed; the container is the file that holds the compressed video, the audio and the metadata together. MP4 and WebM are containers, not codecs, which is why two MP4 files can behave completely differently. **Deterministic export** (https://sonicweaver.com/glossary#deterministic-export) The guarantee that the same composition, audio and seed produce equivalent frames every time, in preview and in the rendered file alike. It is why the preview is a preview and not an approximation. In Novus: Preview, still capture and video export share one clock, one audio-frame contract and one set of engine configs. **Fixed-step clock** (https://sonicweaver.com/glossary#fixed-step-clock) Advancing the animation by a constant amount per frame rather than by however long the last frame actually took. Without it, a slow machine renders a slower-looking video; the same project would export differently on a different laptop. **Frame rate** (https://sonicweaver.com/glossary#frame-rate) How many images per second the export contains. Higher is smoother and larger; 30 is fine for most uploads and 60 is worth it for fast motion. **Overlay** (https://sonicweaver.com/glossary#overlay) A visualizer meant to sit on top of something else (a stream, a gameplay capture, a talking head) rather than to fill the frame on its own. Overlays want transparency and a quiet centre. **Render load** (https://sonicweaver.com/glossary#render-load) How hard an engine works your device, summarised from its GPU cost and the number of elements it draws by default. Heavy engines are not better ones; they are the ones to check on a phone before you rely on them. In Novus: Shown on every engine card and on the engine reference page, derived from the same budget numbers the runtime enforces. **Spectrum (as a picture)** (https://sonicweaver.com/glossary#spectrum) Any drawing whose horizontal axis is pitch and whose height is energy: bars, a filled area, a ridge, a scrolling waterfall. All of them are the same FFT drawn differently. --- ## Tutorials ### Make Your First Music Visualizer URL: https://sonicweaver.com/tutorials/make-your-first-visualizer Difficulty: Beginner · Time: 5 min · Updated: 2026-07-16 The five-minute path from a song to a finished, watermark-free video: open the editor, pick a template, load your track, and export. **Before you start** - An audio file (MP3, WAV, OGG or M4A). No track handy? Grab one from the [Audio Library](https://sonicweaver.com/audio-library). - A desktop browser: Chrome or Edge give you the fastest, highest-quality export. This is the fastest route from a track to a finished visualizer video. Everything runs in your browser: your audio never leaves your device, there is no account, and the export has no watermark. Follow the five steps below and you will have an MP4 in about five minutes. > **In a hurry?** > The [Quick Start](https://sonicweaver.com/quick-setup) flow picks sensible defaults for a specific platform and drops you straight into the editor. This tutorial takes the slightly longer manual path so you learn where each control lives. #### Step 1: Pick a template Open the [Templates gallery](https://sonicweaver.com/templates). Every engine is a card with a live animated preview. Click a card to open its detail page, where you can compare the engine's **six modes** against a live preview, then hit **Use in Classic** to open it in the editor. > **Not sure which style fits?** > Our blog post [Choosing the Right Visualizer Engine for Your Genre](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre) matches styles to music, and [Classic and Studio](https://sonicweaver.com/help/classic-and-studio) explains the two editors you tune your chosen engine and mode in. #### Step 2: Load your audio In the editor, find the **Audio File** panel and drag your track onto the drop zone (or click **Select File**). Novus accepts MP3, WAV, OGG and M4A up to 200 MB, and processes everything locally. The moment audio loads, the editor auto-wires the engine's reactivity (low frequencies drive impact, mids drive structure, highs drive sparkle) so the visuals start moving with the music immediately. - Press play and watch a verse and a chorus so you know how the scene reacts. - Feed it the best audio you have: a WAV or high-bitrate MP3 gives cleaner motion than a muddy low-bitrate file. - Your upload is saved locally, so it survives a page reload without re-uploading. #### Step 3: Make one change You do not need to touch everything. For a first video, open **Theme & Colors** and click one of the nine palette presets (Neon, Sunset, Ocean, Midnight, Forest, Gold, Plasma, Rose, Arctic); it recolors the whole scene in one click. That single change already makes the visualizer feel like yours. Full customization is covered in [Recolor Your Visualizer](https://sonicweaver.com/tutorials/recolor-with-themes-and-settings). #### Step 4: Set your frame and export Open **Export Settings**. Pick a **Shape** for where the video is going (16:9 for YouTube, 9:16 for Shorts/Reels/TikTok) and a **Quality** tier (1080p is the fast, reliable default). Leave **Export full song duration** checked, then press **Export**. A review dialog summarizes your settings; confirm it and the render runs on your machine. *Figure: Diagram of 16:9, 9:16 and 1:1 export shapes: Match the Shape to the destination before exporting: 16:9 for YouTube, 9:16 for vertical, 1:1 for feed.* #### Step 5: Done, and it is yours The finished MP4 downloads automatically, watermark-free and yours to publish anywhere. That is the whole loop. From here, the [editor tour](https://sonicweaver.com/tutorials/editor-tour) shows you every panel, and the [Make a YouTube Music Visualizer](https://sonicweaver.com/tutorials/youtube-music-visualizer) tutorial walks the full end-to-end workflow with text, logo and platform-ready export settings. --- ### A Guided Tour of the Editor URL: https://sonicweaver.com/tutorials/editor-tour Difficulty: Beginner · Time: 6 min · Updated: 2026-07-16 What every panel in the Novus editor does (audio, reactivity, engine parameters, colors, text, assets, layers and export) so nothing feels like a mystery. **Before you start** - A template open in the [editor](https://sonicweaver.com/editor) so you can follow along. The editor packs a lot into one screen. The good news: it is organized into collapsible sections, and you only ever need a handful for any given video. Here is what each one is for, roughly top to bottom. #### Audio File Where you load your track (drag-and-drop or **Select File**, up to 200 MB). It also holds a collapsible **Audio Library** section so you can swap in a copyright-free song without leaving your project. Loading audio auto-connects the engine's frequency reactivity. #### Visualizer Controls (Audio Reaction Style) Open by default. This is the *how it moves* panel: **Frequency Focus**, the **Reactivity** slider, Pulse/Burst intensity, and the beat-driven **Frame motion** group. Small changes here dramatically change the feel; the [Tune Audio Reactivity](https://sonicweaver.com/tutorials/tune-audio-reactivity) tutorial is dedicated to it. #### Engine Parameters The sliders specific to your current engine: color pickers, speed, density, and a **Sensitivity** control on most engines. Every engine exposes a different set here, which is what makes each family distinct. #### Theme & Colors Nine one-click palette presets (Neon, Sunset, Ocean, Midnight, Forest, Gold, Plasma, Rose, Arctic) that push a coordinated color scheme across the entire scene. The quickest way to restyle a template. Covered in depth in [Recolor Your Visualizer](https://sonicweaver.com/tutorials/recolor-with-themes-and-settings). #### Text Overlay & Visual Assets **Text Overlay** holds your Song Title, Artist Name and an optional Tagline, with size and position controls. **Visual Assets** handles image uploads: Background, Logo (top-right by default), Underlay and Overlay, each with blend mode and opacity. Uploading into a slot switches its layer on automatically. Branding is covered in [Add Titles, Artist Text & a Logo](https://sonicweaver.com/tutorials/add-titles-artist-text-and-logo). *Figure: Diagram of editor layers: background, visualizer, and text/branding on top: The scene is a stack: background at the bottom, the engine in the middle, text and branding on top.* #### Feature Toggles Your layer switchboard: one-click On/Off for Background Image, Logo, Overlay Image, Song Title Text, Author Text, Intro/Outro templates, plus effect toggles like Particle Effects, Bloom/Glow and Captions/Lyrics. When a preview feels cluttered, this is where you simplify: toggle layers off while you tune, then back on before export. #### Beat FX, Captions & the deeper panels Beyond the everyday sections, **Beat FX** applies coordinated beat-reaction presets in one click, **Captions** holds the synced-lyric workflow (with on-device AI transcription), and **Intro & Outro** adds title cards around your video. The deeper visual dials (geometry shape, twist, fog, glow, motion echo, chromatic aberration) all live inside **Engine Parameters**, so there is one place to push an engine further. [Classic and Studio](https://sonicweaver.com/help/classic-and-studio) explains how the two editors share these controls. #### Export Settings The finish line: **Shape** (aspect ratio), **Quality** (1080p/1440p/4K), **Frame Rate** (24/30/60) and **Format** (MP4/WebM), plus a summary card showing the exact pixel frame and duration. Pressing **Export** opens a review dialog before the render. Full detail in [Export Settings Explained](https://sonicweaver.com/tutorials/export-settings-explained). > **You will not use all of it every time** > A great video often needs just four sections: Audio File, Theme & Colors, Text Overlay, and Export Settings. Learn those first; reach for the rest when a specific video calls for it. --- ### Make a YouTube Music Visualizer URL: https://sonicweaver.com/tutorials/youtube-music-visualizer Difficulty: Beginner · Time: 10 min · Updated: 2026-07-16 The complete 16:9 workflow: pick an engine, load your track, add colors, text and a logo, dial in YouTube-ready export settings, and upload it right. **Before you start** - Your finished track (MP3 or WAV) and permission to use it. - Optionally a transparent-PNG logo and a release tagline. - A desktop browser (Chrome/Edge) for the frame-accurate 4K export. A visualizer video is the fastest way to get a finished track onto YouTube without filming anything. This walks the full path: choosing an engine, loading audio, adding your colors, text and logo, setting a YouTube-ready frame, and uploading so it actually looks good on the platform. Everything happens in your browser, and the export is free and yours. #### Step 1: Pick an engine Start on the [Templates gallery](https://sonicweaver.com/templates). Each card has a live preview; open one to compare its **six modes** against the preview, then click **Use in Classic** to load it in the editor. For YouTube, motion-heavy engines like Tunnel and Particles hold attention well at 1080p and up, but preview dense scenes on your own machine first, since they lean on the GPU. > **Judge before you customize** > Watch a template with its default motion for at least one full loop before changing anything. Rejecting a template in ten seconds is cheaper than un-customizing one after ten minutes. #### Step 2: Load your track In the **Audio File** panel, drag your track in or click **Select File** (MP3, WAV, OGG, M4A up to 200 MB). It is processed entirely in your browser. As soon as it loads, the editor wires up FFT reactivity automatically (bass drives impact, mids drive structure, highs drive sparkle) so the visuals react from the first play. Press play and watch a verse and a chorus. #### Step 3: Make it yours with colors, text and a logo 1. **Theme & Colors:** click one of the nine palettes to recolor the whole scene, or use **Engine Parameters** for finer control. 2. **Text Overlay:** enter your Song Title and Artist Name, plus an optional Tagline ("Out now"). Drag the text in the preview or use the X/Y sliders. 3. **Visual Assets:** upload a Logo (lands top-right) and, if you want, a Background image. Keep images under 8 MB. 4. **Feature Toggles:** flip any layer on or off. If the preview feels busy, simplify here. > **Keep the edges clear** > Keep text and logos out of the bottom ~10% of the frame; YouTube's progress bar and controls cover it whenever a viewer moves their mouse. A transparent-PNG logo composites cleanly over any engine. #### Step 4: Set the frame to 16:9 In **Export Settings**, set **Shape** to 16:9, YouTube's native player shape. The Frame readout confirms the exact pixels (1920×1080 at the 1080p tier). Switching shapes redraws the engine to fill the frame, so replay a section and re-check your text and logo placement afterward. #### Step 5: Export settings that work for YouTube Set **Quality** to 1080p (the baseline) or 4K if your machine can handle it; YouTube gives 4K uploads a better compression budget, so even 1080p viewers see a cleaner picture. Pick **60 fps** for beat-heavy motion (30 fps is fine for slow, ambient visuals), and **MP4** for format. Leave **Export full song duration** checked, press **Export**, confirm the review dialog, and the file downloads automatically. > **Render on desktop** > Chrome and Edge on desktop use a frame-accurate offline encoder (every frame is rendered, not screen-captured) so quality is clean regardless of playback speed. iOS Safari falls back to a lower-quality realtime recorder, and phones are capped at 1080p. Do your final YouTube render on a desktop. Full detail: [Export Settings Explained](https://sonicweaver.com/tutorials/export-settings-explained). #### Step 6: Upload it right - Upload as private or scheduled and wait for YouTube to finish processing HD/4K before sharing; early viewers on a still-processing video get a blurry stream. - Title it the way people search: "Artist – Song Title (Official Visualizer)". - Set a custom 1280×720 thumbnail: pause the preview on a peak moment, screenshot it, and add the track title in large type. - Releasing several tracks? Keep the engine and theme consistent and collect them in a playlist. See [Build a Consistent Album Set](https://sonicweaver.com/tutorials/design-cover-art). --- ### Make a Vertical Visualizer for Shorts, Reels & TikTok URL: https://sonicweaver.com/tutorials/vertical-shorts-visualizer Difficulty: Beginner · Time: 8 min · Updated: 2026-07-16 Turn a track into a 9:16 vertical clip built for short-form feeds: trim to your hook, keep overlays inside the safe zone, and export platform-ready. **Before you start** - A track with a strong hook or drop to build the clip around. - Ideally a project you have already styled; the [YouTube tutorial](https://sonicweaver.com/tutorials/youtube-music-visualizer) covers colors, text and logo. Short-form feeds are vertical and fast. A 9:16 visualizer clip of your hook is one of the cheapest, highest-return promo assets you can make, and if you have already built a 16:9 video, the vertical cut takes minutes because everything but the Shape carries over. #### Step 1: Choose a frame-friendly engine Vertical frames are narrow, so radial and column-style engines (**Radial**, **Bars**, **Waveform**) read better than wide ones. Clean, high-contrast modes are a strong default here: they stay crisp when the platform compresses your upload, and they run smoothly on any device. Browse the [gallery](https://sonicweaver.com/templates) and preview a couple before committing. #### Step 2: Set the Shape to 9:16 In **Export Settings**, set **Shape** to 9:16 (Portrait). The engine redraws to fill the tall frame. Because the composition changes, replay a section and nudge your **Text Overlay** and logo inward; a layout that looked balanced in 16:9 will crowd the edges in 9:16. *Figure: Diagram comparing 16:9, 9:16 and 1:1 frames: 9:16 is the full-screen shape for TikTok, Reels and Shorts. Keep overlays clear of the top and bottom.* #### Step 3: Trim to your hook Short-form clips live or die on the first few seconds. In **Export Settings**, uncheck **Export full song duration** and use the trim markers to cut a 15–60 second window, usually the drop or the catchiest line. The summary card shows the exact clip length in seconds so you know what you are rendering. #### Step 4: Export for the feed Set **Quality** to 1080p (that is 1080×1920, exactly what these platforms want), **Frame Rate** to 30 or 60 fps, and **Format** to MP4. Export, and you have a vertical clip ready to post. Reuse the same styling across every clip so your feed reads as one identity. > **One project, two deliverables** > Export the 16:9 YouTube master first, then switch **Shape** to 9:16 and export the trimmed hook: same colors, text and logo, a second file in minutes. Adding synced words? See [Make a Lyric Video](https://sonicweaver.com/tutorials/synced-lyric-video). --- ### Make a Lyric Video with Synced Captions URL: https://sonicweaver.com/tutorials/synced-lyric-video Difficulty: Intermediate · Time: 12 min · Updated: 2026-07-16 Use the Lyric Video wizard and on-device Whisper transcription to get lyrics on screen at exactly the right moment, styled to stay readable, then export. **Before you start** - Your track (MP3, WAV or FLAC up to 200 MB). - Your lyrics typed out (optional; Novus can auto-transcribe them). - A desktop browser for the smoothest transcription and export. A lyric video needs three things: a visual that moves with the music, lyrics that appear at the right moment, and text that stays readable on top of everything. Novus does all three in the browser: no video editor, no account, and your audio never leaves your device. #### Step 1: Start on the Lyric Video Creator Open the [Lyric Video Creator](https://sonicweaver.com/lyric-videos). Its three-step wizard (Pick Engine, Enter Lyrics, Style & Export) collects your choices and drops you into the editor with the Captions controls already open. For the backdrop, four modes are tuned to leave room for text: **Waveform Line**, **Waveform Ribbon**, **Filled Wave** and **Line Spectrum**. Upload your audio, and paste your lyrics one line per row (each row becomes one on-screen caption). > **One line per row** > A pasted paragraph becomes one giant caption. Break your lyrics where you want them to change on screen. No lyrics typed out? Click **Transcribe Audio in Editor** to auto-generate them. #### Step 2: Three routes to get lyrics in - **Manual:** paste one line per row and click *Import pasted lines*. Novus spreads them evenly across the track as a starting grid you will tighten. - **Timed (SRT / LRC).** Already have synced lyrics? Paste the SRT/LRC and the timing comes in with the text. Fastest route. - **AI Generate:** transcribe the vocal directly from your audio (next step). #### Step 3: AI captions with on-device Whisper With audio loaded, **AI Generate** transcribes your song using Whisper, running 100% in your browser: no API key, no upload. An **AI model** dropdown offers Fast (~75 MB), Balanced (~145 MB) and Accurate (~250 MB); pick **Accurate** for the best word timing on your final pass. Songs are harder than speech, so tick **Isolate vocals first** (needs WebGPU) to separate the voice from the mix before transcribing. > **Treat it as a timed draft** > Whisper returns word-level timing, but names, slang and ad-libs often need a quick text fix. The timing skeleton is usually solid; you clean up the words, not the sync. #### Step 4: Time the lines to the vocal Each caption is a row with **Start** and **End** fields (adjustable in 0.1s steps). If AI or imported lyrics run consistently early or late, do not retime every row; drag the **Timing offset** slider (−3 to +3s) to shift them all at once. Turn on **Karaoke timing** to highlight each word as it is sung (this is what makes it feel synced rather than subtitled). Do a full playthrough to catch lines that linger or overlap. *Figure: Diagram of captions layered over a visualizer and background: Lyrics ride on top of the visualizer. Turn the engine's motion down slightly so the words stay the focus.* #### Step 5: Style for readability The **Style** selector offers ten presets (Clean White, Subtitle Bar, Neon Glow, Bold Impact, Cinematic, Karaoke, Pop Pill, Dark Minimal, Fire Text, Glass Card). Readability beats decoration: over a busy engine, pick **Subtitle Bar** or **Dark Minimal** so text sits on its own contrast layer, and keep one or two lines on screen at once. Use per-line overrides sparingly: a bigger chorus line reads as intentional; ten different styles read as noise. #### Step 6: Export (and grab the SRT) Open **Export Settings**, pick your **Shape** (16:9 for YouTube, 9:16 for Shorts), quality and format, and export; your caption timing, karaoke highlighting and timing offset all render exactly as they preview. One extra button worth knowing: **Export SRT** downloads your lyrics as a standard subtitle file you can upload to YouTube as closed captions or keep as a portable backup of your timing work. > **Test before the full render** > Export a 15–20 second test of the first chorus before committing to a full 4K render; timing mistakes are far cheaper to catch early. --- ### Recolor Your Visualizer with Themes & Engine Settings URL: https://sonicweaver.com/tutorials/recolor-with-themes-and-settings Difficulty: Beginner · Time: 6 min · Updated: 2026-07-16 Restyle any scene in one click with the nine palette presets, then fine-tune individual colors, and keep them consistent with your branding. **Before you start** - A template open in the [editor](https://sonicweaver.com/editor) with a track loaded. Color is the fastest way to make a template feel like *yours*. Novus gives you two levels of control: one-click palettes for an instant restyle, and per-parameter pickers when you want exact colors. #### Step 1: Apply a palette preset Open **Theme & Colors** and click one of the nine presets: **Neon, Sunset, Ocean, Midnight, Forest, Gold, Plasma, Rose,** and **Arctic**. Applying one pushes the palette across every color the engine uses, so nothing is left in the old scheme. This alone is usually enough to give a video its own identity. > **Match the palette to the mood** > Warm palettes (Sunset, Gold, Rose) read energetic and intimate; cool ones (Ocean, Midnight, Arctic) read spacious and modern; Neon and Plasma read as club energy. Our blog covers this in [Choosing the Right Engine for Your Genre](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre). #### Step 2: Fine-tune individual colors For precise control, open **Engine Parameters**, the section that holds your specific engine's settings, including its individual color pickers, plus speed and density. Change one picker at a time and watch the preview; small shifts (a slightly warmer primary, a deeper background) often do more than a whole new palette. #### Step 3: Keep colors on-brand The strongest channels reuse the same small palette everywhere. Pick two or three hex values and pull your engine primary, your **Text Color** (in Text Overlay), and your logo glow from that same set. Changing the engine between videos is good for variety; changing the palette *and* layout at the same time is what makes a channel look scattered. Write your hex values down so the next video matches exactly. > **Where colors live** > Scene colors: **Theme & Colors** + **Engine Parameters**. Text color: **Text Overlay**. Logo glow/backplate: **Logo Appearance** and **Logo Effects**, covered in [Add Titles, Artist Text & a Logo](https://sonicweaver.com/tutorials/add-titles-artist-text-and-logo). --- ### Add Titles, Artist Text & a Logo URL: https://sonicweaver.com/tutorials/add-titles-artist-text-and-logo Difficulty: Beginner · Time: 7 min · Updated: 2026-07-16 Brand any visualizer with a song title, artist name and logo: positioned precisely, styled for readability, and repeatable across every video. **Before you start** - A template open in the [editor](https://sonicweaver.com/editor). - A transparent-PNG logo (optional but recommended). A visualizer that carries your logo, track title and artist name works harder than one that just looks good. The editor treats branding as a set of layers you can toggle, drag, resize and style on top of any engine, and because everything renders locally, the only branding in your export is the branding you put there. *Figure: Diagram of branding layers stacked over the engine: The engine renders in the middle; your background, logo, overlay and text sit in layers around it.* #### Step 1: Enter your text In **Text Overlay**, fill in **Song Title**, **Artist Name**, and an optional **Tagline / Release Message** ("Out now", "New single"). The title and artist render as separate layers (Song Title Text and Author Text in Feature Toggles), so you can show the artist name on screen but keep the track title for the description. Set the artist a step smaller than the title; the size hierarchy reads instantly, even on a phone. #### Step 2: Upload your logo In **Visual Assets**, upload into the **Logo** slot (it lands top-right by default). Use a PNG with a transparent background so it sits cleanly over any engine without a white box. Keep it under 8 MB; export it at roughly 2× display size so it stays crisp at 4K. There are also **Underlay** (behind the engine) and **Overlay** (in front) slots, each with a **Blend Mode** and **Opacity**. Screen at 40–60% is great for light-leak or glow textures. #### Step 3: Position it by dragging or dialing in The fastest way to place anything is to drag it in the preview: the text block, logo, overlay and captions are all draggable, and the logo has resize handles. For precise, *repeatable* placement, use the sliders: Text X/Y (in percent), and under **Asset Positions**, Logo Size (24–240), Logo X/Y, Overlay Size and Overlay X/Y. Because positions are stored as percentages, a layout you build in 16:9 holds together at any resolution. > **Write down your recipe** > Logo X 90, Y 10, size 56 is a recipe you can re-enter on the next video. Recording five slider numbers keeps every upload perfectly consistent. #### Step 4: Make the logo readable A raw logo can vanish into a bright, moving engine. The **Logo Appearance** group (under Feature Toggles, when the Logo layer is on) adds a backplate (Bg Color + Opacity), Corner Radius, Shadow, and Glow. Or use the **Logo Effects** presets (Neon Purple/Cyan/Green/Pink/Gold/Red/White and Drop Shadow) for a one-click result. A black backplate at 40–60% opacity with a small corner radius gives your logo a guaranteed-readable zone no matter what the engine does behind it. > **Shadow separates, glow decorates** > If readability is the problem, reach for Shadow Blur before Glow Amount. Match the glow color to the engine's primary so the logo feels lit by the visualizer instead of pasted on. --- ### Tune Audio Reactivity & Beat Sync URL: https://sonicweaver.com/tutorials/tune-audio-reactivity Difficulty: Intermediate · Time: 8 min · Updated: 2026-07-16 The difference between a generic bouncing visual and one that feels mixed to your song: Sensitivity, Reactivity, Pulse/Burst, Frequency Focus and beat motion, in the right order. **Before you start** - A template open with your actual track loaded (tune against the real song, not a default). Every engine reacts automatically, but a handful of controls decide whether it feels *mixed to your song* or just generically bouncy. They live across three sections: **Visualizer Controls** (Audio Reaction Style), **Engine Parameters**, and **Beat FX**. Every one applies identically to the preview and the export, so what you tune is what you render. Want the theory first? See [How Music Visualizers Work](https://sonicweaver.com/blog/how-music-visualizers-work). #### Sensitivity vs Reactivity: two different jobs These get confused constantly. **Sensitivity** (under Engine Parameters, ~0.5–3, default 1.2) is input gain: how *far* the visual moves for a given audio level. Raise it if a quiet track barely moves; lower it if a loud master pins everything at maximum. **Reactivity** (in Audio Reaction Style, 0–1, default 0.20) is how *hard and fast* shapes chase the audio. A big cinematic look is high Sensitivity with low Reactivity; an aggressive EDM look flips that. *Figure: Diagram of the audio spectrum split into bass, mid and treble bands: Frequency Focus decides which part of the spectrum drives the motion: bass, mids, treble, or one exact band.* #### Reactivity, Pulse & Burst The **Reactivity** slider sets how quickly the visual tracks the audio: keep it low for flowing ambient or lo-fi motion and raise it for a sharper, more immediate response. **Pulse Intensity** adds overall beat punch; **Burst Intensity** adds swell on sudden hits and drops. For finer envelope shaping, the engine controls expose Beat smoothing, attack and release only where the live V3 renderer supports them. #### Frequency Focus: steer the motion **Frequency Focus** decides which part of the spectrum drives the visual: Full Spectrum, **Bass Heavy** (kick and bassline, the usual choice for beat music), **Mid Focus** (vocals and leads), or **Treble Focus** (hi-hats and air). For surgical reactions, the 32-band group locks the visual to one narrow band, for example Band 4 (Kick body), so it moves only on the kick, ignoring the bassline. Narrowing the focus is also the fix when Full Spectrum feels mushy on a dense mix. #### Beat sync & frame motion Beat detection is automatic: Novus estimates BPM from the bass onsets, so beats stay steady through breakdowns. You decide how much each beat *moves the whole frame* with the **Frame motion** sliders: Beat screen shake, Beat pulse (scale), Beat tilt, Beat glow and Beat drift, all governed by a **Motion smoothing** slider. Prefer presets? The **Beat FX** section applies coordinated looks (Camera Shake, Scale Pulse, Glow Pulse, Cinematic, Rave Mode…) in one click, and you can trim the sliders afterward. > **Flashing sensitivity** > Use Beat Strobe and heavy full-frame flashing sparingly on published videos; rapid flashing can be uncomfortable for some viewers. #### A practical tuning order 1. Play the **loudest** section and set **Sensitivity** so peaks nearly fill the frame. 2. Pick a **Frequency Focus** that matches the song: bass for beat music, mids for vocals. 3. Set **Reactivity** (low for smooth, higher for snappy) then add only as much **Pulse/Burst** as the mix needs. 4. Add beat character with the **Frame motion** sliders (or a Beat FX preset). 5. Play the **whole** song; Motion smoothing and Reactivity trade energy for consistency across sections. > **Change one thing at a time** > Sensitivity, Reactivity and Pulse/Burst all shape the apparent movement; moving two at once makes it impossible to tell what did what. If the visual looks jittery, lower Reactivity before touching anything else. --- ### Design Cover Art for Your Release URL: https://sonicweaver.com/tutorials/design-cover-art Difficulty: Beginner · Time: 7 min · Updated: 2026-07-16 Build square cover art in the Cover Art & Canvas Studio (a layer-based editor with animated backgrounds and one-click templates) and export a high-resolution PNG. **Before you start** - Your track title and artist name. - Optionally finished artwork to drop in as an image layer. Cover art is often seen tiny (a couple of centimeters in a phone library) so it has to read at thumbnail size. The [Cover Art & Canvas Studio](https://sonicweaver.com/albums) builds one in your browser for free, with nothing uploaded and nothing saved to a server. #### Step 1: Start a square cover On the [/albums](https://sonicweaver.com/albums) page, the **Start a new cover** panel asks for a **Title** and **Artist** (these pre-fill the text layers) and a **Format** toggle. Choose **Square cover (1:1)** for streaming art. If you already have finished artwork, add it in the optional cover-image upload; it drops into the editor as an image layer you can position and blend. Click **Open editor** to enter the Studio. #### Step 2: Build with layers or a template The Studio is a layer editor with up to five layers of four types: **background, text, shape, image**. The **background** layer is where motion comes from: it has Solid, Gradient, Image and **Visualizer** modes (Visualizer runs a real engine behind your art, driven by a synthetic beat, so it animates with no audio at all). If you would rather not start from scratch, the **Templates** grid applies a complete look in one click (19 presets like Deep Neon, Visualizer Canvas, Sunset Vibes, Matrix Code and EDM Geometric) with every layer still editable afterward. *Figure: Diagram comparing a square cover with a vertical Canvas: Cover art is square (1:1). Design it to read at thumbnail size: bold and simple beats detailed.* #### Step 3: Get the typography right On a cover, the artist and title are the message. Give them a clear hierarchy (one dominant, one secondary) and choose a font with enough weight to survive scaling. Text layers get font, size, color, shadow, outline, position, opacity and rotation. Resist crowding; negative space reads as confidence. #### Step 4: Export a high-resolution PNG The **Export Size** dropdown offers 1:1 Square (3000×3000), Spotify Canvas (1080×1920), Bandcamp Cover (3000×3000), SoundCloud Header (2480×520) and YouTube Thumbnail (1280×720). Pick **3000×3000** and click **Export PNG** for a lossless file (or Export JPEG for a smaller one); 3000×3000 matches what most distributors recommend for streaming cover art. > **One design, two formats** > Build the square cover first, export it, then click **Start over**, switch to Vertical Canvas, and rebuild with the same colors and fonts, or upload the exported cover as the image layer so your Canvas loop animates around your artwork. Next: [Make a Spotify Canvas Loop](https://sonicweaver.com/tutorials/spotify-canvas-loop). --- ### Make a Spotify Canvas Loop URL: https://sonicweaver.com/tutorials/spotify-canvas-loop Difficulty: Intermediate · Time: 8 min · Updated: 2026-07-16 Build the short vertical loop that plays behind your track on Spotify (a seamless 9:16 MP4) using the Canvas Studio or the audio-reactive editor route. **Before you start** - A [Spotify for Artists](https://sonicweaver.com/albums) account to upload the finished loop (free for anyone with music on Spotify). - Optionally your cover art or a track to drive an audio-reactive loop. A Spotify Canvas is a short, silent, vertical loop (3–8 seconds, 9:16) that plays behind your track on the Spotify mobile app and when listeners share it to Stories. There is no audio in a Canvas; your track is already playing underneath. Novus builds one for free, entirely in your browser. #### Route A: the Canvas Studio (synthetic beat) On [/albums](https://sonicweaver.com/albums), start a new cover and set **Format** to **Vertical Canvas (9:16)** so your preview matches the phone screen. In the Studio, set the background layer's mode to **Visualizer** and pick any engine; it animates on a built-in synthetic beat with no audio upload. The **Visualizer Canvas** template is the quickest starting point; it comes with a live engine background already enabled. Add motion with the **Animation Effects** panel: one of five overlays (Pulsing Glow Border, Waveform Ring, Particle Burst, Zoom Pulse, Color Shift). Restraint pays off: a Canvas loops the whole time someone listens, so one or two motion sources at moderate intensity read better than everything at once. All motion renders on a shared cycle so the last frame lands exactly where the first began; that is what makes the loop seamless. *Figure: A slow cosmic scene suitable for a seamless Canvas loop: Slow, continuous motion hides the loop seam. Cosmic and organic scenes loop the most cleanly.* #### Export the silent MP4 Click **Spotify Canvas (MP4)** under the preview. It always renders at **1080×1920** (the recommended Canvas resolution) and records a **6-second** seamless loop at 30 fps with no audio track, exactly what Spotify wants. The button shows live *Recording %* then *Encoding %*, and the file downloads. Keep the tab in the foreground while it records; the 6-second capture runs in real time. > **Route B: an audio-reactive loop** > Want the Canvas to react to your actual song? Below the Studio on /albums, the **Spotify Canvas Loop** card opens the full editor pre-sized to 1080×1920 with an 8-second loop. Upload your track, pick any of the 29 engines, trim to an 8-second hook where the motion ends near where it began, and export a full-quality MP4 driven by the music. #### Upload to Spotify for Artists In the Spotify for Artists app (or web dashboard), open **Music**, select the track, choose **Canvas**, and upload your MP4. The Studio's 1080×1920, 6-second output meets every requirement (9:16, 3–8s, MP4, ≥720px tall). Canvases usually go live after a short review, and you can set a different loop for every track. Check the finished loop on your own phone first; the Now Playing screen crops slightly differently across devices, so keep anything essential away from the extreme edges. > **Keep a release consistent** > Making Canvases for a whole album? Reuse one template and color scheme across every track's loop so your release looks consistent as listeners skip through it. See [Design Cover Art](https://sonicweaver.com/tutorials/design-cover-art) for the matching square. --- ### Export Settings Explained URL: https://sonicweaver.com/tutorials/export-settings-explained Difficulty: Beginner · Time: 7 min · Updated: 2026-07-16 Shape, Quality, Frame Rate and Format: what each control does, how the final frame size is calculated, and the exact combination to pick for every platform. **Before you start** - A project in the [editor](https://sonicweaver.com/editor) ready to export. Every video is rendered in your browser, for free, at settings you control. The **Export Settings** panel gives you four decisions (Shape, Quality, Frame Rate and Format) plus a summary card showing the exact frame size, aspect ratio and duration. Whatever the summary shows is exactly what gets encoded, so check it before a long render. #### Shape: the frame for your platform Shape is the aspect ratio, and it is the first thing to decide because every platform has a native frame. There are six presets: **16:9** (YouTube, desktop), **9:16** (TikTok, Shorts, Reels, Spotify Canvas), **1:1** and **4:5** (Instagram feed), **21:9** (cinematic teasers) and **4:3** (retro). Clicking a shape recomputes the resolution instantly and redraws the engine to fill the frame; nothing is letterboxed or cropped. *Figure: Diagram of 16:9, 9:16 and 1:1 export shapes: Set the Shape to the destination first. Re-check overlay placement after switching; a radial engine balanced in 16:9 can feel cramped in 9:16.* #### Quality: 1080p, 1440p, 4K Quality sets the resolution tier by the frame's short edge (1080, 1440 or 2160 px) with the long edge derived from your Shape. So 16:9 at 4K is 3840×2160, and 9:16 at 1080p is 1080×1920. Higher tiers cost render time and file size in proportion to pixel count (4K has 4× the pixels of 1080p). **Phones are capped at 1080p**; for 1440p or 4K, use a desktop. > **When to go 4K** > 1080p is the sweet spot for most releases; it exports fastest and platforms compress heavily anyway. Choose 4K for TV viewing or extra headroom against YouTube's compression: YouTube gives 4K uploads a higher-quality encoding ladder. #### Frame Rate: 24, 30, 60 fps Since Novus renders every frame from your audio's real frequency data, higher frame rates make beat-reactive motion visibly smoother. **60 fps** is the best default for music visualizers; **30 fps** halves the render work and file size and is fine for slower, ambient visuals; **24 fps** gives a filmic cadence for cinematic 21:9 and lyric styles. Frame rate scales render time almost linearly; dropping a 4K full-length export to 30 fps is the single biggest time saving available. #### Format: MP4 vs WebM **MP4** (H.264/AAC) is the universal choice: every upload form, phone and editor accepts it. **WebM** (VP9/Opus) often compresses slightly better but some tools are picky about it. If unsure, pick MP4. Under the hood, desktop Chrome and Edge use a frame-accurate offline encoder (WebCodecs) that renders every frame with no dropped frames; iOS Safari falls back to a lower-quality realtime recorder and, for MP4, converts the recording afterward. Either way everything happens on your machine; nothing touches a server. #### Full song or a trimmed window The summary card has an **Export full song duration** checkbox. Leave it checked to render the whole track; uncheck it to export only your trim markers, which is how you cut a 15-second teaser or a chorus loop without editing the audio elsewhere. The Export window row always shows the exact seconds you will render. #### Recommended settings by platform - **YouTube:** 16:9, 1080p (or 4K), 60 fps, MP4, full song. - **TikTok / Shorts / Reels:** 9:16, 1080p (=1080×1920), 30 or 60 fps, MP4, trimmed to a 15–60s hook. - **Instagram feed:** 4:5 (=1080×1350) or 1:1, 1080p, 30 fps, MP4. - **Spotify Canvas:** 9:16, 1080p, MP4, a short 3–8s loop. See [Make a Spotify Canvas Loop](https://sonicweaver.com/tutorials/spotify-canvas-loop). - **When in doubt:** 16:9, 1080p, 60 fps, MP4 uploads everywhere. --- ### Build Stream Overlays for OBS URL: https://sonicweaver.com/tutorials/stream-overlays-for-obs Difficulty: Intermediate · Time: 7 min · Updated: 2026-07-16 Turn a visualizer into a transparent-looking stream overlay: export a strip on a black background and use the Screen blend trick in OBS or Streamlabs. **Before you start** - OBS Studio or Streamlabs installed. - Optionally your logo and a Now-Playing style text. A reactive audio strip along the bottom of your stream is a clean way to show what is playing. Novus does not export true transparency, but a simple trick (a bright visualizer on a pure black background plus a blend mode in OBS) gets you there. #### Step 1: Browse and pick an overlay effect The [Stream Overlays page](https://sonicweaver.com/overlays) is a gallery of canvas-drawn effects in four categories (**Visual FX, Ambient, Color Grade** and **Frame**) each with a live preview. Open one to preview it over all 29 engines, adjust its opacity, and hit **Open in Editor with this Overlay** to start building. Inside the editor, the same effects live in the **Stream Overlay Templates** section, and they render directly onto the visualizer canvas: baked into your export, no compositing needed. #### Step 2: Build a strip on black The practical build: pick a strip-style engine (a spectrum or waveform), set a **pure black background**, add your logo and a Now-Playing text, and keep everything in the bottom portion of the frame. Black is the key; it is what will drop out in OBS. *Figure: A spectrum-bars strip suitable for a stream overlay: A spectrum or waveform strip on a black background is the classic overlay build.* #### Step 3: Export the loop Export as an MP4 at your stream canvas size (usually 16:9, 1920×1080). A short section is fine; you will loop it in OBS. See [Export Settings Explained](https://sonicweaver.com/tutorials/export-settings-explained) for the details. #### Step 4: Add it in OBS with Screen blend 1. In OBS, add the exported video as a **Media Source** and set it to loop. 2. Size it to your 1920×1080 canvas. 3. Set the source's **Blend Mode** to **Screen**. The black background drops out, leaving only the bright bars, text and logo over your gameplay or camera. 4. Position it in the bottom ~20% so it never fights your webcam or game HUD. > **Neon survives the trick best** > The Screen-blend trick makes pure black invisible, so bright, glow-heavy elements on dark backgrounds composite cleanest. The /overlays page also includes a four-step OBS & Streamlabs walkthrough covering export, source setup, sizing and audio. --- ### Find Music & Generate Sound Effects URL: https://sonicweaver.com/tutorials/music-and-sound-effects Difficulty: Beginner · Time: 6 min · Updated: 2026-07-16 Two free browser audio tools (a copyright-free music library and a 300-preset SFX synth) and the fastest ways to get their output into your visualizer. **Before you start** - Nothing: both tools run in the browser with no account. Novus ships two free audio resources: a copyright-free music library and a browser-based sound-effects synthesizer. Both run entirely on your device, require no account, and produce files you download and keep. #### The Audio Library: copyright-free tracks The [Audio Library](https://sonicweaver.com/audio-library) is a catalogue of 26 copyright-free tracks across eight genres (Electronic, Ambient, Hip-Hop, Cinematic, Lo-Fi, Jazz, Rock, Classical), plus 40 ready-made sound effects. Search by title, genre or **BPM** (typing "140" surfaces every 140 BPM track) and filter by genre pills and a tempo slider. Each track pairs with a hand-picked engine, so clicking **Use in Editor** opens the editor with the song *and* its matching engine already loaded. > **Filter by BPM first** > BPM matters more than genre for visualizers; a 140 BPM track drives beat-reactive effects far harder than a 65 BPM ambient piece. The paired engine is just a starting point; switch to any engine once you are in the editor and the audio stays loaded. #### The SFX Generator: 300+ presets & a synth When a stock sound is close but not right, the [Audio Effects Generator](https://sonicweaver.com/audio-effects) is a live synthesizer with 300+ presets across 17 categories (Risers & Sweeps, Drops & Impacts, FX & Glitch, Cinematic Hits, UI Sounds and more). Click a preset to load it into the **Sound Designer**, which exposes real synthesis controls with a live waveform display: Oscillator, Envelope (ADSR), Filter, LFO, Effects and Volume. There is even an **AI Generate** box: type "dark ominous bass drop" and it builds parameters from your keywords, all processed locally. #### Export quality & getting audio into a project The Sound Designer's **Export Quality** picker offers Standard (44kHz/16-bit), High Quality (48kHz/24-bit) and Studio (96kHz/24-bit), and a **Loops (Extend)** slider repeats the sound up to eight times. Choose **High Quality (48kHz)** to match video-industry standards. Two fast routes into a visualizer: **Use in Editor** on any library track, or **Copy to Editor** in the Sound Designer to load your current SFX as the editor's audio source. > **Licensing** > Library tracks are royalty-free and cleared for commercial use; sounds you build in the SFX generator are synthesized on your own device, so they are yours to use. As always, you own every visualizer you create: no account, watermark or fee. --- ## Blog posts ### Adaptive Quality When the Device Gets Hot URL: https://sonicweaver.com/blog/adaptive-quality-when-the-device-gets-hot Published: 2026-09-22 · Updated: 2026-09-22 · Author: Novus Team · 9 min read Thermal and frame-time pressure should lower cost without rewriting the engine. How adaptive quality governance keeps exports and live previews honest on real devices. Phones throttle. Laptops fan. Tabs compete. A visualizer that looks perfect for thirty seconds and then drops to a slideshow is not a quality win. Adaptive quality exists to lower cost when frame time or thermal pressure rises, while keeping the same engine identity the muted-preview article defends. #### What may scale down Particle counts, secondary effect passes, shadow-like blurs, and other expensive decorations are fair game. The silhouette, palette family, and primary motion grammar should remain. Users should notice a lighter render, not a different product. - Prefer dropping decorate-on-top costs before changing layout. - Keep beat response timing stable even if amplitude mapping softens. - Surface a quality state when the editor exposes one, rather than hiding throttling. - Do not invent detail in export that live preview never showed. *Interactive demo: Interactive demo: the shipped frame-budget controller steps quality down under load while the engine identity stays the same product.* #### What must not silently change Export resolution claims, watermark policy, and the selected engine or mode must not swap because the device got warm. If export must reduce resolution, that reduction should be explicit in the export summary. Surprise downscales are defects. Reduced motion is a separate axis. It is an accessibility and preference cut, not a thermal heuristic. Do not overload reduced motion to mean low power. Users who need still frames are not asking for a cheap GPU path. > **Hidden work still costs heat** > Offscreen work should pause when the tab is hidden. Continuing a full particle sim in the background burns battery and teaches nothing about the track. #### How to test on real hardware Run a five minute preview on a mid-tier phone with another heavy tab open. Note whether identity survives after throttling. Capture a short export at the quality the UI advertised. Open the file elsewhere and confirm the claim matches the pixels. If the editor offers a quality control, sweep it deliberately. Each step should be explainable in one sentence. Steps that barely change cost but rewrite look are noise. Steps that crash only on low settings are unfinished governance. For long exports, watch the first thirty seconds and the last thirty seconds. Thermal drift often appears late. A clip that only looks correct at the start is not an export you should publish without a quality note. #### Governance beats hero clips Marketing clips shot on a cooled desktop prove little. Ship gates should include a warm-device path. The blog card films for this expansion follow the same honesty rule: they show the feature as a product walkthrough, not as an impossible always-60fps promise. When adaptive quality engages, logs or UI copy should make the reason learnable. Thermal, frame budget, and user preference are different causes. Collapsing them into mysterious slow teaches nothing. Preflight should choose a coherent quality band up front when the device profile is known, rather than thrashing between bands every few seconds. Coherent bands keep particle and history budgets bounded so the scene does not oscillate. #### Pair with engine identity Read [Engines that stay distinct with audio muted](https://sonicweaver.com/blog/engines-that-stay-distinct-with-audio-muted) beside this article. Identity without performance governance fails on phones. Performance governance without identity fails in the catalogue. Both have to pass. Honest limit: not every historical effect pass is already under the same governor. New work should join the governed path rather than adding another one-off FPS hack. Practical takeaway for creators: if a device gets hot, lower quality intentionally in the editor before you blame the track. If the look changes into a different engine, file it. If the look thins but stays itself, adaptive quality did its job. --- ### Engines That Stay Distinct With Audio Muted URL: https://sonicweaver.com/blog/engines-that-stay-distinct-with-audio-muted Published: 2026-09-22 · Updated: 2026-09-22 · Author: Novus Team · 9 min read A visualizer catalogue only works if engines still look like themselves when the track is silent. Here is how distinct draw identities survive muted preview, reduced motion, and still capture. Audio reactivity is the promise. Identity is the product. If every engine collapses into the same soft glow the moment the track is muted, the gallery becomes a wallpaper picker instead of a catalogue. The September expansion work treated muted and reduced-motion frames as first-class proofs that each engine still reads as itself. #### Why mute the track on purpose Muted preview is how authors, reviewers, and accessibility users inspect structure without a beat driving every pixel. It is also how still captures and poster frames are judged. An engine that only looks correct while audio is pumping is not finished. The draw path must keep silhouette, palette family, and motion grammar readable at rest. That does not mean the scene should ignore audio when audio exists. It means the resting pose is designed, not an accident of zero amplitude. Bars still imply a spectrum layout. Stage lights still imply fixtures. Particle fields still imply depth. The energy scale can drop without erasing the machine. *Interactive demo: Interactive demo: analyser bars fall from a loud mix through a ringing decay into a designed idle silhouette, instead of a blank stage.* #### What distinct means here Distinct is not a marketing adjective. It is whether a reviewer can name the engine from a muted still with the label covered. Failures look like shared default gradients, identical centre orbs, or motion kits that all settle into the same breathing circle. When two engines share a kit, their modes still need different geometry, density, and framing so the catalogue row is not a lie. - Silhouette survives at zero amplitude. - Palette family stays recognisable without pulse. - Motion grammar idles instead of vanishing. - Reduced motion lands on a composed final frame, not a frozen mid-tween mess. Shared shaders are fine. Shared resting poses are not. If two modes only differ by a hue rotate while muted, they are one product with two nameplates. Rename them, merge them, or give each mode its own geometry budget before the gallery ships the row. #### How to verify a new engine or mode Open the editor, mute audio, and capture a still. Compare it against the neighbouring catalogue row. If you need the label to tell them apart, rewrite the draw defaults before you write the blog post. Then enable reduced motion and confirm the scene settles on a readable frame rather than a half-rotated prop. Repeat with a quiet track and a loud track. Quiet should scale energy down without changing identity. Loud should intensify the same grammar rather than switching to a different product. If loud mode invents a new silhouette, you shipped two engines under one name. > **Blind still test** > Cover the titles on three neighbouring cards. Name each engine from the muted still alone. Wrong answers are engine bugs wearing marketing clothes. #### Gallery and export consequences Gallery cards, OG stills, and export posters often show muted or low-energy frames. Those frames are public claims about the engine. Treat them as part of the ship gate. A beautiful reactive clip with a muddy poster is a failed package. Export settings should not silently restyle the identity to chase encoder friendliness. Adaptive quality may reduce particles or effect cost, which is the subject of the companion article, but it should not replace one engine with another look. When you document a mode, include one muted still and one reactive clip. The still proves identity. The clip proves reactivity. Publishing only the clip hides the harder requirement. #### Honest limits Some modes are intentionally sparse at rest. Sparse is allowed when sparse is the identity. Blank is not. If a mode needs audio to draw anything at all, say so on the mode card rather than showing an empty stage as if it were intentional design. This post does not claim every historical mode already passes a blind still test. It claims the expansion standard: new and revised engines must remain distinct when muted, and reviewers should reject rows that fail. Beat smoothing and mode-specific editor controls exist to protect composition, not to paper over a missing idle pose. If smoothing is the only thing keeping two modes apart, the modes are unfinished. #### What to do next Pick three engines you use most. Mute them. Save stills. If any pair could swap labels unnoticed, file that as a product defect against identity, not as a content preference. Then read [Adaptive quality when the device gets hot](https://sonicweaver.com/blog/adaptive-quality-when-the-device-gets-hot) for how performance governance should lower cost without erasing those silhouettes. Field check for maintainers: open the gallery, cover the titles with your hand, and name each card. Schedule the same check after any shared kit change. Kit refactors are the most common way distinct engines quietly become twins. --- ### The Par Wall Mode: A Rig With No Beams At All URL: https://sonicweaver.com/blog/par-wall-mode-a-rig-with-no-beams Published: 2026-09-12 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Par Wall draws no beams and no cones. It is a grid of lamps chasing group by group, and the most interesting thing in it is what the additive blend forced the halo to become. **Par Wall** is the simplest mode in the [Stage Lights engine](https://sonicweaver.com/help/visualizers/stage) and the one most likely to be underestimated: a back wall of par cans chasing group by group. There is no cone, no throw and no pool of light on a floor. Just the lamps, turning on and off in a pattern. *Figure: A grid of glowing circular lamps across a dark frame, some brighter than others: The committed capture. Each lamp is a small opaque disc inside a larger soft halo, and nothing else is drawn.* #### The grid is derived from the count There is no rows or columns control. The mode takes Fixtures, multiplies by 1.8, takes the square root and rounds for the column count, then divides to get the rows. The 1.8 is the landscape bias. At the 36 fixtures this mode ships, that gives eight columns and five rows, which means the last row is partial by construction rather than by accident. A wall of lamps with an incomplete top row reads as a real rig; a perfect rectangle reads as a texture. Row height divides the frame by the row count plus six tenths, so there is deliberate headroom above the top row rather than lamps flush against the frame edge. #### What additive blending did to the halo The whole engine composites additively, which is right for light and dangerous for a grid. A halo drawn additively does not merely overlap its neighbours, it ACCUMULATES with them: at full scale the outer column's glow reached over one and a half cells and lit the canvas border, which the containment gate measured at nearly three times its budget. The fix is visible in the geometry. Each halo is soft-limited to its own cell, and the whole wall is clipped to the frame box. So the rig sits on the stage at every level, and a bright passage makes the lamps brighter rather than making the wall bigger. The lamp itself is a small opaque disc at under half the halo radius, which is what gives a par can its hard centre inside a soft glow. #### Chase, and a short decay Fixtures are struck by the beat in rotating groups. This mode ships Chase groups at 6, the highest in the engine, so the wall moves through more distinct states before it repeats. It also ships Fixture decay at 0.28, which is short: a lamp comes up hard and drops away quickly, which is what a chase needs to read as a chase rather than as a slow swell. Each lamp's brightness also carries its own slice of the spectrum plus the routed level and the onset burst, so a struck lamp in a loud band burns harder than a struck lamp in a quiet one. That is what stops the wall reading as a pure on-off pattern. Haze ships low here at 0.18, because there are no beams for the air to catch. > **Four controls that are not in this panel** > Speed, rotation, Thickness and Beam spread are all scoped out of this mode, and the branch reads none of them. There is nothing to sweep, nothing to stroke and no cone to widen. A panel that showed them would be four sliders that move and change nothing, which is indistinguishable from four broken ones. #### When to reach for it Live and festival footage, retro and synth material, anything with a strong four-to-the-floor pattern, and any frame where you want energy at the back without geometry competing for attention in the middle. It is unusually good behind a centred logo or title, because its interest is distributed to the edges. For the engine's sharpest mode, read [The Laser Sweep Mode: A Stroke, Not a Cone](https://sonicweaver.com/blog/laser-sweep-mode-a-stroke-not-a-cone); for the one that tracks a moving target, [The Follow Spot Mode](https://sonicweaver.com/blog/follow-spot-mode-a-target-that-only-moves-on-the-beat). Open [Par Wall in the gallery](https://sonicweaver.com/templates/stage?mode=par-wall) or go to [the editor](https://sonicweaver.com/editor?engine=stage&mode=par-wall). The full control table and runtime contract are on the [engine reference page](https://sonicweaver.com/help/visualizers/stage). --- ### The Laser Sweep Mode: A Stroke, Not a Cone URL: https://sonicweaver.com/blog/laser-sweep-mode-a-stroke-not-a-cone Published: 2026-09-11 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Laser Sweep is the only mode in its engine that draws strokes instead of cones, which is exactly why Thickness is scoped to it alone and Beam spread is scoped away from it. The [Stage Lights engine](https://sonicweaver.com/help/visualizers/stage) visualises the ROOM rather than the signal: fixtures have positions on a truss, beams have a source and a throw, and haze is what makes a beam visible at all. **Laser Sweep** is its sharpest mode: side rigs fire thin lasers that sweep across the frame. *Figure: Thin bright lines crossing a dark hazy frame from fixtures along the left and right edges: The committed capture. Every line starts at a frame edge and leaves the opposite side, because the throw is longer than the frame.* #### Two controls that prove each other The engine has a helper that draws a cone of light: a gradient wedge from the lens out to the tip, with a hot core stroked down the middle. Three of the engine's modes call it. This one does not, because a laser is not a cone. It strokes a single line. That one fact explains two entries in the control table at once. **Thickness** is scoped to this mode ALONE in the engine, because it is the only branch that strokes anything and therefore the only one where a line width means something. And **Beam spread** is scoped AWAY from this mode and present on the three cone modes, because a stroke has no spread angle to widen. Read the two together and the scoping table stops looking like a list of exceptions and starts looking like a description of the code. #### Where the rigs are Fixtures alternate sides by index parity: even ones sit on the left edge of the frame box, odd ones on the right. Their vertical positions come from a deterministic ladder rather than from a random scatter, spread over the middle two thirds of the frame, so the rig looks installed rather than thrown. Fixtures ships at 16, bounded between 1 and 64. Each laser points across the stage and swings by up to about half a radian either side of horizontal, on a sine of the engine's shared sweep value plus a per-fixture phase. That phase is re-drawn every two beats, which is what stops sixteen lasers from ever settling into a single synchronised fan. The throw is 1.25 times the frame diagonal, so a laser always leaves the frame rather than stopping inside it. #### Why it is the most beat-native engine here A lighting desk is cued, not faded. Fixtures are STRUCK by the beat, in rotating groups set by Chase groups, and then decay on their own envelope at a rate set by Fixture decay. That is what makes the rig chase across the truss instead of every lamp blinking in unison. This mode ships 3 chase groups. A fixture's brightness is not only its envelope, though. It is the envelope, plus that fixture's own slice of the spectrum, plus the routed overall level, plus the onset burst. So the rig responds to a cue and to the music underneath it at the same time, which is what a real desk looks like when an operator is busking a set. #### Haze, and additive light The whole engine composites additively, so crossing beams build up the way real light does instead of painting over each other. Haze ships at 0.28 and paints a soft radial wash the beams are drawn ON, lifted slightly by the beat. Turn it to zero and the lasers still draw, but they read as lines on black rather than as light in a room. > **On flashing, deliberately** > No mode in this engine flashes the whole frame, including the strobing one. Beams, pools and bars are bounded shapes over a dark stage, and the brightest term any of them reaches is an alpha rather than a fill of the entire canvas. Fixture triggers are also gated by the beat latch, whose 200 millisecond lockout caps the trigger rate at five per second however the track is analysed. If you need more than that, the reduced-motion setting and [Keyboard and Accessibility on Novus](https://sonicweaver.com/blog/keyboard-and-accessibility-on-novus) cover what else is available. #### When to reach for it Club and festival content, live clips, hard techno, EDM, and anything that wants the feel of a room rather than a readout. It is also one of the few scenes that improves at very high contrast, because a laser is meant to be the brightest thing in frame. For a rig with no beams at all, read [The Par Wall Mode: A Rig With No Beams At All](https://sonicweaver.com/blog/par-wall-mode-a-rig-with-no-beams); for the engine as a whole, [The Stage Lights Engine](https://sonicweaver.com/blog/stage-lights-engine-a-lighting-rig-not-a-readout). Open [Laser Sweep in the gallery](https://sonicweaver.com/templates/stage?mode=laser-sweep) or go to [the editor](https://sonicweaver.com/editor?engine=stage&mode=laser-sweep). --- ### The Dune Field Mode: The Only Terrain That Never Strokes a Line URL: https://sonicweaver.com/blog/dune-field-mode-never-strokes-a-line Published: 2026-09-10 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Dune Field is the only mode in its engine with no stroke anywhere in its branch, which is why Thickness is scoped out of it and present on all five of its neighbours. The catalogue is unusually plain about this one: **Dune Field** gives you *wide soft forms for lyric and ambient backgrounds.* It is the calm end of the [Terrain engine](https://sonicweaver.com/help/visualizers/terrain), and it earns that by removing things rather than by adding them. *Figure: Soft overlapping shapes with rounded crests filling the lower half of a dark frame: The committed capture. There is no outline anywhere in this picture, because the branch that draws it never strokes.* #### No stroke, anywhere Every other mode in this engine outlines something. This branch calls no stroke at all: it builds a closed shape per row and fills it. That is why **Thickness** is scoped out of this mode and present on all five of its neighbours. The scoping table here is not a style rule; it is a description of what the code reads, and a slider that moved with nothing to move would be indistinguishable from a broken one. Each row's shape is dropped the full height of the frame box below its own baseline before it closes, so a nearer dune covers the one behind it. The fills are still translucent, so the covering builds up colour rather than replacing it, which is what gives a stack of dunes its graded depth without a single outline to separate them. #### The smoothing that makes a crest Before a column's height is used, it is averaged with its two neighbours in a one-two-one weighting and then scaled to 70%. That kernel is what rounds the crest. A spectrum is a jagged thing and drawing it directly gives you a mountain range whatever you do to the colours; averaging across three columns is the cheapest possible low-pass and it is enough to turn a ridge into a dune. The second half of the softness is Roughness, which this mode ships at 0.05. That control blends between a band's raw level and its square, and at a value this low the profile stays essentially linear in level. Squaring exaggerates peaks relative to the body of the signal, which is exactly what a dune should not do. Relief ships at 0.4 and History at 40, both a little below the engine's ridge modes. Fewer, shallower rows is the rest of the recipe. > **Calm is not deaf** > Each row still captures the beat envelope at the moment it is born and carries that lift backwards through the field as it recedes. So a kick is visible here, as a slightly brighter band moving away from you, rather than as a jolt. That is the whole reason this mode can sit under a lyric line without competing with it and still feel connected to the track. #### The one control that does more than it looks Perspective is in scope here, and it changes both the perspective easing that bunches rows toward the horizon and the horizontal inset that narrows each row as it recedes. On a mode with no outlines, that inset is the main cue that the rows are receding at all, so it is worth a pass even though the default is sensible. #### When to reach for it Lyric videos, ambient and downtempo releases, meditation and sleep content, podcast beds, and any scene where type is the subject. It is among the calmest of the 180 modes in the catalogue and it is the one this engine was given specifically so that a landscape could go behind words without fighting them. For the sharper reading of the same field, read [The Contour Map Mode: The Terrain That Does Not Hide What Is Behind It](https://sonicweaver.com/blog/contour-map-mode-nothing-is-hidden-behind), and for text over the top, [How to Make a Lyric Video That Actually Syncs](https://sonicweaver.com/blog/make-a-lyric-video-that-syncs). Open [Dune Field in the gallery](https://sonicweaver.com/templates/terrain?mode=dune-field) or go to [the editor](https://sonicweaver.com/editor?engine=terrain&mode=dune-field). --- ### The Contour Map Mode: The Terrain That Does Not Hide What Is Behind It URL: https://sonicweaver.com/blog/contour-map-mode-nothing-is-hidden-behind Published: 2026-09-09 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Contour Map skips the occluding pass every other ridge mode in its engine performs. Dropping the hidden-line step is exactly what turns a landscape into a plate you read from above. The [Terrain engine](https://sonicweaver.com/help/visualizers/terrain) is the one place in the catalogue where the last few seconds of the mix ARE the geometry. **Contour Map** is its flattest reading of that: filled elevation bands read as a topographic plate. *Figure: Overlapping translucent elevation bands stacked into a topographic plate across a dark frame: The committed capture. Every band is translucent, so the colour builds where bands overlap instead of the nearest one winning.* #### What the other modes do and this one does not The engine's ridge modes perform a hidden-line pass. Before a row's outline is stroked, a closed copy of it is painted in the opaque background colour, so a nearer row completely hides the row behind it. That painter's-algorithm fill is what makes a stack of curves read as a landscape rather than as cross-hatching. This mode deliberately does not. Its band is drawn translucently instead, at an alpha that rises with how near the row is and with the beat the row was born on, so rows accumulate through each other. Nothing is hidden and everything is slightly visible through everything else, which is precisely the reading a topographic plate wants: you are looking down at the whole field, not across it at a horizon. The contour itself is stroked as an OPEN path afterwards, at half the configured Thickness. Stroking the closed shape instead would draw the two vertical drops back to the baseline as though they were part of the terrain, which reads as a box around every row. #### Where the rows come from Every frame pushes the current spectrum into a history buffer, and the drawn rows ARE that buffer, nearest last. History ships at 48 here and bounds how many rows the buffer keeps. Speed is rows-per-frame, normalised so the catalogue default is exactly one row per frame and capped at four pushes, because each push repeats the CURRENT spectrum and a large burst would write several identical rows and flatten the relief into plateaus. Each new row also records the beat envelope at the moment it was born, and carries that lift backwards through the field for the rest of its life. So a kick becomes a band you can still pick out several seconds later. A heightfield built purely from band levels drifts with the mix and reads as weather; this is what makes it read as rhythm. #### Relief, roughness and the shape of a band Relief scales the whole height and ships at 0.45. Roughness ships at 0.2 and blends between the band's raw level and its square: at zero the profile is linear in level, and turning it up exaggerates peaks relative to the body of the signal. Low values keep a map legible, which is why this mode ships it low. Perspective does two jobs at once. It sets the exponent of the perspective easing that bunches rows toward the horizon, and it sets the horizontal inset that narrows each row as it recedes, so parallel rows converge like a plane. One control, two effects, both pointing the same way. > **Containment on an offset, not a radius** > A row's height is an offset from that row's own baseline, so the limit is the distance from the baseline up to the top of the frame box rather than a radius from the centre. Passing a vertical offset through a radial limit is exactly how geometry ends up leaving the frame at the top while measuring as contained, and this engine is where that lesson was learned. #### When to reach for it Ambient, post-rock, film score, documentary beds, data and science content, and anything that suits a cartographic look. It is calm without being empty, and it holds text well because its density is even across the frame. For the mirrored travel corridor built from the same field, read [The Canyon Scroll Mode](https://sonicweaver.com/blog/canyon-scroll-mode-containment-on-a-vertical-offset); for the softest mode in the engine, [The Dune Field Mode: The Only Terrain That Never Strokes a Line](https://sonicweaver.com/blog/dune-field-mode-never-strokes-a-line). Open [Contour Map in the gallery](https://sonicweaver.com/templates/terrain?mode=contour-map) or go to [the editor](https://sonicweaver.com/editor?engine=terrain&mode=contour-map). --- ### The Wire Polyhedron Mode: The Edge Threshold Shrinks as You Add Nodes URL: https://sonicweaver.com/blog/wire-polyhedron-mode-the-edge-threshold-shrinks Published: 2026-09-08 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Wire Polyhedron spaces its vertices on a sphere with the golden angle and joins any pair closer than a threshold that falls as the count rises. That falling threshold is why it stays a shell. **Wire Polyhedron** is the [Lattice engine](https://sonicweaver.com/help/visualizers/lattice) at its most three-dimensional: a rotating wireframe solid whose vertices ride their own bands. It is not a fixed solid with a fixed number of faces. It is a point cloud on a sphere, plus a rule about which points count as neighbours, and the rule is the interesting part. *Figure: A rotating wireframe sphere of connected points, brighter at the front and dimmer at the back: The committed capture. Every visible edge exists because two vertices were close enough on the sphere, not because a face list said so.* #### Vertices from the golden angle Points are placed with the Fibonacci sphere construction: walk the vertical axis in even steps, and at each step rotate by the golden angle, which is pi times three minus the square root of five. The result is an even spread over the whole sphere with no poles, no seams and no clustering, for any count at all, computed in one pass with no relaxation step. This is why the mode covers a tetrahedron and a geodesic dome with the same code path. A face list would have to be authored per solid. A spacing rule does not care. #### The threshold that shrinks An edge is drawn between two vertices when the straight-line distance between them on the unit sphere is under a threshold. That threshold is 2.2 divided by the square root of the node count. The square root is doing real work. Spread N points evenly over a sphere and the typical distance to a neighbour falls roughly as one over the square root of N, because you are packing N points into a fixed area. So a FIXED threshold would connect each point to more and more neighbours as the count rose, and past a certain density every point would reach every other: the shell would become a solid ball of lines. Dividing by the square root keeps the number of neighbours per vertex roughly constant, so raising the count gives you a finer mesh rather than a darker blob. > **The pair test is quadratic** > Every pair of vertices is tested, so the work grows with the square of the count. Nodes is therefore bounded at 400 before the shared quality budget is even applied, and at that ceiling the loop performs just under eighty thousand distance tests per frame. If this mode feels heavier than its neighbours on a laptop, that loop is why. #### Depth without a depth buffer There is no z-buffer here, and none is needed. An edge's opacity is built from two things: how short it is relative to the threshold, so borderline edges fade in rather than popping, and the average depth of its two endpoints, so edges on the far side of the sphere are drawn dimmer than edges on the near side. That is enough for the eye to resolve which surface is in front. Vertical positions are also squashed to 94% of horizontal, which is a small cheat that reads as perspective. The solid turns on two axes at different rates, one of them offset by the Twist control, so it never settles into a single obvious spin. Rotation ships at 0.18 and scales both. #### Every vertex rides its own band Each node is stamped at a size built from its own slice of the spectrum plus the beat pulse, then scaled by its depth. So a loud frequency does not brighten the whole solid, it swells the particular vertices that own it, and the shape visibly deforms in one region rather than pulsing as a unit. Geometry is scoped to this mode alone in the engine, because it is the only Lattice mode that stamps points rather than stroking or filling cells, so the vertices can be squares, stars or soft glows. The overall radius rises with the routed level and the beat, soft-limited to 94% of the contain radius so the solid can breathe without touching the frame edge. Audio contribution IS in scope for this mode, and the level it produces is what that radius reads. #### When to reach for it Electronic, progressive, technical metal, science and technology content, and any brief that asks for something that looks engineered. It is the only mode in this wave from an engine that had no mode article at all, and the engine's own guide is the place to see what sits beside it: [The Lattice Engine](https://sonicweaver.com/blog/lattice-engine-geometry-that-switches-on-the-beat). Open [Wire Polyhedron in the gallery](https://sonicweaver.com/templates/lattice?mode=wire-polyhedron) or go to [the editor](https://sonicweaver.com/editor?engine=lattice&mode=wire-polyhedron). --- ### The Orbiting Bars Mode: Bar Width Is the Circumference, Divided URL: https://sonicweaver.com/blog/orbiting-bars-mode-bar-width-is-the-circumference Published: 2026-09-07 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Orbiting Bars never lets you make a solid disc by mistake, because it derives every bar's stroke width from the circumference and the count rather than from a width control. **Orbiting Bars** is the [Logo engine](https://sonicweaver.com/help/visualizers/logo) answering the most common brief it gets: a full equalizer ring orbiting the artwork. It reads as the familiar circular equalizer, and one arithmetic decision inside it is the reason it always reads that way regardless of what you set. *Figure: A ring of short radial bars of varying length around a reserved circular centre: The committed capture. The bars are evenly spaced and evenly proportioned because their width is derived from their count.* #### The width you never set There is no bar width control in this mode. The stroke width is the circumference of the inner ring divided by the bar count, times 0.55, with a floor of 1.2 pixels. In other words each bar takes a fixed 55% of the arc it owns, and the remaining 45% is the gap. That is the decision. Raise the count and every bar thins automatically, so the ring never fills in; lower it and every bar fattens, so the ring never goes gappy and sparse. Compare the engine-free alternative, which is a fixed width control: at high counts the bars overlap into an opaque annulus and the whole readout is lost, and at low counts you get a handful of thin spokes on a big empty circle. The floor at 1.2 pixels is the one place the derivation stops, and it is what stops a very high count from producing invisible hairlines. Bars is scoped to this mode alone in the engine, and it ships at 72 inside a branch that bounds it between 8 and 180. #### Where each bar's frequency comes from A bar reads the element band for its position in the ring, which places it on the same logarithmic curve the rest of the catalogue uses rather than on a raw bin index. Around a circle that matters more than it does on a straight field: on a linear mapping, the whole musical content of a track occupies one small arc and the remaining three quarters of the ring is air that barely moves, which looks like a broken visual rather than an accurate one. A bar's outer end is its inner radius plus a fixed floor, plus its band, plus a small onset contribution, all soft-limited against the frame's contain radius. The floor is what gives the ring a visible resting state at silence, which a logo scene needs more than most: the artwork is the subject and the ring is its frame, so the frame cannot disappear between phrases. #### Rotation, and the artwork underneath Rotation ships at 0.1 and is added to every bar's angle, so the whole ring turns as one. Unlike the engine's waveform mode this one takes the full spin rather than a fraction of it, because a ring of discrete bars reads a rotation as motion whereas a continuous curve reads it as drift. The inner radius is 1.1 times the artwork's safe radius, which itself comes from Logo size, shipped at 0.24. As everywhere in this engine, the artwork is drawn last and the geometry is sized outward from the reserved circle, so no setting can put a bar across your mark. > **One shipped value with no panel** > Until the 2026-09 reactivity pass, this mode shipped a default for **Audio contribution** that its panel never exposed - the audio-routing trio was scoped to a single mode in the engine, and this was not it. That was the pattern this series kept finding across the catalogue: a default value as a record of intent, not a wire. The pass scoped the trio back in, and the routed level now sits beside the per-bar band and the onset burst. #### When to reach for it Channel idents, label and artist logos, square social loops, and anything where you want the readout AND the brand in one frame. It is a busier frame than the engine's waveform mode, so it suits energetic material better than ambient. For the calmer alternative around the same artwork, read [The Waveform Ring Mode: The Trace Bent Around a Reserved Middle](https://sonicweaver.com/blog/waveform-ring-mode-a-trace-around-a-reserved-middle). Open [Orbiting Bars in the gallery](https://sonicweaver.com/templates/logo?mode=orbiting-bars) or go to [the editor](https://sonicweaver.com/editor?engine=logo&mode=orbiting-bars). --- ### The Waveform Ring Mode: The Trace Bent Around a Reserved Middle URL: https://sonicweaver.com/blog/waveform-ring-mode-a-trace-around-a-reserved-middle Published: 2026-09-06 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Waveform Ring is the default mode of the Logo engine and the one that makes a brand mark react. Every radius is measured out from the artwork's safe circle, so nothing can ever cross it. **Waveform Ring** is what most people mean when they ask whether they can put their logo in the middle of a visualizer: the time-domain trace bent into a ring around your logo. It is the fallback branch of the [Logo engine](https://sonicweaver.com/help/visualizers/logo), which is to say it is what you get before you have chosen anything, and it is the most immediately readable proof that a scene is reacting to your track. *Figure: A closed wavy ring surrounding a reserved circular space in the centre of a dark frame: The committed capture, with no artwork loaded. The dashed circle and label are the placeholder, and they show you exactly how much room the mark will get.* #### Everything is measured from the safe circle The engine computes a safe radius from Logo size and Clearance, bounded so it can never take more than nine tenths of the frame's contain radius. Every mode in the engine then sizes its geometry as a multiple of that radius rather than in absolute terms. This mode starts its ring at 1.14 times it. The consequence is the promise: move any control and the geometry moves out of the way of the artwork rather than across it. Scale the logo up and the ring expands to match. There is no combination of settings that puts a waveform over your brand mark, because the overlap case does not exist in the arithmetic. The artwork is also drawn LAST, after every piece of geometry, so nothing can paint over it even by accident. When an image is set it is fitted to the inscribed box of the safe circle by its half-diagonal, which preserves the aspect ratio of a wide wordmark as faithfully as a square badge. #### The placeholder is deliberate With no artwork loaded the mode draws a dashed circle and the word LOGO in the reserved space. That is not a stub nobody got round to removing. Without it the engine renders geometry around an empty hole, which gives no clue that the middle is reserved or how big the reserved area is, and it means the sizing controls cannot be dialled in before an upload. It is also what makes the mode capturable as a gallery thumbnail at all. #### Bending a trace into a circle The ring is built by walking up to 360 steps around the circle, reading the time-domain sample at each step's position in the buffer, and pushing the radius out by that sample times Waveform gain, plus small contributions from level and beat pulse. The path is closed at the end, so the ring is continuous rather than a spiral with a visible seam. Every radius passes through the engine's soft limiter against the frame's contain radius, so a loud passage bulges rather than clipping. Waveform gain is scoped to this mode alone in the engine and ships at 1.6, above unity, because a raw waveform bent into a ring at unity gain is almost a perfect circle. So are the three audio-routing controls: this is the only mode in the engine where Primary audio source, Audio contribution and Audio dynamics appear at all, and the branch genuinely reads the routed level into the radius. > **Rotation is a trim, not a spin** > Rotation feeds the engine's shared spin value, but this mode applies only a fifth of it to the ring's angle. A waveform ring that visibly rotates draws attention to the fact that its shape is arbitrary; a slow drift keeps it alive without inviting that reading. #### When to reach for it Single covers, channel idents, podcast artwork, release announcements, and any loop where the brand is the subject and the music is the motion. It works in square and vertical formats equally well because it is radially symmetric. For the mode that assembles the mark across a bar instead of framing it, read [The Kinetic Reveal Mode](https://sonicweaver.com/blog/kinetic-reveal-mode-assembling-a-mark-across-a-bar); for the same engine as a full equalizer ring, [The Orbiting Bars Mode: Bar Width Is the Circumference, Divided](https://sonicweaver.com/blog/orbiting-bars-mode-bar-width-is-the-circumference). Open [Waveform Ring in the gallery](https://sonicweaver.com/templates/logo?mode=waveform-ring) or go to [the editor](https://sonicweaver.com/editor?engine=logo&mode=waveform-ring). The tutorial [Make a Logo Visualizer](https://sonicweaver.com/blog/make-a-logo-visualizer) walks the whole workflow from upload to export. --- ### The Waveform Filled Mode: A Closed Path Back to the Baseline URL: https://sonicweaver.com/blog/waveform-filled-mode-a-closed-path-to-the-baseline Published: 2026-09-05 · Updated: 2026-09-12 · Author: Novus Team · 6 min read The Waveform engine's area mode closes its trace back along the baseline, fills it translucently, and then strokes the outline on top. Here is why the order matters and what the depth control does when there is only one row. The catalogue describes this mode as one where *a translucent waveform area holds a stable idle silhouette.* It is the [Waveform engine](https://sonicweaver.com/help/visualizers/waveform) drawing the same time-domain trace as its line modes, with one extra step at the end of every row, and that step changes the character of the thing completely. *Figure: A waveform trace across the middle of a dark frame with the area between it and the centre line shaded: The committed capture. The shading hangs from the trace's own anchor line, which is also where the trace sits at silence.* #### Close, fill, then stroke When the trace reaches the right edge, this mode adds two more points: down to the baseline at the right, then across to the baseline at the left. Closing the path turns an open curve into a region. The region is filled first, at a low alpha built from a fixed floor plus level and beat contributions, and only then is the outline stroked. The order is load-bearing. Stroking first and filling second would lay the translucent fill over the outline and soften it; filling first leaves the stroke crisp on top of its own shading. It is the same reason a chart library draws its area before its line. #### The baseline is the trace's anchor, not the frame's The closing points go to the waveform's own centre line, halfway down the frame, rather than to the bottom of the canvas. So the area hangs both upward and downward from the middle and the silhouette at silence is a flat band rather than a filled lower half. That is what the catalogue means by a stable idle silhouette: with no audio playing the mode still has a shape, which matters a great deal for a scene that might be on screen before a track starts. #### The swing is limited, the sample is not Gain reaches 5 from the control and is multiplied again by the beat pulse, the onset burst and the level, so the raw excursion can be several frame heights. What the engine limits is the OFFSET from the baseline, through a soft knee, rather than the sample value itself. The waveform's shape survives intact and only its reach is bounded, which is the difference between a loud passage that fills the frame and one that turns into a square wave. > **A depth control with nothing to space** > Ribbon depth is in scope for this mode, and on a multi-row mode it is the gap between rows. This mode draws one row, so there is nothing for it to separate. The value is still computed, and it is still SUBTRACTED from the headroom the swing is allowed to use, so turning it up here quietly reduces how far the waveform can reach rather than adding any depth. Leave it low on this mode. #### Scrolling, smoothing and colour The sample window travels with the motion clock, so the trace scrolls rather than being redrawn in place. That is how Speed reaches this engine at all. Smoothing is a three-tap average across neighbouring samples, clamped below 1 so it can never fully erase the signal. And Color mode splits two ways here: the duo setting strokes from the palette, and anything else strokes a gradient spanning the frame width. The mode ships Opacity at 0.86. That one is applied by the engine before the draw module is even called, so it composes with the fill's own alpha rather than replacing it. > **One more shipped default that cannot be reached** > This mode ships a geometry-shape value. That control belongs to five engines in the catalogue and Waveform is not among them, so it appears in no panel here, and the string does not occur anywhere in this engine's draw module. Two of the 29 engines in the catalogue carry a default like this in one of their modes, and both are worth knowing about before you spend ten minutes hunting for a slider. #### When to reach for it Acoustic material, singer-songwriter releases, podcast and audiobook clips, and any video where the waveform IS the subject rather than the decoration. The area reads at a distance where a one-pixel line does not. For the engine's most unusual mode, read [The Oscilloscope/Lissajous Mode](https://sonicweaver.com/blog/oscilloscope-lissajous-mode-a-real-second-channel); for the same trace bent into a circle around artwork, [The Waveform Ring Mode: The Trace Bent Around a Reserved Middle](https://sonicweaver.com/blog/waveform-ring-mode-a-trace-around-a-reserved-middle). Open [the Filled mode in the gallery](https://sonicweaver.com/templates/waveform?mode=filled) or go to [the editor](https://sonicweaver.com/editor?engine=waveform&mode=filled). --- ### The Particle Vortex Mode: The One Tunnel Branch That Does Not Return URL: https://sonicweaver.com/blog/particle-vortex-mode-the-branch-that-does-not-return Published: 2026-09-04 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Particle Vortex is the only mode in its engine that renders two passes in one frame: a spiral of particles, and then the same ring corridor everything else draws. They travel in opposite directions. The catalogue says **Particle Vortex** is where *particles spiral through a shared camera-space vortex.* True, and incomplete. Every other branch in the [Tunnel engine](https://sonicweaver.com/help/visualizers/tunnel) either draws rings or draws streaks and returns. This one draws its particles and then falls through into the shared ring loop as well, so a single frame contains both. *Figure: A spiral of bright points wrapped around a receding series of faint circular rings: The committed capture. The points and the rings are two separate passes, drawn in one frame from the same clock.* #### Two passes, two directions The two passes share a travel value and read it with opposite conventions. In the particle pass, a particle at the start of its cycle is the near one: largest, brightest, furthest from the centre. As travel advances it shrinks, dims and drifts inward. In the ring pass, the start of the cycle is the FAR end: a ring is born small and faint at the vanishing point and grows toward you until it passes the frame edge. So the particles spiral away from you into the middle while the rings rush out past you. That is not a bug and it is not obvious from any control; it is a property of the two branches having been written against different depth conventions, and it is a large part of why this mode feels busier than anything else in its engine. #### What makes the spiral a spiral Each particle's angle is its own seeded phase plus a slow wall-clock term plus twice the motion clock, plus half the raw bass band. That last term is the one worth noticing: this is the only path in the engine where the bass band directly rotates the geometry, so a kick does not merely brighten the vortex, it twists it. The particle's horizontal and vertical seeds are then folded in as further per-particle angular offsets, so the points do not lie on one clean spiral arm but on a family of them. The vertical extent is scaled to 85% of the horizontal, which gives the vortex a slightly flattened profile and stops it reading as a flat disc seen face on. Particle count comes from the shared quality budget with a ceiling of 600. The number you set is a target, not a promise. It is scaled by the preview scale, by the canvas area relative to 1080p, and by a further reduction on machines reporting four or fewer cores, then capped. Export with capture quality on and the last two of those are switched off, so the exported frame is the count you asked for. #### The only tunnel mode with routed audio Audio contribution and the source and dynamics controls beside it are scoped to this mode ALONE in the engine, and this mode ships an amount of 0.88. That is not an accident of the table: the particle pass reads the routed per-element level into each particle's size, so the routing genuinely reaches the canvas here and nowhere else in the engine. It is the clearest example in the catalogue of scoping that reflects the code rather than describing it. > **And one shipped value with nowhere to go** > The same mode ships a default for turbulence. The turbulence control belongs to two engines in the catalogue and Tunnel is not one of them, so it never appears in any panel here, and the string "turbulence" does not occur anywhere in the engine's draw module. It is a number with no reader. #### Particles you can shape Geometry is scoped to this mode alone in the engine, because it is the only one that stamps particles rather than stroking paths. The shared stamping routine understands squares, rounded rectangles, triangles, stars, ellipses, short line segments and a soft radial glow as well as the default circle, so the same spiral can read as sparks, as confetti or as a smear of light without touching anything else. The mode ships a Cross section of circle, and unlike the engine's corridor mode this one does read it: the rings behind the particles are built from that shape, at 48 sides, with a level-of-detail reduction to 20 for rings that are still far away and only a few pixels across. #### When to reach for it Bass-led electronic music, psytrance, dubstep, and anything where you want the geometry itself to respond to the low end rather than just flash with it. It is the busiest mode in its engine, so give it space: it does not sit behind dense text well. For the structural opposite, read [The Corridor Grid Mode: Rings Alone Are Not a Corridor](https://sonicweaver.com/blog/corridor-grid-mode-rings-are-not-a-corridor); for the engine's speed-first mode, [The Warp Field Mode](https://sonicweaver.com/blog/warp-field-mode-a-streak-carries-its-beat). Open [Particle Vortex in the gallery](https://sonicweaver.com/templates/tunnel?mode=particle-vortex) or go to [the editor](https://sonicweaver.com/editor?engine=tunnel&mode=particle-vortex). --- ### The Corridor Grid Mode: Rings Alone Are Not a Corridor URL: https://sonicweaver.com/blog/corridor-grid-mode-rings-are-not-a-corridor Published: 2026-09-03 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Corridor Grid adds twenty lines that nothing else in the engine draws. Without them a corridor is a stack of nested rectangles; with them it is a surface running away from you. **Corridor Grid** is the [Tunnel engine](https://sonicweaver.com/help/visualizers/tunnel) at its most architectural: walls and floor form a measured perspective corridor. It shares the engine's ring machinery with four other modes and then adds one pass that none of them has, which is the whole reason it reads as a room rather than as a target. *Figure: Nested rectangles receding into the centre of the frame with faint lines converging on a vanishing point: The committed capture. The faint diagonals running to the middle are the pass that separates this mode from the rest of the engine.* #### The twenty lines After the rings are drawn, this mode walks the perimeter of the NEAREST ring in four segments, takes five points along each, and strokes a line from every one of them to the vanishing point at the centre. Twenty lines, one pixel wide, at about a tenth opacity with a small lift on the beat. That is a small amount of ink for a large amount of read. Rings alone give you depth SPACING but nothing continuous between them, so the eye assembles them as a set of separate shapes at different sizes. The longitudinal lines are what turns the same rings into walls, a floor and a ceiling. They are drawn under the nearest ring's rotation, so a twist setting carries them with the corridor rather than leaving them behind. #### The cross-section is not a choice here Every other ring mode in the engine asks the Cross section control what shape to draw. This branch does not: it forces a rectangle whatever that value says, and the control is correspondingly scoped out of this mode's panel. Interestingly, the mode still SHIPS a cross-section default. That value records the intent of the design rather than doing any work, which is the trap worth carrying away from this engine: a default in the catalogue is not proof that anything reads it. #### A ring carries the moment it was born The engine's central idea is shared with this mode rather than invented by it, and it is worth stating because it explains the whole look. A ring's identity is its slot plus which trip around the loop it is on. When a slot wraps to the far end, it becomes a new ring and freezes 24 bands of the CURRENT spectrum. From then on it renders its own snapshot as it advances toward you. The corridor is therefore a scrolling record of the last few seconds of the track, not four rings all pulsing to the same live frame. Travel is strictly monotonic for the same reason: it is driven by the motion clock alone with no bass term added. A travel value that wobbled would re-trigger births every time the bass jittered across a boundary, and no snapshot would ever hold. The beat rush is not lost, because the motion clock already accelerates on beats while staying strictly increasing. #### Depth, field of view and how big the corridor is Segments ships at 36 and is capped at 96 in the branch. Field of view is clamped between 15 and 140 degrees and normalised against 58, so it widens or narrows the whole corridor without deciding whether it fits. And the near ring's size is SOLVED from a target of 1.12 times the canvas width rather than hard-coded, so it is always in the act of passing you whatever the depth setting is. The previous fixed constants put the nearest ring at roughly 38% of canvas width, which reads as a small motif in the middle of the screen rather than something you are flying through. > **Routing controls, and the one mode that has them** > Until the 2026-09 reactivity pass, this mode shipped a value for **Audio contribution** while the audio-routing trio was scoped to a single mode in the engine - and this was not it. The pass scoped the trio into every tunnel mode, so the routed level now travels with each ring's own frozen spectrum, the beat pulse and the onset burst. Speed applies to every mode in the engine as it always has, through the motion clock that travel is built from. #### When to reach for it Techno, trance, drum and bass, trailers, and anything that wants relentless forward motion with structure around the viewer rather than past them. It also holds centred text better than most immersive scenes, because the middle of the frame is where the rings are smallest and dimmest. For the same engine with a live cross-section instead of a frozen one, read [The Waveform Tube Mode](https://sonicweaver.com/blog/waveform-tube-mode-the-corridor-that-reads-live); for the engine's other outlier branch, [The Particle Vortex Mode: The One Tunnel Branch That Does Not Return](https://sonicweaver.com/blog/particle-vortex-mode-the-branch-that-does-not-return). Open [Corridor Grid in the gallery](https://sonicweaver.com/templates/tunnel?mode=corridor-grid) or go to [the editor](https://sonicweaver.com/editor?engine=tunnel&mode=corridor-grid). --- ### The Piano/Step Grid Mode: Quantised to Whole Cells URL: https://sonicweaver.com/blog/piano-step-grid-mode-quantised-to-whole-cells Published: 2026-09-02 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Piano/Step Grid rounds every column to a whole number of cells and paints the dividers in the background colour, which is why Background is one of the few controls this engine opens up to layers. **Piano/Step Grid** takes the same bar field as the rest of the [Bars engine](https://sonicweaver.com/help/visualizers/bars) and does one thing to it: quantized frequency steps form a musical grid. Quantisation is the entire identity of the mode, and everything else about it exists to make the steps visible. *Figure: A field of columns built from discrete stacked cells across the bottom of a dark frame: The committed capture. Every column ends on a cell boundary, and the gaps between cells are painted, not empty.* #### How many cells a column has The cell count is the Stacks control times four, with a floor of four. This mode ships a stack of 6, so each column is divided into 24 cells. A column's height is then its level rounded to the nearest whole number of those cells, with a minimum of eight tenths of one cell so a silent column still shows a stub rather than disappearing. That minimum is the difference between a grid and a gap-toothed field. A readout where quiet frequencies vanish entirely reads as broken, because the viewer cannot tell an absent column from a rendering fault. #### The dividers are painted, not left out The obvious way to build a stepped column is to draw each cell as its own rectangle with space between them. This mode draws one continuous column and then paints thin horizontal strips over it in the **background colour**, at roughly a fifth of a cell's height each. The result looks identical and costs one fill per boundary instead of one fill per cell. It also has a consequence that shows up in the control list. Background is normally a main-surface control only, because a layer composited over other layers has no background of its own to set. This mode and one other in the engine are the exceptions that opt it into layer scope, precisely because the value is being used as ink rather than as a backdrop. Set it to something that contrasts with your bars and the dividers appear; set it to match and the column goes solid. > **Square caps, and why** > This mode ships Cap shape as **square**. A rounded cap on a quantised column fights the grid: the top cell stops looking like a cell. Square is the shape that makes the quantisation legible, and it is worth leaving alone unless you are deliberately going for a softer reading. #### Column count and the piano reading The mode ships a Bar count of 72, higher than the engine's plain equalizer mode. Narrow columns plus discrete cells is what produces the keyboard reading the name points at. Every column still owns its own logarithmic slice of the spectrum, so the left of the field is bass and the right is air, and the grid is a way of displaying that rather than a musical scale in any strict sense. As with every mode in this engine, the three audio-routing controls are out of scope: this mode ships a value for **Audio contribution** that no panel exposes. Sensitivity and the attack and release ballistics are the live ones. #### When to reach for it Hip hop, electronic, retro and chiptune material, hardware demos, and anything with a deliberately digital aesthetic. The quantisation reads as intent, which makes it a good choice when a smooth readout would look accidental. For the continuous version of the same field, read [The Linear Equalizer Mode: Flush on the Edge, Rounded Only at the Cap](https://sonicweaver.com/blog/linear-equalizer-mode-flush-on-the-edge); for the same data wrapped into a circle, [The Radial Bars Mode](https://sonicweaver.com/blog/radial-bars-mode-the-only-contained-layout-in-bars). Open [Piano/Step Grid in the gallery](https://sonicweaver.com/templates/bars?mode=piano-step-grid) or go to [the editor](https://sonicweaver.com/editor?engine=bars&mode=piano-step-grid). --- ### The Linear Equalizer Mode: Flush on the Edge, Rounded Only at the Cap URL: https://sonicweaver.com/blog/linear-equalizer-mode-flush-on-the-edge Published: 2026-09-01 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Linear Equalizer sits on the frame edge on purpose, rounds only the two corners at the top of each bar, and runs a gloss across the field that brightens without changing a single bar's height. **Linear Equalizer** is the reference look of the [Bars engine](https://sonicweaver.com/help/visualizers/bars): a refined baseline equalizer with rounded caps. It is the most familiar shape in the whole catalogue, which is precisely why the details are worth naming. Every one of them is there to make it read as hardware rather than as a chart. *Figure: A row of vertical bars rising from the bottom edge of a dark frame with rounded tops: The committed capture. The bars meet the bottom edge with no gap, and the corners are rounded only at the cap.* #### Flush is a decision, not an oversight Every other engine in the catalogue respects the frame margin: geometry is inset so it does not read as cropped. Bottom-anchored bars deliberately do not. The baseline sits one pixel above the canvas bottom, ignoring the margin entirely, because a row of bars floating above the edge of the frame does not look like an equalizer, it looks like a bar chart that has been positioned badly. The margin still bounds how TALL a bar can be, so the exception is about where the bars start and not about whether they can leave the frame. Turn Floor reflection up and the floor rises to 82% of the frame height to make room for the mirrored copy below it. That is the one case where the bars come off the edge, and the reason is structural rather than aesthetic. #### Rounded at the cap only At the default Cap shape the bar is drawn as a rounded rectangle with a radius on the top two corners and zero on the bottom two. Rounding all four would lift the bar visually off the baseline and undo the flush anchoring above. The radius is the smaller of half the bar width and 10 pixels, so a narrow bar gets a proportionate cap instead of a stadium shape. Bar width is not set directly. Bar width is a fraction of the slot, and Bar gap reduces that fraction further, so the two controls compose rather than fight. This mode ships a gap of 0.14 and a Bar count of 64. #### The gloss that changes nothing A highlight travels across the field, driven by the motion clock, lighting bars in turn. It is drawn additively over the bar that has already been painted, re-filling the same path, so it changes a bar's brightness and never its height. That distinction is the whole reason it is allowed to exist: an equalizer is a readout, and a time-based animation that altered the heights would be the visual lying about the audio. The distance from a bar to the sweep is measured with a wrap, so the highlight is continuous across the seam rather than restarting at the left edge, and it falls off steeply enough that only a narrow band of the field is lit at any moment. > **The audio-routing controls are absent from this engine by design** > This mode ships a value for **Audio contribution**, and neither it nor the source and dynamics controls beside it appear in any Bars panel. The reasoning is in the catalogue: Bars is a full-spectrum readout where every bar IS its own band, so selecting one band to drive the whole thing, capping that single route or scaling its dynamics are all meaningless. Sensitivity and the attack and release ballistics ARE wired, and they are the controls that shape its response. #### Peak markers that tell you their duration Peak hold ships at 420 milliseconds. Each marker is a two-pixel bar sitting just above its column's current height, and its opacity decays across the hold rather than switching off at the end of it. Without that decay a short hold and a long one produce identical frames, and the control is only observable by watching one marker until it goes. #### When to reach for it Playlists, radio edits, DJ mixes, podcast clips, and anything where the viewer should be able to read the music at a glance. It survives small players better than almost anything in the catalogue because it is legible at thumbnail size. For the symmetric version anchored at the middle, read [The Center Mirror Mode](https://sonicweaver.com/blog/center-mirror-mode-half-the-headroom-both-ways); for the stepped, gridded variant, [The Piano/Step Grid Mode: Quantised to Whole Cells](https://sonicweaver.com/blog/piano-step-grid-mode-quantised-to-whole-cells). Open [Linear Equalizer in the gallery](https://sonicweaver.com/templates/bars?mode=linear-equalizer) or go to [the editor](https://sonicweaver.com/editor?engine=bars&mode=linear-equalizer). --- ### The Frequency Ridge Mode: Only the Front Row Is a Ridge URL: https://sonicweaver.com/blog/frequency-ridge-mode-only-the-front-row-is-a-ridge Published: 2026-08-31 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Frequency Ridge strokes its front row at more than double the width of every row behind it, fills only the first six, and is the one mode in its engine that reads the noise control. **Frequency Ridge** is described in the catalogue as *A focused ridge emphasizes bounded band transitions.* It is one of four modes in the [Spectrum engine](https://sonicweaver.com/help/visualizers/spectrum) that draw the past as well as the present, and it is the only one that treats the newest row as a different kind of object from the rest. *Figure: A bold spectral curve in front with fainter copies of earlier frames receding behind it: The committed capture. The heavy line at the front is this frame; everything behind it is texture.* #### One row in front, the rest behind The front row is stroked at 3.4 times the configured thickness. Every row behind it gets 1.6. That is not a gradient, it is a two-value split, and it is what produces a ridge rather than a stack: the eye reads the heavy line as the subject and the thin ones as depth. Filling is split the same way, with only the first six rows filled at all, because rows further back are almost entirely occluded by the ones in front of them and filling them is full-width translucent overdraw that nobody sees. Alpha falls off with depth as well, from just under half at the front to almost nothing at the back, so the ridge fades into the frame instead of ending on a visible last row. #### How many rows, and how far apart in time This mode is capped at 22 drawn rows. That number is a performance boundary and not an arbitrary one: stroking and filling 56 rows at 1080p benched between 20 and 57 milliseconds a frame, which is over the 60fps budget. History SCALES the drawn rows toward that cap rather than merely raising a ceiling that was already lower, which matters because every history mode in the engine ships a depth above its own cap. Reading the control as a simple maximum meant every value at or above the cap rendered identically, and the only way to observe the control was to turn it down. Speed is a STRIDE here, not a push rate. The history buffer still fills one row per frame; speed decides how many frames apart the drawn rows are. So a slow setting shows the last half second in fine detail and a fast one spans several seconds across the same number of rows. Feeding speed into the push rate instead starves the buffer at low speeds, which is what made the depth control unobservable in the first place. #### The exclusive control Noise deformation is scoped to this mode alone in the engine, and this mode ships it at 0.12. It adds a travelling sine offset along the length of every row, scaled by a small fraction of the frame height. It is deliberately small: the job is to stop the back rows reading as clean copies of the front one, not to turn the spectrum into a wave. Set it high and you will make the readout dishonest, because the wobble is not in the audio. > **Smoothing is why it holds together** > This mode ships Smoothing at 0.82, which is high. That is a one-pole filter across frames, so consecutive rows differ from each other gently. With smoothing near zero the rows disagree violently and the receding stack reads as static rather than as a surface. #### Peaks on top of everything This mode ships a peak hold of 500 milliseconds, longer than the engine's single-row mode. As there, the value arrives as an authored default rather than as something you can move: Spectrum declares no peak-hold control. Markers are drawn once, after every row, so they sit above the whole stack rather than inside it, and they fade across the hold so the duration is legible from a single frame. #### When to reach for it Anything mid-tempo with a strong melodic line: synthwave, house, film score, lo-fi. It gives you the readout of a spectrum plus the sense of time passing that a single row cannot, without the full commitment of a scrolling heat map. For that heavier option, read [The Spectrogram Waterfall Mode](https://sonicweaver.com/blog/spectrogram-waterfall-mode-speed-is-a-stride); for the single-row version, [The Line Spectrum Mode: The Axis Is Logarithmic Because the Bins Are](https://sonicweaver.com/blog/line-spectrum-mode-the-axis-is-log-because-the-bins-are). Open [Frequency Ridge in the gallery](https://sonicweaver.com/templates/spectrum?mode=frequency-ridge) or go to [the editor](https://sonicweaver.com/editor?engine=spectrum&mode=frequency-ridge). --- ### The Line Spectrum Mode: The Axis Is Logarithmic Because the Bins Are URL: https://sonicweaver.com/blog/line-spectrum-mode-the-axis-is-log-because-the-bins-are Published: 2026-08-30 · Updated: 2026-09-12 · Author: Novus Team · 8 min read Line Spectrum draws its samples at evenly spaced x positions and still gives you a logarithmic frequency axis. The curve is in the analyser, not in the renderer, and that distinction is worth understanding. The catalogue describes **Line Spectrum** as *A smooth log-frequency line with stable peak behavior.* Read the drawing code on its own and that sentence looks wrong, which makes this the most interesting post in the set: the claim is true, and none of the evidence for it is in the file that draws the line. *Figure: A single smooth curve across the lower half of a dark frame with small peak markers above it: The committed capture. One row, one stroke, and the small marks floating above it are held peaks.* #### What the renderer actually does The draw code places sample number i at i divided by the last index, times the width. That is a strictly even spacing. It does not bend the axis, it does not call the catalogue's logarithmic element-band helper, and the resampler that feeds it interpolates linearly between whatever bins it is given. If you audit the renderer alone, you will conclude the axis is linear in bin number, and you will be right about the renderer. There is a logarithmic curve in this codebase and this mode never touches it. It lives in the motion kit, has a base of 40, and is reached through the element-band helper that the bar, ray and ring engines use to give element number i its own slice of the spectrum. This mode does not draw elements. It draws a polyline over an array, so it has no element index to curve. #### Where the curve actually is Two hops upstream. The per-frame audio snapshot fills its bin array from the analyser's 128-band FFT accessor, and that accessor does not hand back raw FFT bins. It maps its bands logarithmically between 20 Hz and the lower of 20 kHz and the Nyquist frequency, using base-10 logarithms of those two endpoints to place each band. So the array this mode walks is already log-spaced in frequency. Walking it at even x intervals therefore produces a logarithmic frequency axis, which is exactly what the catalogue claims. The axis is log because the BINS are log, not because the drawing bends anything, and if you ever move this mode onto a raw linear FFT source the description stops being true without one character of the draw code changing. > **Why a log axis is the right one** > Pitch is logarithmic. Every octave doubles the frequency, so on a linear axis the octave from 20 Hz to 40 Hz gets 20 Hz of width and the octave from 5 kHz to 10 kHz gets 5,000. A linear spectrum spends most of its width on the top two octaves, which on ordinary material are the quietest and least interesting. Log spacing gives every octave the same room. #### Resolution, and the dead tail Bins sets how many samples the line is built from, shipped here at 128 and capped at 256 inside the branch. Spectrum range then trims the top of the array before resampling. That control exists because 8 kHz sits at about 86.7% of the bin array: at a range of 1 the right-hand eighth of the line is near-silent air on most material and barely moves, which is a large part of what makes an untuned spectrum look inert. Smoothing is applied last, as a one-pole filter across frames rather than across bins. It smooths the line in TIME: a high value makes the curve glide and a low one makes it chatter. It does not blur one frame's shape sideways. #### Peak hold, made legible This mode ships a peak hold of 420 milliseconds, and that value is worth a second look. The draw code reads it and the markers honour it, but the Spectrum engine declares no peak-hold control at all: the number arrives through this mode's own authored defaults and there is no slider for it in either editor. The hold you get here is the hold the mode was written with. Each held peak is drawn as a small mark a few pixels wide above the curve, and the marks FADE across their hold rather than vanishing at the end of it. That is what makes the duration legible from a single frame: with a hard expiry, a short hold and a long one produce identical pictures and you could only tell them apart by staring at one marker until it disappeared. #### Height, anchor and headroom At the default bottom anchor the baseline sits at 94% of the frame height, which is nearly flush. Sample height is a fixed amplitude plus contributions from level, beat pulse and onset burst, and the whole thing is soft-limited against the distance from the baseline up to the top of the frame box. Soft-limited, again, rather than rescaled: dividing by the worst case would shrink ordinary levels to leave room for peaks that mostly never come, so the spectrum would read as permanently quiet. #### When to reach for it Anything that wants an honest readout rather than an effect: mix demos, plugin walkthroughs, mastering content, and the analytical half of a music channel. It is one row and one stroke, so it is also the cheapest thing in the engine to render at high resolution. For the same data with history behind it, read [The Frequency Ridge Mode: Only the Front Row Is a Ridge](https://sonicweaver.com/blog/frequency-ridge-mode-only-the-front-row-is-a-ridge); for the underlying transform, [How FFT Turns Audio Into Visualizer Bands](https://sonicweaver.com/blog/how-fft-turns-audio-into-visualizer-bands). Open [Line Spectrum in the gallery](https://sonicweaver.com/templates/spectrum?mode=line-spectrum) or go to [the editor](https://sonicweaver.com/editor?engine=spectrum&mode=line-spectrum). --- ### The Sunburst Mode: A Ray Fan Centred on Twelve O'Clock URL: https://sonicweaver.com/blog/sunburst-mode-a-ray-fan-centred-on-twelve Published: 2026-08-29 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Sunburst fans frequency rays around a reserved centre. The fan is built outward from the top of the frame, which is what makes a partial sweep symmetric instead of lopsided. **Sunburst** is the [Radial engine](https://sonicweaver.com/help/visualizers/radial) at its most direct: frequency rays fan around protected central media. No rings, no layers, no counter-rotation. One fan of rays, each one reading its own slice of the spectrum, arranged around a hole in the middle that nothing is allowed to cross. *Figure: A circular fan of coloured rays radiating outward from a reserved dark centre: The committed capture. The thin ring at the inner edge is the accent ring, and it marks the boundary of the protected centre.* #### Why the fan starts at twelve o'clock The ray fan is not laid out from zero degrees and wrapped. Its start angle is computed as straight up MINUS half the sweep, so the fan is always centred on twelve o'clock and grows outward in both directions as the sweep widens. At the full circle this mode ships you cannot tell, because a full circle looks the same wherever it starts. Turn Angular sweep down and the difference is the entire point: the arc stays balanced around the top of the frame instead of hanging off one side of it. That control is scoped to this mode and one other in the engine, and this mode ships it at 360 degrees. The ray count comes from Symmetry, shipped at 96 and bounded between 24 and 192 inside this branch. #### Each ray owns a frequency A ray does not read the spectrum bin at its own index. It reads the element band for its position in the fan, which places it on a logarithmic curve across the usable spectrum. The difference is not cosmetic: index-based reading crams everything a listener hears as music into the first handful of rays and gives the rest air. On the curve, the fan spreads real content around the whole circle. A ray's length is its own band plus a floor, plus contributions from the beat pulse and the onset burst, all multiplied by a deformation term that is itself scaled by the band. Its stroke width rises with the same band, so a loud frequency reads as a longer AND thicker spoke. Each ray is stroked with a gradient running from dim at the hub to nearly opaque at the tip, which is what keeps the middle of the picture from turning into a solid disc of overlapping line ends. #### The limit is a knee, not a wall Every tip passes through the engine's soft limiter against the frame's contain radius. That is deliberately not a clamp. A clamp flattens every value above the limit to the same length, which means the loudest passage of the song is precisely where the visual stops responding. The soft knee is the identity well below the limit and only approaches it asymptotically, so louder always reads as longer, forever. #### The reserved middle Rays start at an inner radius derived from whichever is larger of Logo safe zone and Inner radius, itself soft-limited so it can never swallow the frame. The mode then strokes a thin accent ring on that radius. The ring is doing a job: without it, a reserved centre reads as a hole rather than as a frame, and there is nothing to tell you how much room you actually have for a logo, a title or a lyric line. > **The audio-routing controls are not here** > Until the 2026-09 reactivity pass, this mode shipped a value for **Audio contribution** that its own panel never exposed - the audio-routing trio was scoped to three other modes. The pass scoped it back in, so the routed level now joins the per-ray band, the beat pulse and the onset burst. Sensitivity remains the control that shapes the fan's overall response. #### When to reach for it Cover art, square social posts, podcast clips, and anything centred on a logo or a face. It is the most legible readout in the engine because there is exactly one layer of information in it. For the same engine with several fans stacked and counter-rotating, read [The Mandala Mode](https://sonicweaver.com/blog/mandala-mode-layered-ray-fans-that-count-down); for the same data drawn as a line rather than a fan, [The Line Spectrum Mode: The Axis Is Logarithmic Because the Bins Are](https://sonicweaver.com/blog/line-spectrum-mode-the-axis-is-log-because-the-bins-are). Open [Sunburst in the gallery](https://sonicweaver.com/templates/radial?mode=sunburst) or go straight to [the editor](https://sonicweaver.com/editor?engine=radial&mode=sunburst). --- ### The Glyph Field Mode: A Column Is a Band URL: https://sonicweaver.com/blog/glyph-field-mode-a-column-is-a-band Published: 2026-08-28 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Glyph Field lays glyphs on a grid and binds every column to its own slice of the spectrum. A glyph changes character when its column crosses a threshold, not when the clock says so. **Glyph Field** is the quietest of the typographic modes in the [Character Motion engine](https://sonicweaver.com/help/visualizers/character-motion). It does not spell anything and it does not fall. It fills the frame with characters on a grid and lets the spectrum play across them left to right. *Figure: A grid of small monospaced characters across a dark frame, some brighter and larger than others: The committed capture. The brightness gradient across the frame is the spectrum, read as a horizontal axis.* #### The grid is derived, not configured There is no rows control and no columns control. The mode takes the Character count you set, takes the square root of 1.8 times it, floors that for the column count, and divides to get the rows. The 1.8 is what gives the grid a landscape bias rather than a square one. This mode ships a count of 72, and the draw path caps the field at 300 glyphs however high the control goes. #### A column is a band Every glyph reads the band belonging to its COLUMN, not to its own index. So a column is a vertical stripe of the spectrum: the left edge is bass, the right edge is air, and everything between is laid out on the same logarithmic element curve the rest of the catalogue uses, which puts the midpoint of the field at roughly a seventh of the way up the raw bin array rather than halfway. That curve is why the middle of the field carries recognisable music instead of hiss. The band drives three things per glyph: its size, its opacity, and whether it is about to change character. All three read the same number, which is why a loud column does not just brighten, it visibly thickens. #### The swap latch Each glyph keeps a smoothed copy of its column's level, following the live value at a rate tied to the frame time. When that smoothed level crosses 0.42 upward, and only then, the glyph advances through the character set by between one and three positions, chosen by a hash that is re-drawn once per beat. This is a rising-edge latch, and it matters. The obvious implementation is to index the character set by the beat count, and that is what this mode used to do: every glyph in the field swapped on the same frame, which is a clock rather than a visualization. Latching per glyph on its own column means the field types unevenly, because the columns cross their thresholds at different moments. > **Bring your own alphabet** > The Glyph set control is scoped to this mode and one other in the engine. Whatever string you put in it IS the character set, so a set of four characters gives you a field with four states and a set of forty gives you one that never visibly repeats. Short sets read as a pattern; long sets read as data. #### Motion, and why it stays in frame Glyphs drift vertically around their grid position on a sine of their own index, and wobble horizontally by a much smaller amount. The Path deformation control scales both. The vertical drift is soft-limited against half the frame box height, measured from the box centre, which is why Frame margin is in scope for this mode: turning the margin up genuinely pulls the field inward. The engine's cascading mode deliberately does the opposite and wraps off one edge, which is why the margin is scoped away from it. > **One shipped default you cannot reach** > Until the 2026-09 reactivity pass, this mode shipped a value for **Audio contribution** that no panel exposed: the three audio-routing controls were scoped to the engine's other modes, so the default was a record of intent rather than a wire. The pass scoped the trio back in, and the routed level now sits alongside the per-column band and the beat pulse this grid has always read. #### When to reach for it Electronic, industrial, anything with a terminal or data aesthetic, and any video where you want typography present without it saying words. It is a background, not a title card. If you want the characters to spell something, the engine's word mode is the one to open; [The ASCII Cascade Mode](https://sonicweaver.com/blog/ascii-cascade-mode-every-glyph-swaps-on-its-own-band) covers the falling variant of this same grid. Open [Glyph Field in the gallery](https://sonicweaver.com/templates/character-motion?mode=glyph-field) or start in [the editor](https://sonicweaver.com/editor?engine=character-motion&mode=glyph-field). --- ### The Ink Diffusion Mode: A Colony That Moves Every Fourth Beat URL: https://sonicweaver.com/blog/ink-diffusion-mode-a-colony-on-every-fourth-beat Published: 2026-08-27 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Ink Diffusion holds its arrangement for four beats and then moves the whole colony at once. Here is why that interval exists, and which of its shipped defaults does nothing at all. **Ink Diffusion** is the softest thing in the [Bloom engine](https://sonicweaver.com/help/visualizers/bloom): soft reaction-diffusion fronts spread through the canvas. It shares its draw branch with the engine's cellular mode, and the two of them differ by exactly two things, one of which is a single number. *Figure: Soft overlapping translucent discs spreading from the centre of a dark frame: The committed capture. Every disc here is drawn at a low alpha, so the colour is built from overlap rather than from any one shape.* #### Where a cell sits, and when it moves Each cell's angle and distance from the centre come from a hash of its own index, so a cell holds its place for as long as it exists. That is not how this branch always worked: it used to hash against a time-derived value, which meant the entire colony teleported to a new arrangement twice a second regardless of the music. The visible flicker that produced is the defect this design replaces. What the hash is salted with now is the **era**: the beat count divided by four and floored. Every fourth beat the era advances, every cell draws a new angle and a new distance, and the colony re-arranges itself. Re-arranging on every beat reads as noise; holding for a bar and then shifting reads as growth. The distance is the square root of a hashed value rather than the value itself, which is the standard correction for sampling a disc evenly: without it, half the colony crowds the centre. > **A shipped default that does nothing** > This mode ships a value for the **Spread** control. That control is scoped to two other modes in this engine and does not appear in this mode's panel at all, and this branch never reads it. It is a number in the catalogue with no path to the canvas, and it is the clearest example in the engine of why a default is not evidence of an effect. #### The one number that separates it from its sibling Both modes draw the same discs at the same hashed positions with the same per-cell envelopes. The ink model paints them at a base alpha of 0.12; the cellular model paints them at 0.4. That is over three times the ink, and it is the difference between a structure you can pick individual cells out of and a stain you cannot. The second difference is the budget: the cellular model gets seven cells per seed where this one gets six. Both of those are downstream of the Seeds control, which multiplies into the total, and of Cell size, which is scoped to these two modes only and scales every disc's radius around a reference value of 14. #### Why the softness is not in this file The mode ships a Blur of 4, and that is not applied by the branch that draws the discs. It is a full-frame post pass: once the frame is drawn, the engine blits the canvas onto itself through a blur filter and mixes 85% of the blurred copy with 15% of the sharp one. Doing it that way rather than per shape is the difference between about two milliseconds and about a hundred and fifty, because a per-primitive blur charges the filter once per disc. #### Containment, counted from the edge of the ink A cell's distance from the centre is soft-limited against the frame's contain radius MINUS that cell's own radius. Limiting the centre alone is not enough: a colony whose centres all sit exactly on the boundary still spills half of itself over it. The limit is a soft knee rather than a clamp, so a loud passage still reads as further out instead of flattening every cell onto the same ring. #### When to reach for it Ambient, neoclassical, downtempo, spoken word, and anything where the visual is a wash rather than a readout. It is one of the calmest of the 180 modes in the catalogue and it survives a vertical crop well, because its composition is a distribution around a centre rather than a wide horizontal arrangement. For the same engine building structure instead of dissolving it, read [The Crystal Growth Mode](https://sonicweaver.com/blog/crystal-growth-mode-structure-that-accretes). Open [Ink Diffusion in the gallery](https://sonicweaver.com/templates/bloom?mode=ink-diffusion) or go to [the editor](https://sonicweaver.com/editor?engine=bloom&mode=ink-diffusion). --- ### The Flow Field Mode: Steering Is the Whole Difference URL: https://sonicweaver.com/blog/flow-field-mode-steering-is-the-difference Published: 2026-08-26 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Flow Field and its sibling read the same field and look nothing alike. The difference is one number: how hard a strand is steered toward the direction the field is pointing. **Flow Field** is the mode in the [Trails engine](https://sonicweaver.com/help/visualizers/trails) whose whole job is to make an invisible thing visible: dense particles reveal a deterministic curl-noise field. A vector field has no appearance of its own. You see it only because a large number of strands are obeying it at once, which makes this the one mode in the engine where the population and the steering are the same design decision. *Figure: Many short glowing strands aligned into visible currents across a dark frame: The committed capture for this mode. No line here is drawing the field; every line is following it.* #### Where a strand starts Strands are not scattered by a random pair of coordinates. The frame is divided into a 4 by 3 grid of twelve cells, each strand is assigned a cell by its index, and it is then jittered inside that cell by a hash of its own index. That is stratified sampling, and the reason for it is that pure random placement clumps: run it a hundred times and you will reliably get an empty quarter and a crowded corner. A field with a hole in it cannot show you the field. Initial headings come from the whole circle rather than from one direction, then lean toward the configured direction by a bounded fraction of the way. And a strand enters WITH its wake already seeded backwards along its heading, rather than growing one vertex per frame, so the trail length you set is correct from a strand's first frame instead of only once it has survived a second. #### The one number that separates two modes Both this mode and the engine's ribbon mode ask the Flow field control which field to read, get an angle back, and steer the strand toward it. The difference is the steering rate. This mode steers at 3 and the ribbon mode at 2.4, and the per-frame turn is that rate times the frame time times a factor that Turbulence and the onset burst both widen. A higher rate means a strand converges onto the field's direction faster and holds it more tightly, so the currents read as sharp. A lower rate lets the strand keep more of its own momentum, so it reads as a ribbon drifting through the field rather than as a particle bound to it. Turning either one down far enough gives you the same picture from both. > **Turning is shortest-path** > The angle difference is wrapped into the range from minus half a turn to plus half a turn before it is applied, so a strand that needs to turn 10 degrees never takes the 350-degree route instead. Without that wrap you get an occasional strand pirouetting for no visible reason, which is the sort of artefact that looks deliberate and is not. #### Which field, and what each one looks like The Flow field dropdown is scoped to this mode and the ribbon mode only, and this one ships **noise**. That option samples a two-dimensional noise function that scrolls with time, so the currents wander and reorganise. The alternatives are structural rather than organic: a vortex returns the tangent of the angle to the centre, a radial field returns that angle itself, a gravity well points inward but goes tangential near the middle so nothing collapses to a point, and a shear field splits the frame into two opposed halves. Choosing "none" drops the steering rate from 3 to 0.4 and leaves the strand on its own course with only the turbulence wander. #### Life, and what a beat does to it Every strand carries a time to live between 2.5 and 8 seconds, staggered by a hash so the field never dies and respawns in lockstep, and its life drains every frame. Beats revive strands in rotating groups of four, topping the life back up rather than resetting it, so a quiet passage thins the field out and the next beat repopulates it. That is the engine's answer to "trails dissipate and the beat brings them back" written as mechanics rather than as a global opacity ramp. #### The numbers it ships This mode ships a Trail count of 80 against an engine default well below it, and a Trail length of 0.9, which is short. That pairing is the recipe: many strands, each carrying a brief wake. Long wakes at this population would overlap into a wash and the field would stop being legible. The number you set is a target, not a promise. It is scaled by the preview scale, by the canvas area relative to 1080p, and by a further reduction on machines reporting four or fewer cores, then capped. Export with capture quality on and the last two of those are switched off, so the exported frame is the count you asked for. #### When to reach for it Ambient, techno, drum and bass, and anything with continuous forward motion rather than discrete hits. It reads well behind text because the currents are horizontal-ish on average and the individual strands are thin. For the same engine tuned the other way, read [The Ribbon Flow Mode](https://sonicweaver.com/blog/ribbon-flow-mode-why-a-ribbon-is-not-a-thick-line), and for emission with a fall instead of a drift, [The Fountain Burst Mode: An Arc That Is Culled, Never Clamped](https://sonicweaver.com/blog/fountain-burst-mode-culled-never-clamped). Open [Flow Field in the gallery](https://sonicweaver.com/templates/trails?mode=flow-field) or start from [the editor deep link](https://sonicweaver.com/editor?engine=trails&mode=flow-field). --- ### The Fountain Burst Mode: An Arc That Is Culled, Never Clamped URL: https://sonicweaver.com/blog/fountain-burst-mode-culled-never-clamped Published: 2026-08-25 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Fountain Burst launches arcs from the bottom edge and deletes them below it. Here is the age clock, the parabola, and the two controls it ships that its own draw branch never reads. The catalogue line for **Fountain Burst** is one sentence: *Bounded beat-emitted arcs that settle under gravity.* The word doing the work in it is *bounded*, and it does not mean what it usually means in this catalogue. Everywhere else, bounded means a soft limit that compresses a value so it cannot leave the frame. Here it means the opposite: a particle that falls past the bottom edge is simply not drawn. *Figure: Arcs of particles rising from the lower edge of a dark frame and falling away to either side: The committed capture for this mode. Nothing collects along the bottom edge, because nothing is held there.* #### The age clock, and why it is not a timer Every particle in the [Particles engine](https://sonicweaver.com/help/visualizers/particles) is seeded once with its own position, depth, phase and size. This mode reads the seeded depth as a **phase offset** rather than as depth: it adds the motion clock to it and takes the fractional part, so each particle runs a 0 to 1 arc and then starts again from the beginning. The whole population is therefore permanently spread across the arc, with no spawn queue and no birth event to schedule. The rate that clock advances is divided by the Lifetime control, so a longer lifetime does not keep a particle alive longer in any literal sense. It slows the arc down. That is worth knowing before you reach for it expecting more particles on screen: you will get the same ones, moving more slowly. #### One launch angle, one parabola The launch angle is drawn from the particle's own horizontal seed and spans a fan of about 137 degrees, always upward. Position along the arc is then the age times a fixed horizontal reach and a fixed vertical reach, with the beat pulse widening both slightly, plus one more term: the age SQUARED, scaled by the frame height and by gravity. That squared term is the fall. It is small early in the arc and dominant late in it, which is exactly what a parabola is. Gravity is scoped to this mode and three others in the engine, and this one ships it at 0.38. Only its positive part counts, so a negative value reads the same as zero rather than launching the arc back upward. #### The cull line Once the arc carries a particle below 98.5% of the frame height, the draw loop skips it entirely for the rest of that trip. It is not moved, not clamped, not faded. This is the detail the mode lives or dies on, because the alternative is what a clamp would give you: a line of particles pressed flat along the bottom edge, growing denser every second, which reads as a rendering fault rather than as a fountain. > **Two controls that do nothing here** > This mode ships a default for **Turbulence** and for **Direction Y**, and both controls do appear in its panel because they are scoped to the engine rather than away from this mode. The branch that draws the arcs reads neither of them. A shipped default is not evidence that a control is wired; it is only evidence that somebody chose a number. #### What the beat actually changes Two things. The beat pulse widens the arc's reach in both axes by a bounded fraction, so the fountain throws further on a hit without changing where it launches from. And the onset burst feeds the engine's population swing: the Spawn rate control divides into that swing, so a higher value makes an onset pull more of the pool into the drawn count. The swing is capped at 1.3x the target and floored at 0.55x on purpose, because a field whose population jumps by more than half on every onset reads as flicker rather than as emission. #### Sizing it The number you set is a target, not a promise. It is scaled by the preview scale, by the canvas area relative to 1080p, and by a further reduction on machines reporting four or fewer cores, then capped. Export with capture quality on and the last two of those are switched off, so the exported frame is the count you asked for. The engine publishes 520 elements by default and 220 on mobile, with a hard ceiling of 4000. #### When to reach for it Drops, builds, percussion-led electronic music, and anything where you want the picture to throw something on the hit and then let it fall. It composes from the bottom edge, so it sits under lower-third text and titles without competing with them. If you want emission without gravity, the same engine's drifting modes answer that brief instead; [The Flow Field Mode: Steering Is the Whole Difference](https://sonicweaver.com/blog/flow-field-mode-steering-is-the-difference) covers the closest thing to it in [Trails](https://sonicweaver.com/help/visualizers/trails). Open it at [Fountain Burst in the template gallery](https://sonicweaver.com/templates/particles?mode=fountain-burst) to watch the arcs run, or go straight to [the editor](https://sonicweaver.com/editor?engine=particles&mode=fountain-burst) with a track of your own. --- ### The Follow Spot Mode: A Target That Only Moves on the Beat URL: https://sonicweaver.com/blog/follow-spot-mode-a-target-that-only-moves-on-the-beat Published: 2026-08-24 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Follow Spot is one fixture tracking a point that relocates every second beat and holds still in between. It is also the only mode in Stage Lights that is faded rather than cued. **Follow Spot** is the quietest mode in the [Stage Lights engine](https://sonicweaver.com/help/visualizers/stage): a single fixture tracking a target that only moves on the beat. One lamp, one pool of light, and a target that refuses to wander. *Figure: A single wide beam thrown from above onto an elliptical pool of light on a dark stage: A cone, a pool and haze. The pool is an ellipse because a circle on a floor is seen at an angle.* #### Quantised movement, not smooth movement The target position is drawn from a deterministic value that only changes every second beat. Between changes it is exactly constant, so the spot holds perfectly still and then relocates, which is what makes the movement land with the music instead of drifting around the frame. Both coordinates are bounded well inside the frame box, so the pool never reaches an edge whatever the track does. The beam is redrawn each frame from the rig position at the top of the frame to wherever the target currently is, so its angle and its length both change when the target does. > **This is the mode that proves the beat detector** > Because nothing else in the frame moves, a mistimed relocation is obvious here in a way it never is on a busy rig. If the spot feels like it is landing between hits, that is the analysis rather than the mode, and Beat response is the control to look at first. #### Faded, not cued The rest of this engine works like a lighting desk. Fixtures are struck by the beat latch, each carries its own decay envelope, and the beat count advances which group fires next, which is what produces a chase: light travelling across the truss rather than every lamp blinking in unison. This mode does none of that. Its intensity is a single continuous expression combining a floor, the beat pulse and the audio energy. There is one fixture, so there is no group to advance and nothing to chase, and the catalogue is consistent about it: **Fixtures**, **Fixture decay** and **Chase groups** are all scoped away from this mode. They are not sliders that do nothing here; they are not offered. What is in scope is **Beam spread**, which this mode multiplies heavily so the cone is wide enough to read as a follow spot rather than a laser. The mode ships it at 0.06. #### Haze is the whole look Haze is what makes a beam visible at all. Without atmosphere in the air there is no beam, only a lit patch on a floor. The engine draws a broad radial wash and then composites every beam additively on top of it, so overlapping light builds up the way real light does rather than painting over itself. This mode ships the highest haze value in the engine at 0.45, which is the right default for a single-fixture scene: with only one beam there is nothing else to build the atmosphere. Almost every complaint that this engine looks cheap is a rig with no air in it. #### Photosensitivity is a constraint here, not a disclaimer An engine whose whole subject is flashing lights had to settle this before it drew anything. There is no full-frame flash in any mode in this engine, this one included. Beams, pools and bars are bounded shapes over a dark stage, and the brightest term any of them reaches is an opacity on a shape, never a fill of the entire canvas. The trigger rate is capped as well. The beat latch has a lockout window that caps firing at five times a second however the track is analysed, so no tempo and no double-time hi-hat pattern can turn the rig into a strobe. Bounded and rate-limited is still not the same as safe for everyone: if you are publishing to an audience, say so in your description. #### When to reach for it A single vocal, an acoustic take, a ballad, a spoken-word piece, or any track where the arrangement is sparse enough that a busy rig would be lying about it. The moving pool gives the frame somewhere to look without competing with a lyric. The engine is rated **easy** for setup, and it looks right almost immediately. Open [Follow Spot](https://sonicweaver.com/templates/stage?mode=follow-spot) or [the editor](https://sonicweaver.com/editor?engine=stage&mode=follow-spot). [The Stage Lights Engine](https://sonicweaver.com/blog/stage-lights-engine-a-lighting-rig-not-a-readout) covers the five cued modes and the chase machinery this one switches off, and [Keyboard and Accessibility on Novus](https://sonicweaver.com/blog/keyboard-and-accessibility-on-novus) covers what the reduced-motion setting does and does not change about an export. --- ### The Canyon Scroll Mode: Containment on a Vertical Offset URL: https://sonicweaver.com/blog/canyon-scroll-mode-containment-on-a-vertical-offset Published: 2026-08-23 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Canyon Scroll mirrors the Terrain heightfield above and below a travelling corridor whose walls already sit on the frame edge at the horizon. That is why its containment rule is not a radius. **Canyon Scroll** is the mode in the [Terrain engine](https://sonicweaver.com/help/visualizers/terrain) where the field mirrors above and below a travelling corridor. It is the closest that engine gets to a tunnel, and it is the mode that forced the containment rule there to be rewritten. *Figure: Two mirrored ridge walls receding toward a vanishing point with a clear corridor between them: The same heightfield twice, above and below the centre line. The corridor widens with distance.* #### What the engine is doing underneath Every other engine in the catalogue draws this frame. Terrain draws the last few seconds. Each frame pushes one sampled spectrum row into a history buffer, and the buffer is then drawn from back to front, the oldest row at the horizon and the newest at your feet, with rows bunching toward the horizon so parallel lines converge. A heightfield built purely from band levels drifts with the mix and reads as weather rather than rhythm, so each new row is also lifted by the beat envelope at the moment that row is created. That lift travels backwards through the field with the row, which is the engine's signature: a kick becomes a ridge you can still see receding several seconds later. #### The corridor is widest where there is least room This mode mirrors the field about the centre line and separates the two copies by a gap that grows with distance. The furthest row therefore sits a full half-height from the centre, which is to say exactly on the frame edge. That is the composition working as intended, and it is also a problem: any audio-driven height added to a wall that is already at the edge pushes it straight off the canvas. Measured on peaks, this produced border ink several times over the engine's budget while the scene looked entirely correct at rest. The fix is the containment rule applied to a vertical offset rather than to a radius: the wall's distance from the centre line is soft-limited against the half-height it is measured from, before it is placed. > **Why a radius would have been wrong** > Most engines measure containment as a distance from the centre of the frame. A row's height here is an offset from that row's own baseline, and passing a vertical offset through a radial limit is exactly how geometry ends up leaving the frame at the top while still measuring as contained. #### The controls that change the land - **Relief** is the vertical exaggeration: how tall a given amount of energy makes the walls. It is the first control to reach for when the canyon looks flat or looks like spikes. This mode ships 0.5. - **Perspective** controls how hard rows bunch and narrow toward the horizon, and therefore how deep the corridor reads. This mode ships 0.7, higher than the engine default, because a canyon wants a long throw. - **Roughness** blends a linear response against a squared one. Low is smooth dunes; high is jagged, because squaring the band exaggerates the loud columns and suppresses the quiet ones. - **History** is how many rows the field holds, which is literally how many seconds of the past are on screen. This mode ships 64. - **Horizon** sets where the far edge sits in the frame, which is really a composition control: push it up for more room at the top, down to fill the frame with land. **Speed** means something unusual on this engine. Terrain has no clock of its own; its only motion is history advancing. Speed therefore sets how many rows are pushed per frame, normalised so the shipped default is exactly one row per frame, and capped low deliberately: each extra push repeats the current spectrum row, so a large value writes several identical rows and the relief flattens into plateaus. #### What you are actually looking at The two walls are strokes, not fills, and both the opacity and the line width of a row rise with how near it is and with the beat lift that row was born carrying. There is no occluding fill pass here, unlike the engine's default mode, because a canyon's far walls are supposed to be visible between the near ones. The same audio shaping the [Bars engine](https://sonicweaver.com/help/visualizers/bars) uses is applied to the sampled row before it is stored, so **Sensitivity** and the attack and release settings shape the landscape the same way they shape an equalizer. The engine's published budget is 96 elements by default and 44 on mobile, which is light for how much is on screen. #### When to reach for it Cinematic, ambient, post-rock, downtempo, and long-form mixes where a viewer is watching for minutes rather than seconds. Because the field keeps showing you the last few seconds, a breakdown reads as calm land rather than an empty screen, which is one of the few scenes that survives a long intro. Open [Canyon Scroll](https://sonicweaver.com/templates/terrain?mode=canyon-scroll) or [the editor](https://sonicweaver.com/editor?engine=terrain&mode=canyon-scroll). [The Terrain Engine](https://sonicweaver.com/blog/terrain-engine-the-last-few-seconds-as-landscape) covers the engine as a whole and the other five ways it draws the same field. --- ### The Kinetic Reveal Mode: Assembling a Mark Across a Bar URL: https://sonicweaver.com/blog/kinetic-reveal-mode-assembling-a-mark-across-a-bar Published: 2026-08-22 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Kinetic Reveal lights wedges around your artwork in turn so the mark assembles over a four-beat bar rather than fading in. Here is the bar clock, and the rule that keeps geometry off the logo. **Kinetic Reveal** is the mode in the [Logo engine](https://sonicweaver.com/help/visualizers/logo) where wedges light in turn so the mark assembles across a bar. It is the one scene in the catalogue whose timing is measured in bars rather than beats or seconds. *Figure: Arc segments of different brightness arranged in a ring around a reserved centre: Bright wedges are the part of the bar that has already passed. The dim ones are still to come.* #### The engine, first It is worth being clear about what this engine is, because three unrelated things in this product have been called the logo. One is a document overlay composited on top of the canvas, which no engine reads. One is a layer type in the node-graph editor. One is a reserved centre in another engine with nothing in it. This engine is the one where the artwork is the subject. Every mode sizes its geometry from a radius derived from your artwork and your clearance setting, so nothing can overlap the logo regardless of which control you move: change the scale or the clearance and the geometry moves out of the way rather than crossing it. > **The reserved radius is a corner, not a side** > Your artwork is fitted into a centred square whose side is a fraction of the frame. The corners of that square reach further from the centre than its sides do, by a factor of the square root of a half, and that corner distance is the radius geometry actually has to clear. Clearing the side would leave the corners of a wide mark poking into the ring. #### A bar clock, not a beat clock The reveal is driven by the position within a four-beat bar, which runs continuously from zero to one across the bar and then restarts. Each wedge has a fixed position around the ring, and a wedge is fully lit once the bar has passed its position; the ones still ahead of the playhead are drawn dim rather than hidden. That is a deliberately musical choice. A reveal on a timer drifts against the track. A reveal on every beat is a blink. A reveal across a bar lands its completion on the downbeat, every bar, which is where a viewer expects an arrival. It also means the mode restarts itself rather than resolving, which is what you want for a loop. The wedge count is derived from **Rings**, multiplied and bounded, so that control is really the resolution of the reveal. This mode ships 5, which gives you a satisfying number of steps across a bar without the ring turning into a solid circle. #### Each wedge still reads the music A wedge is not simply on or off. Its radius, opacity and stroke width all rise with its own slice of the spectrum, and the lit factor multiplies the result. So the ring is simultaneously a reveal and a readout: the shape tells you where you are in the bar, and the thickness tells you what the track is doing. The radius passes through the containment limiter against the frame box, so a loud passage thickens and extends the ring toward the frame margin without crossing it. Between that limit and the reserved centre, the geometry lives in a band that both ends of the composition are protecting. #### Working without artwork, and then with it With no image set, the mode still renders. A dashed circle and the word LOGO occupy the reserved area, which does two useful things: it shows that the middle is reserved and how big the reserved area is, and it lets you set the sizing controls before uploading anything, which is the natural order to work in. Once an image is set it is drawn last, after every wedge, so nothing can ever paint over it. It is scaled to be inscribed in the reserved circle with its aspect preserved, and given a small breath on the beat. **Logo size** and **Clearance** together decide how much room the ring has; this mode ships a logo size of 0.22. #### When to reach for it Label idents, tour visuals, release announcements, channel intros, and any loop where the artwork is the message. The engine is rated **medium** for setup, and the reason is simply that it wants a file from you. Open [Kinetic Reveal](https://sonicweaver.com/templates/logo?mode=kinetic-reveal) or [the editor](https://sonicweaver.com/editor?engine=logo&mode=kinetic-reveal). [Make a Logo Visualizer](https://sonicweaver.com/blog/make-a-logo-visualizer) is the practical walkthrough for preparing artwork, and [Cover Art and Spotify Canvas](https://sonicweaver.com/blog/cover-art-and-spotify-canvas-branding) covers the formats this ends up in. --- ### The Oscilloscope/Lissajous Mode: A Real Second Channel URL: https://sonicweaver.com/blog/oscilloscope-lissajous-mode-a-real-second-channel Published: 2026-08-21 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Oscilloscope/Lissajous needs two channels to draw a figure, and a delayed copy of the first one will not do. Here is the filter that produces a genuine quadrature partner, and why the figure used to collapse to a line. **Oscilloscope/Lissajous** is the mode in the [Waveform engine](https://sonicweaver.com/help/visualizers/waveform) where stereo channels map to an XY oscilloscope path. It is also the only mode in that engine whose horizontal position is audio-driven: everywhere else, the x axis is just the sample index. *Figure: A looping closed curve traced on an XY plane, like an oscilloscope figure: A figure needs two signals that are not the same signal. Getting the second one right is the whole mode.* #### A delay is not a phase shift The straightforward way to fake a second channel is to read the same buffer at an offset, and this mode used to do exactly that: the same samples, moved along by a quarter of the buffer length. It produced a diagonal line and nothing else. The reason is that a time delay rotates each frequency by a different angle. A delay of a fixed number of samples is a large fraction of a cycle for a high frequency and a tiny one for a low frequency, and the low-frequency content is what dominates a waveform buffer. So the two channels stayed almost perfectly correlated, and two perfectly correlated signals plotted against each other draw a straight line at forty-five degrees. #### What a Hilbert transform does instead A Hilbert transform shifts every frequency by the same ninety degrees. That is the property the mode needs: it produces the quadrature partner of the signal, which is what a real second oscilloscope channel would give you. A sine then traces a circle, and real programme material traces the looping figures the mode is named for. The implementation is a short windowed finite-impulse-response filter. The ideal kernel is zero at every even tap and falls off as the reciprocal of the odd ones, so only four coefficients are needed for the taps that matter, taken through a Hamming window over a fifteen-sample span. They are convolved antisymmetrically against the buffer, wrapping at both ends, into a scratch array that is allocated once and reused. > **This is mono material, honestly labelled** > The partner channel is synthesised from the same signal rather than taken from a second input. That is the right answer here: the analysis path is mono, and inventing a stereo field that the file does not contain would be a nicer picture and a false one. What the figure shows is the phase structure of the signal, which is real. #### Phase became a rotation **Phase** is scoped to this mode alone, and it now does what a real oscilloscope's phase control does: it rotates the figure. The two channels are combined through a rotation, so the shape turns rigidly rather than distorting. This mode ships it at 1.5708 radians, a quarter turn. Before that, the control folded the in-phase channel into the vertical axis at a small fixed weight, which made the two axes more correlated the further you pushed it. It flattened the figure it was supposed to be tuning, which is a particularly unhelpful kind of broken control. #### Making the trace readable Two controls exist because a raw trace is unreadable, and they solve different problems. **Smoothing** averages across neighbouring samples, which removes spatial noise from the shape. **Wave window** carries a share of the previous frame's buffer into this one, which is the temporal fix: without it every frame draws a fresh, uncorrelated window and the figure teleports rather than moving. That distinction is worth internalising. If the figure looks jagged, reach for Smoothing. If it looks like it is being redrawn from scratch sixty times a second, reach for Wave window. Spatial smoothing cannot fix a temporal problem however far you push it. **Gain** scales both axes, and both are soft-limited independently against the frame box, so a loud passage compresses the figure toward the edges rather than pushing it off them. **Speed** scrolls the sample window through the buffer, which makes the figure drift through its own shape. #### When to reach for it Electronic music with strong synthesis content, drone, modular and generative work, and anything with a laboratory or analogue-hardware identity. It is a centred, symmetric composition that reads well at any crop. For the vocabulary behind it, the glossary entries on the [oscilloscope](https://sonicweaver.com/glossary#oscilloscope) and on [waveform versus spectrum](https://sonicweaver.com/glossary#waveform-vs-spectrum) are the shortest route. Open [Oscilloscope/Lissajous](https://sonicweaver.com/templates/waveform?mode=oscilloscope-lissajous) or [the editor](https://sonicweaver.com/editor?engine=waveform&mode=oscilloscope-lissajous). The same trace bent into a ring around your artwork is [Logo](https://sonicweaver.com/templates/logo) territory. --- ### The Waveform Tube Mode: The Corridor That Reads Live URL: https://sonicweaver.com/blog/waveform-tube-mode-the-corridor-that-reads-live Published: 2026-08-20 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Every ring in the Tunnel engine freezes a snapshot of the spectrum at birth and carries it forward. Waveform Tube is the exception: its surface is the time-domain trace, right now. **Waveform Tube** is described in the catalogue as time-domain samples travel along the tunnel cross-section. Understanding it means understanding what the other five modes in the [Tunnel engine](https://sonicweaver.com/help/visualizers/tunnel) do differently, because this one deliberately opts out of it. *Figure: Nested irregular rings receding to a vanishing point, each rippled around its circumference: The ripple around each ring is the current trace. Every ring here is wearing the same instant.* #### What the other modes do: a snapshot per ring The reason a tunnel used to read as a few rings pulsing in unison was never the perspective maths. It was that every ring re-sampled the same live spectrum on every frame. The geometry moved through depth while the content did not, so there was nothing to see travelling, and depth was invisible however the projection was tuned. The fix was to give a ring an identity. Each slot's position in the corridor is its index plus the travel value, and when that crosses an integer the slot has wrapped to the far end and is, in every sense that matters, a new ring. At that moment it freezes a fixed-resolution snapshot of the spectrum and renders that snapshot for the rest of its trip. The corridor becomes a scrolling record of the last few seconds. #### What this mode does instead It reads the live time-domain buffer. Its per-ring loudness is taken from the waveform at a position derived from the ring's index, and the bump applied around each ring's circumference is sampled from the current waveform as well. The snapshot machinery still runs underneath, and this mode simply does not use it. The visible consequence is worth choosing between. A spectrum-carrying corridor shows you history: near rings are now, far rings are a second or two ago, and a drop arrives as a change that walks toward you. This one shows you the present everywhere at once, so the whole corridor ripples together with the waveform, which is a much more immediate and much less structural look. > **Pick by what you want the viewer to read** > If the point is that the viewer can see the track's structure, take the spectrum-carrying mode in the same engine. If the point is that the tunnel is breathing with the sound right now, this is the one. #### Level of detail, and why the far rings look plain A ring near the vanishing point is a few pixels across, and stroking a sixty-four vertex path to fill it is wasted work. The cross section is therefore drawn at a reduced vertex count once a ring is past a depth threshold, and rings that are fog-faded below a visibility floor or smaller than a couple of pixels are skipped entirely. That is why the ripple appears to develop as a ring approaches: it is not growing, it is gaining vertices. On a static still it can read as a defect. In motion it is invisible, which is the point of a level-of-detail scheme. #### Depth sets the rush, not the size The corridor's scale constant is solved from a target near-plane size rather than hard-coded, so the nearest ring always fills slightly more than the frame whatever **Depth** is set to. Before that the two were tangled: the near-plane size fell out of whatever depth happened to be, and at the default the closest ring sat at around a third of the canvas width, so the corridor read as a small motif in the middle of the screen rather than something being flown through. Now Depth controls how fast rings rush past. **Field of view** widens or narrows the whole corridor, **Fog** sets how quickly distance fades, **Twist** rotates rings progressively with depth, and **Surface deformation** scales the ripple. This mode ships surface deformation at 0.48 and a speed of 0.24. #### When to reach for it Bass music, dub, drone, anything with a strong low-frequency waveform, and live-set uploads where the immediacy matters more than the structure. It also works as a long-form background because the corridor never resolves into a repeating shape. Open [Waveform Tube](https://sonicweaver.com/templates/tunnel?mode=waveform-tube) or [the editor](https://sonicweaver.com/editor?engine=tunnel&mode=waveform-tube). For the mode in the same engine built on streaks instead of rings, read [The Warp Field Mode: A Streak Carries the Beat It Was Born On](https://sonicweaver.com/blog/warp-field-mode-a-streak-carries-its-beat); for the trace itself, [The Oscilloscope/Lissajous Mode: A Real Second Channel](https://sonicweaver.com/blog/oscilloscope-lissajous-mode-a-real-second-channel). --- ### The Warp Field Mode: A Streak Carries the Beat It Was Born On URL: https://sonicweaver.com/blog/warp-field-mode-a-streak-carries-its-beat Published: 2026-08-19 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Warp Field draws streaks rather than rings, because a ring is the same shape however fast it travels. Each streak also remembers whether it was born on a beat, and keeps that mark all the way in. **Warp Field** is the odd one out in the [Tunnel engine](https://sonicweaver.com/help/visualizers/tunnel): a point field accelerates visually while velocity stays bounded. Five of the six modes there draw rings receding down a corridor. This one draws no rings at all. *Figure: Radial streaks of varying length and brightness racing outward from a vanishing point: A streak's length is how far its point moved this frame. That is what reads as speed.* #### A ring cannot convey velocity This is the observation the mode is built on. A ring travelling toward you at any speed is the same shape on every frame; only its size changes between frames, and the eye reads that as scale, not as velocity. Motion blur is what communicates speed, and the cheapest honest version of motion blur is to draw the path a point took during the frame. So each element here is a line from where its point was at the start of the frame to where it is now, both projected through the same perspective. When the field is slow the streaks are short and it reads as a starfield; when it is fast they stretch and it reads as a jump to light speed. Nothing else in the mode changes. #### A streak remembers the beat it was born on This branch originally read only the continuous beat envelope, which eases up and down. Nothing in it responded to the discrete latch, so the mode drifted while every other mode in the engine hit. It now uses the same scheme the ring modes use. Each streak's trip through the corridor is numbered, and when that number changes the streak has recycled to the far end. If it recycled on a frame where a beat latched, it is marked, and it keeps the mark for its whole trip. The field therefore carries a visible cohort of bright streaks per beat, spaced by tempo, instead of one global flash that is gone on the next frame. > **The first frame is excluded on purpose** > On the very first frame every streak is unborn and would otherwise latch together. If that frame happened to land on a beat, the entire field would be marked at once and stay marked for a full trip. A streak that has never travelled is not eligible to be an accent. A marked streak gets three things: a distinct palette colour, extra brightness, and extra length, because the per-frame step is lengthened by the onset burst on marked streaks only. That last one is what reads as the field lurching forward on the hit rather than merely flashing. #### Why travel has to be monotonic Birth is detected by an integer crossing, which means the travel value must only ever increase. Add a bass term to it, as an earlier version did, and the value wobbles across boundaries whenever the low end jitters, re-triggering births several times a second and preventing anything from being carried at all. The beat rush is not lost by removing it. The engine's motion clock already integrates speed multiplied by the beat pulse, so it accelerates on beats while remaining strictly increasing. That one property is what lets every mode in this engine carry state down the corridor. #### Controls, and the ones that stop at the door - **Speed** is the primary control, and this mode ships it at 0.38, the highest in the engine. It sets both how fast points travel and, through that, how long the streaks are. - **Depth** stretches the corridor, which changes how quickly a point crosses from far to near. - **Fog** fades far streaks toward the background. At zero the field is uniformly bright and the depth cue weakens considerably. - **Camera path** drifts the vanishing point around the frame on a slow cycle, which is the difference between flying and being flown. - **Colour mode** applies to unmarked streaks; marked ones take a fixed palette slot so the accent stays legible whatever the palette is doing. **Cross section**, **Segments**, **Twist**, **Field of view**, **Surface deformation** and **Rotation** all belong to the ring path and are scoped away from this mode in the catalogue. The mode returns before any of them is read. #### When to reach for it Hard dance, trance, drum and bass, trailers, and any drop that wants the frame to move. It is the most GPU-weighted engine in the catalogue, with a published budget of 48 elements by default and 28 on mobile, so check the preview on a phone before committing to a long export. Open [Warp Field](https://sonicweaver.com/templates/tunnel?mode=warp-field) or [the editor](https://sonicweaver.com/editor?engine=tunnel&mode=warp-field). For the mode in the same engine whose surface is the current audio rather than a stored snapshot, read [The Waveform Tube Mode: The Corridor That Reads Live](https://sonicweaver.com/blog/waveform-tube-mode-the-corridor-that-reads-live). --- ### The Radial Bars Mode: The Only Contained Layout in Bars URL: https://sonicweaver.com/blog/radial-bars-mode-the-only-contained-layout-in-bars Published: 2026-08-18 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Radial Bars takes an early exit from the Bars draw path, which is why half the engine's controls do not apply and why it is the one layout the frame margin governs. **Radial Bars** is the [Bars engine](https://sonicweaver.com/help/visualizers/bars) mode where equalizer bars distribute around a central safe zone. Structurally it is a different drawing altogether, and the catalogue is unusually explicit about that. *Figure: Short strokes arranged in a full circle around an empty centre, their lengths varying with frequency: Strokes on a ring, not rectangles on a line. Everything downstream of that choice changes with it.* #### Two ways into the same branch The radial layout is selected either by choosing this mode or by setting the **Baseline** control to its path option on another mode. Whichever route you take, the draw code takes the radial branch and returns before any of the linear code runs. That early return is the reason a long list of controls is scoped away from this mode in the catalogue: baseline, mirroring, floor reflection, bar height, cap shape and peak hold all belong to code this mode never reaches. They are hidden rather than offered as sliders that move and change nothing, which is a distinction the user cannot otherwise make. > **What you lose and what you gain** > No peak markers and no cap shapes here. In exchange you get a composition with a reserved middle, which is the single most useful property in this engine if there is a logo, a title or a piece of cover art to place. #### The only contained layout in the engine Bottom-anchored bars are meant to sit flush on the frame edge, so the frame margin deliberately does not lift them off it. Containment would be wrong there: it would leave a visible gap under an equalizer that is supposed to stand on the floor. A radial layout has no such excuse. Its strokes point outward in every direction, so an unbounded length leaves the frame on all four sides at once. This branch therefore limits each stroke's tip against the largest radius that stays inside the frame box, using the same soft knee as everywhere else, which makes it the one layout in this engine the **Frame margin** control genuinely governs. #### The inner radius is fixed, and worth knowing The ring the strokes start from is computed from a safe-zone value that this engine does not expose as a control. There is no Logo safe zone slider on Bars, so that value is always its fallback, and the inner radius is effectively a constant fraction of the shorter side of the frame with a small beat breath on top. Practically: you can rely on the middle being clear, and you cannot resize it from here. If you need a reserved centre you can set, the [Radial engine](https://sonicweaver.com/help/visualizers/radial) exposes it directly and the [Logo engine](https://sonicweaver.com/help/visualizers/logo) sizes it from your artwork. This mode ships 96 bars, which is high enough that the ring reads as continuous. #### Bar width and gap, and why they used to do nothing In the linear layout a bar is a filled rectangle, so **Bar width** and **Bar gap** set its geometry directly. In the radial layout a bar is a stroke, so the same two controls have to become a line width instead. The first version derived that line width from the bar width in absolute terms, and at this mode's shipped bar count the result never escaped the minimum floor. Both controls moved and no pixels changed. The line width is now scaled around the authored default, which keeps the shipped look identical while making the declared range effective, and it is bounded at both ends so a stroke cannot become a wedge. #### When to reach for it Cover loops, profile-picture animations, square and vertical formats, and any case where you want an equalizer that is legible as an equalizer while leaving the centre of the composition free. Out of 180 modes it is one of the small group that survives being cropped to a circle. Open [Radial Bars](https://sonicweaver.com/templates/bars?mode=radial-bars) or [the editor](https://sonicweaver.com/editor?engine=bars&mode=radial-bars). For the same readout in a straight line, read [The Center Mirror Mode: Half the Headroom, Both Ways](https://sonicweaver.com/blog/center-mirror-mode-half-the-headroom-both-ways), and for the artwork itself, [The Kinetic Reveal Mode: Assembling a Mark Across a Bar](https://sonicweaver.com/blog/kinetic-reveal-mode-assembling-a-mark-across-a-bar). --- ### The Center Mirror Mode: Half the Headroom, Both Ways URL: https://sonicweaver.com/blog/center-mirror-mode-half-the-headroom-both-ways Published: 2026-08-17 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Center Mirror grows bars in two directions from the middle of the frame, which halves the room each one has. Here is the budget that fixed it, and the gloss that brightens bars without lying about their height. **Center Mirror** is the [Bars engine](https://sonicweaver.com/help/visualizers/bars) mode where bars expand symmetrically above and below center. It is the mode that caught a containment bug the rest of the engine could not, for a reason that is obvious once stated. *Figure: A row of bars growing up and down from a horizontal centre line: Two directions, one budget. A bar here has half the room a bottom-anchored bar has.* #### Half the room, twice over A bottom-anchored equalizer has the whole frame height to grow into, and the engine deliberately lets those bars sit flush on the frame edge because that is what the reference look is. This mode starts from the middle and grows both ways, so the available room is the smaller of the distance up to the top of the frame box and the distance down to the bottom of it. That distinction had to become explicit in the code. Bar height combines the **Bar height** control, a multiplier from the beat pulse, and a value that already carries onset headroom. On this mode those three put the tips a quarter of the frame height above the top edge, while the bar looked correctly sized at rest, which is the classic shape of a containment defect: right until the music is loud. > **It is not a clamp** > The height passes through the same soft-knee limiter the rest of the catalogue uses. Below about sixty per cent of the budget it is the identity, so ordinary levels are untouched; above that it compresses smoothly and approaches the limit without reaching it. Louder always reads as taller, at every level. #### The mirror is a rectangle, and that is visible The upper half of each bar is drawn with the cap shape you selected, which for the default rounds the two top corners while keeping the base flush on the baseline. The mirrored half below is a plain rectangle at reduced opacity, and its opacity rises with the beat. So **Cap shape** reads on the top half only. That is not an oversight to work around; it is what makes the two halves distinguishable, and it is why the mode still reads as a reflection rather than as a single tall bar centred on the line. Peak-hold markers, by contrast, are drawn on both sides. #### The sweep that does not lie Bars had no time-based motion at all, which meant the engine offered a **Speed** control that did nothing in any of its modes. The fix had to be something an equalizer can carry without misrepresenting the audio, and there is exactly one such thing: a highlight that travels across the field, lighting bars in turn without changing any bar's height. So a gloss sweeps across the field on the motion clock, composited additively over each bar that has already been drawn at its true height. The distance to the sweep is measured wrapped, so the highlight is continuous across the seam instead of restarting at the left edge. Turn Speed to zero and the sweep stops; nothing else about the readout changes. #### Audio shaping, and one quiet fix Bar values are not raw spectrum. They pass through the engine's shaping stage, which applies **Sensitivity** and the attack and release ballistics, so a bar rises and falls on a real envelope rather than snapping to whatever the analyser reported this frame. **Peak hold** then tracks each bar's recent maximum, and the marker fades across its hold so the duration is visible from the first frame. This mode ships a hold of 420 milliseconds and a bar height of 0.42. One detail that is invisible until it is wrong: the engine preserves the incoming canvas opacity through every highlight, mirror and marker it draws. Resetting it to fully opaque made the **Opacity** control byte-identical in every mode of this engine, which is a control that appears to work and does not. #### When to reach for it Anything that wants an equalizer but not a floor. It is the natural choice for a vertical or square crop, because a centred composition wastes less of the frame than a bottom-anchored one, and for an overlay over footage, where a bar sitting on the bottom edge would look like a bug. Open [Center Mirror](https://sonicweaver.com/templates/bars?mode=center-mirror) or [the editor](https://sonicweaver.com/editor?engine=bars&mode=center-mirror). For the same engine wrapped around a circle instead, read [The Radial Bars Mode: The Only Contained Layout in Bars](https://sonicweaver.com/blog/radial-bars-mode-the-only-contained-layout-in-bars). --- ### The Mirrored Area Mode: A Reflection Has to Be Rebuilt URL: https://sonicweaver.com/blog/mirrored-area-mode-a-reflection-has-to-be-rebuilt Published: 2026-08-16 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Mirrored Area reflects a solid spectrum shape across its baseline. Doing that on a canvas is not a transform and a second stroke, and the mode is named after the bug that taught us so. **Mirrored Area** is the [Spectrum engine](https://sonicweaver.com/help/visualizers/spectrum) mode where filled frequency areas mirror across the baseline. It is a simple idea with a specific trap underneath it, and the trap is worth knowing about whether or not you ever open this mode. *Figure: A filled frequency curve above a baseline with a fainter inverted copy below it: The lower half is a rebuilt path, not a transformed one. That distinction is the whole article.* #### A canvas path remembers where it was built When you add a point to a path, the canvas converts it into device space at that moment and stores the result. Changing the transform afterwards and calling stroke again therefore redraws the path in exactly the same place. Only the line width and the dash pattern see the new matrix. Three modes in this catalogue shipped a reflection written the other way: translate, flip the vertical scale, stroke again. All three drew a second copy directly on top of the first, so the only visible effect was a slight change in opacity. The mode named after mirroring was not mirroring. > **Re-emitting is the only fix** > There is no transform that moves an already-built path. The points have to be walked again with the new vertical mapping applied. The engine keeps the row's vertices in a flat reusable buffer so that second pass costs a walk rather than an allocation per vertex. #### What this mode draws One row of live spectrum, not history. The curve is stroked, and because this is one of the two filled modes in the engine it is also closed back along the baseline and filled. The close uses the actual horizontal span of the data rather than the frame width, which avoids a stray vertical line down the right edge when the two do not coincide. Then the reflection: the same vertices, rebuilt with each vertical position mirrored about the baseline, stroked and filled at a reduced opacity that rises slightly with the beat. Because it is mirrored about the trace's own baseline rather than the bottom of the frame, moving the anchor moves both halves together instead of throwing the copy off screen. #### The anchor is doing more work than usual A reflection needs room on both sides, which is why this mode ships **Vertical anchor** set to center while most of the engine sits at the bottom of the frame. Move it back to the bottom and the reflected half has nowhere to go. That is the one setting that changes this mode from a composition into a clipped one. There is also a **Mirror reflection** switch on the engine. It turns the same reflection on for the other modes, and on this one it is redundant: the mode enables the reflection by identity as well, so the switch cannot turn it off here. If you want an unmirrored filled area, the engine's ridge mode is the one to take. #### The controls that shape it - **Bins** sets the horizontal resolution of the curve. Low values give you a chunky, poster-like shape; high values give you a fine trace where individual partials are visible. - **Smoothing** damps movement between neighbouring bins, which is the difference between a curve and a comb. - **Thickness** is the outline weight, and it is multiplied by the beat pulse, so the edge of the shape thickens on hits while the fill stays constant. - **Colour mode** switches between the duo palette and a horizontal gradient across the frame, and on this mode the gradient reads particularly well because the shape is continuous. - **Peak hold** still applies: the markers sit above the upper half only. #### When to reach for it Single and album loops, audiograms, and anything that wants a graphic, poster-like readout rather than a technical one. It is a horizontally symmetric composition, which makes it one of the safer scenes to place a centred title over, and it crops to a square better than most spectrum layouts. Open [Mirrored Area](https://sonicweaver.com/templates/spectrum?mode=mirrored-area) or [the editor](https://sonicweaver.com/editor?engine=spectrum&mode=mirrored-area). For the same engine reading time rather than the current frame, read [The Spectrogram Waterfall Mode: Speed Is a Stride, Not a Push Rate](https://sonicweaver.com/blog/spectrogram-waterfall-mode-speed-is-a-stride), and for the drawing model underneath all of it, [How Canvas Paints an Audio Visualizer](https://sonicweaver.com/blog/how-canvas-paints-an-audio-visualizer). --- ### The Spectrogram Waterfall Mode: Speed Is a Stride, Not a Push Rate URL: https://sonicweaver.com/blog/spectrogram-waterfall-mode-speed-is-a-stride Published: 2026-08-15 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Spectrogram Waterfall draws rows of spectral history receding into the frame. Speed does not change how fast the buffer fills; it changes how far apart in time the drawn rows are. **Spectrogram Waterfall** is one of four modes in the [Spectrum engine](https://sonicweaver.com/help/visualizers/spectrum) that read history rather than only the current frame: spectral history flows through time without frame-rate coupling. The last three words of that description are the interesting ones. *Figure: Stacked spectral traces receding upward into the frame, the nearest bright and the furthest faint: Each line is one past frame of spectrum. The nearest is now; the furthest is a second or several ago.* #### One row per frame, always The engine pushes exactly one sampled spectrum row into its history buffer every frame, regardless of any setting. That is the foundation the whole mode stands on, and it is what makes the display frame-rate independent in the way that matters: the buffer always holds the same number of frames, so a scene that looks right in preview looks the same in an export. What the mode chooses is which of those rows to draw and how many. That choice is two numbers, and getting them the right way round is the difference between a control that works and one that looks broken. #### History is a count, Speed is a stride **History** scales the number of rows actually drawn. It is divided down and then bounded by a per-mode cap, because a large number of stroked and filled rows is expensive at 1080p and, past a point, indistinguishable. This mode has the most generous cap of the four history modes. **Speed** sets the stride: how far apart in the buffer consecutive drawn rows are taken from. At the lowest setting you are looking at the last fraction of a second in fine detail; raise it and the same number of rows spans several seconds. That is why the mode ships a modest speed of 0.1 alongside a large history of 120: a deep buffer sampled finely. > **Why Speed is not the push rate** > Feeding Speed into how often a row is pushed starves the buffer at low speeds, and then History has nothing to scale: turning one control down silently disables the other. Reading Speed as a stride keeps the buffer full at every setting, so both controls stay live across their whole range. #### Depth, and the one limit that governs both Rows are drawn back to front, each one lifted a little further up the frame than the one in front of it, and each one fainter. Two things are therefore trying to move a point upward at the same time: the sample's own height, and the row's position in the depth ladder. Limiting those separately is what let the display leave the frame while each half measured as fine. They are added first and limited together against the room between the baseline and the top of the frame box, so the ladder and the swing can never sum past the edge. Soft-limited, not rescaled: dividing by the worst case would shrink ordinary levels to make room for peaks that mostly never come, so the spectrum would read as permanently quiet. #### Where the baseline sits **Vertical anchor** has three settings and it matters more here than on a single-row mode, because it decides how much room the ladder has. Bottom puts the baseline near the foot of the frame and gives the display the whole height to grow into. Centre halves that but leaves room below. The third setting keeps the older, higher baseline for compositions built around it. **Bins** is the horizontal resolution, **Smoothing** damps the movement between neighbouring bins, and **Spectrum range** trims the dead top of the frequency axis. That last one is worth a moment: at a 48 kHz sample rate the top of the bin array is near-silent air on most material, so at a range of one the right-hand edge of the display barely moves. The catalogue default trims it, which is why the display uses its full width. #### Peak hold, and why it fades Small markers sit above the front row at each bin's recent maximum and fade across their hold rather than vanishing when it expires. That was a deliberate change: a marker that holds at constant brightness and then disappears makes a short hold and a long one render identically until the moment they end. Fading makes the duration legible from the first frame. #### When to reach for it Electronic and experimental music, sound design, anything technical or analytical, and any video where the point is that the viewer can see the structure of the track. It is the most literal readout in a catalogue of 29 engines, and the engine is rated **easy** for setup because the defaults already are the look. Open [Spectrogram Waterfall](https://sonicweaver.com/templates/spectrum?mode=spectrogram-waterfall) or [the editor](https://sonicweaver.com/editor?engine=spectrum&mode=spectrogram-waterfall). For the mode in the same engine built around a reflection rather than history, read [The Mirrored Area Mode: A Reflection Has to Be Rebuilt](https://sonicweaver.com/blog/mirrored-area-mode-a-reflection-has-to-be-rebuilt), and for the underlying analysis, [How FFT Turns Audio Into Visualizer Bands](https://sonicweaver.com/blog/how-fft-turns-audio-into-visualizer-bands). --- ### The Pulse Orb Mode: A Gradient, a Ray Fan and a Reserved Middle URL: https://sonicweaver.com/blog/pulse-orb-mode-a-gradient-a-ray-fan-and-a-reserved-middle Published: 2026-08-14 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Pulse Orb is the Radial engine's default and its simplest scene: one radial gradient, one fan of rays over it, and a centre that geometry is not allowed to cross. **Pulse Orb** is what opens when you pick the [Radial engine](https://sonicweaver.com/help/visualizers/radial) without choosing anything else: a bounded audio-deformed orb surrounds the center safe zone. Being the default is a design constraint, not a label, and it shows in how little the mode does. *Figure: A soft glowing disc at the centre of the frame ringed by a dense fan of short rays: Two drawing passes: the gradient, then the rays over it. The thin ring between them is the safe-zone marker.* #### Three passes and nothing else The orb is a radial gradient whose outer radius sits halfway between the inner and outer radius controls, scaled by the shared audio envelope and the beat pulse. Its stops run from a translucent centre through a mid tone to fully transparent at the edge, so the orb has no boundary to look at. That is deliberate: a filled circle with a hard edge changes size visibly and reads as a balloon. Over that goes a full three hundred and sixty degree fan of rays, the same routine every other mode in the engine uses, with the ray count clamped into a range specific to this mode so the fan stays dense whatever Symmetry is set to. Then the accent ring is stroked at the inner radius. That is the entire mode. > **The simplest scene is the best diagnostic** > Because there is so little here, this is the mode to open when you want to hear what an audio control is doing. Move Sensitivity, Audio contribution or Beat response here and the change is unambiguous, then carry the setting to a busier mode. #### The middle is reserved, by two controls at once Two independent things can claim the centre of the frame: **Inner radius** and **Logo safe zone**. Geometry has to clear whichever is larger, or the safe zone only works until someone changes the other one. The engine takes the maximum of the two, and then limits even that against the frame so an extreme value cannot push the reserved circle past the edge of the composition. That reserved circle is where a logo, a title or a piece of cover art goes. Nothing in this mode will ever be drawn inside it, at any audio level, which is the promise the [safe zone](https://sonicweaver.com/glossary#safe-zone) makes. If you want the artwork handled by the engine itself rather than composited over it, the [Logo engine](https://sonicweaver.com/help/visualizers/logo) is built for that instead. #### What a ray actually responds to A ray's length combines four terms: its own band level, the beat pulse, a smaller onset contribution, and a fixed floor so the fan never disappears entirely in silence. **Radial deformation** multiplies the band term specifically, so it changes how much the fan differentiates between quiet and loud rather than how long the rays are overall. This mode ships it at 0.28. Each ray is stroked with a gradient along its own length, faint at the root and strong at the tip, and its width rises with its band and the pulse. That gradient is why the fan reads as light rather than as a diagram, and it is drawn per ray rather than cached, which is part of why the engine's published budget sits at 128 elements by default and 64 on mobile. The primary audio route is in scope for this mode, so **Primary audio source**, **Audio contribution** and **Audio dynamics** all apply. Ring count and Rotation are not: this mode draws one fan and does not turn, and the catalogue scopes both away rather than offering sliders that do nothing. The mode ships a ring count of 1 for exactly that reason. #### When to reach for it Podcast art, single covers, audiograms, anything square or vertical, and any case where the visual is a frame around something else rather than the subject. It is the least busy centred scene in the catalogue, and out of 180 modes it is the one most likely to still look right at 200 pixels wide. Open [Pulse Orb](https://sonicweaver.com/templates/radial?mode=pulse-orb) or [the editor](https://sonicweaver.com/editor?engine=radial&mode=pulse-orb). For the elaborate end of the same engine, read [The Mandala Mode: Layered Ray Fans That Count Down](https://sonicweaver.com/blog/mandala-mode-layered-ray-fans-that-count-down). --- ### The Mandala Mode: Layered Ray Fans That Count Down URL: https://sonicweaver.com/blog/mandala-mode-layered-ray-fans-that-count-down Published: 2026-08-13 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Mandala is not rings at different radii. It is several ray fans stacked in the same annulus, each with fewer rays than the last, counter-rotating and offset by Twist. **Mandala** is described in the catalogue as symmetric path repetition forms evolving mandala geometry. The construction is simpler than it looks, and it is not the one most people guess from the still. *Figure: Dense symmetric rays radiating from a reserved centre, with finer and coarser layers overlapping: Every layer occupies the same band of radius. What changes between them is the ray count and the rotation.* #### Layers, not rings The obvious reading of a mandala is concentric: a fan of rays at one radius, another fan further out, and so on. That is not what this mode does. Every layer spans the same annulus between the inner radius and the outer radius. What differs from layer to layer is the number of rays, the direction of rotation, and the starting angle. The ray count is the arithmetic that gives the mode its character. Layer one gets the full symmetry value; layer two gets half of it; layer three a third; and so on, with a floor so a layer never becomes too sparse to read. The layers therefore superimpose a coarse pattern on a fine one in the same space, which is exactly how a drawn mandala is built. > **Symmetry has a floor before the mode sees it** > The Radial engine raises any Symmetry value below thirty-two up to thirty-two before using it, and caps it well above that. So the divisions start from at least thirty-two rays even though this mode ships a much smaller Symmetry number, and the lower layers hit the per-layer floor rather than thinning indefinitely. #### Twist and rotation **Twist** is scoped to this mode alone within the engine. It offsets each layer's starting angle by a multiple of the layer index, so it shears the layers against each other rather than turning the whole figure. That is the control that turns a symmetrical star into an interference pattern, and this mode ships it at 0.4. On top of that, alternate layers counter-rotate on the motion clock, which advances with **Speed** and accelerates on beats. Two layers turning opposite ways through each other is what makes the figure read as alive when nothing else is changing. #### Every ray reads its own band A ray's length comes from the slice of the spectrum that its position in the fan maps to, on the same curved mapping the rest of the engine uses. That sounds obvious and it was not always true: indexing the bins by the ray number meant a layer with only sixteen rays read the bottom sixth of the spectrum and moved as one lump. Since this mode's inner layers are exactly the sparse ones, it was the mode that caught it. Ray length passes through the soft limiter rather than a clamp. A clamp would flatten every ray above the limit to the same length, so the loudest passage would be where the mandala stops responding. The soft knee is the identity well below the limit and compresses smoothly above it, so louder always reads as longer. #### The reserved middle Rays start at the inner radius, and the inner radius is whichever is larger of **Inner radius** and **Logo safe zone**. A thin accent ring is drawn at that boundary, which frames the reserved area and makes the safe zone visible while you are setting it. If you are planning to drop a logo in, that ring is telling you exactly how much room it has. **Ring count** is the layer count and is scoped to this mode and two others. **Radial deformation** multiplies each ray's response to its band, so it is the reactivity control rather than a shape control. The mode ships 5 layers and a symmetry of 12. #### When to reach for it Psytrance, world and devotional music, meditation content, and any release whose artwork is already symmetric. The engine is rated **easy** for setup: the defaults are close to a finished look, and Symmetry and Twist are the only two controls most people need to touch. Open [Mandala](https://sonicweaver.com/templates/radial?mode=mandala) or [the editor](https://sonicweaver.com/editor?engine=radial&mode=mandala). For the simplest mode in the same engine, read [The Pulse Orb Mode: A Gradient, a Ray Fan and a Reserved Middle](https://sonicweaver.com/blog/pulse-orb-mode-a-gradient-a-ray-fan-and-a-reserved-middle). For a logo in that reserved middle, [Make a Logo Visualizer](https://sonicweaver.com/blog/make-a-logo-visualizer) is the practical guide. --- ### The ASCII Cascade Mode: Every Glyph Swaps on Its Own Band URL: https://sonicweaver.com/blog/ascii-cascade-mode-every-glyph-swaps-on-its-own-band Published: 2026-08-12 · Updated: 2026-09-12 · Author: Novus Team · 6 min read ASCII Cascade is a spectrum read left to right, one column per band, where a glyph changes only when its own column crosses a threshold. Here is why that is a visualisation and a shared counter is not. **ASCII Cascade** is the falling-glyph mode in the [Character Motion engine](https://sonicweaver.com/help/visualizers/character-motion): layered ASCII streams cascade at a measured pace. It shares its grid with the engine's default glyph mode and differs in two specific ways, both worth understanding before you touch a control. *Figure: A grid of monospaced symbols at varying brightness falling in columns down a dark frame: Each column is a slice of the spectrum. Brightness, size and fall speed are all that column's own level.* #### The field is a spectrum, read left to right Glyphs are laid out on a grid whose column count is derived from the character count, and every glyph in a column reads the same band. That band is chosen on a curved mapping rather than a linear one, because a linear frequency axis gives every octave above about a kilohertz more than half the bins, which crams everything a listener hears as the music into the first few columns and fills the rest with hiss. Three properties come from that per-column level at once: opacity, glyph size, and how fast the column falls. Loud columns rain faster, brighter and bigger. That is the whole reactivity design, and it means the mode reads as a spectrum even though nothing in it is shaped like a bar. #### A glyph swaps on a threshold, not on a counter Each glyph keeps a smoothed copy of its column's level and its own current character index. When that smoothed level crosses a fixed threshold upward, and only then, the glyph advances to a new character by a small beat-quantised step. Between crossings it holds whatever it is showing. The version this replaced indexed the glyph set by the glyph index plus the beat count, which meant every glyph in the field swapped on the same frame. That is a clock, not a visualisation: the field changed in lockstep with the tempo and carried no information about the audio at all. Per-glyph latching is what makes the field type unevenly, the way a spectrum actually moves. > **This mode wraps rather than contains** > An endless cascade is supposed to leave one edge and re-enter the other, so the vertical position is wrapped into the frame rather than soft-limited inside the safe area. The engine's default glyph mode does the opposite: it drifts and is limited into the box. Same code path, two different honest answers to leaving the frame. #### The controls, and the ones that are not here - **Glyph set** is the character pool, scoped to this mode and the default glyph mode. Anything you type becomes the alphabet: digits, box-drawing characters, katakana, a single repeated symbol. - **Character count** is the population, and the column and row counts are both derived from it. This mode ships 220, the densest in the engine. - **Speed** drives the fall, scaled per column by that column's level. The mode ships it at 0.12, deliberately slow, because a cascade that outruns the eye stops being readable as text. - **Path deformation** applies to this mode, but only through the horizontal wobble: the vertical drift term it also feeds belongs to the other grid mode. The interesting absence is the primary audio route. **Primary audio source**, **Audio contribution** and **Audio dynamics** are scoped away from this mode in the catalogue, because nothing in this branch reads them: every glyph is bound to its own column instead. A control that moves and changes nothing is indistinguishable from a broken one, so it is not offered here. #### When to reach for it Anything with a digital or technical identity. Glitch, IDM, drum and bass, hacker and terminal aesthetics, developer and product content. It is also one of the few scenes in the catalogue that works as a full-frame background behind a centred logo, because the grid is even and the centre is no busier than the edges. Open [ASCII Cascade](https://sonicweaver.com/templates/character-motion?mode=ascii-cascade) or [the editor](https://sonicweaver.com/editor?engine=character-motion&mode=ascii-cascade). If you want your own words rather than a symbol pool, [The Word Wave Mode: Kinetic Type Needs an Overshoot](https://sonicweaver.com/blog/word-wave-mode-kinetic-type-needs-an-overshoot) is the mode next door. --- ### The Word Wave Mode: Kinetic Type Needs an Overshoot URL: https://sonicweaver.com/blog/word-wave-mode-kinetic-type-needs-an-overshoot Published: 2026-08-11 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Word Wave pops each letter on an ease that overshoots and settles, and lights them in groups so the word reads across the bar. Here is the difference between kinetic type and text that scales with the volume. **Word Wave** is the mode in the [Character Motion engine](https://sonicweaver.com/help/visualizers/character-motion) that puts your own words on screen: words deform along a beat-mapped waveform baseline. It is the one place in the catalogue where the subject of the visual is text you typed. *Figure: Monospaced capital letters arranged along a curve, some raised and rotated more than others: Letters at different heights and angles on the same frame. If they all moved together the mode would be a scaler.* #### Overshoot is the whole difference A letter that tracks the beat envelope grows and shrinks with the music. That is not kinetic typography; that is text bound to a volume meter. What makes type read as kinetic is that it goes slightly too far and comes back. So each letter owns a decay envelope, and the value read from it is passed through an ease that overshoots past one before settling. The overshoot feeds the letter's vertical bounce, its extra scale and an extra rotation, all at once. It is a handful of arithmetic and it is the entire reason the mode looks designed rather than driven. > **The word reads across the bar, not on every beat** > Letters are triggered in round-robin groups rather than all together, so successive beats light successive parts of the word. Set a short word and every letter gets its own beat; set a long one and they move in clusters. Either way you are watching the word be typed by the music rather than blink. #### Where a letter sits Letters are spread across a span derived from **Letter spacing** and the length of your **Display text**, bounded so a long string cannot run off the sides. Two waves are then added to the vertical position: a slow sine across the word driven by **Path deformation**, and a faster one locked to the beat phase whose depth rises with the energy. The pop subtracts from that, so a letter jumps up out of the wave rather than along it. Letters are drawn from their middle, which is why the vertical swing is limited against the frame box minus a share of the glyph size rather than against the box itself. At a high path deformation the raw offset alone exceeded the half-height before the glyph was even measured, and half a letter has to fit above the highest one. #### Controls that exist only here - **Display text** is scoped to this mode alone in the engine. It is the letter source, and it is what decides how many letters there are. The engine's Character count control governs the glyph-grid modes, not this one. - **Letter spacing** is likewise scoped here alone, and it competes with the span bound: past a certain string length, spacing stops widening the word because the whole arrangement is already at its maximum width. - **Path deformation** shapes the wave, the per-letter rotation and the horizontal wobble together. This mode ships it at 0.62. - **Colour mode** works here. Letters are painted with the per-element colour for their index, so duo, gradient and full spectrum all spread across the word rather than flattening it to the primary colour. The primary audio route is in scope for this mode, which is not true of every mode in this engine: **Primary audio source**, **Audio contribution** and **Audio dynamics** all apply, so you can bind the letters to the band that actually carries the vocal rather than to the bass. #### What it costs and what it needs from you This engine is rated **hard** for setup in the catalogue, and that rating is honest: the mode does nothing useful until you have typed something. It is also the lightest engine in the catalogue by published budget, at 48 elements by default and 12 on mobile, because a word is a dozen glyphs rather than a thousand particles. Use it for a title card, a hook line, an artist name over an intro, or a short refrain. For anything longer than a few words, a [lyric video](https://sonicweaver.com/lyric-videos) is the right surface instead, and [Make a Lyric Video That Syncs](https://sonicweaver.com/blog/make-a-lyric-video-that-syncs) covers that route. Open this mode at [the template page](https://sonicweaver.com/templates/character-motion?mode=word-wave) or in [the editor](https://sonicweaver.com/editor?engine=character-motion&mode=word-wave). --- ### The Crystal Growth Mode: Structure That Accretes Instead of Breathing URL: https://sonicweaver.com/blog/crystal-growth-mode-structure-that-accretes Published: 2026-08-10 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Crystal Growth adds a segment on every beat and keeps it. A structure that only oscillates cannot read as growth, because nothing is ever built. Here is how the accretion works. **Crystal Growth** is the [Bloom engine](https://sonicweaver.com/help/visualizers/bloom) mode where the structure has a memory: symmetric facets advance from deterministic seed points. Every other growth model in the engine runs a cycle and returns to where it started. This one does not. *Figure: Straight faceted arms radiating from a centre with small regular kinks along their length: Arms that got longer and stayed longer. The kinks are the facet fork, not noise.* #### Growth that only oscillates is not growth The engine's shared growth term is a cosine through a lifecycle: it rises, it falls, it comes back. That is the right shape for a flower and the wrong shape for a crystal, because a lattice that breathes in and out never builds anything. Watch it for thirty seconds and you have seen everything it will ever do. So this mode keeps a single persistent number instead, which the draw code calls the grown fraction. Every latched beat adds a fixed increment to it, capped at fully grown. Between beats it melts back very slowly, with a floor well above zero, so a long quiet passage eventually resets the structure and a paused track does not leave a frozen lattice forever. > **The accretion is per engine instance, not per branch** > One number governs the whole structure, so the crystal grows evenly rather than one arm at a time. The per-arm variation comes from a separate set of decay envelopes that beats trigger in round-robin groups, which brightens and slightly extends a fifth of the arms at a time. #### How an arm is drawn Each arm is a polyline of twenty-four segments walking outward from the centre along a fixed angle. The distance along the arm is the accretion fraction, so as the structure grows the line simply gets longer rather than the whole thing being rescaled. The arm length passes through the containment limiter, so the outermost segment approaches the frame margin and never crosses it. The kinks are the difference between a crystal and a tendril. Both share this code path; the crystal branch uses a small, regular, deterministic lateral fork that scales with distance along the arm, while the branching model uses a much larger fork that moves with the clock. That is why one reads as a facet and the other as a vine, on identical geometry. The crystal is also drawn at nearly twice the stroke width. #### The controls, including one that is easy to misread **Seeds** is the control that decides how many arms there are. The branch count is derived from it directly, plus a small bounded addition on beats, and capped. It is worth saying plainly, because the mode also ships a Symmetry value of 6 and this draw path does not read Symmetry at all. If the arm count is not changing, Seeds is the slider you want. - **Noise deformation** is scoped to this mode alone within the engine, and it multiplies the facet fork. The mode ships it at 0.08: small, because a crystal with too much lateral wander stops looking grown and starts looking drawn. - **Bloom amount** and **Global glow** raise both the opacity and the stroke width of every arm, so glow here thickens the lattice rather than haloing it. - **Beat response** is the control with the most leverage on the whole mode, because the accretion advances once per latched beat. A track the analyser reads as half-tempo builds at half the rate. - **Lifecycle** and **Growth rate** belong to the other growth models; this branch reads the persistent fraction instead. #### When to reach for it Anything with a build. Because the structure genuinely accumulates, a track that rises over a minute gets a visual that rises with it, which is unusual in a catalogue of 180 modes where most scenes are steady-state. It suits post-rock, orchestral, progressive house and long intros, and it is a poor fit for a loop where you need the first and last frames to match. Open [Crystal Growth](https://sonicweaver.com/templates/bloom?mode=crystal-growth) or [the editor](https://sonicweaver.com/editor?engine=bloom&mode=crystal-growth). For the same engine drawn as waves instead of structure, read [The Ripple Blossom Mode: Interference Needs More Than One Ring](https://sonicweaver.com/blog/ripple-blossom-mode-interference-needs-more-than-one-ring). --- ### How Canvas Paints an Audio Visualizer URL: https://sonicweaver.com/blog/how-canvas-paints-an-audio-visualizer Published: 2026-08-09 · Author: Novus Team · 9 min read The other half of how audio visualizers work: requestAnimationFrame, reading AnalyserNode, and drawing bars, particles and tunnels on an HTML Canvas every frame. An FFT without a drawing surface is a spreadsheet. A Canvas without audio is a screensaver. **How audio visualizers work** in the browser is the marriage of the two: once per animation frame, read the analyser, then paint. The FFT half is [How FFT Turns Audio Into Visualizer Bands](https://sonicweaver.com/blog/how-fft-turns-audio-into-visualizer-bands). This post is the paint half: `requestAnimationFrame`, `CanvasRenderingContext2D` (and WebGL where a scene needs it), and why a visualizer that ignores the clock looks drunk even when the FFT is correct. Novus engines all implement that loop against one composition document. The [engine reference](https://sonicweaver.com/help/visualizers) is the per-engine control table; the [glossary](https://sonicweaver.com/glossary#frame-rate) defines frame rate, fixed-step clocks and deterministic export. What follows is the browser platform those pages assume. #### The frame loop is the product `requestAnimationFrame` asks the browser to call you just before the next paint, typically 60 times a second, or whatever the display’s refresh rate is. That callback is the visualizer’s heartbeat. Inside it you: (1) pull fresh frequency and waveform data from `AnalyserNode`, (2) derive bands, RMS and onset, (3) clear or fade the canvas, (4) draw this engine’s geometry, (5) schedule the next frame. Skip step 1 and you get a still. Skip step 3 and you get a smear. Skip scheduling and the scene freezes after one picture. > **rAF is vsync, not a metronome** > The callback interval follows the display, not the song. A 120 Hz laptop and a 60 Hz TV will invoke you at different rates. That is why export cannot simply “record the preview”: a [fixed-step clock](https://sonicweaver.com/glossary#fixed-step-clock) steps audio and draw at a chosen frame rate so two renders of the same project match. Preview is allowed to be display-timed; the file you upload is not. *Figure: Diagram of the visualizer signal chain from audio analyser to canvas to export: Audio → analyser → engine draw → canvas. Export replays the same chain on a fixed clock.* #### What Canvas actually gives you The [HTML canvas element](https://html.spec.whatwg.org/multipage/canvas.html) is a bitmap with a drawing context. 2D context (`getContext("2d")`) is enough for bars, waveforms, particles, trails and most lyric typography: `fillRect`, `beginPath`, `arc`, `fillText`, gradients, compositing. WebGL / WebGPU enter when a scene is a mesh, a tunnel of instanced streaks, or a full-screen shader. Novus’s V3 engines share one runtime so a mode can stay on Canvas2D without pretending to be a game engine. - **Clear vs fade.** `clearRect` every frame for a crisp EQ. A translucent black fill for trails and tunnels that need memory of the last frame. - **Device pixels.** `canvas.width` is not CSS pixels. Visualizers that ignore `devicePixelRatio` look soft on retina screens and overdraw on low-DPI ones. - **State is cheap until it isn’t.** Save/restore, heavy shadows and per-particle `shadowBlur` are the usual ways a 60 fps preview falls to 20. The [render-load](https://sonicweaver.com/glossary#render-load) label on each engine is the honest ceiling, not marketing. None of this is Novus-specific. It is why a “music visualizer in JavaScript” tutorial always starts with a ``, an `AudioContext`, and a `requestAnimationFrame` loop. The product work is mapping *this* engine’s controls onto *that* loop without drifting from export. #### Reading audio inside the callback The analyser must be read **in the frame**, not cached from click-time. `getByteFrequencyData` and `getByteTimeDomainData` fill arrays you own; they do not allocate. Typical pattern: allocate the `Uint8Array`s once when the scene starts, then reuse them every rAF. Allocating a new array each frame is a GC hitch waiting to happen, and hitches look like missed beats. From those arrays you derive the same measurements the FFT article described: bins → [bands](https://sonicweaver.com/glossary#frequency-bands), waveform → [RMS](https://sonicweaver.com/glossary#rms) / peak, bass jump → [onset](https://sonicweaver.com/glossary#onset). Then each engine maps those numbers onto *its* vocabulary: bar height, particle emission, tunnel speed, glyph scatter. Same inputs; different drawings. That is why [Choosing the Right Visualizer Engine](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre) is a drawing choice, not an audio-math choice. *Figure: A spectrum-bars visualizer still: Spectrum is the most literal Canvas mapping: one bar per bin or band, height from magnitude.* #### Bars, particles and tunnels are just different draw calls Once the numbers exist, the engine is a style of painting: - **Spectrum / Bars:** iterate bins or bands, `fillRect` (or a trapezoid) proportional to magnitude. Mirror modes draw twice. - **Particles:** spawn or nudge sprites from bass and onset; integrate positions; draw circles or sprites. Emission rate is a mapping, not a texture. - **Tunnel / Warp Field:** step a depth parameter with energy, draw rings or streaks receding in perspective. Beat accents hitch a ride on the same clock. - **Waveform:** plot the time-domain array as a polyline or a 3D ribbon. No FFT required, which is why it still moves on a sine wave. Open those four on the same track from the [template gallery](https://sonicweaver.com/templates) and you are watching four Canvas programs consume one analyser. The [engine reference](https://sonicweaver.com/help/visualizers) then tells you which controls each program actually reads: not a brochure list, the live schema both editors use. #### Why export cannot screenshot the preview A preview canvas is coupled to the display: rAF timing, tab visibility, `prefers-reduced-motion`, GPU load, even the size of the panel. An export has to be **[deterministic](https://sonicweaver.com/glossary#deterministic-export)**: same project, same audio, same file. So the offline path replays the analyser at a fixed frame rate and draws into an offscreen canvas (or encoder input) instead of recording whatever was on screen. If preview and export ever disagree, it is almost always because one path read a control the other ignored, which is exactly what the control-wiring tests exist to catch. > **Reduced motion is a preview concern** > Marketing canvases (homepage hero, engine cards) read `prefers-reduced-motion` and stop the rAF loop after one composed frame. The editor canvas does **not** silently freeze your composition because of an OS setting; that would be editing someone else’s document without asking. Preview stop ≠ export change. Details are on the [accessibility](https://sonicweaver.com/accessibility) page. #### Put it together How audio visualizers work, end to end: decode audio → `AnalyserNode` → FFT bins and time-domain samples → bands / RMS / onset → `requestAnimationFrame` → Canvas draw → (on export) the same draw on a fixed clock. The [glossary](https://sonicweaver.com/glossary) is the vocabulary; the [engine reference](https://sonicweaver.com/help/visualizers) is the per-engine map; [How FFT Turns Audio Into Visualizer Bands](https://sonicweaver.com/blog/how-fft-turns-audio-into-visualizer-bands) is the measurement chapter. Open the [editor](https://sonicweaver.com/editor) and watch one frame of that loop happen sixty times a second. **Sources** - [HTML Living Standard: The canvas element](https://html.spec.whatwg.org/multipage/canvas.html) - [MDN: Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) - [MDN: Window.requestAnimationFrame()](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame) - [MDN: AnalyserNode](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode) --- ### How FFT Turns Audio Into Visualizer Bands URL: https://sonicweaver.com/blog/how-fft-turns-audio-into-visualizer-bands Published: 2026-08-09 · Author: Novus Team · 9 min read What a Fast Fourier Transform actually measures in a song, how AnalyserNode bins become bass/mid/treble, and why those numbers drive every audio-reactive canvas. If you have ever wondered *how audio visualizers work*, the short answer is not “magic bars.” It is a repeating measurement: take a short window of the waveform, run a **Fast Fourier Transform** (FFT), and draw something that reflects the result. This post is the FFT half of that loop: what the transform actually returns, how browsers expose it, and how visualizer engines collapse hundreds of bins into bass, mid and treble. The drawing half is [How Canvas Paints an Audio Visualizer](https://sonicweaver.com/blog/how-canvas-paints-an-audio-visualizer). Novus’s own one-line definitions live in the [glossary](https://sonicweaver.com/glossary#fft). This article is the longer explainer those Search Console queries were asking for: not a product tour, and not a DSP textbook, just enough signal processing to tune a scene on purpose. #### The waveform is time; the FFT is frequency A digital audio file is a list of pressure samples over time: a single wiggly line. That line is useful if you want an oscilloscope, and Novus’s [Waveform](https://sonicweaver.com/templates/waveform) engine draws it. Most visualizers want a different question: *which pitches are loud right now?* An FFT answers that. It takes one slice of the waveform and returns a **spectrum**: energy versus frequency, from sub-bass on the left to air and cymbals on the right. The companion post [How Music Visualizers Work](https://sonicweaver.com/blog/how-music-visualizers-work) walks the whole measure-then-draw loop. Here we stay inside the measurement. If you only remember one sentence: **the FFT does not invent musical notes; it reports how much energy sits in each frequency slot of the current window.** *Figure: Diagram of an audio spectrum split into bass, mid and treble frequency bands: The FFT returns many narrow bins. Engines usually group them into bass, mid and treble before mapping them onto motion.* #### What a frequency bin actually is The spectrum is not a continuous rainbow. It is a row of **[frequency bins](https://sonicweaver.com/glossary#frequency-bin)**: fixed-width slots. More bins means finer pitch detail and a busier picture; fewer bins means a smoother, calmer shape. In the browser the slot count is controlled by `AnalyserNode.fftSize` (a power of two). `frequencyBinCount` is half of that, because a real signal’s FFT is symmetric. - **Bin 0** sits at DC / near-silence energy, rarely useful for a kick drum. - **Low bins** cover kick, bass and sub. They are wide in musical terms at the bottom of a linear FFT. - **High bins** cover hats, air and noise. Linear Hertz spacing puts a lot of slots up here relative to how we hear pitch. > **Linear Hertz is not how hearing works** > A linear FFT spends equal width on 200–400 Hz and on 10–10.2 kHz. Musically, the first interval is huge and the second is tiny. That is why some analysers remap onto a [mel scale](https://sonicweaver.com/glossary#mel-scale) before drawing. Novus’s band summaries (bass / mid / treble) are the practical compromise most scenes want: three numbers instead of hundreds of bins, still honest about which region of the spectrum moved. #### How the browser exposes it: AnalyserNode You do not implement an FFT by hand in a visualizer. The [Web Audio API](https://www.w3.org/TR/webaudio/) gives you an `AnalyserNode`. Connect the playing audio into it, then once per frame call `getByteFrequencyData(array)` (or the float variant). The array comes back filled with 0–255 magnitudes, one per bin. That is the same node Novus’s preview and export analysers read; the [engine reference](https://sonicweaver.com/help/visualizers) is downstream of those numbers, not a second audio engine. `fftSize`, `smoothingTimeConstant` and `minDecibels` / `maxDecibels` change the *feel* of the spectrum before any visualizer control is touched. A high smoothing constant makes bars glide; a low one makes them twitch. Decibel range is why a quiet acoustic track and a brickwalled EDM master can both fill the frame, or why one of them pins every bar to the ceiling. The glossary calls the product-side cousins of those ideas [spectral smoothing](https://sonicweaver.com/glossary#spectral-smoothing) and [gain](https://sonicweaver.com/glossary#gain). #### From bins to bass, mid and treble A full `getByteFrequencyData` buffer is more detail than a tunnel, a particle field or a lyric scene can use. Engines therefore collapse neighbouring bins into **[bands](https://sonicweaver.com/glossary#frequency-bands)**: - **Bass** (roughly 20–250 Hz): kick, sub, the weight of a drop. Typically drives scale, camera shake, emission bursts. - **Mids** (roughly 250 Hz–4 kHz): vocals and most instruments. Good for the readable “body” of a scene. - **Treble** (roughly 4–20 kHz): hats, sparkle, air. Sparks, glints, fine particles. Those Hertz ranges are conventional, not sacred. What matters is that **the same band math runs in preview and in export**, so a binding you dial in the editor is the binding in the file. That contract is what [deterministic export](https://sonicweaver.com/glossary#deterministic-export) is protecting: the picture is a function of the audio window, not of whatever the GPU happened to be doing that millisecond. > **See the bins before you map them** > Open a [Spectrum](https://sonicweaver.com/templates/spectrum) or [Bars](https://sonicweaver.com/templates/bars) scene on a track you know. The leftmost columns are your kick; the rightmost are hats. Then open [Particles](https://sonicweaver.com/templates/particles) or [Tunnel](https://sonicweaver.com/templates/tunnel) on the *same* file: identical analyser, different drawing. That is the fastest way to separate “the FFT did this” from “this engine draws it that way.” The [Tune Audio Reactivity](https://sonicweaver.com/tutorials/tune-audio-reactivity) tutorial has starting points per genre. #### Amplitude, RMS and onset sit beside the FFT The spectrum is not the only measurement. **Peak amplitude** is the loudest sample in the window; **[RMS](https://sonicweaver.com/glossary#rms)** is a smoother loudness. A **[beat](https://sonicweaver.com/glossary#beat)** in this product is really an **[onset](https://sonicweaver.com/glossary#onset)**: a jump in energy, usually bass, relative to the recent average. You can have a rich FFT and still miss the kick if onset detection is too slow, and you can have a perfect onset latch with a boring spectrum if the track is a sine wave. Visualizers that feel “in time” almost always combine both. *Figure: Diagram showing energy crossing a moving threshold to trigger a beat event: Onset detection watches energy against a moving average. It is complementary to the FFT, not a replacement.* #### What this means when you actually tune a scene Once you see the FFT as a row of bins, the editor controls stop being folklore: - **Sensitivity** scales how hard any band is allowed to push a control. Turn it down on a compressed master; turn it up on a quiet demo. - **Attack / release** (the [envelope](https://sonicweaver.com/glossary#envelope)) decide how fast a mapped value may change. Fast attack for percussion; long release for pads. - **Beat response** is the onset path, not the FFT path. If the kick is visible in Spectrum but invisible in Particles, look here before blaming the transform. Every engine in the [engine reference](https://sonicweaver.com/help/visualizers) reads some combination of those measurements. The reference publishes the live control table; this article is why those controls exist. If a term in the table is still opaque, jump back to the [glossary](https://sonicweaver.com/glossary); FFT, bin, band, RMS, onset and envelope all have stable anchors there. #### Try it, then draw it Load a track in the [editor](https://sonicweaver.com/editor), watch a spectrum scene until you can point at the kick with your eyes, then switch engine without changing the song. When you are ready for the other half of “how audio visualizers work” (the actual pixels) continue with [How Canvas Paints an Audio Visualizer](https://sonicweaver.com/blog/how-canvas-paints-an-audio-visualizer). **Sources** - [W3C Web Audio API](https://www.w3.org/TR/webaudio/) - [MDN: AnalyserNode](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode) - [MDN: AnalyserNode.getByteFrequencyData()](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData) --- ### The Ripple Blossom Mode: Interference Needs More Than One Ring URL: https://sonicweaver.com/blog/ripple-blossom-mode-interference-needs-more-than-one-ring Published: 2026-08-08 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Ripple Blossom keeps several beat-born rings alive at once, which is the only way concentric waves can interfere. Here is the ring pool, the petal envelopes and the containment rule underneath both. **Ripple Blossom** is the mode in the [Bloom engine](https://sonicweaver.com/help/visualizers/bloom) whose catalogue line is a promise about physics: concentric growth waves form petal interference patterns. Interference is the word that does the work there, and it is the reason this mode needed a pool rather than a variable. *Figure: Layered petal forms with expanding rings crossing through them: Several rings at different ages, crossing the petal layers. One ring at a time cannot interfere with anything.* #### One ring is not a wave pattern The obvious way to draw a ripple is to make its radius a function of the current beat envelope. That version existed, and it produced exactly one ring, which appeared while the envelope was decaying and vanished when it finished. There was never more than one on screen, so the interference in the description was in the copy and absent from the render. The fix is a small fixed pool of ring slots. On every latched beat the next slot in the pool is reset to age zero and given a strength from the current pulse. From then on each ring ages on its own clock, expanding and fading independently, and when its life runs out the slot frees itself. Six concurrent rings is enough for the crossings to read and few enough that the cost is a handful of strokes per frame. > **You can hear the pool by changing tempo** > On a slow track a ring has mostly faded before the next one is emitted, and the mode reads as single expanding circles. On a fast track three or four are alive at once and the crossings appear. That is the pool working, not a setting changing. #### The petals underneath This mode shares the petal system with the engine's default mode, with one structural difference: it draws twice as many rings of petals. Each ring runs its own growth phase, offset by its index and nudged by the beat count, so rings bloom and decay out of step instead of the whole composition zooming as one object. Individual petals are independent too. Each has its own decay envelope, and beats ignite them in round-robin groups, so the eye can follow the order around the flower rather than seeing every petal jump at once. The reach of a petal is set by its own slice of the spectrum, not by a shared level, which is what makes the silhouette change shape rather than change size. #### Containment, and why the petals are not squashed Bloom was the catalogue's worst measured offender for geometry leaving the frame, because one growth scalar multiplied a radius that nothing bounded. A petal is not a simple radius, though: it is offset along its ray, its ellipse sits further out again, and the ellipse extends its own half-width beyond that. So the limit is applied to the outermost ink and then folded back as a single ratio on the whole petal. Every term is linear in the petal scale, so one ratio shrinks the shape in proportion and never distorts it. Clamping each term separately would have squashed petals into slivers at exactly the moments the music was loudest, which is the failure the [safe zone](https://sonicweaver.com/glossary#safe-zone) exists to prevent. #### The controls worth moving - **Symmetry** is the petal count per ring. The mode ships 12, and it is the single biggest change to the silhouette. - **Spread** widens the flower and also lengthens the per-petal decay, so high values read as softer as well as larger. - **Growth rate** turns the whole arrangement slowly, with alternate rings counter-rotating. - **Lifecycle** is the absolute duration of one growth cycle in seconds, while **Speed** scales how fast the clock runs through it. The two are not duplicates: one sets the length of the cycle, the other how quickly you move along it. - **Rotation** is scoped to this mode and the default petal mode only, and it is added on top of the growth rate with the same alternating sign. **Bloom amount** and **Global glow** are folded together into the opacity of every petal, so glow on this engine is a real term in the drawing rather than a post-process. The engine's published budget is 256 elements by default and 96 on mobile. #### When to reach for it Ambient, classical crossover, meditation and sleep content, and any release whose artwork is already organic. It is a centred composition, so it wants the title above or below rather than across it. Open [Ripple Blossom](https://sonicweaver.com/templates/bloom?mode=ripple-blossom) or start from [the editor](https://sonicweaver.com/editor?engine=bloom&mode=ripple-blossom), and read [The Crystal Growth Mode: Structure That Accretes Instead of Breathing](https://sonicweaver.com/blog/crystal-growth-mode-structure-that-accretes) for the mode in the same engine that builds instead of breathing. --- ### The Ribbon Flow Mode: Why a Ribbon Is Not a Thick Line URL: https://sonicweaver.com/blog/ribbon-flow-mode-why-a-ribbon-is-not-a-thick-line Published: 2026-08-07 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Ribbon Flow is the only mode in Trails drawn as a two-edged shape rather than a stroke, because a stroked line cannot change width along its length. Here is what that buys and what it costs. **Ribbon Flow** is described in the catalogue as wide layered ribbons following a smooth curl field. Both halves of that sentence are load-bearing, and the first half is the one that changes how the mode is drawn. *Figure: Wide tapering ribbons curving across the frame, wider in places and narrower in others: A ribbon that is wide where the strand was loud and thin where it was quiet. A stroke cannot do that.* #### A stroked polyline has one width Canvas strokes a path at a single line width. You can stroke the same path several times at different widths, which is what the other modes in this engine do to fake a taper across three segments, but within one stroke every point is the same thickness. A ribbon that is genuinely wide in the middle and narrow at both ends is not a stroke at all. It is a filled shape with two edges. So this mode builds one. It walks the strand's history forward along one side and back along the other, offsetting each vertex along the perpendicular of the local direction, and fills the closed result. The half-width at each vertex combines a linear taper from tail to head with the band level that was recorded at that vertex, which is the payoff: the ribbon is a readout of what the strand heard, not just of where it went. > **Why every vertex stores a level** > Each strand's history buffer holds three numbers per vertex, not two. The third is the strand's own band level at the instant that point was recorded. Nothing else in the engine needs it, but without it a ribbon can only be tapered by position, which reads as decoration rather than as a trace. #### The width cap is not arbitrary This mode multiplies the **Thickness** control by twice what the stroked modes use, then multiplies again by the strand's energy and the beat pulse. It ships thickness at 12, which is high. Left unbounded, one strand at full scale covered close to a sixth of the frame height, which reads as a smear rather than as a trail. The half-width is therefore capped against the frame box rather than against the control. The practical effect is that you can set Thickness for the look you want at rest and the loud passages stay legible, which is the same bargain the containment rule makes everywhere else in the catalogue. #### The flow field, and why curl is the default **Flow field** is scoped to exactly two modes in this engine, and this is one of them. The options are none, curl, vortex, noise and radial, and this mode ships **curl**. Curl is the curl of a scalar potential, which makes it divergence-free: particles never pile up in sinks or thin out in sources, so density stays even across the frame however long the field runs. - **Curl** is the smooth wandering default. It is the only field here whose density is guaranteed stable over time. - **Vortex** points every strand tangentially around the frame centre, so the field becomes a slow rotation. - **Radial** points strands directly away from or toward the centre, which reads as an explosion rather than a current. - **Noise** is a value-noise field that drifts with time. Busier than curl, and it can crowd. - **None** drops the steering almost entirely, so a ribbon keeps the course it was born on and only turbulence bends it. The field is evaluated in normalised frame coordinates, which means the pattern looks the same at every export resolution. The drift is part of the composition rather than a property of the canvas, and that is what lets a 1080p preview predict a 4K export. #### The controls that matter here **Trail count** is the population, and this mode ships it low at 14, because wide ribbons overlap fast. **Trail length** sets how many vertices each ribbon carries, and therefore how long the shape is. **Trail decay** holds the field between beats. **Turbulence** loosens the steering so a ribbon wanders off the field rather than tracking it exactly. **Speed** ships at 0.16, slower than the comet mode, because a wide shape moving fast is a wipe. #### When to reach for it House, downtempo, neo-soul, and anything with a legato top line. It is the mode in this engine that most reads as painted rather than drawn, and it sits well behind a logo because the ribbons naturally leave the centre alone when the field is curl. For the other end of the same engine, read [The Comet Shower Mode: Four Edges, and Every Comet Its Own Course](https://sonicweaver.com/blog/comet-shower-mode-four-edges-not-one). Open this one at [the template page](https://sonicweaver.com/templates/trails?mode=ribbon-flow) or in [the editor](https://sonicweaver.com/editor?engine=trails&mode=ribbon-flow). --- ### The Comet Shower Mode: Four Edges, and Every Comet Its Own Course URL: https://sonicweaver.com/blog/comet-shower-mode-four-edges-not-one Published: 2026-08-06 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Comet Shower enters from all four edges of the frame and every strand holds its own course. Here is the spawn geometry, the steering, and why the tail is correct from a comet's first frame. **Comet Shower** is the default mode of the [Trails engine](https://sonicweaver.com/help/visualizers/trails): long luminous heads with decaying multi-band tails. It is also the mode that decided how the whole engine was rebuilt, because it is the one where the old design failed most visibly. *Figure: Bright heads with fading tails crossing a dark frame from several directions at once: Strands cross each other. That is the tell: a field where every trail runs parallel is a field with one heading.* #### Four edges, one per slot A comet is born just outside the frame, and which edge it crosses is decided by its index rather than by the direction controls. Slot by slot the spawn cycles top, right, bottom, left, with a small overshoot so the strand is already moving before it becomes visible. The spawn also returns the inward normal of the edge it used. That normal is what aims the comet. Its heading starts pointing into the frame and is then leaned toward the configured **Direction X** and **Direction Y** by a bounded fraction of the way, plus a small per-strand jitter. Adding the direction outright would let a strong setting point a comet straight back out of the edge it just entered, which is a strand that exists for one frame. > **Why the spawn is where this is fixed** > Choosing a single entry edge from the direction vector produced a field of parallel strokes: everything entering along the bottom and everything travelling up. Nothing downstream can recover a spread once the spawn has already collapsed it, so the fix has to live at birth. #### Every comet holds its own course Most modes in this engine steer each strand toward a shared flow field. This one does not. A comet's target heading is the heading it was launched on, plus a slow sine wander on its own phase, and the steering rate is the lowest in the engine. Steering the whole field back toward one global direction would undo the four-edge spawn within a second. Each strand also listens to its own slice of the spectrum, fixed for its lifetime, mixed with the engine's shared audio envelope. That per-strand band is what varies speed, opacity and tail width between neighbours, so a field of strands spans the frequency range instead of drawing the same envelope several dozen times. #### The tail is correct on the first frame Each strand carries a ring buffer of vertices, and every vertex stores three numbers: the position and the strand's band level at the instant it was recorded. When a strand respawns, the buffer is not left empty to fill up over the next second. It is seeded backwards along the entry heading, so the trail is its full configured length from the strand's first visible frame. That matters more than it sounds. Respawns are constant, so a buffer that grew one vertex per frame meant **Trail length** had no observable effect until a strand happened to survive long enough. It also matches how a moving object actually looks: it was already travelling before it crossed into frame. The tail is drawn as three overlapping segments rather than one stroke: a thin, faint stretch at the far end, a medium one through the middle, and a thick bright one at the head, finished with a stamped particle on the leading vertex. The total width is capped against the frame, not just against the **Thickness** control, so a loud passage cannot turn one comet into a smear across the composition. #### Life, death and the beat A strand has a lifetime staggered per index so the field never dies and respawns in lockstep, and it loses life every frame. Beats revive it: on each latched beat one quarter of the field, chosen round robin, has its life topped back up. The result is the engine's stated behaviour as literal mechanics rather than as a global opacity ramp, which is that trails dissipate and the beat brings them back. **Trail decay** does a second job worth knowing about. As well as fading the backdrop on the main canvas, it shapes the opacity of the history that is redrawn each frame, normalised around the shipped default. Overlay layers are cleared before every frame, so without that second path the control would have been silently inert on every overlay. This mode ships 34 strands, a trail length of 2.6 and a speed of 0.26. #### When to reach for it Drum and bass, breakbeat, trap, anything with a busy top end, and any track where you want visible motion without a fixed centre. It is a light scene to run, with a published budget of 64 elements and 28 on mobile, which matters for a long upload. Open [Comet Shower](https://sonicweaver.com/templates/trails?mode=comet-shower) or jump to [the editor](https://sonicweaver.com/editor?engine=trails&mode=comet-shower). If you want the same engine with a filled shape rather than a stroke, [The Ribbon Flow Mode: Why a Ribbon Is Not a Thick Line](https://sonicweaver.com/blog/ribbon-flow-mode-why-a-ribbon-is-not-a-thick-line) is the mode that answers that, and [Beat Sync Explained](https://sonicweaver.com/blog/beat-sync-explained-pulse-hits-and-shake) covers the latch that revives these strands. --- ### The Constellation Mode: Sparse on Purpose URL: https://sonicweaver.com/blog/constellation-mode-sparse-on-purpose Published: 2026-08-05 · Updated: 2026-09-12 · Author: Novus Team · 6 min read Constellation ships a fraction of the particles the other modes do, and that is the design. Here is why the links only read as a constellation while the nodes stay countable. **Constellation** is the mode in the [Particles engine](https://sonicweaver.com/help/visualizers/particles) that draws lines as well as points: sparse linked nodes that breathe with mid frequencies. It is also the only one that ships a deliberately low particle count, and the two facts are the same fact. *Figure: Sparse points joined by faint lines into a loose network across a dark frame: Nodes you could count, joined by links that fade with distance. Add nodes and the links merge into a wash.* #### The link pass, and what it costs After every particle is drawn, the mode walks the list of on-screen positions and tests each pair. Two points are joined when they are closer than a threshold derived from the **Connection distance** control and the shorter side of the frame, and the link is drawn at an opacity that falls off linearly to nothing exactly at the threshold, so a connection appears and disappears by fading rather than by popping. That pairwise walk is quadratic, which is why it is capped. Only the first 140 drawn positions are eligible for linking, whatever the particle count is set to. Raise the count and you get more unlinked dots, not a denser web. This is the single most useful thing to know about the mode, because it explains a result that otherwise looks like a bug: turning the population up makes the constellation look *less* like a constellation. > **Tune the threshold, not the population** > Connection distance is the control that changes the topology. Low values give you isolated pairs and triangles; high values give you a mesh where every eligible node reaches every other and the structure stops reading. The default sits deliberately in the middle, and this mode ships it higher than the engine default because its nodes are further apart. #### What the beat does to a link Two things, both bounded. The beat pulse widens the threshold slightly, so more pairs qualify on a hit and the web momentarily knits itself together. It also raises the link opacity and the line width. Nothing here is switched by the beat latch: the structure breathes rather than flashing, which is the opposite choice from the geometric engines where a beat decides whether an element exists at all. Individual nodes still respond on their own. Every particle in this engine reads a band chosen by the size bucket it was seeded into, so small, medium and large nodes can be bound to different parts of the spectrum through the particle-layer panel. The result is a network where the lows and the highs move different nodes, which is what stops it looking like one object being scaled. #### Its own motion Nodes do not travel. The branch for this mode adds a small sine and cosine offset around each point's seeded position, with **Turbulence** widening the horizontal wander and **Gravity** the vertical one, plus a fixed contribution from **Direction X** and **Direction Y**. It is a breathing field, not a moving one, which is exactly what a constellation should do: a network that drifts across the frame stops being a shape and starts being traffic. The mode ships 400 particles and a particle size of 1.6, which is well above the engine default. Fewer, larger nodes is the entire recipe. #### When to reach for it Ambient, downtempo, lo-fi, podcast and spoken-word beds, and anything where the visual is supporting text rather than competing with it. It is one of the calmest scenes in a catalogue of 29 engines, and it survives being cropped to a vertical frame better than most because its composition is a distribution rather than a centred object. It is the wrong choice when you want the picture to land on a kick. For that, the same engine's beat-emitted arcs or a geometric engine will serve you better. Open [Constellation in the gallery](https://sonicweaver.com/templates/particles?mode=constellation) or start editing at [the editor deep link](https://sonicweaver.com/editor?engine=particles&mode=constellation), and read [The Starfield Mode: Why Depth Has to Reach the Sprite](https://sonicweaver.com/blog/starfield-mode-depth-that-reaches-the-sprite) for the mode at the opposite end of the same engine. --- ### The Starfield Mode: Why Depth Has to Reach the Sprite URL: https://sonicweaver.com/blog/starfield-mode-depth-that-reaches-the-sprite Published: 2026-08-04 · Updated: 2026-09-12 · Author: Novus Team · 7 min read Starfield is the one Particles mode with a real depth axis. Here is how the projection works, why the sprite has to shrink with it, and which controls only exist in this mode. The catalogue line for **Starfield** is short: *Deep parallax stars crossing the frame in twelve seconds.* Everything interesting about it comes from one decision, which is that it is the only mode in the [Particles engine](https://sonicweaver.com/help/visualizers/particles) with a depth axis the renderer actually projects. *Figure: A field of stars streaming outward from the centre of the frame, near stars larger than far ones: The committed capture for this mode. Notice that the stars near the edge are bigger, not just further out.* #### One seeded field, six different readings of it Particles seeds a pool of points once, each with its own position, depth, phase and size. An emitter does not reseed that pool; it reshapes where each point lives while keeping the point's identity. That is why changing the Emitter control moves the field rather than replacing it, and it is also why every mode in this engine is reading the same population in a different way. Starfield takes each point's depth, advances it with the motion clock, wraps it back into the range, and then projects the point outward from the centre of the frame by the reciprocal of that depth. A point at the back of the volume barely moves. A point that has come close races off the edge. That is the whole parallax effect, and it costs one division per particle. #### The part that was missing, and why it mattered The projection was correct long before the mode read correctly. Position had perspective; size did not. A star one tenth of the distance away was drawn at exactly the same radius as one at the back, so the depth cue the projection creates was thrown away on every frame. The consequence was not subtle. Without a size gradient the mode rendered as a flat field of identical dots, which is indistinguishable from two of its neighbours in the same engine at gallery size. Scaling the sprite by the same reciprocal-depth term the position already uses is what makes it read as flying through stars, and the scale factor is bounded at both ends so a point that passes very close cannot become a disc that fills the frame. > **Depth is the only motion here** > There is no turbulence path and no gravity path in this branch. A star travels straight out from the centre and nothing curves it. If you want drift, that is a different mode in the same engine, not a setting on this one. #### The controls that are specific to this mode **Direction Z** is scoped to Starfield and to nothing else in the engine. It is added to the per-frame depth advance, so it is a fine trim on how fast the field comes at you rather than a separate speed control. **Speed** is the coarse one, and this mode ships it at 0.16. - **Particle count** is where the look lives. The mode ships 1500, which is well above the engine default, because a sparse starfield reads as dust rather than as space. - **Particle size** is a multiplier on top of the per-point seeded size and the depth scale, so it changes the whole gradient rather than flattening it. - **Turbulence** and **Drag** are available on the engine but do nothing in this branch of the draw code. That is worth knowing before you spend ten minutes on a slider. - **Colour mode** works: a star is painted with the per-element colour for its index, so duo, gradient and full-spectrum all read across the field. #### What a particle count actually buys you The number you set is a target, not a promise. It is scaled by the preview scale, by the canvas area relative to 1080p, and by a further reduction on machines reporting four or fewer cores, then capped. Export with capture quality on and all three of those scalers are switched off, so the exported frame is the count you asked for. The engine's published budget is 520 elements by default and 220 on mobile, with a hard ceiling of 4000. There is a second reason the drawn count moves: the pool is deliberately larger than the steady-state draw so a burst has somewhere to spawn into, and the per-frame draw count swings within a bounded range around the target. The ceiling on that swing is low on purpose. A field whose population jumps by more than half on every onset reads as flicker rather than as emission. #### When to reach for it Anything that wants forward motion without a corridor. Synthwave, ambient techno, trailers, long-form mixes, and any track where the viewer is meant to feel like they are travelling. It sits behind centred text well because the middle of the frame is where the stars are smallest and dimmest. If you want the travel but with structure around you instead of past you, [Tunnel](https://sonicweaver.com/templates/tunnel) is the engine to compare it against, and [The Warp Field Mode: A Streak Carries the Beat It Was Born On](https://sonicweaver.com/blog/warp-field-mode-a-streak-carries-its-beat) covers the mode there that answers the same brief. Open it at [Starfield in the template gallery](https://sonicweaver.com/templates/particles?mode=starfield) to see the live preview, or go straight to [the editor](https://sonicweaver.com/editor?engine=particles&mode=starfield) with a track of your own. The [Particles engine reference](https://sonicweaver.com/help/visualizers/particles) publishes the full control table and the runtime contract. --- ### The Stage Lights Engine: A Lighting Rig, Not a Readout URL: https://sonicweaver.com/blog/stage-lights-engine-a-lighting-rig-not-a-readout Published: 2026-08-03 · Updated: 2026-09-12 · Author: Novus Team · 8 min read Beams, haze, floor pools and chases cued by the beat. Stage Lights visualises the room instead of the signal, and it is the only engine in the catalog built around a lighting desk rather than a graph. Every other engine in the catalog visualises **the signal**. A bar is a band. A ring is a frame of spectrum. A landscape is a few seconds of history. **Stage Lights** visualises **the room**: a lighting rig rather than a readout: beams, haze, pools and chases cued by the beat. Fixtures have positions on a truss. Beams have a source and a throw. Haze is the thing that makes a beam visible at all. It is the look a live clip has, and none of the other engines produce it. *Figure: A fan of coloured beams thrown across a hazy dark stage from the Stage Lights engine: Beams are cones drawn on haze, composited additively so overlapping light builds up the way real light does.* #### A lighting desk is cued, not faded This is the reason Stage Lights is the most beat-native engine in the catalog. A real lighting operator does not slowly ride a fader to follow the mix; they strike a fixture on a beat and let it decay on its own envelope. The engine works the same way. Every mode drives its fixtures from per-element envelopes triggered by the beat, and the beat count advances which group fires next. That is what produces a **chase**: light travelling across the truss, rather than every lamp blinking in unison. Turn the chase groups down to one and you get exactly that unison blink, which is a useful thing to hear once so you know what the control is buying you. *Figure: Diagram showing energy crossing a moving threshold to trigger a beat event: The beat selects which fixtures fire. Between beats each one falls on its own decay curve, which is why a slow decay reads as a hazy club and a fast one as a strobe rig.* #### Six rigs - **Beam Fan** is the default: one rig position at the top of the frame throwing a fan of beams across the stage, each beam swaying slightly on its own phase. - **Laser Sweep** fires from alternating sides of the frame. Lasers are thin and long, so they are drawn as strokes rather than cones, each sweeping on its own quantized phase. - **Spot Rig** hangs fixtures along a truss, each with a vertical cone that tilts and an elliptical pool on the floor beneath it. It is the mode that most reads as a stage rather than an effect. - **Par Wall** drops the beams entirely and gives you a back wall of par cans chasing group by group. Just the lamps, which is a surprisingly strong look behind a logo. - **Strobe Bars** pulses horizontal battens in sequence. Note the word *bars*: these are bounded shapes over a dark stage, never a full-frame flash. - **Follow Spot** is a single fixture tracking a target that only moves on the beat, so the spot lands with the music instead of wandering around the frame. #### Photosensitivity is a design constraint here, not a disclaimer An engine whose whole subject is flashing lights had to decide this before it drew anything. There is **no full-frame flash in any mode**, Strobe Bars included. Beams, pools and bars are bounded shapes over a dark stage, and the brightest term any of them reaches is an alpha on a shape, never a fill of the entire canvas. The trigger rate is capped too. Fixture envelopes are gated by the beat latch, whose lockout window caps firing at five times a second however the track is analysed. A double-time hi-hat pattern cannot turn the rig into a 20 Hz strobe. > **It is still a lighting rig** > Bounded and rate-limited is not the same as safe for everyone. If you are publishing to an audience, say so in your description, and read [Keyboard and Accessibility on Novus](https://sonicweaver.com/blog/keyboard-and-accessibility-on-novus) for what the motion setting does and does not change about an export. #### The controls that make or break a rig - **Fixtures** is the lamp count. Few and wide reads as an arena; many and tight reads as a wall. Par Wall arranges them into a grid derived from the count, so this control changes the shape of the wall as well as its density. - **Haze** is the atmosphere a beam is drawn on, and it is the single most cinematic control in the engine. At zero you have geometric wedges; turn it up and you have air. - **Beam spread** is the cone angle. Narrow is a searchlight; wide is a wash. - **Fixture decay** is how long a struck lamp takes to fall. Short is percussive and strobe-like. Long is a club with a lot of smoke in it. - **Chase groups** is how many interleaved groups the beat cycles through, and therefore how the light travels. This is the control that turns a blinking rig into a moving one. Colour matters more than usual on this engine, because a lighting rig is mostly colour. The engine's own defaults lean warm against magenta, and the shared Colour mode (duo, gradient or full spectrum) decides whether your fixtures are two colours in alternation or a whole wash across the truss. The [Stage Lights engine reference](https://sonicweaver.com/help/visualizers/stage) lists every control that is in scope, and its setup effort is rated easy: it looks right almost immediately, which is not true of every engine in the catalog. #### What it is for Anything that wants to feel like a room with people in it. Live-set uploads, DJ mixes, club and festival edits, hard dance, and any release whose artwork already has a stage on it. Par Wall and Spot Rig behind a logo produce a convincing tour visual; Follow Spot works surprisingly well for a single vocal track, because the moving pool gives the frame somewhere to look. It is the wrong engine when the viewer is meant to read the music rather than feel the venue. For a literal readout, use [Spectrum](https://sonicweaver.com/templates/spectrum) or [Bars](https://sonicweaver.com/templates/bars); for structure that switches on the beat without the theatre, [Lattice](https://sonicweaver.com/blog/lattice-engine-geometry-that-switches-on-the-beat) is the geometric cousin of the same idea. Open it in the [editor](https://sonicweaver.com/editor), start on Beam Fan, and do only one thing first: push Haze up. Almost every complaint about this engine looking cheap is a rig with no air in it. --- ### The Terrain Engine: The Last Few Seconds of Your Track as Landscape URL: https://sonicweaver.com/blog/terrain-engine-the-last-few-seconds-as-landscape Published: 2026-08-02 · Updated: 2026-09-12 · Author: Novus Team · 8 min read Every other engine draws this frame. Terrain draws the last few seconds: each frame pushes a spectrum row into a receding heightfield, so a kick becomes a ridge you can still see four seconds later. **Terrain** is described in the catalog in six words: the last few seconds of the track rendered as receding landscape. That is the entire idea, and it makes this engine structurally different from every other one in the catalog. Almost everything else draws **this frame**. A bar is a band right now; a ring is one frame of spectrum. Terrain is the engine where the last few seconds of the mix *are* the geometry. *Figure: A receding landscape of stacked ridge lines from the Terrain engine: Rows recede toward a horizon, nearest drawn last, each row filled with the background before its ridge is stroked so near land occludes far land.* #### How a landscape gets built Each frame, the engine samples the spectrum into a fixed number of columns and pushes that row into a history buffer. Then it draws the buffer from back to front: the oldest row sits at the horizon, the newest at your feet, with rows bunching toward the horizon so parallel lines converge like a plane. The trick that makes it read as terrain rather than as noise is a painter's-algorithm fill. Each row is filled with the background colour before its ridge is stroked, so nearer land occludes further land. Without that step the rows cross-hatch into a mess. It is the same hidden-line idea a plotter used in 1979, and it is still the cheapest way to make a wireframe look solid. *Figure: Diagram of an audio spectrum split into bass, mid and treble frequency bands: Every row in the landscape is one sampled spectrum. Bass sits on one side of the ridge, treble on the other, and the row keeps that shape as it recedes.* #### The beat is baked into the row that was born on it A heightfield built purely from band levels drifts with the mix and reads as **weather**, not rhythm. So each new row is lifted by the beat envelope *at the moment that row is created*, and that lift travels backwards through the field with the row. The result is the engine's signature: a kick becomes a ridge you can still see receding several seconds later. You are not watching the beat; you are watching the last dozen beats walk away from you. On a track with a consistent groove it produces regular ranges. On a track with a build, you can literally see the density of the ridges increase toward the horizon before the drop arrives at your feet. > **This is why Terrain is forgiving of a quiet passage** > An engine that only draws the current frame goes still when the music does. Terrain keeps showing you the last few seconds, so a breakdown reads as calm land rather than as an empty screen. It is one of the few scenes that survives a long intro. #### Six ways to draw the same field - **Ridge Lines** is the default and the most literal: stacked hidden-line ridges receding toward the horizon. - **Wire Mesh** draws rows *and* columns and deliberately skips the occluding fill, because a wire mesh is supposed to be see-through. - **Contour Map** fills each elevation band, with no hidden-line pass, so the field reads as a topographic plate rather than a landscape. - **Canyon Scroll** mirrors the same field above and below a travelling corridor, which is the closest Terrain gets to a tunnel. - **Dune Field** drops the roughness almost to zero for wide, soft forms. This is the mode built to sit behind lyrics and ambient material. - **Peak Silhouette** draws three layered ranges, far to near, each from a different slice of history, against a sky that lights on the beat. A silhouette by definition cannot brighten, so the light behind it has to. #### The controls that change the terrain, not the colour - **Relief** is the vertical exaggeration: how tall a given amount of energy makes the land. It is the first control to reach for when a scene looks flat or looks like spikes. - **Horizon** sets where the far edge sits in the frame, which is really a composition control. Push it up for more sky and room for a title; push it down to fill the frame with land. - **Row spacing** controls the perspective compression and how much the rows narrow toward the horizon. Higher values read as a longer distance. - **Roughness** blends a linear response against a squared one. Low is dunes; high is jagged peaks, because squaring the band exaggerates the loud columns and suppresses the quiet ones. - **History depth** is how many rows the field holds, which is literally how many seconds of the past are on screen. **Speed** deserves its own note, because it means something unusual here. Terrain has no clock of its own; its only motion is history advancing. Speed therefore sets how many rows are pushed per frame, normalised so that the shipped default is exactly one row per frame. It is capped low deliberately: each push repeats the *current* spectrum row, so a large value writes several identical rows and the relief flattens into plateaus. > **A slow landscape is usually the better one** > Pulling Speed below the default makes the terrain drift instead of rush, and because the history buffer empties more slowly the ridges hold their shape for longer. For a lyric or ambient background, that plus Dune Field is the combination to start from. #### Containment on a vertical offset Most engines measure containment as a radius from the centre. Terrain cannot: a row's height is an offset from that row's *own* baseline, so the limit is the distance from the baseline to the top of the frame box. Passing a vertical offset through a radial limit is exactly how geometry ends up leaving the frame at the top while still measuring as contained. Canyon Scroll is the sharpest case, because its corridor widens with distance until the furthest row sits on the frame edge, so any audio-driven height added to it would push the far walls straight off the canvas. Its wall offset is limited against the half-height it is measured from. The practical upshot for you: the frame margin holds on every mode at every reactivity setting. #### When to reach for it Terrain suits anything with a sense of journey: cinematic, ambient, post-rock, downtempo, and long-form mixes where a viewer is watching for minutes rather than seconds. It is one of the lighter scenes in the catalog to run (a default element budget of 96, 44 on mobile), which matters when the video is an hour long. The [Terrain engine reference](https://sonicweaver.com/help/visualizers/terrain) has the full control table. It is the wrong engine when you want a hit to land visibly on the frame you are looking at, because by design the hit walks away. For that, [Lattice](https://sonicweaver.com/blog/lattice-engine-geometry-that-switches-on-the-beat) switches geometry on the beat and [Stage Lights](https://sonicweaver.com/blog/stage-lights-engine-a-lighting-rig-not-a-readout) strikes fixtures on it. --- ### The Lattice Engine: Geometry That Switches on the Beat URL: https://sonicweaver.com/blog/lattice-engine-geometry-that-switches-on-the-beat Published: 2026-08-01 · Updated: 2026-09-12 · Author: Novus Team · 8 min read Kaleidoscopes, hex tilings, wireframe solids, isometric grids, trusses and expanding prisms. Lattice is the engine where an element is lit or it is not, which is what makes it read on the beat. **Lattice** is the catalog's geometry engine: mirrors, tilings, wireframes and trusses: hard-edged geometry that switches on the beat. It ships 6 modes and it is the one engine where the picture *changes* on a beat instead of only getting brighter on one. *Figure: A mirrored, hard-edged geometric scene from the Lattice engine: Lattice draws discrete structure: facets, tiles, struts and vertices rather than smoothly swelling curves.* #### Why discrete geometry behaves differently [Radial](https://sonicweaver.com/templates/radial) is also anchored at the center of the frame, and the two engines are easy to confuse from a thumbnail. The difference is in what an element *is*. Radial draws continuous structures: rays and rings whose length varies smoothly with a frequency band. Everything in Lattice is discrete and structural. A tile is lit or it is not. A strut is carrying current or it is not. That distinction has a direct musical consequence. A continuous element can only be *swelled* by an envelope, so a kick makes it a bit bigger. A discrete element can be **switched** by a beat latch, so a kick makes it exist. Every mode here drives at least one property from the beat rather than from the smoothed audio level alone, which is why Lattice reads as rhythmic on material where a spectrum bar would just wobble. *Figure: Diagram showing energy crossing a moving threshold to trigger a beat event: The beat latch is what selects which elements fire. In Lattice that selection is the picture, not a brightness bump on top of it.* #### The six modes, and what each one does on a hit - **Kaleidoscope** authors one wedge and mirrors it around the frame. The wedge profile is cut from the spectrum, so the mirror lines carry real frequency content. It is drawn from a handful of straight chords rather than a smooth spline, deliberately: a curve mirrored around a center draws petals, which is [Bloom](https://sonicweaver.com/templates/bloom)'s job. A kaleidoscope is made of facets, and each wedge ignites in groups as beats land. - **Tessellation** is a hex tiling whose tiles never move. Only their fill changes, and a beat lights one diagonal stripe of tiles which advances by one column on the next beat, so the pattern travels across the grid instead of flashing all at once. - **Wire Polyhedron** places vertices on a Fibonacci sphere and wires up every pair closer than a threshold. The vertex count is a control rather than a fixed solid, so the same mode covers something close to a tetrahedron and something close to a geodesic dome. - **Isometric Grid** raises a block per cell, with the height of each column taken from its frequency band, read as a city skyline from a fixed camera. Beats ignite cells in three interleaved groups. - **Truss Web** builds concentric node rings and wires each node to its neighbours. The strut is the element here, charged in five groups so current appears to travel through the structure. - **Prism Stack** is the most literal: one polygon is *born* on each beat latch and travels outward carrying that hit. A quiet passage produces an empty frame, because no beat means no prism. > **Hear the engine by muting the beat** > Drop Beat response low and most Lattice modes lose the thing that makes them Lattice. That is the fastest way to feel what the beat latch is doing, and the fastest way to diagnose a scene that has gone flat: it is almost always the beat path, not the spectrum. #### Controls that matter most here Lattice shares the catalog's common controls, and three of the engine-specific ones do most of the work: - **Sides** sets the polygon used by the tiling and the truss ring geometry. Six gives you a classic hex tiling; raising it walks the tiles toward circles. - **Cells** is the grid density, and it is the single biggest lever on how busy the frame looks. Tessellation reads it as columns; Isometric Grid clamps it into a square grid; Truss Web derives its ring count from it. - **Symmetry** is Kaleidoscope's wedge count, and it is the control that turns one scene into a completely different one. Low values read as a folded poster; high values read as a mandala. Alongside those, **Cell fill** decides whether you get a wireframe or a solid, and **Lattice jitter** adds controlled irregularity to the truss so the structure looks built rather than generated. The [Lattice engine reference](https://sonicweaver.com/help/visualizers/lattice) publishes the live control table, its render load and its element budget: a default of 120 with 56 on mobile, which is the honest ceiling rather than a marketing number. #### Containment, and why the tiling is clipped A tiling covers the frame by definition, which means its outermost tiles are always partly off-screen, and their radius, stroke width and fill all rise with the audio. Measured against the catalog's containment budget, that produced a burst of border ink appearing only on peaks. Tessellation is therefore clipped to the frame box: the tiling still spans everything it is supposed to, and the margin the rest of the catalog respects stays clear at every level. It is worth knowing because it changes how you frame text. The [safe zone](https://sonicweaver.com/glossary#safe-zone) holds on this engine even at full reactivity, so a title placed with the frame margin in mind will not be eaten by a drop. [Framing Your Visual](https://sonicweaver.com/blog/framing-safe-zones-and-aspect-ratios) has the general rules. #### What Lattice is good for Anything with a hard rhythmic grid. Techno, drum and bass, industrial, breakbeat, trap: genres where the kick is an event rather than a swell get the most out of an engine built around events. Kaleidoscope and Tessellation are the two that survive being a background behind text; Prism Stack and Truss Web want to be the whole frame. For material without a strong transient (ambient pads, solo piano, spoken word) this is the wrong engine, and the fix is not a setting. Reach for [Terrain](https://sonicweaver.com/blog/terrain-engine-the-last-few-seconds-as-landscape), which reads history rather than hits, or one of the continuous engines. Open it in the [editor](https://sonicweaver.com/editor) with a track you know, start on Kaleidoscope, and cycle the modes without touching anything else. Six drawings of the same beat is a faster education than any amount of parameter tweaking. --- ### Keyboard and Accessibility on Novus: What Works, and What Does Not Yet URL: https://sonicweaver.com/blog/keyboard-and-accessibility-on-novus Published: 2026-07-31 · Updated: 2026-09-12 · Author: Novus Team · 9 min read Skip links, a four-way motion setting applied before the first paint, the editor shortcuts worth learning, and an honest list of the places Novus is still not good enough. A music visualizer is motion by definition, which makes it an awkward product to write an accessibility page about. The temptation is to publish a paragraph saying you are committed to WCAG and leave it there. That is worse than saying nothing: it tells a disabled visitor the product has been checked when it has not. So this post is the same bargain the [accessibility page](https://sonicweaver.com/accessibility) makes. Here is what exists, here is how to use it, and here is the list of things that are genuinely not done. #### The first thing Tab reaches Press Tab on any page and the first stop is a **Skip to content** link that jumps past the entire top navigation and moves focus into the page body. It is invisible until it takes focus, so it costs a sighted mouse user nothing and saves a keyboard user the whole menu on every single route. Underneath that, every page renders exactly one main landmark. That is not a convention anybody is trusting: an automated test walks the application and component source and fails the build if a second one ever appears, so *jump to main content* in a screen reader stays unambiguous. #### Shortcuts worth learning These are the ones that exist today, and the exact keys they listen for: - **Ctrl+/** or **Cmd+/** opens and closes the help panel from anywhere the help launcher is shown, which is everywhere except the editor and the internal test harness. - Inside the help panel, **Arrow Up** and **Arrow Down** move through results, **Enter** opens the focused article and **Escape** closes the panel. - **Escape** also closes an open menu in the top navigation. - In the [editor](https://sonicweaver.com/editor), **Ctrl+Z** or **Cmd+Z** undoes, and **Ctrl+Y** or **Ctrl+Shift+Z** redoes. - In the editor, **F** toggles the fullscreen preview and **Escape** leaves it. The handler ignores the key while focus is in a text input, a textarea or a select, so typing the letter F into a project name does not throw you into fullscreen. > **That input guard is the pattern, not a detail** > A single-letter global shortcut is only safe if it steps aside for text entry. The fullscreen toggle checks what has focus before acting; anything new added to this list is expected to do the same. #### Motion, and a setting that is not just a mirror of your OS Ambient page animation (drifting gradients, shimmer, pulse glows) is written so its **static first frame is the default**. The keyframes only run inside a `prefers-reduced-motion: no-preference` query, which means turning the preference on in your operating system does not fight the animation; it never starts. The canvases obey the same preference, which used to be the gap on this page and no longer is. The homepage hero paints one composed frame and stops. Every engine preview loads paused behind a play control rather than starting itself, and previews stop on their own when scrolled out of view or when the tab is hidden. On top of the operating system there is a **site-level motion setting** with four states: follow my system (the default), full motion, reduced motion, or no animation at all. Your choice overrides the OS in *both* directions, which is the case a pure `prefers-reduced-motion` implementation cannot serve: someone who wants the previews running anyway, or who wants them still on a machine whose system setting they cannot change. It is stamped onto the document by an inline script in the head, beside the theme one, so it applies to the first frame rather than after hydration. There is no flash of the motion you asked not to see. > **Reduced and off are deliberately different** > Reduced keeps the short fades that tell you a control responded, and keeps phone haptics. Reducing motion is a request about motion sickness, not a request to lose feedback. Off is off. #### The line the motion setting will not cross Your motion preference stops the marketing previews. It deliberately does **not** alter a composition you are editing or exporting. That is your document, not site decoration, and an accessibility setting that silently rewrites someone's project is editing their work without asking. The consequence is honest and slightly uncomfortable: visualizer output is motion, and some modes flash on the beat. There is no global *reduce output motion* switch yet. Until there is, preview at a low reactivity setting before committing to a long export, and lengthen the audio release so the scene drifts rather than snaps. [Every Audio Reactivity Control, Explained](https://sonicweaver.com/blog/audio-reactivity-controls-explained) covers the settings that do that. #### What a test actually keeps from regressing A browser test drives the axe-core rule set across a representative set of pages of a real production build, failing on the WCAG 2.0 and 2.1 A and AA rules, color contrast included. It runs as a **ratchet**: the outstanding findings are recorded per page, and the test fails both when a new one appears *and* when a recorded one is fixed without being removed from the list. That second half is the unusual bit and it is the one that makes the number mean something. Debt that cannot quietly grow is common. Debt that cannot be quietly forgotten, because paying it off is also a failure until you say so, is what stops a recorded list becoming a museum. #### Not done yet Listed so you can decide whether Novus works for you now, rather than finding out halfway through a project: - **No formal WCAG audit and no VPAT.** Nothing here is a conformance claim. It is a description of what is implemented, verified against the source. - **Focus-visible rings are not enforced site-wide.** They are applied through the shared button component and on navigation, auth forms, the Cookie Policy consent buttons and template cards. Some bespoke controls still fall back to browser defaults. - **The canvases have no non-visual equivalent.** Core actions are reachable by keyboard through the surrounding panels, but the editor and Studio canvases are direct-manipulation visual tools and building an alternative is not a small change. - **Most sliders and dropdowns in the Classic editor have no accessible name.** Their captions sit beside the control as plain text rather than being attached to it, so a screen reader announces the control but not what it adjusts. The automated sweep records this and stops it spreading; the fix itself is not done. - **Exports carry no caption or audio-description track.** If you publish an export, add captions on the platform you publish to. #### Two more settings that help today The theme toggle in the top navigation switches light and dark, and the choice is applied by an inline script before the page paints, which matters most to people who chose dark mode for light sensitivity. Browser zoom and operating-system text scaling work normally, because the layout is fluid rather than fixed-width. #### If something here blocks you Tell us what you were trying to do, the page you were on, and the assistive technology and browser you use. Accessibility reports are treated as defects rather than feature requests. The [accessibility page](https://sonicweaver.com/accessibility) carries the address, and the [contact page](https://sonicweaver.com/contact) works too. If you are picking a scene and motion sensitivity is the constraint, the calmest options in the catalog are the slow ones: read [Choosing the Right Visualizer Engine for Your Genre](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre) with that in mind, and note that the [Terrain engine](https://sonicweaver.com/blog/terrain-engine-the-last-few-seconds-as-landscape) has a mode built specifically for wide, soft, slow backgrounds. **Sources** - [W3C: Web Content Accessibility Guidelines (WCAG) 2.2](https://www.w3.org/TR/WCAG22/) - [MDN: prefers-reduced-motion](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion) --- ### The Novus Public Read API: Five GET Endpoints and No Keys URL: https://sonicweaver.com/blog/public-read-api-v1-walkthrough Published: 2026-07-30 · Updated: 2026-09-12 · Author: Novus Team · 8 min read /api/v1 is an unauthenticated, read-only JSON API with five endpoints, CORS open to everyone and a rate limit instead of a signup form. Here is every route and what it returns. Novus Visualizers already publishes a machine-readable surface over [MCP](https://sonicweaver.com/mcp-server), which is exactly right if your client speaks JSON-RPC and useless if it does not. `curl` does not. Neither does a spreadsheet, a crawler, or the twelve-line script someone writes on a Tuesday. `/api/v1` is the way in for all of those. It is unauthenticated, read-only, rate-limited, and identical in shape on every Novus site, so one client can walk the whole estate from any entry point. There are no keys to request and no dashboard to sign up for, because there is nothing to meter beyond a request budget. #### The five endpoints 1. `/api/v1` returns the index: the site name, its one-line description, the API version, a map of every other endpoint, and `readOnly: true` stated in the body. 2. `/api/v1/health` returns `status`, the deployed `version` and an ISO `time`. It is the only route that is never cached. 3. `/api/v1/site` returns the site's name, canonical URL, description, version, and the URL of its MCP endpoint. 4. `/api/v1/capabilities` returns a `count` and a list of what this site can do, each entry a `name` and a `description`. 5. `/api/v1/siblings` returns a `count` and every other Novus property, so a client that found one site can find them all. Responses are JSON, pretty-printed with a trailing newline, which means piping one straight into a terminal produces something a person can read without a formatter. #### Capabilities are a projection, not a second list The obvious way to build a `/capabilities` endpoint is to write an array of endpoint descriptions by hand. That array is a second copy of the MCP tool catalog, and the two drift the first time a tool is renamed, silently, because nothing compares them. So this one is derived. Each capability is an MCP tool's own name and its own description, taken verbatim from the catalog the site already built for its MCP server. On Visualizers that means you get `list_capabilities`, `find_engine`, `get_engine`, `list_overlays` and `list_novus_sites` over REST, with the same wording an AI client sees. Rename a tool and the REST endpoint renames it in the same commit, or a test fails. > **A capability is not an endpoint** > These entries describe what the site can tell you, not five more URLs you can GET. They are JSON-RPC tools with no page of their own, which is why none of them carries a link. To actually call one, use the MCP endpoint; to know what exists without speaking JSON-RPC, read this. #### Read-only, and what happens when you forget Every route answers **GET** and **OPTIONS**, and nothing else. Send a POST, PUT, PATCH or DELETE and you get `405` with a body of `{ "error": "method_not_allowed" }`, the message *This API is read-only. Use GET.*, and an `Allow: GET, HEAD, OPTIONS` header naming what would have worked. That is enforced twice on purpose: the route files export no write verb at all, so the framework itself would refuse one, and the shared handler refuses a write verb even if a route ever exported it by accident. Either guard alone can be defeated by a single edit; both together cannot be defeated by one. There is no admin layer either. No key issuance, no usage console, no per-caller quota you can raise. If those are ever wanted they are a product decision, not a quiet addition to a read endpoint. #### CORS is wide open, and that is not a loosening Every response carries `Access-Control-Allow-Origin: *`, allows `GET, OPTIONS`, accepts a `content-type` request header and caches the preflight for a day. `OPTIONS` is exported alongside `GET` on every route, because without it a browser preflight would hit a framework 405 and every browser caller would fail before its real request. The permissive origin protects nothing to give away, because there is nothing to protect: every byte served here is already public on the site's own pages, no response reads a row belonging to a person, and there is deliberately no `Access-Control-Allow-Credentials`, so a browser cannot be talked into attaching a session to one of these requests. Restricting the origin would block exactly the browser clients the API exists for. #### Caching and the rate limit The four cacheable routes send `public, max-age=300, s-maxage=600, stale-while-revalidate=86400`. A burst after expiry is served instantly from the edge while a single request refreshes behind it, which is what keeps a crawler from becoming the origin's problem. `/health` sends `no-store`, because a cached health check reports the past and a health check that reports the past is worse than none. Beyond the cache there is a rate limit of **60 requests per minute**, keyed on the caller and scoped **per route**. The scoping is the useful part: someone hammering `/capabilities` cannot exhaust the budget for `/health` and take the site's own monitoring down as collateral. Exceed it and you get a rejection carrying a `Retry-After` telling you how many seconds to wait. > **Poll politely** > Five minutes of freshness is baked into the cache headers, so polling faster than that mostly buys you the same bytes. For a status board, once a minute against `/health` is inside the budget with room to spare and is the only route that will ever tell you something new that quickly. #### Walking the estate `/api/v1/siblings` is the endpoint that makes the rest of it worth building. It lists the portfolio hub plus every Novus app, and because the API's shape is identical on all of them, a client can request `siblings` from whichever site it happened to find, then request `site` and `capabilities` from each one in turn. Discovery from any entry point, in three request types, with no registry to keep in sync. #### What it will not give you It will not render or export a visualizer. Every frame Novus produces is drawn in a visitor's own browser tab from audio that visitor chose, so there is no server holding a canvas to ask. It will not return your saved projects, your library or anything else behind a sign-in; those are per-visitor and are deliberately unreachable here. And it will not accept a write, ever, at this version. If what you actually want is the catalog in depth (which modes an engine has, which controls follow the audio, what a scene costs to run), that is what the [engine reference](https://sonicweaver.com/help/visualizers) publishes for humans and what `find_engine` and `get_engine` answer for machines. For the terms used in both, the [glossary](https://sonicweaver.com/glossary) is the shared vocabulary. **Sources** - [MDN: Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS) - [MDN: 405 Method Not Allowed](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/405) --- ### Search Across Novus: Engines, Modes, Creators, Community and Sound Effects URL: https://sonicweaver.com/blog/search-across-novus-engines-creators-community Published: 2026-07-29 · Updated: 2026-09-12 · Author: Novus Team · 7 min read One search box covers the whole catalog, every creator profile, published community visualizers and the sound-effect library. Here is what it matches on, and how to make it find the thing you mean. A catalog of 29 engines and 180 modes is more than anyone browses page by page, and that is before you add creator profiles, published community visualizers and the sound-effect library. [Search](https://sonicweaver.com/search) is the shortcut across all four at once, and it behaves in a few specific ways that are worth knowing before you fight it. #### Four result groups, one query Type once and the page answers in up to four sections, each capped at nine results so no single group can push the others off the screen: - **Engine templates**, linking straight to that engine's page in the [template gallery](https://sonicweaver.com/templates), with its mode count on the card. - **Creators**, linking to a public profile. - **Community visualizers**, linking to the published post. - **Sound effects**, linking into the [Audio Effects Generator](https://sonicweaver.com/audio-effects) with the preset name already in the query string. Tabs across the top let you narrow to one group. They do not re-run the search; the results are already in the page, so switching tabs is instant and costs nothing. *Figure: A grid of six engine cards showing bars, waveform, ring, particle, geometric and typographic glyphs: Engine templates are one of four result groups. Each card carries the engine's description and how many modes it ships with.* #### What the engine search actually reads This is the part that changes how you phrase a query. An engine matches if your text appears in its **label**, its **description**, its **focus** line, **or in any of its modes' labels and blurbs**. The mode text is the reason searching for something the catalog never named as an engine still works. Search *kaleidoscope* and you get [Lattice](https://sonicweaver.com/templates/lattice), because Lattice ships a Kaleidoscope mode. Search *laser* and you get [Stage Lights](https://sonicweaver.com/templates/stage). Search *contour* and you get [Terrain](https://sonicweaver.com/templates/terrain). None of those words is an engine name; all three are the fastest route to the engine that does the thing. > **Describe the look, not the product** > The mode blurbs are written as descriptions of what appears on screen, so plain visual words tend to land: *ridge*, *truss*, *halo*, *starfield*, *silhouette*, *chase*. If a word gets you nothing, try the thing you would say to a friend pointing at a screen. #### Two characters, and a quarter of a second Nothing is searched until you have typed at least two characters, on both the client and the server. Below that the page shows its empty state instead of an empty result set, which is a different message and a truer one. Your keystrokes are debounced by 250 milliseconds, so a request goes out a quarter of a second after you stop typing rather than once per letter. A request already in flight when you type again is aborted. The practical effect is that typing a long query is one search, not fifteen. The query is also capped at 80 characters server-side and trimmed. Pasting a paragraph into the box is not an error; it is just a search for the first 80 characters of it. #### Creators, and what privacy means here The creator search matches on username, display name and bio. It returns only accounts that are **not banned** and whose profile privacy is set to **public**. A private profile is not merely hidden from the results page: it is excluded by the database query, so there is no ranking trick or crafted term that surfaces one. #### Sound effects are searched in your browser The SFX group is the odd one out. The preset library ships with the page, so that group is filtered locally over each preset's name, category, description and tags, with no request at all. It is instant, it works while the network group is still loading, and it is the reason the result count can tick upward a moment after you stop typing. #### Your search is a URL As you type, the address bar is updated to `/search?q=your+query` with a history replace rather than a push, so the query is shareable and bookmarkable while your browser Back button still takes you to the page you came from instead of walking backwards through every letter you typed. > **This page is deliberately not in Google** > The results page carries a noindex directive. Internal site-search results are thin, infinitely variable by query string, and duplicate the template, community and glossary pages that are properly submitted. Links out of it are still followed, which is the only thing a crawler should want from a results page. #### When search is the wrong tool Search is a shortcut to a known target. When you do not yet know what you want, the browsable surfaces are better: the [template gallery](https://sonicweaver.com/templates) can be filtered by category, render load and setup effort; the [engine reference](https://sonicweaver.com/help/visualizers) lays out every engine's live control table; and the [glossary](https://sonicweaver.com/glossary) is the place to go when the problem is that you do not yet have the word. For choosing between engines by ear rather than by name, [Choosing the Right Visualizer Engine for Your Genre](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre) is the guided version of the same question. --- ### One Composition, Two Editors: Multi-Layer Stacks, Graph Effects & Classic↔Studio Parity URL: https://sonicweaver.com/blog/studio-classic-multilayer-composition-parity Published: 2026-07-28 · Author: Novus Team · 10 min read How Novus keeps engine layers, geometry, logos, node-graph effects and audio bindings intact when you move a multi-layer composition between Creator Studio and the Classic editor. A single engine look is easy to move between tools. A **stack** (particles behind a spectrum, a logo crown in the center, a geometry matte, and a graph that routes bass into glow) is where most creative apps quietly lose fidelity. One editor flattens the graph. Another drops overlays after a second of playback. Suddenly the scene you built is not the scene that renders. Novus treats Classic and Studio as two views of the **same composition document**, not two exporters that approximate each other. This post explains what that document contains, how multi-layer stacks survive the Studio→Classic handoff, and how merge and effect nodes actually change the frame in both editors. #### One document, several surfaces When you save or hand off a project, Novus is not saving a screenshot. It stores the editable instructions needed to rebuild the frame: canvas size, engine layers and modes, geometry and logo layers, parameter base values, keyframes, audio bindings, modulation bindings, the node graph, timeline ranges and render settings. [Creator Studio](https://sonicweaver.com/studio) exposes layers, graph routing and timeline curves. The [Classic editor](https://sonicweaver.com/editor) is the guided customize-and-export surface. Both read and write that composition. *Figure: Diagram of stacked layers feeding a shared composition document used by Studio and Classic: Layers, graph and timeline are views of one document. Switching editors should not invent a second project.* > **Classic leaves what it cannot edit untouched** > If Classic does not show a graph editor, it still preserves the graph on the composition. Opening Studio again should restore the same nodes and connections rather than discarding them. #### What a multi-layer stack looks like in practice In Studio you can add more than one engine layer, for example a full-frame particle field under a spectrum, or a radial Logo Crown over a soft bloom. You can also add geometry, media, logo and text layers. Order, opacity, blend and visibility matter: the bottom of the stack is usually atmosphere; the top is the readable brand or lyric beat. - **Engine layers:** Particles, Spectrum, Waveform, Radial, Tunnel, Trails, Bars, Bloom and Character Motion, each with a mode and its own controls. - **Geometry layers:** 2D/3D shapes used as structure, mattes or focal frames rather than as a separate visualizer family. - **Logo and media layers:** brand marks and stills positioned with scale, glow and safe-zone awareness. - **Graph nodes:** audio-source, remap, math, envelope, LFO, random, merge, effect, feedback and output routes that modulate parameters over time. For the branding-centered case (a reactive ring that leaves room for a mark) start from Radial → Logo Crown or follow [Make a Logo Visualizer](https://sonicweaver.com/blog/make-a-logo-visualizer). For a first wired graph, [The Creator Studio Node Graph](https://sonicweaver.com/blog/studio-node-graph-first-composition) covers the beginner path; this post focuses on what has to stay true when that graph meets Classic. #### The Studio → Classic handoff Opening Classic from Studio ships the full `NovusComposition` through session storage rather than baking a reduced pack. Classic then projects engine layers into its overlay model and marks a single **classic primary** engine so the template controls stay unambiguous. Additional engine layers remain as overlays instead of disappearing after a beat of playback. 1. Build and audition the stack in Studio with live or sample audio. 2. Confirm layer visibility, order and which engine should be primary for Classic's guided controls. 3. Use **Open in Classic** (or export a `.novusvis` pack if you need a portable copy). 4. In Classic, verify every engine overlay is still present after several seconds of playback, not only on the first frame. 5. Export from Classic when captions, Beat FX, overlays or platform presets are the last mile. > **Primary is intentional** > If two engines both try to act as the sole primary, Classic can look like it is fighting itself. Keep one classic-primary engine and treat the rest as overlays so Dynamic Controls map to a stable target. #### Graph effects that actually evaluate Merge and effect nodes are not decorative shells. Studio evaluates the graph every preview frame; Classic runs the same evaluator against `composition.graph` during render. Modulation bindings resolve into layer parameters so an LFO or bass route can push glow, speed or thickness in both surfaces. - **Audio-source / remap / math / envelope / LFO / random:** shape continuous signals before they hit a control. - **Merge:** combine streams that should jointly drive a target instead of overwriting each other blindly. - **Effect:** glow, blur, mirror, shake, chromatic shift, color grade and trail persist applied as graph post-FX. - **Feedback:** carefully looped influence; the graph validator rejects cycles that would hang evaluation. Post-FX intensity is applied **once on a composite**, not independently on every overlay canvas. That keeps a three-engine stack from looking three times as blurry in Classic as it did in Studio. Engine-level glow and blur controls still feed the Canvas2D engines for per-layer look; the graph effects sit on top of the finished frame. *Figure: Signal chain from audio through graph nodes into engine parameters and a final composite effect pass: Audio → graph → parameters → engines → one composite effect pass. Same path in Studio preview and Classic playback.* #### Controls that must mean the same thing Parity fails when Studio exposes a knob the runtime ignores. Novus routes shared V3 catalog controls (speed, turbulence, sensitivity, `audioAmount`, `beatSyncAll`, geometry shape stamps, trail decay, baseline and peak hold) into `UnifiedCanvasEngine` so Inspector changes and Classic Dynamic Controls move the same drawing path. If you push speed and turbulence toward their limits in Studio, Classic should not silently reapply lifeless defaults. Audio bindings still use the same vocabulary as [Every Audio Reactivity Control, Explained](https://sonicweaver.com/blog/audio-reactivity-controls-explained): source, mapping range, attack, release, contribution and blend. Modulation bindings from the graph are applied in the same resolve step so a wired envelope is not Studio-only theatre. #### Portable packs still matter Session handoff is convenient on one machine. A `.novusvis` pack is the recoverable copy: composition, graph, bindings and layer order without depending on a particular browser tab. Export before a risky restructure, a collaboration pass or a long break. Re-import into either editor when you need the stack again. Durable cloud saving is covered in [Save Once, Create Everywhere](https://sonicweaver.com/blog/save-projects-across-devices-and-apps). #### A parity checklist before you export 1. Play the stack for at least ten seconds in Studio. Confirm every layer and graph-driven motion is visible. 2. Open Classic and play again; overlays should remain after the first beat, not vanish. 3. Tweak a shared control (speed, glow, sensitivity) in Classic and confirm the canvas responds. 4. If you use effect nodes, compare intensity: Classic should match Studio's single composite pass, not stacked blurs. 5. Export a short clip or still; check logo safe zones and caption space with [Framing Your Visual](https://sonicweaver.com/blog/framing-safe-zones-and-aspect-ratios). The point of parity is creative confidence: build the ambitious version in Studio, finish platform details in Classic, and trust that particles-plus-spectrum-plus-logo is still particles-plus-spectrum-plus-logo when the export encoder starts. When you are ready to share a frozen revision, [publishing](https://sonicweaver.com/blog/private-draft-to-community-remix) captures that same composition document for the community without rewriting your private draft. --- ### Preview Before You Commit: Template Audio, Six-Mode Cycling & Logo Crown URL: https://sonicweaver.com/blog/template-audio-previews-mode-cycling-logo-crown Published: 2026-07-28 · Author: Novus Team · 9 min read How Novus template cards play real sample audio, cycle an engine's six modes on hover, and how Logo Crown turns a brand mark into a radial visualizer you can open in Studio or Classic. Choosing a visualizer from a still thumbnail is guessing. The motion that sells a look (a bass punch, a radial bar crown, a trail that dissipates and reforms) only appears when audio is moving the engine. Novus templates are built so you can **hear** the reaction before you commit to an edit session. This guide covers three product surfaces that work together: live template previews with copyright-safe sample audio, hover cycling through each engine's six modes, and the Logo Crown radial workflow for brand-centered scenes. Along the way it ties those previews to the same beat-sync controls you will tune later in the [Classic editor](https://sonicweaver.com/editor) or [Creator Studio](https://sonicweaver.com/studio). #### Why a still is not enough A static card can show color and silhouette, but it cannot show onset timing, trail decay or how aggressively a tunnel rushes on the kick. Earlier template detail pages could look like they were only gently pulsating because the preview used a synthetic audio frame: a beat-shaped pulse without a real track. That is useful for offline capture, but it is a poor audition of musical motion. Template detail previews now route through the same sample-audio path the Audio Library and hover cards use: a proxied, copyright-safe SoundHelix track selected for the engine. You get real FFT bands, waveform samples and beat onsets driving the V3 canvas, so Spectrum, Radial and Particles behave like they will with your own upload, just with a known demo song. > **Preview music is for auditioning, not for your release** > Sample tracks help you judge motion. Your export should use audio you own or have licensed. See [Free Preview Music, Copyright and Your Uploads](https://sonicweaver.com/blog/free-preview-music-and-licensing) for the boundary between platform libraries and Content ID. #### Hover previews and six-mode cycling On the [templates](https://sonicweaver.com/templates) grid, engine cards can start a live preview on hover (desktop) or when they enter the viewport on capable mobile devices. While the preview runs, Novus cycles the engine's **six modes** on a short interval so you see dust-storm versus orbit-swarm, or pulse-orb versus logo-crown, without opening six separate pages. - Each V3 family (Particles, Trails, Spectrum, Waveform, Radial, Tunnel, Bars, Bloom, Character Motion) ships six modes with distinct default overrides. - Mode pills on the detail page deep-link with `?mode=` so you can share or bookmark an exact look. - Companion modes stay within the same engine so you compare personality, not an unrelated family. - When you click through to Edit, the selected engine and mode become the starting composition rather than a generic default. *Figure: Grid of visualizer engine families each with multiple mode tiles: Nine engines, six modes each. Hover cycling is a fast way to audition the roster before you open the editor.* If you already know the genre fit you want, [The Right Visualizer Mode for Every Genre](https://sonicweaver.com/blog/visualizer-modes-by-genre) and [Meet the Novus Visualizer Engines](https://sonicweaver.com/blog/meet-the-nine-visualizer-engines) map families to musical jobs. Use the live preview when you need to confirm *this* mode's motion, not just its thumbnail color. #### What beat sync should look like in a preview A healthy preview is not a continuous zoom. Particles should spawn or shake on onsets, spectrum and bars should punch with bass energy, radial rays should deform with the FFT, tunnels should rush with low-end, and trails should accelerate or burst rather than drift forever. Shared controls (sensitivity, `audioAmount`, `beatSyncAll`, attack and release) feed every engine's energy helpers so the catalog knobs you see in Studio and Classic are the same knobs moving the canvas. - **Sensitivity:** how easily quiet material reaches a visible response. - **Audio amount:** how much of the drawing is driven by audio versus idle motion. - **Beat sync all:** a global emphasis so pulse, shake and onset paths stay engaged. - **Attack / release:** how quickly the response rises and falls after a hit. For the vocabulary of pulse, hits and shake, read [Beat Sync Explained](https://sonicweaver.com/blog/beat-sync-explained-pulse-hits-and-shake). For the full control strip, [Every Audio Reactivity Control, Explained](https://sonicweaver.com/blog/audio-reactivity-controls-explained) is the reference. #### Logo Crown: a radial built for a brand mark **Logo Crown** is the Radial mode that clears a center safe zone and draws frequency rays around it: a reactive EQ ring rather than a solid pulsing disc. On the templates side it appears as Radial → Logo Crown (`/templates/radial?mode=logo-crown`). In Studio you can add a logo layer on that cleared center; in Classic you can place `logoImage` with size and glow so the mark sits inside the crown. 1. Open Radial → Logo Crown from templates and let the sample audio drive the rays. 2. Click through to Studio or Classic with that mode selected. 3. Add or upload your logo; keep it inside the safe zone so bars never clip the mark. 4. Tune thickness, inner radius / center safe zone, sensitivity and colors until the crown reads at thumbnail size. 5. Optional: stack a soft particle or bloom layer underneath for atmosphere without covering the logo. > **The thumbnail test still wins** > Pause on a loud beat and shrink the preview. If the logo vanishes into glow or the rays look like noise, reduce bloom, thicken the mark, or pull the safe zone outward. [Make a Logo Visualizer](https://sonicweaver.com/blog/make-a-logo-visualizer) walks the branding checks in more detail. *Figure: Radial visualizer still showing a circular center suitable for a logo crown: Radial families are built for center-weighted branding. Logo Crown keeps that center readable while the spectrum lives on the ring.* #### From template audition to a real project Auditioning is not editing. Once a mode feels right, open it in an editor, replace the sample track with your song, and save. Guests can export immediately; signed-in creators get durable projects and the unified library. Multi-layer stacks that start from a template plus a second engine should follow the parity checklist in [One Composition, Two Editors](https://sonicweaver.com/blog/studio-classic-multilayer-composition-parity) so overlays survive the Studio↔Classic handoff. 1. Pick a family on [/templates](https://sonicweaver.com/templates) and watch the hover cycle through modes. 2. Open the detail page and play the sample-audio preview at 30 or 60 FPS labeling: judge motion, not just color. 3. Select the mode that matches the song's job (atmosphere, beat punctuation, brand ring, lyric/glyph field). 4. Edit in Classic for guided export or Studio for layers and graph routing. 5. Export platform sizes with [Export Settings for YouTube, Shorts, TikTok & Reels](https://sonicweaver.com/blog/export-settings-youtube-shorts-tiktok). #### Character text when the "logo" is a word Not every centerpiece is an image. Character Motion modes such as word-wave and glyph-field let you set `displayText` and `glyphSet` so letters themselves deform on the beat. Use that when the brand is a name, a drop, or a short lyric hook rather than a mark file. Keep the string short enough to read at mobile width, and bind deformation to mid or onset if bass-only warping makes the word illegible. Template previews, mode cycling and Logo Crown exist so you spend less time guessing and more time finishing. Hear the reaction, pick the mode, place the brand, then take the same composition into Studio or Classic knowing the audio path and the engine roster are already the ones your export will use. --- ### From Private Draft to Community Remix: Publishing on Novus URL: https://sonicweaver.com/blog/private-draft-to-community-remix Published: 2026-07-27 · Author: Novus Team · 9 min read How immutable publication, public preview derivatives, unlisted posts, attribution and remixing keep source projects private while ideas travel. Saving and publishing are intentionally different actions in Novus. Saving protects work for *you*. Publishing chooses one version to show *other people*. Nothing in your creator library becomes public because you added a title, uploaded a logo or signed in; a project reaches the community only after you open the publish flow and confirm it. That distinction makes the community useful without turning the editor into a social network that watches every draft. You can iterate privately for days, publish one strong version, keep changing the private project afterward, and know that the public post will not mutate underneath the people who saved or remixed it. #### Private by default means private until you act Projects, source audio, uploaded images, models, fonts and brand assets begin private. The community feed cannot browse your library, and another creator cannot open an editor from your private project ID. The **Publish immutable revision** action in the [creator library](https://sonicweaver.com/dashboard) is the boundary between those two worlds. > **A profile is not publication** > Creating a username, avatar or bio makes a creator identity; it does not expose your projects. Your profile shows community work only after you publish it. #### What publication freezes Publishing creates a new project revision whose kind is `published`, then points the community post at that exact revision. The frozen composition includes the layer order, engine modes, control values, graph, timeline, captions and referenced public-safe material needed to understand the work at that moment. - The post title, description and up to eight useful tags describe the release in search and feeds. - The selected project revision stays fixed even if the private working project reaches revision 40 later. - A separate renderer capture becomes the public preview; the private source asset is not repurposed as a public file. - The author, source post and remix relationship become durable attribution data rather than text someone can delete from a caption. *Figure: Diagram of one published visualizer revision becoming several attributed remix variations: One frozen source, several new editable copies. Remixing branches the work; it does not rewrite the original.* #### Why the preview is a separate file A public post needs something fast and safe to show in a feed, but the project may contain a full-resolution master, private audio, a licensed font or a model you never intended to distribute. The publish form therefore asks for a real renderer still and stores it as a **public preview derivative**. Community cards load that derivative, not the private project assets behind it. Choose a frame that represents the composition at its best: use a musically active moment, keep important geometry away from the crop edges, and confirm the logo or text is readable at card size. [Framing Your Visual](https://sonicweaver.com/blog/framing-safe-zones-and-aspect-ratios) covers the same thumbnail and safe-zone checks in depth. #### Public or unlisted A **public** post can appear in the community feed and search. An **unlisted** post has a shareable page but stays out of the public feed, which is useful for feedback, a client approval link or a portfolio piece you do not want indexed alongside open community work. Both choices are publication: use unlisted for controlled reach, not as a substitute for private storage. #### What people can do with a published post - **Like** to send a lightweight signal to the creator and help useful work surface. - **Save** to keep a reference in your own account without copying or editing the composition. - **Follow** the creator so their future public work is easier to find. - **Comment** with feedback that remains attached to the post rather than getting lost in a separate message thread. - **Remix** when the creator has published a composition you want to build on; Novus creates a new private project copy for you. - **Report or block** when content or interaction crosses the community guidelines. #### A remix is a copy with a memory Remixing reads the source's frozen revision, assigns the copy a new project ID and owner, and opens it as a private editable composition in the remixer's library. The new project starts from the published settings, but future edits belong to the remixer. The source post remains unchanged. The important part is attribution: the remix records where it came from, and a remix published later keeps that relationship. Attribution is structural, not a courtesy line someone has to remember to paste. It gives viewers a path back to the original and gives the original creator credit as an idea spreads. #### Prepare a project people can understand 1. **Name the idea, not the engine.** *Midnight Transit* tells people more than *Tunnel test 7*. 2. **Write a short description of the visual rule.** Mention the audio source, the motion idea and any central logo or lyric treatment. 3. **Use specific tags.** `ambient`, `radial`, `logo` and `bass` are useful; `cool` and `video` are not. 4. **Capture an honest preview.** Do not upload unrelated cover art or a frame the composition cannot actually produce. 5. **Test the frozen version.** Save, reopen and export the project before publishing so the community is not your first regression test. > **Publish the readable version** > A community preview is small. Pull back excessive glow and motion echo, check the busiest beat, and choose a frame with a recognizable silhouette. The best editor preview is not always the best feed card. #### Rights and private source material still matter Publishing a visualizer does not grant rights to the music, images, models, lyrics, fonts or trademarks inside it. Use material you own, have licensed, or are allowed to share. A private audio master may remain private, but the public preview and description still need to respect the rights of everyone represented in them. If you want a track that is safe for demonstrations, the [Audio Library](https://sonicweaver.com/audio-library) is the simplest starting point. For the difference between platform libraries, Content ID and music baked into an export, read [Free Preview Music, Copyright and Your Uploads](https://sonicweaver.com/blog/free-preview-music-and-licensing). #### Reporting, blocking and moderation Community tools include reporting for posts, comments and behavior, blocking controls, creator visibility choices and moderation records. Reports are reviewed against the [Community Guidelines](https://sonicweaver.com/community-guidelines); privileged actions are audited. Blocking is for controlling your own experience, while reporting is for material the moderation team should evaluate for everyone. #### Updating a public idea without rewriting history Because a published revision is immutable, improving the private project does not silently replace what earlier viewers saw or what a remix used. Make the changes in your library, save them as a new revision, and publish a new post when the update deserves its own public moment. The old post remains an accurate record of the version people originally reacted to. That model is the core of the Novus community: private work until you choose otherwise, stable references after you publish, and editable copies when inspiration becomes a remix. If you still need to make the project durable before sharing it, start with [Save Once, Create Everywhere](https://sonicweaver.com/blog/save-projects-across-devices-and-apps); when you are ready, open the [community](https://sonicweaver.com/community) to see how other creators describe and present their work. --- ### Save Once, Create Everywhere: Projects, Autosave & the Unified Novus Library URL: https://sonicweaver.com/blog/save-projects-across-devices-and-apps Published: 2026-07-27 · Author: Novus Team · 10 min read How guest sessions, signed-in autosave, revision conflicts, private assets and the unified library work together to keep your Novus projects recoverable. A creative tool earns trust in a very simple way: when you come back, your work is still there. That sounds obvious until a browser tab crashes, site data gets cleared, or you open a different device and discover that the version in front of you is not the version you finished last night. Novus is deliberately **guest-first** for making and exporting, but durable saving is account-based. That split keeps the first session fast and private while giving longer projects a proper home when you decide they matter. This guide explains exactly where each kind of work lives, what autosave is doing, and how to keep a recoverable copy at every stage. #### Guest creation and durable saving are different promises You can open the [Classic editor](https://sonicweaver.com/editor), [Creator Studio](https://sonicweaver.com/studio), lyric tools, cover and Canvas tools, or SFX tools without creating an account. Your source media stays in the browser while you work, and you can export a finished file as a guest. That is the shortest path from an idea to a deliverable. A guest session is not a cross-device project library. Browser storage belongs to that browser profile, can be limited in private browsing, and disappears when site data is cleared. Signing in is the point where a composition becomes a durable Turso-backed project with an owner, a revision number and a place in your creator library. > **Save is the boundary** > If you are experimenting, staying a guest is fine. If you would be upset to rebuild the project, save it to an account or export a `.novusvis` copy before you close the session. #### What a saved visualizer project actually contains Novus does not save a screenshot of the canvas. It saves the **composition document**: the editable instructions needed to rebuild the same frame. That is why a saved project can reopen in either editor without flattening your work into a video. - Canvas size, aspect ratio, frame rate, background, camera, lighting and quality choices. - Engine, geometry, media, logo, text, lyric, group, mask and effect layers in their exact order. - Every control's base value, keyframes and audio bindings, including attack, release, mapping range and contribution. - The node graph, validated connections, timeline ranges, markers, transitions and loop points. - Asset references and render settings, without embedding temporary browser Blob URLs into the document. *Figure: Diagram showing one composition shared by the canvas, layers, graph, inspector and timeline: One document, several views. The editors change the same composition rather than maintaining separate copies of it.* #### Reading the autosave status Once a signed-in project has a cloud identity, edits are debounced so dragging a control does not write to the database sixty times a second. Novus waits briefly for the burst of editing to settle, then saves the newest composition. It also flushes when the page is hidden and retries when the browser comes back online. - **Saving:** a validated project update is in flight. Keep the tab open until it resolves. - **Saved:** the server accepted the latest revision token and returned the next one. - **Offline:** the browser cannot reach the save endpoint; the editor keeps your current in-memory work and retries after reconnecting. - **Conflict:** another tab or device saved a newer revision first. Novus refuses to overwrite it silently. - **Failed:** validation or the save request failed. Use manual save again after checking the message, and export a pack if the problem persists. #### Why revision conflicts are a feature Every successful save replaces the project's revision token. The next write must present that exact token. If two devices start from revision 12 and one saves revision 13, the other device's old token is rejected instead of turning revision 13 back into yesterday's work. That rejection is the conflict state. When you see a conflict, do not keep editing blindly. Export the current composition as a `.novusvis` pack, open the latest cloud version in a fresh tab, and decide which changes to keep. The pack turns a scary overwrite decision into an ordinary comparison with two intact copies. #### Autosaves, manual saves and milestones High-frequency autosaves update the current project efficiently; they are not intended to become an endless undo archive. A **manual save** is the explicit checkpoint you make before a risky edit or when you finish a session. A **milestone** is the named version worth remembering, for example *logo lockup approved* or *vertical mix ready*. Those deliberate revisions are retained separately from routine autosave traffic. #### Classic and Studio open the same work The [Classic editor](https://sonicweaver.com/editor) is the fast, guided view of the document; [Creator Studio](https://sonicweaver.com/studio) exposes layers, graph routing, timeline curves, rigging and deeper geometry. Switching between them does not convert the project into a reduced format. Classic leaves graph data it cannot edit untouched, and Studio reads the same engine controls and layer order. > **Use the simplest surface that can finish the job** > Make fast palette, mode and export changes in Classic. Open the same project in Studio when you need multi-layer timing, a custom audio route or path editing. The save belongs to the project, not to one editor. #### Uploaded audio is a separate choice A composition and its source audio have different privacy and storage costs. The project document is small enough to save routinely. A master WAV can be hundreds of megabytes, so Novus asks whether the audio should join the private cloud project. If you decline, the project keeps its fingerprint, trim and analysis metadata but another device will ask you to reattach the matching track. If you opt in, the source file is stored as a private Blob asset and referenced by ID. Community pages never receive that private master; publication uses a separate preview derivative. You can make the storage decision per project rather than accepting one permanent rule for every song. #### One library for every Novus output The [creator library](https://sonicweaver.com/dashboard) is broader than visualizer projects. Its purpose is to keep the pieces of a release together even when they came from different Novus tools. - Visualizer compositions from Classic or Studio. - Lyric videos and caption-led projects. - Cover art and short Canvas loops. - Saved SFX presets and reusable audio ideas. - Brand kits and platform-specific release variants. That shared library is what makes *save once, create everywhere* practical: a logo, palette, SFX preset or project variant can stay attached to your account instead of becoming an unnamed download scattered across devices. #### A recovery-minded workflow 1. Start as a guest if you want; sign in before the project becomes expensive to recreate. Saving after login claims the current composition instead of making you start over. 2. Wait for **Saved** before closing a device or opening the same project somewhere else. 3. Create a manual checkpoint before restructuring layers, replacing audio or rebuilding the graph. 4. Export a `.novusvis` pack before a major migration, collaboration handoff or long break. 5. Keep at least one recovery code offline or register a passkey. Novus has no email reset link, so account recovery depends on the methods you control. The goal is not to make you think about storage every five minutes. It is to give each stage the right safety net: a lightweight guest session for trying ideas, revision-aware cloud saving for real projects, and a portable pack when you want a copy that answers only to you. When the project is ready for other people, the next step is explicit rather than automatic: [publishing an immutable community revision](https://sonicweaver.com/blog/private-draft-to-community-remix). --- ### Every Audio Reactivity Control, Explained: Source, Dynamics, Attack and Beat Response URL: https://sonicweaver.com/blog/audio-reactivity-controls-explained Published: 2026-07-26 · Author: Novus Team · 9 min read The Audio panel is a signal chain, not a pile of sliders. Here is what each control does, the order they apply in, and how to fix a visual that pulses instead of reacting. There is a specific kind of disappointment that hits when a visualizer *technically* reacts to your track but does not feel like it. Everything on screen swells and shrinks together, in time with nothing in particular, and no amount of dragging sliders seems to fix it. The usual reaction is to turn something up. The usual result is that it swells harder. The fix is almost never one control. The Audio panel is a **signal chain**: a series of stages that each transform the last one's output before the number ever reaches the picture. Once you know the order, the panel stops being guesswork, because you can tell which stage is flattening your track and go straight there. *Figure: Diagram of the audio signal chain from source selection through envelope to the rendered frame: Source → contribution → dynamics → sensitivity → envelope. Every stage runs in this order, every frame.* #### Stage 1: Primary audio source **Primary audio source** picks which measurement drives the engine. Three of the options are frequency bands (`bass`, `mid` and `treble`) and the rest are whole-signal measurements: `rms` (average loudness), `peak` (the loudest sample in the window), `onset` (how sharply the sound just changed), `beat` (how strongly a beat is landing right now) and `bpm-phase` (a smooth sweep that completes exactly once per beat). This is the single highest-leverage control in the panel and the one most people never touch. A kick-driven house track wants `bass`. A vocal-forward pop mix usually reads better on `mid`, because the vocal is where the emotional movement lives and the bass is a steady four-on-the-floor that produces steady, boring motion. Hi-hat-heavy trap benefits from `treble`. And `bpm-phase` is the odd one out: it ignores loudness entirely and just sweeps in time, which is exactly what you want for motion that must stay perfectly metronomic regardless of how the mix is behaving. > **The two-minute source audition** > Load your track, then step the source through `bass`, `mid` and `treble` while a busy section plays. You will usually know within a few seconds which one is moving with the part of the song you care about. Everything else in the panel is fine-tuning on top of that choice. #### Stage 2: Audio contribution and Audio dynamics **Audio contribution** caps how much of the visual the audio is allowed to control, from 0 to 1. At 0 the scene ignores your track and idles on its own motion; at 1 the audio drives it as hard as the engine allows. Most catalog scenes ship somewhere between 0.55 and 0.9, tuned per mode. **Audio dynamics** is the one to reach for when a scene feels twitchy rather than under-reactive. Instead of scaling the signal, it scales the signal's *movement around its resting level*. At 1 you get the full swing of the track. At 0 the band holds steady, so the scene stays lit and present but stops jumping: the calm, constant look that suits an ambient or lo-fi backdrop where the visual should not compete with the music. Turning dynamics down is very different from turning contribution down: contribution dims the visual, dynamics only settles it. #### Stage 3: Sensitivity **Sensitivity** is a straight gain stage from 0 to 3, applied after the routing above. It is the right control for a quiet master that is not driving the visual hard enough, or a brickwalled one that pins everything at maximum. Unlike source and dynamics, it changes nothing about *what* the visual responds to, only how much. Reach for it last, once the source is right. #### Stage 4: Audio attack and Audio release These two are the reason a good visualizer feels *musical* rather than merely synchronized. **Audio attack** (in milliseconds) is how fast the visual rises when the sound gets louder. **Audio release** is how slowly it falls back when the sound goes away. Together they are an envelope follower, the same idea as a compressor's attack and release. - **Short attack, short release** (say 10 ms / 80 ms): snappy and percussive. Every hit registers. Great for drums, punishing on a sustained pad. - **Short attack, long release** (20 ms / 600 ms): hits land instantly then bloom outward and fade. This is the setting that reads as *expensive* on most material. - **Long attack, long release** (300 ms / 1200 ms): slow breathing. The visual follows the arrangement rather than individual hits. Ideal for ambient, cinematic and lo-fi. If a scene looks jittery, the answer is usually a longer release, not less audio. Jitter is the visual falling all the way back to zero between hits; a longer release keeps it aloft so the next hit builds on the last. #### The beat layer runs alongside all of it Everything above describes a *continuous* signal. Beats are different: they are discrete events, and they get their own set of controls that add on top. - **Beat sync all:** the master switch. Off, the scene runs purely on the continuous envelope and ignores beats entirely. - **Beat response:** how hard every engine hits on each detected beat, 0 to 2. - **Pulse intensity:** scales the beat pulse where it feeds spawn rates, element size and shake. - **Beat shake:** a frame kick on each beat. A little is punchy; a lot is a music video from 2009. It settles between beats rather than jittering continuously. *Figure: Diagram showing discrete beat events layered over a continuous audio envelope: The beat layer adds discrete hits on top of the continuous envelope; they are separate systems, tuned separately.* [Beat Sync Explained](https://sonicweaver.com/blog/beat-sync-explained-pulse-hits-and-shake) goes deeper on this half of the panel, including how to tell a genuine beat from a busy bassline. #### Spectrum range: the control nobody expects to need On the engines that draw the frequency spectrum (Spectrum, Bars, Radial, Bloom and Tunnel) **Spectrum range** decides how much of the frequency axis the visual actually spans. It defaults to 0.86 rather than 1 for a reason: the very top of the frequency range is near-silent air on most masters, so at 1 the right-hand slice of every bar field and ray fan barely moves. That dead tail is a common cause of the complaint that a spectrum looks *smooth and similar all the way across*. Pull the range down and the visible bars redistribute across frequencies your track actually contains. *Figure: Diagram of frequency bands across the spectrum with the near-silent upper range highlighted: The top of the FFT is mostly air. Spectrum range trims it so the visible width carries real signal.* #### A diagnostic order that works When a scene is not reacting the way you want, work down the chain in order rather than poking at whatever slider is nearest: 1. **Is it reacting to the right thing?** Change Primary audio source. This fixes more problems than every other control combined. 2. **Is it reacting too uniformly?** Lower Audio dynamics for calm, or raise it for swing. 3. **Is it reacting hard enough?** Raise Sensitivity. 4. **Does it feel twitchy or dead between hits?** Lengthen Audio release. 5. **Do the beats land?** Raise Beat response; if beats feel absent entirely, confirm Beat sync all is on. 6. **Does the spectrum look flat on one side?** Lower Spectrum range. > **Bars is the deliberate exception** > The Bars engine does not offer Primary audio source, Audio contribution or Audio dynamics, and that is on purpose rather than an oversight. Bars is a full-spectrum readout (every bar *is* its own frequency band) so selecting a single band to drive the whole thing is meaningless. Sensitivity and the attack/release ballistics do apply, and they are what give the bars their meter-like rise and fall. #### Where to try this Every control here appears in both editors, on the same engines, with the same names: the [Classic editor](https://sonicweaver.com/editor) groups them in the Audio panel, and [Creator Studio](https://sonicweaver.com/studio) exposes them per layer in the inspector. Load a track you know well, pick a busy section, and step through the chain in the order above. New to the engines themselves? [Meet the Novus Visualizer Engines](https://sonicweaver.com/blog/meet-the-nine-visualizer-engines) is the tour, and [How Music Visualizers Work](https://sonicweaver.com/blog/how-music-visualizers-work) covers the theory these controls sit on top of. --- ### Framing Your Visual: Safe Zones, Frame Margin and Aspect Ratios URL: https://sonicweaver.com/blog/framing-safe-zones-and-aspect-ratios Published: 2026-07-26 · Author: Novus Team · 8 min read Why content drifts off the edge when a track gets loud, what Frame margin and Logo safe zone actually reserve, and how to compose for 16:9, 9:16 and 1:1. Here is a failure mode that is easy to miss and painful to discover after export: a scene that is beautifully composed at rest, and then the chorus hits and half of it slides off the top of the frame. You do not catch it in a still. You do not catch it while scrubbing the quiet intro. You catch it when someone watches the finished video. The cause is structural rather than a matter of taste. Audio-reactive geometry is, almost by definition, a size multiplied by a loudness number, and a loudness number does not know where the edge of your frame is. This post covers the controls that put a boundary on that, and how to compose for each aspect ratio so the boundary rarely matters. #### Frame margin: breathing room the audio cannot eat **Frame margin** reserves a strip around the edge of the frame that audio-driven geometry is not allowed to grow into. It defaults to a small 3.5%, enough that shapes stop short of the pixel edge, because geometry that ends exactly on the boundary reads as *cropped* even when every pixel is technically in frame. The limiting is soft rather than a hard cut-off, and that distinction matters more than it sounds. A hard clamp would flatten every peak above the limit to the same size, so the loudest passage of your track (the part you most want to land) would be the one place the visual stops responding. A soft limit leaves everything below the boundary exactly where it was and only compresses as it approaches, so louder always reads as bigger, forever. Raise the margin when you are placing text or a logo over the scene and want a guaranteed clear border. Drop it toward 0 when you want an edge-to-edge, full-bleed look. It appears on the engines whose geometry is center-anchored and can grow outward: Bloom, Character Motion, Radial, Spectrum, Bars and Waveform. > **Geometry scale is deliberately exempt** > Frame margin governs what the AUDIO does, not what you ask for. Geometry scale still zooms the whole composition past the frame edge if you set it to, because sometimes bleeding off-screen is the design. The rule is that your choices override the boundary and the track's loudness does not. #### Logo safe zone: the hole in the middle The Radial engine's **Logo safe zone** does the opposite job: instead of reserving the outside, it reserves the *center*, so a ring of rays or bars automatically arranges itself around whatever you are putting in the middle. **Inner radius** and **Outer radius** then set where the reactive geometry starts and stops. The practical workflow is to set the safe zone slightly larger than your logo actually needs. Rays grow on beats, and a zone sized to the logo exactly will have geometry brushing the artwork on every hit. A little extra clearance is the difference between a logo that sits confidently inside a reactive ring and one that keeps getting elbowed. [Make a Logo Visualizer](https://sonicweaver.com/blog/make-a-logo-visualizer) walks the whole build. #### Vertical anchor and where a spectrum sits The Spectrum engine's **Vertical anchor** decides where its baseline sits: `bottom` (the default, matching Bars), `center` for symmetric and mirrored looks, or `low` for a baseline that floats slightly above the bottom edge. The choice is not just aesthetic; it determines how much headroom a full-scale peak has to grow into. A center-anchored spectrum has half the frame in each direction; a bottom-anchored one has the whole frame above it, which is why it is the default for anything with a loud master. *Figure: Diagram comparing 16:9, 9:16 and 1:1 framing for a visualizer scene: The same scene in three shapes. Compose for the destination: a wide scene cropped vertical loses the interesting two-thirds.* #### Composing for each aspect ratio Aspect ratio is a composition decision made *before* you design, not an export toggle applied after. Each shape rewards a different arrangement: - **16:9 (YouTube, desktop).** Width is cheap and height is scarce. Full-width engines shine here: Spectrum, Bars, Waveform. Radial and Bloom work too but leave large empty margins left and right, which is a feature if you are putting text there and a problem if you are not. - **9:16 (Shorts, Reels, TikTok, Canvas).** Height is cheap and width is scarce. Center-anchored engines win: Radial, Bloom, Tunnel, Particles. A wide bar field in a vertical frame becomes a thin strip across the middle with dead space above and below. - **1:1 (feed posts, cover art).** The most forgiving shape, and the one where center-anchored geometry looks most intentional, since the frame's inscribed circle is the whole frame. #### Leave room for the platform's own interface Vertical platforms draw their own chrome over your video: captions, the username, a like-and-share column down the right side, and a progress bar at the bottom. That furniture routinely covers the bottom fifth and a strip down the right edge. Nothing you put there is reliably visible, so treat those regions as decoration rather than as places for a logo, a title or the moment you most want people to see. > **The loud-section check** > Before exporting, scrub to the loudest part of the track (the drop, the final chorus, whatever peaks hardest) and watch there rather than at the intro. That is the frame where content leaves frame if it is going to. Thirty seconds of checking beats re-rendering a full track. #### Set it once, reuse it Framing decisions are the most portable part of a setup. A margin, a safe zone and an anchor that work for your 9:16 output will keep working across every track you make in that shape, on any engine. Lock them in when you first build a vertical or square recipe and you stop rediscovering the same problem. For the numbers on the export side (resolution, frame rate and what each platform re-encodes) see [Export Settings for YouTube, Shorts, TikTok & Reels](https://sonicweaver.com/blog/export-settings-youtube-shorts-tiktok). To go from a template to a finished file in one sitting, [From Template to Finished Export in Ten Minutes](https://sonicweaver.com/blog/template-to-export-in-ten-minutes) is the short path, and you can start from any scene in [the gallery](https://sonicweaver.com/templates). --- ### The Style System: Color Modes, Glow and Effects That Work on Every Engine URL: https://sonicweaver.com/blog/style-system-color-modes-glow-and-effects Published: 2026-07-26 · Author: Novus Team · 8 min read Color mode, glow, blur, chromatic aberration and motion echo apply the same way across all ten engines. Here is what each one does and the order they composite in. Two producers can pick the same engine, the same mode and the same track and end up with videos that look nothing alike. The difference is almost never the engine; it is the handful of style and effect controls that sit on top of it. Those controls are shared: every one of the ten engines gets the same palette, the same color modes and the same effects stack, which means a look you develop once transfers everywhere. That is worth more than it sounds. Build a palette and effects recipe for one release, and you can move it onto a different engine for the next track and keep the identity intact while the motion changes completely. #### Two colors, three ways to use them Every engine exposes **Primary color**, **Secondary color** and **Background**. What changes is how the two foreground colors get distributed, and that is **Color mode**: - **Duo:** elements alternate between primary and secondary. High contrast, graphic, reads clearly at thumbnail size. The safest choice for branded work because your two brand colors stay literally your two brand colors. - **Gradient:** elements blend from primary to secondary across the composition. Softer and more cohesive; good for anything that should feel continuous rather than sequenced. - **Spectrum:** a full hue sweep across the elements, ignoring your two colors entirely. This is the rainbow reference look. Striking, and completely off-brand if you have a palette, so use it deliberately. > **Pick the background first** > Background is not just backdrop: the glow pass measures its brightness and fades additive glow out on light backgrounds, because additive light on a bright field is invisible anyway. If you want heavy glow, you want a dark background. If you want a light, airy, print-like look, expect to carry it with color and shape rather than glow. #### The effects stack, in the order it composites The effects are not per-element filters; they are **full-frame passes applied after the engine finishes drawing**, in a fixed order. That is why they cost almost nothing and why they look uniform across a whole scene instead of haloing individual shapes unevenly. Knowing the order tells you why some combinations fight each other. *Figure: Diagram of the post-processing stack: draw, then blur, glow, chromatic aberration and motion echo: Draw the frame, then blur, then glow, then chromatic split. Motion echo carries what is left into the next frame.* 1. **Blur:** a single defocus pass that mixes a blurred copy of the frame back over the sharp one. Small amounts add a soft, filmic bloom to edges; large amounts turn the scene into abstract light, which is a legitimate look for backdrops behind text. 2. **Glow** and **Global glow**: the emissive halo. Glow drives the effect; Global glow adds a shared emissive floor across the whole frame. Both feed one additive blurred blit, so they compound rather than layering separately. 3. **Chromatic aberration:** splits the frame into offset color copies, the lens-fringing look. It also breathes with the beat, so a small amount reads as energy rather than as a static filter. A little goes a long way; past about 0.3 it stops reading as a lens and starts reading as a broken display. 4. **Motion echo:** the odd one out, because it works *between* frames rather than within one. It holds back part of the previous frame instead of clearing it, so movement leaves trails. This is how you turn a sparse scene into a dense one without adding a single element. #### Motion echo is the highest-impact control here If you change one effect, change this one. At 0 every frame starts clean and the scene shows only what is happening right now. Push it up and the scene accumulates: particle paths become ribbons, a rotating ring becomes a spirograph, a bouncing bar field becomes a light-painting. Several catalog modes ship with it high on purpose; that is what makes Echo Streaks and Orbit Trace look the way they do. It has one real hazard: echo and glow multiply. Persistence keeps a fraction of every frame, and glow makes what is kept brighter, so at high settings the frame can climb toward white. The renderer damps glow automatically when echo is high to keep that from running away, but if a scene is blowing out, echo and glow together are the first place to look. *Figure: A Trails engine scene where motion echo turns moving strands into long persistent ribbons: Trails with motion echo high: the same strands, but every frame's path stays on screen.* #### Geometry: the shape of the thing itself **Geometry** changes the primitive an engine stamps: circle, ellipse, line, polygon, star, square, triangle, rounded rectangle or soft glow. On a particle field this is the difference between dust (`circle`), snow (`soft-glow`), sparks (`line`) and confetti (`square`). It applies wherever an engine stamps discrete elements, which is Particles, Trails and Tunnel; the engines that draw continuous strokes use **Thickness** instead. **Geometry scale** zooms the entire composition around the frame center. It is deliberately the one control that is allowed to push content past the frame edges, so if you want a scene to bleed off-screen (a huge tunnel mouth, a ring that overflows behind a logo) this is the control that will let you. #### Building a reusable recipe A house style is usually about five decisions: background, two colors, a color mode, a glow level and an echo level. Write them down once. Then when you start the next track, set those five first and choose the engine second; the release will hang together even though every video moves differently. > **Check it at thumbnail size** > Heavy glow and heavy echo both reduce contrast, and contrast is what survives being scaled down to a feed thumbnail. Shrink your preview to about the size of a postage stamp before you commit. If the shapes disappear into a haze, pull glow back rather than pushing colors harder. #### Where this fits with the rest These controls live in the Style, Geometry and Effects groups in the [Classic editor](https://sonicweaver.com/editor), and per-layer in [Creator Studio](https://sonicweaver.com/studio): same keys, same behaviour, so a look moves between them intact. For carrying that identity onto cover art and a Canvas loop, [Designing Cover Art & Spotify Canvas Loops](https://sonicweaver.com/blog/cover-art-and-spotify-canvas-branding) picks up where this leaves off; for choosing the engine underneath it, start from [Meet the Novus Visualizer Engines](https://sonicweaver.com/blog/meet-the-nine-visualizer-engines). --- ### Your Notification Inbox: What Novus Tells You, and What It Never Sends URL: https://sonicweaver.com/blog/notification-inbox-what-novus-tells-you Published: 2026-07-25 · Updated: 2026-09-12 · Author: Novus Team · 8 min read Security, community and product notices arrive in one in-app inbox at /notifications. Here is what each category carries, which parts you can switch off, and why nothing ever reaches your email. Most creative tools answer the question *what happened while I was away* by sending you mail. Novus answers it in one place inside the app, at [/notifications](https://sonicweaver.com/notifications), and sends you nothing at all. No email, no push, no SMS. If you never open the page, the only thing you miss is the page. That is a deliberate trade, and it has consequences worth understanding: what lands in the inbox, what you can turn off, what you cannot, and what the little bell in the top navigation is actually telling you when it goes quiet. #### Three categories, and only two of them are yours to choose Every notification carries exactly one category: **Security**, **Community** or **Product**. The inbox has a filter chip for each plus an All view, and the same three names appear in the *Inbox preferences* panel at the bottom of the page. - **Security** is about your account and cannot be switched off. Its checkbox in preferences is rendered checked and disabled, and the server builds its own list of enabled categories with Security always first, so a request asking to filter by a disabled category returns nothing rather than quietly delivering it anyway. - **Community** is other people acting on your work: a follow, a comment, a like, a save, a remix, a moderation decision on a report you filed. - **Product** is Novus telling you something: your own project finished publishing, or an announcement from the team. > **Why Security is not negotiable** > A sign-in notice you can disable is a sign-in notice an attacker can disable. Every other category is a preference; this one is the record that something happened to your account, so it is the one setting the product refuses to take from you. #### What actually produces a notification Nothing here is generated on a schedule. Each notice is written at the moment the thing happened, inside the same database transaction as the change itself, which is why you never see a follow notification for a follow that failed. On the **Security** side: a passkey being added, your recovery-code set being replaced, a password reset performed with a recovery code (which also revokes every existing session), an account suspension or restoration, and a successful sign-in. That last one is deduplicated: if a sign-in notice was written for you less than a minute ago, another one is skipped, so a client that re-establishes a session several times in a row does not bury the rest of your inbox. On the **Community** side: someone follows you, comments on one of your published visualizers, likes or saves it, or remixes it. All four are written only when the actor is not you, so liking your own post is not an event you get told about. Moderation outcomes go to the person who filed the report, carrying the resolution text the moderator wrote. On the **Product** side: publishing a project writes a notice pointing at its immutable community revision, and team announcements are fanned out to an audience (everyone, creators, or moderators). An announcement respects your Product preference: if you have it switched off, you are counted as suppressed rather than delivered, and the receipt the admin sees says so in as many words. #### The bell, and the difference between zero and unknown The bell in the top navigation carries an unread badge. It refreshes when you change page, when the window regains focus, on a sixty-second timer, and immediately when something in the current tab changes read state, because the inbox and the bell listen to the same in-page event rather than polling each other. The interesting part is what happens when that refresh fails. The bell does **not** fall back to zero. It keeps the last count it knew, adds a small amber dot, and changes its own accessible name to say the count is last-known and notifications are unavailable. A delivery failure that reads as an empty inbox is the worst possible lie for a notification system to tell, so it does not tell it. > **An empty list and a broken list look different on purpose** > If the inbox cannot load, you get a red panel with a Retry button and the sentence *This is a load failure, not an empty inbox.* If it loads and there is genuinely nothing in that filter, you get the quiet line *Nothing in this filter yet.* Two states, two appearances, no guessing. #### Reading, and the limits you will meet An item with a destination is a link, and following it marks that item read on the way out. An item without one is still clickable and does nothing but mark itself read. **Mark all read** is one request; the button disables itself when the unread count is zero, so you cannot fire a pointless write. There is no infinite scroll. The list returns the newest items up to a ceiling of 100, and the unread tally is itself counted against a cap of 100, which is why a very busy account shows `99+` on the page and `9+` on the bell rather than a number that would take a full table scan to be exactly right. For a notification badge, *more than you want to read* is the honest answer and the cheap one. One quiet safety detail: the destination on a notification is validated before it ever becomes a link. Anything that does not start with a single forward slash is dropped and the item renders as plain text. A notification body can carry a moderator's words or another creator's post title, and none of that is allowed to become an off-site link inside your own inbox. #### Turning things down Open *Inbox preferences* at the bottom of [/notifications](https://sonicweaver.com/notifications), untick Community or Product, and press Save. The change takes effect on the next load of the inbox and the bell, both of which re-read your enabled categories server-side rather than filtering in the browser, so an unwanted category is not merely hidden: it is never sent to the page. If the preferences panel cannot reach the server, its controls stay disabled rather than pretending to be editable, and a Reload link appears. A settings form that lets you toggle a switch it cannot save is a form that lies to you twice. #### What this means for your workflow Because nothing is emailed, the inbox is the whole channel. If you publish to the [community](https://sonicweaver.com/community) and want to know when people respond, check it. If you have turned Community off, nobody has failed to reach you; you asked not to be told. And because Security cannot be disabled, the one notification that matters most is the one you will always find, sitting at the top of the Security filter with a link straight to [your security settings](https://sonicweaver.com/settings/security). If you are still setting an account up, [From Private Draft to Community Remix](https://sonicweaver.com/blog/private-draft-to-community-remix) covers what publishing does and therefore what starts generating community activity in the first place. If you would rather find things than be told about them, [Search Across Novus](https://sonicweaver.com/blog/search-across-novus-engines-creators-community) is the other half of the same story. --- ### Free Preview Music, Copyright and Your Uploads: What Is Actually Safe URL: https://sonicweaver.com/blog/free-preview-music-and-licensing Published: 2026-07-24 · Author: Novus Team · 7 min read Where the free preview loops come from, what music is safe to publish in your own video, and what copyright actually means on YouTube and TikTok. Two different questions hide inside “can I use this music?”: *what is that music playing on the template pages*, and *what music can I put in my own video?* The first has a one-paragraph answer. The second is where channels get protected, so it deserves the plain-language version: no scare tactics, and no myths. > **The honest disclaimer** > This article is general information about how music rights and platform enforcement work; it is not legal advice. When real money, labels or contracts are involved, talk to a music attorney. #### The preview loops: ours, on purpose Every [template page](https://sonicweaver.com/templates) plays music the moment it loads: one of three short loops at 124, 92 and 140 BPM. All three were composed and synthesized in-house at Novus, and Novus owns them outright. They exist for exactly one job: letting you judge how a scene reacts to real audio, at three different tempos, without uploading anything first. They are preview music, full stop. When you export a video, the file contains only the track *you* uploaded; the preview loops never end up in your export. There is no leftover Novus audio to trigger a claim, and nothing you need to license from us. The rights question in your finished video is entirely about your own track. *Figure: Diagram showing preview audio and uploaded audio taking separate paths, with only the upload reaching the export: Preview loops live on template pages only. The export pipeline renders the track you upload, and nothing else.* #### Your video, your track, your rights For most Novus users this resolves instantly: you are visualizing music you made, so you hold the rights and you are done. The same goes for commissioned beats or mixes where your agreement covers releasing the result online. It only gets involved when the music is someone else's. A song carries two separate rights: the **composition** (the written song) and the **master** (the specific recording). Publishing a video with a track baked in generally needs permission on both sides. That is why “I found it on SoundCloud” and “my friend sent me the MP3” are not answers: possessing a file has never included permission to republish it. #### What actually happens on YouTube YouTube scans uploads with Content ID, an automated audio-matching system that rights holders feed with their catalogs. When it matches your audio, the usual outcome is a *claim*, not a punishment: the video typically stays up, ad revenue routes to the rights holder, and some tracks trigger regional blocks or muting instead. A claim by itself does not damage your channel. Strikes are the more serious tier, and they come from actual takedown requests rather than automatic matches. Most creators who use unlicensed music never see one; what they see is every upload quietly monetizing someone else's catalog. If you are building a music channel, that alone is the argument for keeping uploads clean: the entire point is for your work to pay *you*. #### TikTok and Instagram are a different deal Short-form apps license huge music libraries, for sounds you add *inside the app*. That licensing does not cover audio baked into a file you upload, and a visualizer is by definition audio baked into a file. Post a visualizer of an unlicensed commercial track and the platform can mute, restrict or remove it on match, just as YouTube would. Business and commercial accounts get an even narrower approved library. The rule of thumb is the same everywhere: if the music is inside your video file, the license has to be yours. #### Myths that will not save an upload - **“Under eight seconds is fine.”** No duration is automatically safe: not eight seconds, not fifteen, not thirty. Content ID routinely matches shorter clips, and copyright law has no stopwatch exemption. - **“I credited the artist.”** Credit is courtesy, not a license. Attribution changes nothing about permission, except where a license you already hold requires it. - **“My channel isn't monetized, so it's fair use.”** Fair use is a narrow, case-by-case legal defense argued after the fact, not a checkbox; “I made no money” is not the deciding factor. - **“I bought the song.”** A download or streaming subscription licenses listening, not republishing the recording inside your own video. - **“I'm too small to notice.”** Matching is automated and does not check subscriber counts. Small channels get claimed on day one all the time. #### Music that is genuinely safe to publish - **Your own music:** the core Novus use case, and the cleanest possible position. - **Commissioned music** with a written agreement covering online video and monetization. - **Library and subscription music**, provided the license covers your platforms and monetization. “Royalty-free” means no per-use fees; it does not mean no rules, so read the scope. - **Creative Commons tracks**, if you honor the exact license: attribution where required, and note that NC (non-commercial) variants clash with monetized channels. - **Direct written permission** from whoever holds the rights, remembering that the composition/master split means it can be two whoevers. #### The bottom line Novus keeps its side simple by design: previews demo with music we own, your export carries only your audio, and the file it writes is free, watermark-free and entirely yours. Publish music you have the rights to and there is nothing else to manage. Pick a scene in the [gallery](https://sonicweaver.com/templates), bring your own track into the [editor](https://sonicweaver.com/editor). And if a rights question ever feels bigger than a blog post, it probably is, and an hour with a professional is cheap insurance. More quick answers live in the [FAQ](https://sonicweaver.com/faq). --- ### Making Music Visualizers on Your Phone: The Full Mobile Workflow URL: https://sonicweaver.com/blog/mobile-visualizer-workflow Published: 2026-07-24 · Author: Novus Team · 7 min read Touch editing in Classic, capability-aware 1080p exports and vertical-first mode picks: the full phone workflow, plus when a desktop is worth it. There is no Novus app, and that is the point: the entire pipeline (browsing templates, editing, rendering video) runs in a phone browser. If your music already lives on your phone, the video can be made where the music is, start to finish, and the result is a real 1080p file with no watermark. Here is the workflow that makes phone-made visualizers genuinely good, plus the honest list of moments when a desktop earns its keep. #### What a phone does well Everything in the core path is touch-native. The [template gallery](https://sonicweaver.com/templates) previews scenes as you browse, template pages let you tap through all six modes of an engine while a built-in loop plays, and the [Classic editor](https://sonicweaver.com/editor), the guided one, works comfortably under a thumb: pick a template, upload a track from your files, adjust the shared controls (**Color Mode**, **Beat Response**, **Pulse Intensity**, **Shake Amount**, **Rotation Speed**, glow) and export. The upload step is friendlier than people expect. Any audio file your phone can open, the editor can analyze: a bounce sent over from a laptop, a download from your distributor, a demo straight out of a voice-memo app. Analysis runs on-device in the browser, so there is no upload wait and no server round-trip before the scene starts moving to your track. A phone export lands at 1080p, as MP4 or WebM, with the same deterministic beat sync as a desktop render; the file matches the preview exactly, regardless of which device drew it. Determinism matters more on mobile than anywhere else: you never have to wonder whether a mid-render notification or a throttled frame quietly shifted a beat, because it cannot. #### Why phones cap at 1080p, and why it rarely matters The exporter is capability-aware: it looks at the device it is running on and offers what that device can render well. Producing a visualizer means drawing and encoding every single frame in the browser (heavy, sustained work) and a 4K encode that a desktop shrugs off would push a phone straight into thermal throttling. So phones cap at 1080p and desktops go up to 4K. Here is why the cap rarely costs you anything: vertical platforms deliver at 1080×1920. A Short, a TikTok or a Reel made on a phone is already at full delivery resolution; a 4K desktop render of the same vertical video would be downscaled right back on upload. The device in your pocket exports exactly what the phone-first platforms want; the 4K case is really the widescreen-YouTube case. *Figure: Diagram of vertical, square and widescreen video frames: Phone-made visualizers are usually phone-watched visualizers: compose vertical, centered and bold.* #### A vertical-first workflow that reads on a small screen Your video will mostly be watched on phones, so let the phone be the taste test. Favor bold, center-anchored modes that survive a six-inch screen: [Pulse Orb](https://sonicweaver.com/templates/radial?mode=pulse-orb), [Radial Bars](https://sonicweaver.com/templates/bars?mode=radial-bars), a [mirrored waveform](https://sonicweaver.com/templates/waveform?mode=mirrored) and [Particle Vortex](https://sonicweaver.com/templates/tunnel?mode=particle-vortex) all hold up at glance distance, while intricate fine-detail looks tend to flatten out at feed size. Three small-screen rules of thumb: a high-contrast duo Color Mode beats a subtle gradient once the video shrinks to feed size; if you use [Word Wave](https://sonicweaver.com/templates/character-motion?mode=word-wave), keep the Display Text short (a title or a hook, not a sentence); and judge your near-final pass at arm's length rather than nose distance, because arm's length is where your audience holds the phone. *Figure: A particles engine visualizer still with bold central motion: Bold, centered motion stays readable when the video is watched on the same class of device that made it.* #### Battery, heat and clean renders - **Plug in before exporting.** Rendering and encoding video is among the heaviest work a phone browser can do; on battery you are racing the low-power governor. - **Keep the tab in the foreground until the export finishes.** Mobile browsers aggressively throttle or suspend background tabs, and the render is happening in that tab. - **Close other heavy apps and tabs first.** Free memory is render headroom. - **Let a hot phone cool down.** Thermal throttling slows every frame; a two-minute pause beats a crawling render. - **Do not panic over a choppy live preview.** The exporter renders frame by frame rather than in real time, so preview stutter on a warm phone does not become stutter in the file. - **Test short first.** Render a short track once to sanity-check the look before committing to a full song. None of this is unique to Novus (it is simply what sustained rendering asks of a phone), but because the whole pipeline lives in the browser, a little battery-and-foreground discipline is the only setup the mobile workflow ever needs. #### When the desktop earns its keep Three things send you to a bigger machine. **4K:** widescreen YouTube uploads benefit from a 4K master, and that is desktop territory. **Creator Studio:** the [node-graph editor](https://sonicweaver.com/studio), with its layer stacks, merge nodes, LFOs, effect chains and logo upload, is built for a large screen and a pointer; it is the deep end of Novus and simply wants room. **Long renders:** desktop hardware chews through a full-length track faster, full stop. One planning note: your work saves locally in the browser of the device you are using, so a project started on your phone lives on that phone. Plan to finish where you start, and since a Classic setup is a template plus a handful of control tweaks, recreating one on desktop takes about two minutes if you change your mind. The best workflow is the one that gets the video made. If tonight that means your phone on the couch (template, track, three tweaks, 1080p export) that is a real, publishable video, and [the gallery](https://sonicweaver.com/templates) is one tap away. Deciding between the two editors long-term? [Classic vs Studio](https://sonicweaver.com/blog/classic-vs-studio-which-editor) breaks it down. --- ### From Template to Finished Export in Ten Minutes URL: https://sonicweaver.com/blog/template-to-export-in-ten-minutes Published: 2026-07-23 · Author: Novus Team · 7 min read A real-time walkthrough: pick a template, audition modes, upload your track in Classic, make the three tweaks that matter and export, all in ten minutes. This is a walkthrough with a stopwatch. Novus runs entirely in the browser (nothing to install, no account gate, no watermark bargaining), so the honest distance between “I have a track” and “I have a finished video file” is about ten minutes. Here is exactly where those minutes go. You need one thing before starting: an audio file of your track on the device you are using. Everything else is already on the page. A pair of headphones helps too; you will be making taste calls against the mix, and a phone speaker lies about the low end. #### Minutes 0–2: pick a template, not a blank canvas Start at the [template gallery](https://sonicweaver.com/templates), not an empty editor. There are ten engines (particles, trails, bloom, character motion, radial, spectrum, bars, tunnel, waveform and logo) and every card previews live when you hover it, so one slow scroll down the page is genuinely the fastest shortlisting tool. You are choosing a personality here, not final details: does your track want something that erupts, something that flows, or something that breathes? #### Minutes 2–4: audition the modes Open a template page and it starts playing immediately: every template demos with one of three short loops Novus composed in-house (at 124, 92 and 140 BPM), so you can judge how the scene reacts to real audio before uploading anything. Each engine has six modes, and you can switch between them right on the page; the mode is tracked in the URL, so when you find the one, the link itself remembers it. Two minutes is enough. If you are torn between two modes, take the simpler one; simple survives compression, small screens and short attention spans better. The runner-up is not lost, either: keep its URL and give it an export of its own another day. *Figure: A radial engine visualizer still with a central pulsing form: Center-anchored radial modes are reliable first-video picks; they read at any size and any aspect ratio.* #### Minute 4: open it in the Classic editor Send your pick into the [Classic editor](https://sonicweaver.com/editor). Classic is the guided one (a canvas plus a focused set of controls) and it is the right choice for a first video. The node-graph [Creator Studio](https://sonicweaver.com/studio) is the deep end; save it for the day you want layers and custom signal routing. #### Minutes 4–5: upload your track Drop in your audio file. Analysis happens in your browser (the track is not sent to a server) and the moment you press play, the scene reacts to *your* music instead of the preview loop. Watch and listen for thirty seconds before touching anything, because every tweak that follows should be a reaction to what you see here. What you are looking for in that first watch: do the big hits land where your ears expect them, does the motion feel too busy or too sleepy against the mix, and does the default palette fight your cover art? Those three observations map one-to-one onto the three tweaks below, which is exactly why you watch before you touch. #### Minutes 5–8: the three tweaks that matter 1. **Color Mode.** Cycle duo, gradient and rainbow spectrum until the palette matches the song's temperature; most people can hear whether their track is a two-color track or a rainbow track. If you have cover art, steal its palette with a duo or gradient. Sixty seconds. 2. **Beat Response and Pulse Intensity.** This pair decides whether the scene taps its foot or throws its whole body. Play the chorus, raise Beat Response until the hits feel like the drums, then use Pulse Intensity to size the reaction. If your genre has a known recipe, the [modes-by-genre guide](https://sonicweaver.com/blog/visualizer-modes-by-genre) lists starting points. 3. **Glow and Shake Amount.** The polish pass. A touch of glow softens edges; a touch of shake adds impact on the biggest hits. Both are seasoning, so if you notice them constantly, halve them. > **Leave the rest alone** > Templates ship with working defaults on purpose. Changing three controls with intent beats changing fifteen out of curiosity; you can always come back after the first export. *Figure: Diagram of the path from template choice through track upload and tweaks to export: The whole path: a template supplies the look, your track supplies the motion, three controls supply the taste.* #### Minutes 8–10: export Open export, pick MP4 or WebM, pick your resolution (up to 4K on a desktop, 1080p on a phone) and let it render. Because the renderer is deterministic, the file matches the preview byte for byte: the beats you approved land on the identical frames, so there is no anxious re-watch to see whether the render “took.” It is free, there is no watermark, and the file is simply yours. And if the result surprises you anyway (a color that reads differently at full size, a shake that felt subtler in a small window) change one control and render again. Iteration is the real workflow here: exports cost nothing and nothing queues behind a server, so the second attempt follows the first within minutes. #### Where the ten minutes actually go wrong - Auditioning all 60 looks. Shortlist from the gallery hover previews, cap yourself at three template pages, and commit. - Tuning controls against the built-in preview loop instead of your own track. Upload first, then tweak; the loop is for choosing a scene, not calibrating one. - Exporting before watching one full pass in preview. A three-minute watch now beats a re-render later. That is the entire path. When the ten-minute version leaves you wanting platform-perfect sizing (vertical crops, 4K, bitrate) the next read is [export settings for YouTube, Shorts and TikTok](https://sonicweaver.com/blog/export-settings-youtube-shorts-tiktok). And when you outgrow Classic, [Creator Studio](https://sonicweaver.com/studio) is waiting with layers and a node graph. --- ### The Right Visualizer Mode for Every Genre: 54 Looks, Sorted URL: https://sonicweaver.com/blog/visualizer-modes-by-genre Published: 2026-07-22 · Author: Novus Team · 7 min read Genre-by-genre picks from all 60 looks: the best engine and mode for EDM, hip-hop, ambient, rock, pop and jazz, with Beat Response settings for each. The Novus catalog is ten engines with six modes each: 60 distinct looks. That is small enough to browse in an evening and large enough to stall on, so this is the shortlist guide: for each genre, the two or three modes that reliably work, why they work, and how to set the shared controls so the scene moves the way the music feels. Every pick links straight into the [template gallery](https://sonicweaver.com/templates), where hovering a card previews it live. Two things before the picks. First, these are starting points, not rules, and the fastest way to test one against your own taste is the template page itself, which plays one of three built-in loops (at 124, 92 and 140 BPM) so you can judge reactivity at a tempo close to your track. Second, the same few controls do most of the work everywhere: **Beat Response** sets how hard the scene reacts to each beat, **Pulse Intensity** sizes that reaction, **Shake Amount** adds physical impact, **Rotation Speed** sets the underlying drift, and **Color Mode** switches between a two-color duo, a gradient and a full rainbow spectrum. *Figure: Grid diagram of the ten visualizer engines and their modes: Ten engines, six modes each. Genre is the filter that turns 60 options into a shortlist.* #### EDM, house and dance Four-on-the-floor music wants an unmistakable, repeating hit. [Stacked Bands](https://sonicweaver.com/templates/bars?mode=stacked-bands) is the flagship pick: an LED-style meter wall with a floor reflection that reads instantly as a stage. [Warp Field](https://sonicweaver.com/templates/tunnel?mode=warp-field) turns drops into acceleration, and [Fountain Burst](https://sonicweaver.com/templates/particles?mode=fountain-burst) erupts on every kick. Settings: push **Beat Response** high and let **Pulse Intensity** carry the drop; add **Shake Amount** sparingly, so it punctuates the biggest moments instead of running continuously. A rainbow spectrum Color Mode suits festival energy; a two-color neon duo reads more club. #### Hip-hop and trap Sub-bass is the star, so pick modes where one central element visibly breathes with the low end. [Pulse Orb](https://sonicweaver.com/templates/radial?mode=pulse-orb) is the genre's natural heartbeat, [Center Mirror](https://sonicweaver.com/templates/bars?mode=center-mirror) gives symmetric meters that hit from the middle out, and [Echo Streaks](https://sonicweaver.com/templates/trails?mode=echo-streaks) leaves motion smears that ride hat rolls nicely. Settings: **Beat Response** high but **Shake Amount** low; heads nod, they do not convulse. Keep **Rotation Speed** slow and choose a duo Color Mode in your cover art's palette; hip-hop visuals tend to land best restrained and confident rather than busy. #### Lo-fi and chillhop Drop the intensity, keep the pulse. [Ink Diffusion](https://sonicweaver.com/templates/bloom?mode=ink-diffusion) blooms softly with the beat, and a [filled waveform](https://sonicweaver.com/templates/waveform?mode=filled) gives the classic low-key study-stream look. Set **Beat Response** to the low-mid range, raise the glow until edges soften, and use a warm gradient. The scene should sway, not jump. #### Ambient, downtempo and cinematic With no drum grid to chase, discrete hits feel wrong; choose modes that grow and drift instead. [Vine Mycelium](https://sonicweaver.com/templates/bloom?mode=vine-mycelium) and [Cellular Growth](https://sonicweaver.com/templates/bloom?mode=cellular-growth) evolve organically with sustained energy, [Dust Storm](https://sonicweaver.com/templates/particles?mode=dust-storm) breathes with the mix, and [Ribbon Surface](https://sonicweaver.com/templates/spectrum?mode=ribbon-surface) turns the spectrum into slow terrain. Settings: **Beat Response** near its minimum, no shake at all, **Rotation Speed** at a crawl. This is the one family of genres where you deliberately tune the scene to *ignore* the beat and follow the overall swell instead. *Figure: A bloom engine visualizer still with organic radial growth: Bloom's growth modes suit music that swells instead of hitting; the scene evolves with sustained energy rather than snapping to a grid.* #### Rock, metal and live takes Rock rewards rawness. [Oscilloscope Lissajous](https://sonicweaver.com/templates/waveform?mode=oscilloscope-lissajous) draws the actual signal and feels like lab equipment wired to an amp, [3D Columns](https://sonicweaver.com/templates/bars?mode=3d-columns) is a wall of meters with real weight, and [Comet Shower](https://sonicweaver.com/templates/trails?mode=comet-shower) keeps up with double-time energy. Settings: **Beat Response** mid-to-high, but keep glow restrained; too much bloom turns grit into neon. A hot two-color duo (white on red, amber on black) usually beats a rainbow here. #### Pop and vocal-led songs When the vocal is the hook, consider putting words on screen. [Word Wave](https://sonicweaver.com/templates/character-motion?mode=word-wave) animates an editable Display Text (the title or the hook line) riding the music. If text feels heavy for the platform, [Sunburst](https://sonicweaver.com/templates/radial?mode=sunburst) and [Mirrored Area](https://sonicweaver.com/templates/spectrum?mode=mirrored-area) both flatter melodic movement without fighting a vocal. Settings: moderation everywhere. Vocals live in the mids, and a scene tuned to slam on bass will feel disconnected from a vocal-led mix. Middle-of-the-range **Beat Response** with a gradient pulled from your cover art is the reliable recipe. #### Classical, jazz and acoustic Rubato and brushed drums defeat beat-chasing scenes, so lean on continuous spectral detail instead. [Frequency Ridge](https://sonicweaver.com/templates/spectrum?mode=frequency-ridge) and [Spectral Mesh](https://sonicweaver.com/templates/spectrum?mode=spectral-mesh) render harmonic structure as landscape, a [ribbon waveform](https://sonicweaver.com/templates/waveform?mode=ribbon) follows dynamics gracefully, and [Petal Bloom](https://sonicweaver.com/templates/bloom?mode=petal-bloom) opens and closes with phrasing. Settings: the lowest **Beat Response** in this guide; the continuous motion of the spectrum carries the scene, and a discrete hit landing on a rubato phrase reads as a mistake. Subtle glow, slow rotation, restrained gradient. #### The cheat sheet - **EDM / dance:** Stacked Bands, Warp Field, Fountain Burst · Beat Response high, shake saved for drops - **Hip-hop / trap:** Pulse Orb, Center Mirror, Echo Streaks · Beat Response high, shake low, slow rotation - **Lo-fi:** Ink Diffusion, filled waveform · Beat Response low-mid, heavy glow, warm gradient - **Ambient / cinematic:** Vine Mycelium, Dust Storm, Ribbon Surface · Beat Response minimal, no shake - **Rock / metal:** Oscilloscope Lissajous, 3D Columns, Comet Shower · Beat Response mid-high, restrained glow - **Pop / vocal:** Word Wave, Sunburst, Mirrored Area · everything moderate, gradient from cover art - **Classical / jazz:** Frequency Ridge, ribbon waveform, Petal Bloom · lowest Beat Response, subtle glow Genre gets you to a shortlist; your ears finish the job. Open two or three of these picks from the [gallery](https://sonicweaver.com/templates), let the built-in loops play, then take the winner into the [editor](https://sonicweaver.com/editor) with your own track; every control above is live there, and the right setting is the one that makes *your* mix feel inevitable. For the deeper theory of why the same audio drives such different scenes, read [How Music Visualizers Work](https://sonicweaver.com/blog/how-music-visualizers-work). --- ### Export Settings for YouTube, Shorts, TikTok & Reels: A Practical Guide URL: https://sonicweaver.com/blog/export-settings-youtube-shorts-tiktok Published: 2026-07-21 · Author: Novus Team · 7 min read The right resolution, aspect ratio and frame rate for YouTube, Shorts, TikTok and Reels, plus how the in-browser exporter works and a pre-upload checklist. Nothing deflates a finished visualizer faster than the platform it lands on. You render a crisp file, upload it, and the feed serves back something soft, blocky and letterboxed. None of that is bad luck: every platform re-encodes every upload, and what survives depends almost entirely on whether you handed it the shape, size and quality it expects. Get those three right and your export makes the trip intact. This guide collects the numbers that matter for YouTube, Shorts, TikTok, Reels and square feed posts, then walks through how the Novus exporter itself works so you know exactly what you are uploading. Everything renders [in your browser](https://sonicweaver.com/editor): free, watermark-free, as MP4 or WebM, up to 4K on desktop and 1080p on phones. #### Aspect ratio comes first Choose the destination before you design, because aspect ratio is a composition decision, not an export toggle. A wide 16:9 scene cropped to vertical loses two-thirds of its frame, usually the two-thirds where the interesting motion lives. Working at the target shape from the start lets you put the action where the platform will actually show it: centered and tall for a phone screen, spread wide for a TV or desktop player. Some looks re-compose more gracefully than others. Center-anchored modes ([Pulse Orb](https://sonicweaver.com/templates/radial?mode=pulse-orb), [Warp Field](https://sonicweaver.com/templates/tunnel?mode=warp-field), a [mirrored waveform](https://sonicweaver.com/templates/waveform?mode=mirrored)) read well at any shape because the energy radiates from the middle. Wide, horizon-style modes like the [linear equalizer](https://sonicweaver.com/templates/bars?mode=linear-equalizer) or [Frequency Ridge](https://sonicweaver.com/templates/spectrum?mode=frequency-ridge) are built for 16:9 and feel cramped when squeezed vertical. *Figure: Diagram comparing 16:9 widescreen, 9:16 vertical and 1:1 square video frames: One scene, three canvases. Compose at the aspect ratio you will publish; cropping afterwards throws away most of the frame.* #### YouTube: 16:9, as large as you can render Standard YouTube videos are 16:9: 1920×1080 at minimum, and 3840×2160 (4K) if you are exporting from a desktop. Uploading 4K is worth it even when most of your audience watches at 1080p: platforms typically route higher-resolution uploads through their better codecs and more generous bitrate tiers, so a downscaled 4K master usually looks cleaner than a native 1080p upload of the very same scene. Both 30 and 60 fps are fully supported everywhere. Visualizers are pure motion, so 60 fps flatters fast scenes (particles, tunnels, anything with shake) while 30 fps is perfectly fine for slow ambient looks and halves the encoding work. On bitrate: a clean 1080p file at 30 fps usually sits around 8 Mbps, 1080p60 around 12 Mbps, and 4K from roughly 35–45 Mbps. Treat those as sanity checks for anyone re-encoding in another tool; the exporter's own output is written to look good without you configuring anything. #### Shorts, TikTok and Reels: 9:16 All three short-form feeds want full-screen vertical: 1080×1920. The number-one mistake here is not resolution; it is ignoring the interface. TikTok and Reels stack captions, buttons and usernames along the bottom and the right edge, so anything important living there gets buried. Keep the focal point centered and let the outer edges be atmosphere: a centered [Sunburst](https://sonicweaver.com/templates/radial?mode=sunburst), [Particle Vortex](https://sonicweaver.com/templates/tunnel?mode=particle-vortex) or [Word Wave](https://sonicweaver.com/templates/character-motion?mode=word-wave) title treatment sits exactly where every platform leaves the view clear. Length limits shift over time (Shorts currently allows up to three minutes), but short-form is a hook economy regardless: the first second should already be moving. The video starts where your track starts, so upload a cut of the song that opens with energy rather than four bars of quiet intro. #### Square and other feed shapes 1:1 at 1080×1080 still earns its place for feed posts, loop teasers and anywhere a grid crops your video into a tile. Square is the diplomatic shape (nothing gets prime placement, nothing gets destroyed), which makes it a reasonable single-render compromise when you truly cannot make a second export. But exports here cost nothing, so the honest recommendation is: make the second export. #### How the in-browser exporter works Novus has no render farm. The same engine that draws your live preview renders the export frame by frame in your browser and encodes it to MP4 or WebM on your machine. That design has three practical consequences. Your track and your video never touch a server; nothing goes anywhere until you post the file yourself. Export is free with no watermark, because there is no per-render cloud bill to recover. And because beat sync is fully deterministic, the export matches the preview byte for byte: a hit that lands on a downbeat in preview lands on the identical frame in the file, every render, every time. Resolution follows the device. Desktops export up to 4K; phones cap at 1080p, which (not coincidentally) is exactly what the vertical platforms deliver anyway. If you are curious how far a phone-only workflow can go, that is its own post: [the mobile visualizer workflow](https://sonicweaver.com/blog/mobile-visualizer-workflow). *Figure: A tunnel engine visualizer still with fast forward motion: High-motion looks (tunnels, particle bursts, shake) are the first to fall apart under a starved bitrate. Export them at the highest resolution your device allows.* #### The pre-upload checklist 1. **Watch the whole file once**, full-screen, not just the first ten seconds. Encoding artifacts love to hide in the loudest section. 2. **Spot-check three beats** (one near the start, one at the biggest drop, one near the end) and confirm the hits read the way they did in preview. 3. **Check the edges at the target shape.** On 9:16, keep anything essential out of the bottom quarter and the right rail where platform UI stacks. 4. **Confirm the shape matches the destination.** A letterboxed upload is the fastest way to look wrong in a vertical feed. 5. **Play it muted.** Most feeds autoplay silent; a good visualizer still looks alive with the sound off. > **One song, several platforms** > Do not crop one master into every shape. Compose 16:9 and 9:16 as separate renders: same template, same colors, two minutes apart. Exports are free, so the second render is the cheapest quality upgrade you will ever make. If you have not made your first export yet, start with the ten-minute path ([from template to export in ten minutes](https://sonicweaver.com/blog/template-to-export-in-ten-minutes)) and come back here to tune the numbers. Still choosing a look? The [template gallery](https://sonicweaver.com/templates) previews every engine and mode in place. --- ### Classic Editor vs Creator Studio: Which Should You Use? URL: https://sonicweaver.com/blog/classic-vs-studio-which-editor Published: 2026-07-20 · Author: Novus Team · 8 min read The guided Classic editor and the node-based Creator Studio open the same document. An honest comparison, a decision guide, and when it pays to switch. Novus ships two editors: the guided [Classic editor](https://sonicweaver.com/editor) and the node-based [Creator Studio](https://sonicweaver.com/studio). The obvious question (*which one should I use?*) has a slightly surprising answer, because they are not competing products. Both are free, both export identically, and both open the **same document**. The real question is *when* each one earns its keep. Here is the honest comparison. #### What Classic is Classic is a guided path: upload a track, pick a template from the [gallery](https://sonicweaver.com/templates), tweak, export. The tweaking happens through the shared control set, which is deliberately small enough to learn in one sitting: Color Mode (duo, gradient or full rainbow spectrum), Beat Response, Pulse Intensity, Shake Amount, Rotation Speed, glow and chromatic aberration. And because all 60 looks in the catalog ship as templates, starting points are never the bottleneck. Classic is optimized for *finishing*: there is always an obvious next step, and the distance from a blank page to an exported MP4 is minutes, not hours. #### What Studio is Studio trades the guided rail for a workbench: a **layer stack** where each layer draws its own engine, a **node graph** where signals of every kind (`audio-source`, `math`, `merge` with its a/b inputs, `LFO`, `remap`, `random` and effect nodes) are wired into any parameter, an **inspector** for whatever is selected, and an assets area for project files, including logo uploads. Studio is optimized for *control*: if you can describe a behavior, you can usually wire it. *Figure: Diagram of Studio's layer stack compositing multiple engine layers: Studio's defining power: multiple engine layers, each with its own wiring, composited into one scene.* #### The part people miss: one document Because both editors open the same document, choosing is never a commitment. Start a project in Classic, open it in Studio to add a second layer, hop back to Classic to nudge colors before export; nothing is converted, exported or lost along the way. Switching editors is walking between two rooms of the same workshop, not migrating between apps. That single fact should lower the stakes of everything else in this post. #### A month in the life of one project A concrete example. A podcaster starts in Classic: upload episode one, open the *stacked-bands* template from the [Bars engine](https://sonicweaver.com/templates/bars), set a duo Color Mode to the show's two colors, ease the Shake Amount down, export a 16:9 for YouTube. Twenty minutes, done, repeat weekly. A month in, the show wants a signature look, so they open the *same project* in Studio, drift a Particles layer behind the bars, add an `LFO` for a slow breathing motion no slider offered, and finish with a glow effect node. From then on, weekly production happens back in Classic (swap the audio, re-export) while the Studio wiring keeps working underneath. Neither editor could have carried that workflow alone. #### Choose by task - **Your first visualizer ever:** Classic. Learn what the controls feel like before you wire them. - **A template plus color and beat tweaks:** Classic. The shared controls cover it with room to spare. - **Two engines in one frame:** Studio. Layering is a Studio-only superpower. - **A parameter that moves on its own, or reacts on a custom curve:** Studio. That is `LFO`, `remap` and `math` territory. - **A logo video:** start in Classic with the [logo-crown template](https://sonicweaver.com/templates/radial?mode=logo-crown); move to Studio only if you want extra layers behind the ring. - **A words-on-screen video:** either editor. The Character Motion engine's *word-wave* mode has an editable Display Text field that works from Classic, while Studio lets the words share the frame with more layers. - **A deadline in ten minutes:** Classic, no contest. #### Signals it is time to graduate Most people should start in Classic and stay until it pinches. The pinch is easy to recognize: - You keep wishing a control would *move on its own* instead of holding one value. - You want engine A drifting quietly behind engine B. - You want an effect (a glow, an aberration) on *one element* instead of the whole frame. - You are fighting a slider to approximate a behavior you can describe precisely. Each of those sentences is a node graph asking to exist. When you hear yourself say one, open the same project in [Studio](https://sonicweaver.com/studio) and build the thing directly; [our first-composition walkthrough](https://sonicweaver.com/blog/studio-node-graph-first-composition) covers the exact wiring. #### What does not change Everything that defines the output is identical in both editors. The full catalog (10 engines, 6 modes each, 60 looks) is available to both. Beat sync behaves the same: a discrete, visible hit on every beat, computed deterministically. Export is the same in-browser render at up to 4K on desktop and 1080p on phones, as MP4 or WebM, free and watermark-free, and in both editors the preview matches the export exactly. Nobody can look at a finished video and tell which editor made it. *Figure: A waveform visualizer still: The same scene renders identically whichever editor you shaped it in.* > **There is no wrong door** > Because the document travels with you, the worst-case cost of picking the “wrong” editor is one click to open the other. Pick whichever matches your mood today. #### Three misconceptions worth clearing - **“Studio is the paid tier.”** No. Both editors are free and neither watermarks exports. Studio is a different interface, not a different license. - **“Classic makes lesser videos.”** The render pipeline is identical; a Classic-only project exports at the same quality and resolution as a graph-heavy Studio one. - **“I'll have to export from one and import into the other.”** Never; it is one document. Opening the other editor is navigation, not migration. #### Bottom line Classic is for finishing; Studio is for inventing. Ship your everyday videos through [Classic's guided flow](https://sonicweaver.com/editor) (the [full walkthrough](https://sonicweaver.com/blog/editor-walkthrough-upload-to-export) takes you upload-to-export) and graduate individual projects to [Studio](https://sonicweaver.com/studio) the moment they need layers or motion that sliders cannot express. Same document, same export, two speeds. --- ### Make a Logo Visualizer: A Reactive EQ Ring Around Your Brand URL: https://sonicweaver.com/blog/make-a-logo-visualizer Published: 2026-07-20 · Author: Novus Team · 8 min read Turn your logo into a music visualizer with the radial logo-crown template: logo upload, center safe zone, color modes and export sizes for every platform. The logo-in-the-middle visualizer (a brand mark holding the center while a ring of EQ bars reacts around it) is the workhorse video for podcasts, DJs, labels and lo-fi channels: recognizable in a feed, professional on a stream, reusable for every episode or track. In Novus this is the Radial engine's *logo-crown* mode, and building one takes about ten minutes. Everything below is free and exports without a watermark. #### Step 1: open the logo-crown template Head to the [Radial engine page](https://sonicweaver.com/templates/radial) and choose *logo-crown*, or jump straight to it at [/templates/radial?mode=logo-crown](https://sonicweaver.com/templates/radial?mode=logo-crown). Open it in the [editor](https://sonicweaver.com/editor) and add your track; the ring starts reacting immediately with a placeholder center, so you can hear and see the scene before your own mark goes in. #### Step 2: upload your logo Use the logo upload to replace the placeholder with your own mark (in [Creator Studio](https://sonicweaver.com/studio), uploads live in the project's assets area, logos included). A **PNG with a transparent background** looks best by far; the mark floats over the scene instead of sitting in a box. Favor a reasonably square crop and a generously sized source image; the exporter can render up to 4K on desktop, and a tiny logo file is the one thing that will look soft at that size. One more filter worth applying: marks with hairline strokes or tiny lettering struggle at feed sizes no matter how well they render, so if your brand kit includes a simplified variant, this is its moment. Solid shapes and strong silhouettes survive both the glow treatment and the shrink to a phone screen. #### Step 3: trust the center safe zone logo-crown reserves a protected **center safe zone**: the radial EQ ring reacts *around* your logo and never over it, so the mark stays clean and legible through the loudest drop of the song. Size the logo to fill that zone confidently without crowding its edge: too small looks timid, too large fights the ring. If your logo is a wordmark, this zone is exactly why the text never gets sliced by a spiking bar, and it is why starting from logo-crown beats improvising a logo overlay on some other engine, where nothing stops the visuals from drawing straight across your mark mid-drop. *Figure: A radial visualizer still with a reactive ring around a central element: The logo-crown recipe: the center stays protected while the ring carries all the motion.* #### Step 4: color it to your brand Color Mode offers three routes: a **duo** of two colors, a **gradient**, or the **full rainbow spectrum**. For brand work, duo is usually right; set it to your two brand colors and every frame of the video becomes on-palette by construction. A touch of **glow** lifts the ring off a dark background; **chromatic aberration** adds broadcast-style edge but is worth using sparingly here, since the crisper your mark stays, the more professional the whole video reads. On backgrounds: dark is the easy win, because the ring's glow reads as light and a white or light logo pops against it. If your brand lives on light backgrounds instead, skip the glow and let clean contrast do the same job. #### Step 5: tune the motion Novus beat sync fires a discrete, visible hit on every beat, and it is deterministic, so your export matches the preview exactly. For a brand video, restraint wins: set **Pulse Intensity** to a medium swell so the ring clearly answers the beat, keep **Beat Response** moderate, and hold **Shake Amount** low or at zero; frame shake moves your logo, and wobbling brand marks read as glitch, not energy. A slow **Rotation Speed** adds a premium orbiting drift between hits. For the theory behind these three controls, see [Beat Sync Explained](https://sonicweaver.com/blog/beat-sync-explained-pulse-hits-and-shake). #### Step 6: try the spectrum-wings preset Want a wider composition? The **spectrum-wings** preset flanks the logo with mirrored spectrum wings; your mark anchors the center while frequency detail spreads to either side. It fills a 16:9 frame beautifully, which makes it a strong pick for YouTube, where the classic ring can leave the far edges of a widescreen frame feeling empty. #### Step 7: export for every platform Render in the size the destination expects: **16:9** for YouTube, **9:16** for Shorts, Reels and TikTok, **square** for feed posts. Exports render right in the browser as MP4 or WebM (up to 4K on desktop, 1080p on phones), and because rendering is deterministic, the preview you approved is the file you get. One project, re-exported at each size, gives your whole channel lineup a matching look. *Figure: Diagram comparing 16:9, 9:16 and square export framings of one scene: One scene, three framings: export per platform instead of letting apps crop for you.* > **The thumbnail test** > Before publishing, look at a frame of the video at roughly the size it will appear in a crowded feed. If the logo is not instantly recognizable that small, enlarge it within the safe zone or simplify the mark; feed size is where a logo video earns its living. #### Turn one video into a series The real payoff of a logo visualizer is repeatability. Keep the project, and for the next episode or track just swap the audio and export again; the logo, palette and motion settings carry over, so every release lands with the same identity. Deterministic rendering compounds the benefit: the look you approved once is the look every future export inherits, with no surprises between preview and file. If you publish to several platforms, run the 16:9, 9:16 and square exports in one sitting while the project is open, and the whole release goes out matched. #### Going further The template gets you a finished video; [Creator Studio](https://sonicweaver.com/studio) gets you a signature one. Open the same project there and add a second engine layer behind the ring: a slow *starfield* or drifting *dust-storm* gives the video depth without touching the logo's safe zone. [Your first wired composition](https://sonicweaver.com/blog/studio-node-graph-first-composition) walks through the node graph, and the step-by-step guides in [Tutorials](https://sonicweaver.com/tutorials) cover neighboring workflows when you are ready for more. --- ### The Creator Studio Node Graph: Your First Wired Composition URL: https://sonicweaver.com/blog/studio-node-graph-first-composition Published: 2026-07-19 · Author: Novus Team · 9 min read Wire an audio source through math and LFO nodes into engine parameters, merge two signals, and add effects: a first walkthrough of the Studio node graph. A slider sets a value. A node graph decides how a value *behaves*: where it comes from, how it is reshaped, and what it drives. That is the core idea behind [Creator Studio](https://sonicweaver.com/studio), the second of Novus's two editors: alongside the visual canvas sits a node graph where you wire your track's audio into any engine parameter, bend it through math, blend it with generators, and finish with effects. This walkthrough builds a first composition from an empty wire to a layered, breathing scene. #### The lay of the land Studio has four working surfaces. The **canvas** shows the live scene. The **layer stack** lists what is being drawn: each layer renders one engine, composited in order. The **node graph** holds the wiring for how parameters move. And the **inspector** shows editable details for whatever you have selected, with an assets area for the files a project uses, including uploaded images and logos. Crucially, Studio edits the *same document* as the [Classic editor](https://sonicweaver.com/editor); a project is never trapped in one or the other. *Figure: Diagram of stacked visualizer layers composited into one scene: Each layer draws one engine; the stack composites them into a single scene.* If you have used audio tools, the mental model transfers directly: layers are your mixer channels, the graph is your patch bay. If you have not, no matter; the walkthrough below assumes nothing beyond the ability to drag a wire from one port to another. #### The node vocabulary - `audio-source` emits levels measured from your track; the raw material of every reactive patch. - `math` does arithmetic on signals: scale them, offset them, combine them. - `merge` blends two inputs, **a** and **b**, into one output; the standard way to mix an audio signal with a generator. - `LFO` is a low-frequency oscillator that moves on its own, no audio required; the source of motion during quiet passages. - `remap` rescales a signal's range into the range a parameter actually wants; the difference between twitchy and tasteful. - `random` provides controlled unpredictability, for variation that never repeats exactly. - **Effect nodes** are glow, chromatic aberration and friends, applied to the rendered result at the end of a chain. #### First composition: a breathing orb Start from anything in the [gallery](https://sonicweaver.com/templates) or from a blank project, and give yourself a single layer running the Radial engine in its *pulse-orb* mode: one glowing orb, dead center, an ideal test subject because every change reads instantly. 1. **Wire audio to scale.** Add an `audio-source` node and connect its output to the orb layer's scale parameter by dragging from the output port to the input port. Play the track: the orb now grows with the music. It will almost certainly move too much; that is expected. 2. **Tame it with remap.** Insert a `remap` node between the two, and narrow the output range so full-blast audio produces a graceful swell instead of a lunge. This one habit (remap early, remap often) is most of the difference between amateur and polished patches. 3. **Add an LFO for idle life.** Purely audio-driven scenes die in quiet passages. Add an `LFO` with a slow rate, then a `merge` node: audio into input **a**, LFO into input **b**, merge output into the parameter. Now the orb breathes on its own and *also* answers the music. 4. **Balance with math.** If one side of the merge dominates, insert a `math` node to scale it down before it reaches the merge. Small numbers, big difference. 5. **Season with random.** Route a `random` node into a secondary parameter (a slight rotation wobble, a color drift) so the scene never loops visibly. 6. **Finish with effects.** Add an effect node such as glow at the end of the chain and the whole composition lifts off the background. *Figure: Node chain diagram: audio source through remap and merge with an LFO into a parameter: The classic first patch: audio-source → remap → merge (with an LFO on the b input) → parameter.* #### Add a second layer One layer is a scene; two layers are a composition. Add a Particles layer beneath the orb (*starfield* or *dust-storm* make quiet backdrops) and wire its parameters the same way, but gentler: lower ranges, slower LFO, so the background supports rather than competes. Layer order in the stack decides what draws in front, and effect nodes let you treat each layer's look independently, which is something no single-engine preset can do. A useful discipline once you have two layers: decide which one owns the beat. If both punch on every hit, the frame doubles its motion and reads as noise. Give the foreground the discrete hits and let the background answer levels only, and the composition immediately feels arranged rather than crowded. #### When the graph beats the sliders To be clear, the graph does not replace Classic's shared controls: Color Mode, Beat Response, Pulse Intensity, Shake Amount and Rotation Speed cover a huge share of real videos on their own. The graph answers the requests those controls cannot: a parameter that eases in as the intro builds, a color that drifts on an `LFO` while brightness follows the bass, two engines answering different aspects of the same song. The rule of thumb: when you can phrase the wish precisely, the graph can usually hold it. #### Habits that keep graphs fun - **One wire at a time.** Connect, play, look. Debugging a patch you built in one giant burst is miserable in any node tool. - **Remap before you blame.** Nine times out of ten a “broken” patch is a signal arriving in the wrong range, not the wrong shape. - **Let the LFO carry the floor.** Audio provides the peaks; a slow oscillator provides the resting motion between them. - **Delete freely.** Wires are free and undo exists. Graphs reward experiments. > **What you see is what renders** > Novus renders exports deterministically in the browser, and the preview matches the export, including every node-driven wiggle. There is no “it looked different after rendering” tax on graph complexity, so patch as ambitiously as you like. #### Where to go next When the patch feels right, export straight from the project: MP4 or WebM, up to 4K on desktop, watermark-free. And because both editors share one document, you can hop back to [Classic](https://sonicweaver.com/editor) any time for quick color and beat tweaks without unwiring anything. Not sure the graph life is for you yet? [Classic vs Studio](https://sonicweaver.com/blog/classic-vs-studio-which-editor) lays out the honest trade-offs, and [the full editor walkthrough](https://sonicweaver.com/blog/editor-walkthrough-upload-to-export) covers the upload-to-export path end to end. --- ### Beat Sync Explained: Pulse, Hits and Shake URL: https://sonicweaver.com/blog/beat-sync-explained-pulse-hits-and-shake Published: 2026-07-18 · Author: Novus Team · 8 min read How Novus turns BPM into discrete visual hits, why silence stays still, and how to tune Beat Response, Pulse Intensity and Shake Amount for your genre. Continuous motion is the easy half of a visualizer: bars that follow loudness, particles that swell with energy. The thing that makes a scene feel *locked* to a song is discrete: a visible hit that lands on every single beat. In Novus, beat sync means exactly that, one clean, countable hit per beat, produced deterministically so the export is identical to the preview. This post walks the pipeline from raw audio to that hit, then shows how to tune it with the three controls that shape it: **Beat Response**, **Pulse Intensity** and **Shake Amount**. #### Two kinds of reactivity Every engine mixes two response styles. *Continuous* reactivity tracks levels: spectrum height, particle density, glow strength follow the energy of the track from moment to moment. *Discrete* reactivity fires events: on each beat, the scene visibly punches. Continuous motion makes a scene feel alive; discrete hits are what a viewer actually perceives as “synced.” If you have read [How Music Visualizers Work](https://sonicweaver.com/blog/how-music-visualizers-work), continuous reactivity is the FFT side of the story; this post is about the beats. #### From track to beat grid When you load a song, Novus analyzes it up front: it estimates the tempo (BPM) and lays a beat grid across the whole file, and each grid point becomes a scheduled hit. Because the analysis happens once on the complete track rather than being guessed live during playback, the schedule never wavers: the same file with the same settings produces the same hits on every play, and the export replays that exact schedule. There is no re-listening at render time, so a hit you see at 0:47 in the preview lands at 0:47 in the finished MP4. *Figure: Pipeline diagram from audio file through BPM analysis to scheduled visual hits: Analysis runs once on the whole file; playback and export both replay the same hit schedule.* #### Why silence stays still A naive beat grid has an embarrassing failure mode: it keeps ticking through silence. The intro fades in, the bridge drops to a lone vocal, the outro rings out, and the visuals keep pulsing to a metronome nobody can hear. Novus gates hits against the actual energy of the track: a grid point only fires as a hit where the music genuinely carries a beat, so quiet passages hold still and breakdowns feel like breakdowns. When the drums come back, the hits come back with them. That gate is the difference between “synced to the song” and “a metronome stapled over the song.” *Figure: Diagram of beats firing only where track energy is present, staying quiet in silence: Hits are gated by real energy: the grid alone is never enough to make the scene pulse.* #### The three controls that shape a hit - **Beat Response** is the master depth of the reaction: how much the scene as a whole leans into each hit. This is the first knob to reach for when everything feels too strong or too subtle. - **Pulse Intensity** is the size of the pulse each hit produces: how far elements swell and brighten on the beat before easing back. - **Shake Amount** is a brief frame shake on each hit. A little reads as impact; a lot reads as chaos. It is the most powerful and the easiest to overdo. A supporting cast rounds out the feel: **Rotation Speed** adds continuous motion between hits so the scene never sits frozen, and **glow** and **chromatic aberration** style the frame so each punch lands with more atmosphere. None of these change *when* hits happen, only how they look. #### Tuning by genre - **EDM, hip-hop, trap.** The beat is the product: Beat Response high, Pulse Intensity strong, Shake Amount moderate. Four-on-the-floor tracks can take more than you think. - **Rock and indie.** Live drums breathe, so go medium across the board; an overly rigid pulse fights the human timing. - **Pop and vocal-led.** Medium pulse, low shake, so the frame stays steady enough for text and faces to read. - **Ambient, acoustic, lo-fi.** Pulse Intensity low and Shake Amount at zero; let continuous reactivity carry the scene and treat hits as punctuation, not percussion. > **Audition both extremes** > Before you export, scrub to the loudest chorus *and* the quietest verse. Settings that feel perfect on the drop often feel dead in the verse, and settings tuned on a verse can strobe on the drop. Thirty seconds of checking saves a re-render. #### Troubleshooting - **The scene feels twitchy.** Lower Shake Amount before touching anything else; shake exaggerates every hit. - **The scene feels flat.** Raise Pulse Intensity first, then Beat Response. Pulse changes what a hit looks like; response changes how much of the scene joins in. - **Hits feel double-time or half-time.** Tempo detection can lock to twice or half the tempo you tap your foot to. Neither is wrong; tune by ear, and if every-beat hits feel busy, ease Pulse Intensity down so only the strong beats read. - **Hits look weak in this engine.** Different engines spend hits differently: Bars snap, Tunnel lunges forward, Radial swells. Try the same track in a second engine before blaming the settings. #### Determinism: preview equals export Because the hit schedule is computed from the file rather than improvised in real time, the render you export is the render you previewed: same beats, same pulses, same shakes, frame for frame. That makes tuning trustworthy: what you sign off on is what your audience sees. Open a beat-forward look such as [stacked-bands](https://sonicweaver.com/templates/bars?mode=stacked-bands) in the [editor](https://sonicweaver.com/editor), drop in your loudest track, and work the three controls until the drop feels inevitable. For which engines spend their hits best on your style of music, start with [the engine tour](https://sonicweaver.com/blog/meet-the-nine-visualizer-engines). --- ### Meet the Novus Visualizer Engines: A Guided Tour of All 60 Looks URL: https://sonicweaver.com/blog/meet-the-nine-visualizer-engines Published: 2026-07-17 · Author: Novus Team · 9 min read A tour of all ten Novus engines (Particles, Trails, Bloom, Character Motion, Radial, Spectrum, Bars, Tunnel, Waveform and Logo), with a standout mode for each. Every Novus scene is drawn by one of ten engines (Particles, Trails, Bloom, Character Motion, Radial, Spectrum, Bars, Tunnel, Waveform and Logo), and each engine ships six modes, for **60 distinct looks** in total. An engine is a way of turning sound into picture; a mode is a personality within that way. This post is the full tour: what each engine is good at, when to reach for it, and one highlight mode worth trying first. Everything in the [template gallery](https://sonicweaver.com/templates) opens in both editors (the guided [Classic editor](https://sonicweaver.com/editor) and the node-based [Creator Studio](https://sonicweaver.com/studio)), and every engine speaks the same control language: Color Mode (a two-color duo, a gradient, or the full rainbow spectrum), Beat Response, Pulse Intensity, Shake Amount, Rotation Speed, glow and chromatic aberration. Whatever you learn tuning one engine transfers straight to the other nine. *Figure: Grid of ten visualizer engine tiles, each with six mode variations: Ten engines, six modes each: 60 looks that all share one set of controls.* #### How the catalog is organized Each engine has its own gallery page ([Particles](https://sonicweaver.com/templates/particles), [Tunnel](https://sonicweaver.com/templates/tunnel) and so on) listing its six modes, and you can deep-link a single look with a mode query like [/templates/radial?mode=logo-crown](https://sonicweaver.com/templates/radial?mode=logo-crown). Beat sync behaves identically everywhere: a discrete, visible hit lands on every beat, deterministically, so your export matches the preview frame for frame. With the ground rules set, here is the tour. #### The ten engines, one by one ##### Particles Particles fills the frame with thousands of independent points that drift, fall and burst with the music. Its modes are *dust-storm*, *waterfall*, *starfield*, *fountain-burst*, *orbit-swarm* and *constellation*. It is the most forgiving engine in the catalog (texture and energy without demanding the viewer's full attention), which makes it a safe default for almost any genre. **Highlight mode:** *fountain-burst*, which fires a plume of particles upward on every beat and stays legible even at phone size. ##### Trails Trails draws moving heads that leave glowing paths behind them: motion with memory. Modes: *comet-shower*, *snake-braid*, *orbit-trace*, *flow-field*, *echo-streaks* and *ribbon-flow*. Because the last few seconds of movement stay faintly visible, Trails flatters melodic, flowing music where you want gestures to linger instead of vanish. **Highlight mode:** *flow-field*, which steers hundreds of streaks through an invisible current that bends as the track's energy shifts. ##### Bloom Bloom is the organic-growth engine: shapes germinate, spread and blossom in step with the song. Modes: *petal-bloom*, *ink-diffusion*, *cellular-growth*, *vine-mycelium*, *crystal-growth* and *ripple-blossom*. Growth reads as calm and alive rather than percussive, so Bloom suits ambient, acoustic, neo-classical and slow-burn tracks that would feel bullied by a harder look. **Highlight mode:** *ink-diffusion*, which spreads pigment through water, with each beat pushing fresh ink into the frame. ##### Character Motion Character Motion makes characters (letterforms and figures) the visualizer itself. Modes: *glyph-field*, *word-wave*, *ascii-cascade*, *crowd-clone*, *2d-puppet* and *3d-performer*. The *word-wave* mode has an editable Display Text field, so your artist name or track title can literally ride the music, while the figure modes (*crowd-clone*, *2d-puppet*, *3d-performer*) move on the beat for a playful, personality-forward energy. **Highlight mode:** *word-wave*. Type your title once and it becomes the scene. ##### Radial Radial arranges everything around a center point: orbs, rays, rings and mandalas breathing outward from the middle. Modes: *pulse-orb*, *sunburst*, *logo-crown*, *mandala*, *concentric-rings* and *orbit-halo*. Center-weighted composition makes Radial the natural pick when one element should anchor the frame. **Highlight mode:** *logo-crown*, the Logo Visualizer. Upload a logo and a radial EQ ring reacts around it while a center safe zone keeps your mark untouched. We walk through it step by step in [Make a Logo Visualizer](https://sonicweaver.com/blog/make-a-logo-visualizer). ##### Spectrum Spectrum plots the actual frequency content of the track (bass at one end, treble at the other) as lines, surfaces and terrain. Modes: *line-spectrum*, *mirrored-area*, *spectrogram-waterfall*, *frequency-ridge*, *spectral-mesh* and *ribbon-surface*. It is the most literal engine: viewers can watch the kick, the vocal and the hats as separate shapes. **Highlight mode:** *spectrogram-waterfall*, which scrolls the recent spectrum away into a glowing history so the whole arrangement leaves a visible wake. ##### Bars Bars is the classic equalizer, modernized. Modes: *linear-equalizer*, *center-mirror*, *stacked-bands*, *piano-step-grid*, *3d-columns* and *radial-bars*. Nothing says “this video is music” faster than bars jumping on the beat, which is why the engine works equally well for DJ sets, lyric channels and podcasts. **Highlight mode:** *stacked-bands*, LED-style segments with a floor reflection, equal parts hi-fi hardware and festival stage. ##### Tunnel Tunnel pulls the camera through space: rings, grids and vortices rushing past in time with the track. Modes: *concentric-rings*, *corridor-grid*, *warp-field*, *spectrum-tube*, *waveform-tube* and *particle-vortex*. Forward motion delivers instant momentum, which is why Tunnel is a favorite for electronic music and anything that builds toward a drop. **Highlight mode:** *warp-field*, a stars-at-lightspeed rush where every beat kicks the throttle. *Figure: A tunnel visualizer still with rings rushing toward the camera: Tunnel modes trade flat composition for depth: momentum you can feel even in a still.* ##### Waveform Waveform draws the signal itself: the oscillating line every musician recognizes. Modes: *line*, *mirrored*, *filled*, *ribbon*, *oscilloscope-lissajous* and *3d-surface*. It is the minimalist's engine (clean, honest and legible at any size) and a great fit for podcasts, singles and understated brands. **Highlight mode:** *oscilloscope-lissajous*, which bends the signal into looping figures straight off vintage lab hardware. ##### Logo Logo builds the whole scene around your artwork instead of pasting it into a corner. Modes: *waveform-ring*, *spectrum-halo*, *orbiting-bars*, *particle-aura*, *pulse-frame* and *kinetic-reveal*. Every mode reserves a safe zone in the middle and grows its geometry outward from the edge of that zone, so the mark stays clear no matter how loud the track gets. Upload a logo, and the reaction happens around it. This is the engine for label idents, artist stingers and anything where the brand is the subject rather than the decoration. **Highlight mode:** *waveform-ring*, where the outline itself is the waveform, so the ring around your logo is literally the shape of the sound. *Figure: A logo visualizer still with a waveform ring around a reserved center: Logo modes size everything from the safe zone outward, so the mark never gets covered.* #### Choosing in under a minute - **Energy without a focal point?** Particles or Trails. - **Want the music itself visible?** Spectrum, Bars or Waveform. - **Building around your own artwork?** Logo. - **Need a centerpiece, an orb or a mandala?** Radial. - **Depth and momentum?** Tunnel. - **Words or characters on screen?** Character Motion. - **Calm, organic motion?** Bloom. Genre sharpens the choice further: we map styles to music in [Choosing the Right Visualizer Engine for Your Genre](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre). And because every mode is a template, the cost of being wrong is one click: open a different look and your track, colors and beat settings come along. #### Take the tour yourself Browse the [full gallery](https://sonicweaver.com/templates), open anything in the [editor](https://sonicweaver.com/editor), and flip between two or three engines on the same song. Identical audio with completely different motion is the fastest way to find your look. Exports are rendered in your browser as MP4 or WebM, up to 4K on desktop, free and watermark-free. When you have a favorite engine, [Beat Sync Explained](https://sonicweaver.com/blog/beat-sync-explained-pulse-hits-and-shake) shows how to make it hit harder. --- ### Choosing the Right Visualizer Engine for Your Genre URL: https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre Published: 2026-07-16 · Author: Novus Team · 9 min read EDM, lo-fi, ambient, rock or lyric-led: a practical guide to matching a visualizer style to your track, with engine picks and color-theme tips for each. Novus ships ten visualizer engines (Particles, Trails, Bloom, Character Motion, Radial, Spectrum, Bars, Tunnel, Waveform and Logo) and every engine comes in six modes, for 60 distinct looks. That is still a lot of choice, and staring at the full [template gallery](https://sonicweaver.com/templates) can be paralyzing. The shortcut is to start from your *music*: the genre, tempo and energy of a track narrow the field fast. This guide maps common genres to specific engines and modes so you can jump to a short list instead of scrolling forever. #### Why engine choice matters As we cover in [How Music Visualizers Work](https://sonicweaver.com/blog/how-music-visualizers-work), every engine reads the same audio measurements; it just *draws* them differently. A spectrum engine turns bass into bar height; a particle engine turns the same bass into a burst of sparks. So the question is never “which engine is best” in the abstract; it is “which mapping flatters *this* song.” Match the visual language to the mood of the music and the result feels intentional; mismatch it and even a technically-perfect render feels off. *Figure: Grid of the nine Novus visualizer engines, from spectrum bars to 3D tunnels: The ten engines, from EQ bars to immersive tunnels: each opens into six modes on the templates gallery.* #### EDM, bass music and electronic High-energy electronic music lives and dies on the drop, so you want engines that hit hard on the bass and explode on the beat. Reach for [Bars](https://sonicweaver.com/templates/bars) or [Spectrum](https://sonicweaver.com/templates/spectrum) for classic EQ energy ([Center Mirror](https://sonicweaver.com/templates/bars?mode=center-mirror) and [Mirrored Area](https://sonicweaver.com/templates/spectrum?mode=mirrored-area) slam symmetrically on every kick), or [Particles](https://sonicweaver.com/templates/particles) for scenes that erupt on cue, with [Fountain Burst](https://sonicweaver.com/templates/particles?mode=fountain-burst) firing arcs on each beat. Crank Beat response up and add a little Beat shake so the visuals stay punchy and percussive. *Figure: A spectrum-bars visualizer still: A spectrum scene: the workhorse look for beat-driven electronic music.* #### Hip-hop and lo-fi Hip-hop wants weight without chaos: a strong, steady bass response and a look with attitude. [Spectrum](https://sonicweaver.com/templates/spectrum) works well, and the LED-wall look of [Stacked Bands](https://sonicweaver.com/templates/bars?mode=stacked-bands), with bass, mids and treble stacked per column, nails the retro EQ attitude. A slower, moodier lo-fi beat pairs beautifully with the drifting motion of [Bloom](https://sonicweaver.com/templates/bloom) (try [Ink Diffusion](https://sonicweaver.com/templates/bloom?mode=ink-diffusion)) or the lazy currents of the Trails engine's [Flow Field](https://sonicweaver.com/templates/trails?mode=flow-field). Ease Beat response down a little so the visuals lean back into the pocket rather than twitching on every hat. #### Ambient and cinematic Atmospheric, slow-evolving music calls for scenes that breathe. The Particles engine's [Starfield](https://sonicweaver.com/templates/particles?mode=starfield) and [Orbit Swarm](https://sonicweaver.com/templates/particles?mode=orbit-swarm) modes (drifting stars, slow orbits) are tailor-made for it, and the [Tunnel](https://sonicweaver.com/templates/tunnel) engine adds real depth to a pad-driven track. Keep Beat response gentle and Sensitivity low so the imagery swells and recedes instead of snapping. *Figure: A drifting starfield scene from the Particles engine: The Particles engine's Starfield mode suits ambient and cinematic tracks where the visuals should drift.* #### Rock, metal and live recordings Guitar-driven music has broadband energy: there is content across the whole spectrum at once. Full-spectrum [Bars](https://sonicweaver.com/templates/bars) match that intensity, and the streaking motion of [Trails](https://sonicweaver.com/templates/trails) ([Comet Shower](https://sonicweaver.com/templates/trails?mode=comet-shower) and [Echo Streaks](https://sonicweaver.com/templates/trails?mode=echo-streaks) especially) feels raw and physical, which reads as “live.” Keep Beat response high; rock masters usually have enough dynamic range to avoid strobing. #### Vocal-led and lyric-forward tracks If the voice is the star, let the visuals carry words. The [Character Motion](https://sonicweaver.com/templates/character-motion) engine renders titles and lyrics as first-class motion ([Word Wave](https://sonicweaver.com/templates/character-motion?mode=word-wave) deforms whole words along a beat-mapped baseline, while [Glyph Field](https://sonicweaver.com/templates/character-motion?mode=glyph-field) sends individual characters traveling through the frame), and you can layer synced captions over any other scene. For a full walkthrough, see [How to Make a Lyric Video That Actually Syncs](https://sonicweaver.com/blog/make-a-lyric-video-that-syncs). #### Six modes per engine Every engine ships six modes: the same audio plumbing, six different drawings. [Waveform](https://sonicweaver.com/templates/waveform) runs from a clean [Line](https://sonicweaver.com/templates/waveform?mode=line) to a lit [3D Surface](https://sonicweaver.com/templates/waveform?mode=3d-surface); [Bars](https://sonicweaver.com/templates/bars) goes from a flat [Linear Equalizer](https://sonicweaver.com/templates/bars?mode=linear-equalizer) to beveled [3D Columns](https://sonicweaver.com/templates/bars?mode=3d-columns). All ten engines share one control set: Color mode (duo, gradient or a full-spectrum rainbow), Beat response, Pulse intensity, Beat shake, Rotation and Glow. So anything you learn tuning one engine transfers straight to the other nine. When in doubt, start with an engine's default mode and step through the rest until one clicks. The [engine library](https://sonicweaver.com/help/visualizers) breaks each one down. > **Rule of thumb** > Faster, busier track → cleaner mode (a [Line Spectrum](https://sonicweaver.com/templates/spectrum?mode=line-spectrum) or [Linear Equalizer](https://sonicweaver.com/templates/bars?mode=linear-equalizer)) so the motion stays readable. Slower, spacious track → deeper mode (a [Warp Field](https://sonicweaver.com/templates/tunnel?mode=warp-field) tunnel or a drifting [Starfield](https://sonicweaver.com/templates/particles?mode=starfield)) so there is something to watch between the hits. #### Matching color themes to mood Style is half the picture; color is the other half. Warm palettes (amber, magenta) feel energetic and intimate; cool palettes (cyan, violet) feel spacious and modern; high-contrast neon reads as club energy. Every engine has a Color mode (a two-color duo, a primary-to-secondary gradient, or a full-spectrum rainbow) so you can keep a favorite engine and re-skin it per release to stay on-brand; the [recoloring tutorial](https://sonicweaver.com/tutorials/recolor-with-themes-and-settings) shows how. #### Where to start Pick the engine that matches your genre above, open three or four of its modes on your actual track in the [editor](https://sonicweaver.com/editor), and let the music decide. Once a look clicks, [From Upload to Export](https://sonicweaver.com/blog/editor-walkthrough-upload-to-export) takes you the rest of the way to a finished file. And if you are curious *why* a given engine reacts the way it does, the engine docs in the [visualizer library](https://sonicweaver.com/help/visualizers) go engine by engine. --- ### Designing Cover Art & Spotify Canvas Loops That Match Your Sound URL: https://sonicweaver.com/blog/cover-art-and-spotify-canvas-branding Published: 2026-07-16 · Author: Novus Team · 8 min read Build a cohesive visual identity for a release: square cover art, a 9:16 Canvas loop, and typography and color that carry across every platform. A release is not just a song; it is a look. The cover thumbnail in someone's library, the looping Canvas behind the track, the visualizer on YouTube: when they share a visual language, the whole project feels considered and memorable. This guide covers building that identity in Novus, starting from the [Cover Art & Canvas Studio](https://sonicweaver.com/albums). #### Visual identity for a release Before opening any tool, decide the *feeling*: warm or cool, minimal or maximal, retro or modern. Pin down two or three colors, one or two fonts, and a motif (a shape, texture or engine style) you will reuse everywhere. That tiny style guide is what makes a cover, a Canvas and a full video read as one release instead of three unrelated assets. #### Square cover vs 9:16 Canvas The two core formats have different jobs. **Cover art is square (1:1)** and often seen tiny: in a phone library it might be a couple of centimeters across, so it has to read at thumbnail size. **Spotify Canvas is a short vertical (9:16) loop**, 3–8 seconds, that plays behind the track on mobile; it should move gently and loop seamlessly without a visible jump. The [cover art tutorial](https://sonicweaver.com/tutorials/design-cover-art) and the [Spotify Canvas loop tutorial](https://sonicweaver.com/tutorials/spotify-canvas-loop) walk through both formats step by step. *Figure: Diagram comparing square cover art with a 9:16 Canvas loop: Square cover for libraries; a seamless 9:16 loop for Canvas. Design each for where it is seen.* #### Typography and hierarchy On a cover, the artist and title are usually the message, so give them a clear hierarchy: one element dominant, the other secondary. Choose a font with enough weight to survive thumbnail scaling, and resist crowding; negative space reads as confidence. On a Canvas, text can be smaller or absent, because the motion carries the interest. #### Color that matches the mood Color is the fastest way to signal genre and mood before a single note plays. Warm palettes feel intimate and energetic; cool palettes feel spacious and modern; high-contrast neon reads as club energy. Lock a palette and apply it consistently: every Novus engine has primary and secondary colors plus a Color mode (duo, gradient or full-spectrum), so your cover, Canvas and videos can all share the exact same colors; the [recoloring tutorial](https://sonicweaver.com/tutorials/recolor-with-themes-and-settings) shows how. *Figure: A drifting starfield scene from the Particles engine, usable as a Canvas backdrop: The Particles engine's slow Starfield mode makes an easy, seamless Canvas loop for ambient and cinematic releases.* #### Animating a Canvas loop A Canvas is short, so favor slow, continuous motion that hides the loop point: drifting particles, a slowly turning orbit, a gentle gradient shift. Avoid a hard beat that snaps at the seam, since the loop will visibly stutter. Slower scenes (the Particles engine's [Starfield](https://sonicweaver.com/templates/particles?mode=starfield), the unfolding growth of [Bloom](https://sonicweaver.com/templates/bloom), or the Radial engine's phase-drifting [Orbit Halo](https://sonicweaver.com/templates/radial?mode=orbit-halo)) are the easiest to loop cleanly. > **Loop test** > Play your Canvas export on repeat and watch the seam. If your eye catches the jump, choose a slower scene or a longer loop; a seamless loop is the difference between a Canvas that feels premium and one that feels rushed. #### Staying on-brand across platforms Reuse relentlessly. The same palette, font and motif on your cover, Canvas, lyric video and YouTube visualizer turns a single release into a recognizable set. Save your dialed-in scene and re-skin it per track so an EP or album shares one identity while each song stays distinct. #### Exporting PNG and an MP4 loop Export the cover as a high-resolution image and the Canvas as a short MP4 loop at the right vertical dimensions. Everything renders locally, watermark-free, and you own the files. Check the cover at small sizes before you commit; if it is unreadable as a thumbnail, simplify. #### From cover to full visualizer Once the identity exists, extend it to a full-length video. Take the same engine, palette and typography into the [editor](https://sonicweaver.com/editor) and follow [From Upload to Export](https://sonicweaver.com/blog/editor-walkthrough-upload-to-export) to produce a complete visualizer that matches the cover and Canvas, a release that looks like it was designed all at once, because it was. Not sure which engine fits? [Choosing the Right Visualizer Engine](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre) has you covered. --- ### From Upload to Export: A Complete Novus Editor Walkthrough URL: https://sonicweaver.com/blog/editor-walkthrough-upload-to-export Published: 2026-07-16 · Author: Novus Team · 9 min read A step-by-step tour of the Novus editor: uploading audio, picking a template, tuning layers and reactivity, and exporting a clean MP4 or WebM. The Novus editor takes a song and a scene and gives you a finished video: no software to install, no watermark, and you own the export. This walkthrough follows the whole path once, end to end, so you know where every control lives. Keep the [editor](https://sonicweaver.com/editor) open in another tab and follow along. #### 1. Opening the editor You can enter the editor three ways: straight from the [main editor page](https://sonicweaver.com/editor) with a blank scene, by opening any scene from the [template gallery](https://sonicweaver.com/templates), or via [Quick Start](https://sonicweaver.com/quick-setup), a guided flow that picks sensible defaults for you. If you are new, Quick Start is the fastest way to a good-looking result; if you know the look you want, open it from the gallery. (There is also [Creator Studio](https://sonicweaver.com/studio), a deeper layers-and-nodes editor that opens the very same project; this walkthrough sticks to the classic editor.) #### 2. Uploading your audio Drop in an MP3, WAV or most common audio file and the editor analyzes it locally in your browser; nothing is uploaded to a server, which is why it is fast and private. Do not have a track handy? The [Audio Library](https://sonicweaver.com/audio-library) has copyright-free music you can use commercially. Once the track is in, the editor detects a beat grid you can correct by hand (BPM, offset, even individual markers) which is what keeps every hit on time; the [first visualizer guide](https://sonicweaver.com/help/first-visualizer) covers the details. > **Everything is device-local** > Novus is guest-first: your audio, projects and exports live in your browser by default, with no account required. That keeps things private and free; signing in is optional if you want cloud-saved revisions, and clearing site data clears any local-only projects. #### 3. Picking a template With audio loaded, choose a scene. If you came in blank, open the engine picker and browse the ten engines, the same ones covered in [Choosing the Right Visualizer Engine](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre). Every engine offers six modes; switch between them live and watch the preview update against your track. #### 4. The settings panel The settings panel is where a scene becomes *yours*. Some controls are engine-specific, but every engine shares a core set: **Beat response** (how hard each detected beat hits; see [How Music Visualizers Work](https://sonicweaver.com/blog/how-music-visualizers-work) for the theory), **Sensitivity**, **Pulse intensity**, **Beat shake**, **Rotation** and a **Color mode** that switches between a duo palette, a gradient and a full-spectrum rainbow. Small nudges go a long way; change one thing at a time and let the preview tell you if it helped. *Figure: Diagram of the editor signal chain from audio to scene to layers to export: The editor pipeline: audio drives the scene, layers stack on top, and everything renders into the export.* #### 5. Text overlays and layers Novus scenes are built from toggleable layers: background, the visualizer itself, an optional logo, an overlay, a song title and author text. Turn on the ones you need and position them to taste. Text layers are perfect for a track title, artist name or handle; the [titles, text and logo tutorial](https://sonicweaver.com/tutorials/add-titles-artist-text-and-logo) covers fonts, sizing and placement. You can also add synced lyric captions here (more in the [lyric video guide](https://sonicweaver.com/blog/make-a-lyric-video-that-syncs)). 1. **Background:** a solid color, gradient or image behind everything. 2. **Visualizer:** the reactive engine itself. 3. **Logo / overlay:** brand marks or a framing overlay on top. 4. **Song title & author:** text layers for titles, artist name or a handle. #### 6. Effects and polish Every engine carries a set of effect controls (Glow, motion echo, blur and more) for a richer, more produced look, and [Creator Studio](https://sonicweaver.com/studio) goes further, letting you wire LFO, math and effect nodes into any property on its node graph. Use it all deliberately: a little glow adds depth, a lot turns everything to mush. If a scene feels flat, a touch of Glow and a Color mode tweak usually fixes it faster than any single parameter. #### 7. Choosing resolution and aspect ratio Before exporting, set your canvas to match where the video is going. **16:9** for YouTube and desktop, **9:16** for Shorts / Reels / TikTok, **1:1** for feed posts. Picking the aspect ratio *before* you fine-tune framing saves rework, because text and logo positions are relative to the canvas. *Figure: Diagram comparing 16:9, 9:16 and 1:1 export aspect ratios: Set the aspect ratio to the destination first: 16:9 for YouTube, 9:16 for Shorts, 1:1 for feed.* #### 8. Exporting MP4 or WebM Hit export and Novus renders your video locally: no watermark, no export cap, no account required. **MP4** is the safe, universal choice for social platforms; **WebM** is smaller and great for the web when you control playback. Higher resolutions take longer to render, so a 4K export of a long track will need patience. The [export guide](https://sonicweaver.com/help/exporting) covers formats, quality settings and device limits. #### 9. Reusing your look Once you have a scene dialed in, you can reuse it across a whole release so every video shares an identity, the heart of building a brand, which we cover in [Designing Cover Art & Spotify Canvas Loops](https://sonicweaver.com/blog/cover-art-and-spotify-canvas-branding). Making a full set of visuals for an album? The [Cover Art & Canvas Studio](https://sonicweaver.com/albums) is built for exactly that. Still stuck on something? The [FAQ](https://sonicweaver.com/faq) answers the most common questions. --- ### How Music Visualizers Work: FFT, Frequency Bands & Audio Reactivity URL: https://sonicweaver.com/blog/how-music-visualizers-work Published: 2026-07-16 · Author: Novus Team · 8 min read 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](https://sonicweaver.com/editor) and watching the numbers move as your track plays. #### What a visualizer actually does 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. #### The Web Audio API and the FFT 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. *Figure: Diagram of an audio spectrum split into bass, mid and treble frequency bands: The FFT turns the raw waveform into a spectrum of frequency bins, which engines usually group into bass, mid and treble bands.* #### Bass, mids and treble 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. - **Bass** drives the big, weighty motion: scale, thrust, camera shake, screen-wide pulses. - **Mids** carry melody and vocals: good for the main shapes that should feel connected to the tune. - **Treble** adds detail and shimmer: sparks, highlights, fine particles and glints. > **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](https://sonicweaver.com/tutorials/tune-audio-reactivity) tutorial. #### Amplitude, RMS and onset (beat) detection 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. *Figure: Diagram showing energy crossing a moving threshold to trigger a beat event: A beat fires when the current energy jumps above a moving average, so both quiet and loud sections stay in time.* #### Mapping numbers to motion Now the fun part. Each engine takes those measurements (per-band levels, amplitude, beat events) and maps them onto its visual parameters. The [Spectrum](https://sonicweaver.com/templates/spectrum) engine maps each band to a bar height. The [Particles](https://sonicweaver.com/templates/particles) engine maps bass to emission rate and beats to bursts. The [Tunnel](https://sonicweaver.com/templates/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](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre). #### Sensitivity and response styles 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. #### Tuning reactivity to your genre 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](https://sonicweaver.com/tutorials/tune-audio-reactivity) has starting points for each, and you can experiment live in the editor. #### Try it yourself The best way to internalize all of this is to play. Open the [editor](https://sonicweaver.com/editor), drop in a track, and browse the [full engine catalog](https://sonicweaver.com/templates): switch between [Spectrum](https://sonicweaver.com/templates/spectrum), [Particles](https://sonicweaver.com/templates/particles) and [Tunnel](https://sonicweaver.com/templates/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](https://sonicweaver.com/audio-effects) is a handy sandbox. Then read [How FFT Turns Audio Into Visualizer Bands](https://sonicweaver.com/blog/how-fft-turns-audio-into-visualizer-bands) and [How Canvas Paints an Audio Visualizer](https://sonicweaver.com/blog/how-canvas-paints-an-audio-visualizer) for the platform-level loop, or [From Upload to Export](https://sonicweaver.com/blog/editor-walkthrough-upload-to-export) to turn your favorite look into a finished video. **Sources** - [W3C Web Audio API](https://www.w3.org/TR/webaudio/) - [MDN: AnalyserNode](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode) --- ### How to Make a Lyric Video That Actually Syncs URL: https://sonicweaver.com/blog/make-a-lyric-video-that-syncs Published: 2026-07-16 · Author: Novus Team · 8 min read Auto-transcription, per-word timing, legible captions and layering over a visualizer: a complete guide to lyric videos that land on the beat. A great lyric video does one thing exceptionally well: the words land exactly when they are sung. Get the timing right and even a simple design feels professional; get it wrong and the fanciest animation feels amateur. This guide walks through making a lyric video in Novus that stays locked to the vocal, from automatic transcription to a polished export. Open the [Lyric Video Creator](https://sonicweaver.com/lyric-videos) to follow along. #### What makes lyrics feel “in time” Two kinds of timing matter. **Line timing** decides when a full line appears and clears; get this roughly right and the video already reads well. **Word timing** highlights each word as it is sung, karaoke-style; this is the polish that makes a lyric video feel premium. Novus can do both, and you can decide how far to push depending on the song. #### Automatic transcription with Whisper Typing and timing lyrics by hand is tedious, so Novus uses **Whisper**, an on-device speech-recognition model, to transcribe your track and produce a first-pass timing map automatically. It runs locally in your browser; your audio never leaves your device. The [synced lyric video tutorial](https://sonicweaver.com/tutorials/synced-lyric-video) covers how to kick off a transcription and what to expect. > **Auto-transcription is a starting point** > Whisper is excellent but not perfect: dense mixes, heavy effects and fast rap can trip it up. Treat the auto result as a 90%-there draft you will clean up, not a final render. That is normal and far faster than starting from scratch. #### Correcting per-word timing Play the track and scrub through the transcript, nudging any lines or words that drifted. Focus your effort on the chorus and hooks; those are the moments viewers replay and screenshot, so they deserve tight timing. Verses can be a touch looser without anyone noticing. Fix the misheard words while you are here, too. *Figure: Diagram of lyric captions layered over a visualizer and background: A lyric video is layers: background, a reactive visualizer, then synced captions on top.* #### Choosing a lyric or typographic engine For a words-first video, start with the [Character Motion](https://sonicweaver.com/templates/character-motion) engine, where text *is* the visualizer and reacts to the music: [Word Wave](https://sonicweaver.com/templates/character-motion?mode=word-wave) ripples whole words along a beat-mapped baseline, while [Glyph Field](https://sonicweaver.com/templates/character-motion?mode=glyph-field) and [ASCII Cascade](https://sonicweaver.com/templates/character-motion?mode=ascii-cascade) turn individual characters into the scene itself. Prefer a subtler look? Keep any scene you like and add a caption layer on top; the lyrics ride over a [spectrum](https://sonicweaver.com/templates/spectrum), a [particle field](https://sonicweaver.com/templates/particles) or a slow [tunnel](https://sonicweaver.com/templates/tunnel). Both approaches are covered in [Choosing the Right Visualizer Engine](https://sonicweaver.com/blog/choosing-the-right-visualizer-for-your-genre). #### Styling captions for legibility Legibility beats decoration every time. A few reliable rules: - Use a heavy weight and generous size; thin fonts vanish over busy visuals. - Add contrast: a subtle shadow, outline or scrim behind the text keeps it readable over bright scenes. - Keep one or two lines on screen at once; walls of text lose the viewer. - Leave safe margins so nothing is clipped by a platform's UI on mobile. The [titles, text and logo tutorial](https://sonicweaver.com/tutorials/add-titles-artist-text-and-logo) goes deeper on fonts and placement. #### Layering lyrics over a visualizer The magic combination is a reactive scene *plus* synced words. Ease the visualizer back (lower its Beat response and Beat shake a touch) so it supports the text rather than competing with it, and let the captions be the focal point. If you need a track to build on, the [Audio Library](https://sonicweaver.com/audio-library) has copyright-free options you can publish anywhere. #### Export settings for social Match the export to the destination: **9:16** for Shorts, Reels and TikTok; **16:9** for YouTube. Export as MP4 for maximum compatibility. Double-check the first and last few seconds; captions at the very edges of a clip are the easiest to get slightly wrong. The full [editor walkthrough](https://sonicweaver.com/blog/editor-walkthrough-upload-to-export) covers resolution and format choices in detail. #### Publishing Your export is watermark-free and yours to publish anywhere, with no attribution required. Post the vertical cut to Shorts and Reels, the wide cut to YouTube, and reuse the same lyric styling across a release so the whole project feels like one body of work. **Sources** - [OpenAI Whisper](https://github.com/openai/whisper) - [Hugging Face Transformers.js](https://huggingface.co/docs/transformers.js) --- ## Frequently asked questions **Do I need an account?** No for editing or export. A free username/password account is required for durable Turso saving, private uploads, cross-device access, community publishing, and notifications. **Is Novus free?** Yes. There are no subscriptions, paid tiers, billing entitlements, watermarks, or export quotas. **What happened to 2D, 3D, 4D, and ADV templates?** The public catalog now has 29 canonical engines. Each engine owns six modes and shared 2D/3D geometry, effects, and audio controls. Legacy URLs redirect to the closest engine and mode. **What is the difference between Classic and Studio?** Classic is the guided creator. Studio exposes the full layer tree, node graph, timeline, inspector, geometry, assets, and character-rig workspace. Both edit the same composition without serialization loss. **Where are projects saved?** Signed-in projects and revisions are saved in Turso. Uploaded sources are private Vercel Blob objects. Guests can explicitly export and import `.novusvis` project files but do not receive a durable browser library. **Is audio uploaded?** Only if you choose cloud audio saving for that project. Otherwise analysis stays local and Novus stores a fingerprint plus analysis metadata so another device can request the matching file. **How does account recovery work without email?** Use a passkey or a username plus one unused recovery code. Recovery codes are shown once, hashed, and single-use. Without a passkey, recovery code, or authenticated trusted session, the account cannot be self-recovered. **Are community projects public by default?** No. Projects and assets remain private until explicit publication. Publishing freezes one revision and uses a separate public preview derivative; later edits do not change the post. **Does preview match export?** Preview, still capture, and export share the deterministic composition graph, fixed-step runtime, and audio frame contract. Browser codec and color conversion can create small output differences. **Can phones use Studio and export?** All authoring views are available on phones. Capability-aware export limits constrained phones to 1080p, while supported desktops may export up to 4K. --- ## Release history ### v4.7: Every Browser Tab Said the Name Twice (2026-09-07) Fourteen pages, the editor and the blog among them, put "Novus Visualizers" in their browser tab and their search result twice over. Alongside that: the Studio node graph now tells you when a patch cannot work, instead of letting the renderer fail somewhere else. - Fixed: Fourteen pages named the site twice in the browser tab and in search results — "Visualizer Editor | Novus Visualizers | Novus Visualizers", and the same on the blog, the tutorials, the audio library, contact, search, the overlays and cover-art pages, and the page you see when a link is broken. Each page was adding the site name to its own title while the site was already adding it for them. The pages now give only their own name. The home page is deliberately left as it was: it is the one page the site-wide rule cannot reach, so it has to name the site itself. - New: The Studio node graph now reports problems in the panel where you build it: a loop that feeds into itself, a connection to a node that is no longer there, a duplicated node, or a feedback node without exactly one input and one output. Previously nothing checked, and an incoherent patch failed later in the renderer, where the message named a drawing step rather than the connection you had just made. Loops through a feedback node are still allowed — that is what a feedback node is for — and muting a connection clears the warning, because a muted connection is not part of the graph. ### v4.6: Your Track Has a Length Again, and the Site Is Open to AI Assistants (2026-09-04) Every track in the audio library was reported as zero seconds long, which also made the export window zero and the scrubber unable to seek. Alongside that: a Model Context Protocol endpoint, a full plain-text copy of the site, fourteen controls that now say what they do, and the crawl rule that told AI browsers to stay out of the editor is gone. - Fixed: Choosing a track from the audio library left the editor believing it was zero seconds long. The transport showed 0:00 for a six-minute song while it played, the trim range showed 0:00 to 0:00, the export panel showed an export window of 0.00 seconds, and the scrubber could not seek at all. The audio proxy was streaming the file without declaring its size, so the browser could not work out the length and reported it as infinite, which the editor correctly refuses to display. The proxy now declares the length and supports range requests, so the duration, the trim range, the export window and seeking all work. - New: The footer now links to every other Novus app, on every page. It listed three, chosen for relevance to making a music video, and the other five existed only on the tool map and in the machine-readable files. Someone who arrived here from a search had no route to the rest of the estate, and a search engine saw a site that linked to three siblings rather than to a network. The three recommendations stay where they are, with the complete list beneath them. - Fixed: The play and pause control on the editor timeline had no name. It is the most-pressed button in the product and a screen reader announced it as "button", with a named Restart on one side of it and a named Mute on the other. It now names itself and reports whether the track is playing. - New: A Model Context Protocol endpoint at /mcp, so an assistant that speaks MCP can ask this site directly which engines exist, what each mode does, which controls follow the audio, what the performance budgets are, and which overlays are available, and can get back the link that opens a given engine in a given mode. It deliberately cannot render, export, record or upload anything: every visualizer is made in your own tab from audio you chose, nothing is uploaded, and a tool that claimed otherwise would either have to ask for that upload or lie about the result. - Fixed: robots.txt told every named AI agent not to fetch /editor or /studio. That rule was written for bulk indexers, where it is reasonable, and it was applied to user-initiated fetchers too, where it is not: those are an assistant loading a page because a person just asked for it. Since the whole product runs in the browser, an AI browser opening the real editor was the only way an assistant could actually use this site, and the rule switched that off. The six user-initiated agents are now allowed into both workspaces, and bulk crawlers still are not. - Fixed: Seven AI agents were missing from robots.txt entirely, including Claude-User, which is the one that appears when a person is waiting for an answer. The site named every other Anthropic crawler and not that one. Twenty agents are now named across the two policies, and a test fails if a new one is added without a decision about which policy it belongs to. - New: A full plain-text copy of the site at /llms-full.txt: the whole control reference for every engine and mode, every help article, every glossary definition, every tutorial and blog post, the FAQ and the release history, in one document. It is generated from the same registries the pages render, so it cannot describe an engine, a mode or a control that does not exist. Five other Novus sites already served one. - Fixed: Thirteen more buttons and links across the editor, Studio, the help centre, the share dialog and the admin console rendered only an icon and announced as nothing but "button" or "link": delete a caption, remove a layer, move a layer up or down, hide a layer, clear the loaded audio, remove an uploaded image, bind a control to the audio, close the share dialog, go back in the help centre, and open a saved project from the library. Each now names the thing it acts on, and the caption and layer controls name the specific caption or layer rather than saying "Delete". - Fixed: The eight genre cards on the Audio Library were unreadable on the light theme. Every one used a colour picked for dark editor chrome, and the track count under each name was dimmed on top of that, which no colour choice can compensate for. They are light-first now and the dimming is gone. - Fixed: The "Start here" badge on the home page, which only a first-time visitor sees, put white 10px text on a shade measuring 3.62 to 1. The category cards on tutorial pages jumped from the page heading straight to a third-level heading, so anyone navigating by heading heard a section that was not there. Both fixed. - Improved: The RSS link in the footer was 20 pixels wide against a 24-pixel minimum on every page of the site. The previous pass raised the height of these links and left the width, so the narrowest label stayed under the bar. - Improved: The accessibility sweep no longer excuses four things it had already fixed: colour contrast on the blog index, the status page and the home page, and the unnamed button on the editor. Every one of those exemptions outlived its defect, and a new fault in any of those places now fails the build. ### v4.5: Every Control Named, Every Label Readable (2026-09-03) A browser drove every public route at desktop and phone width and checked what a person actually meets: whether a control says what it does, whether a label can be read against the colour behind it, and whether a link is big enough to hit with a thumb. - Fixed: The synth on Audio Effects announced ten sliders in a row as "slider" with nothing saying which parameter, because each caption was a plain span sitting next to the input rather than a label attached to it. Every parameter now has a real label, the caption is a click target that focuses its slider, and the formatted readout is announced with the value so "3.00" is heard as the seconds it means. The four dropdowns had the same fault, and two of them are both called Waveform. - Fixed: Category badges on the sound-effect presets put white 9px text directly on each preset's own gradient, and those gradients are chosen for the card wash rather than for legibility. Ten of the thirty-one stops in use left the label under 4.5:1, the worst at 1.81:1. A subtle scrim behind the text takes the worst case to 5.43:1 while the badges stay visibly different colours. - Fixed: Overlay category chips were unreadable on the light theme, measuring between 1.45:1 and 1.86:1 on a white card. The same four-entry colour map had been copied into the gallery, the detail page and the editor panel, all three carrying shades picked for dark editor chrome. There is now one module, and the chips are light-first with a dark shade of their own. - Fixed: Difficulty pills, blog accent chips and the browser/server capability pills all used a single 600-level shade for both themes. Measured against the tinted backgrounds they actually render on, nearly all of them failed: amber at 2.84:1, emerald at 3.19:1, cyan at 3.17:1. They are light-first now, with amber a step darker again because 700 lands four hundredths under the bar. - Fixed: The footer's eight legal dividers were pipe characters, so a screen reader read out eight vertical lines between the links and they landed in any copy of the page text. Painted in the border colour they measured 1.25:1, and they accounted for 608 of the site's 956 contrast findings. They are 1px rules now, out of the text layer entirely. - Fixed: Footer column headings were h4 with no h2 or h3 above them anywhere in the footer, so every page in the site reported a heading-level jump. They are h2, which is the level they always were semantically. - Improved: The bottom-bar footer links and the Classic and Studio links on every engine mode card were 16 to 20px tall, under the 24 by 24 minimum, in the two places on the site where many links sit in a tightly wrapped row. They now clear it without moving anything else. - Improved: The audio library's twelve play buttons were icon-only and announced identically; each now names its track and reports whether it is playing. Two search fields that relied on a placeholder for their name, which disappears the moment anyone types, have real labels. ### v4.4: Three New Engines, Beat Smoothing That Smooths & the Reference Pages (2026-08-08) The catalogue grows to thirteen engines, the beat-smoothing control is connected to the envelope it always claimed to govern, the tunnel finally fills the frame, and the site gains accessibility, security, press, status and tool-map pages plus machine-readable feeds. - New: Three new engines with six modes each — Lattice (kaleidoscope, tessellation, wire polyhedron, isometric grid, truss web, prism stack), Terrain (ridge lines, wire mesh, contour map, canyon scroll, dune field, peak silhouette) and Stage Lights (beam fan, laser sweep, spot rig, par wall, strobe bars, follow spot). All three run on the shared beat clock and renderer, so preview, editor and export match as they do everywhere else. - Fixed: Beat smoothing did nothing. The slider fed an averaging path that no engine ever called, while the envelopes that actually reach the screen used fixed decay times — so the one control named for the hard-pulse complaint could not affect it. It now sets the envelope directly, the shipped default rings out noticeably softer than before, and two new controls (Beat attack, Beat release) expose the shape explicitly. - Fixed: Warp Field ignored the beat. It read only the continuous energy level, so it drifted while every other Tunnel mode hit; streaks now brighten, thicken and lurch forward on the beat they were born on. - Improved: Tunnel rings are sized against the frame instead of falling out of the depth setting, so the corridor fills the screen and rushes past you rather than sitting as a small motif in the middle. Depth now controls speed through the corridor, not how big it is. - New: Creator Studio opens with a bundled demo track and a New-composition action, so a fresh session has something to react to. The Classic editor deliberately does not inherit it. - Fixed: Quick Start no longer opens itself over the homepage on a first visit. It is a button in the hero, marked for first-time visitors, and opens when you press it. - Fixed: The offline/install layer never started on /editor and /studio: the service worker was blocked by the isolation headers those two routes send, and the failure was silent. Both now register. - New: New pages: Accessibility, Security, Press Kit, System Status and a Tool Map covering every public route. Every retired visualizer URL redirects to its replacement, and an id that was never published now returns a real 404 instead of a soft one. - New: Machine-readable everything: a site-wide RSS feed, a tutorials feed alongside the existing blog feed, and an llms.txt describing the product and the full engine catalogue for AI assistants. - Improved: Accessibility: a skip link on every route, exactly one main landmark per page, and an automated axe sweep over fifteen pages that fails the build on new WCAG A/AA violations. Outstanding gaps are listed openly on the Accessibility page. - Improved: Every page's share image is generated from the catalogue and checked to be unique — no two routes serve the same card, and none of them is a stale committed PNG. ### v4.3: AdSense-Only Monetization (2026-07-29) Marketing pages now use Google AdSense Auto Ads only. Adsterra display units, Social Bar, Infolinks, footer smartlinks, and export sponsor tabs are removed for a brand-safer experience. - Improved: Default production ad network is Google AdSense; set NEXT_PUBLIC_AD_NETWORK=none to disable ads entirely. - Fixed: Removed Adsterra banners, native units, Social Bar overlays, Infolinks, and export Direct Link tabs that were serving dating and other brand-unsafe creatives. - Improved: Privacy, cookies, ads.txt, and marketing CSP now describe and allow only Google AdSense. ### v4.2: Real Reactivity, Containment & the Logo Engine (2026-07-26) Engines now respond to what the music is actually doing instead of pulsing in unison: band levels are normalized per song, beats come from a full-track analysis, motion is bound per element, and nothing leaves the frame when a track peaks. Adds a tenth engine built around your own artwork. - Fixed: Bass, mid and treble levels were pinned at maximum whenever audio played, so every engine had only one thing to react to — the beat. All three now carry real dynamics, which is what makes lows, mids and highs drive visibly different elements. - Improved: Beat detection is normalized per song rather than against fixed thresholds, so a quiet acoustic track and a loud master both land on the beat. Loading a file also runs a one-off full-track analysis for a beat grid that stays locked through tempo changes. - Fixed: Content no longer leaves the frame when the music gets loud: radial rays, bloom petals, spectrum peaks and the waveform depth stack are all bounded, so a peak is expressive instead of clipped. - New: New Logo engine with six modes — waveform ring, spectrum halo, orbiting bars, particle aura, pulse frame and kinetic reveal — each reserving a safe zone so your artwork stays clear. - Improved: Engine revamps: tunnel rings now carry the moment of music they were born on toward you, trail comets enter from all four edges instead of sharing one heading, bloom cells hold still instead of flickering, and characters animate individually rather than all changing on the same frame. - Fixed: Oscilloscope Lissajous drew a straight line because both axes came from the same signal; it now uses a true quadrature channel and traces real looping figures. The mirrored waveform and mirrored spectrum modes were drawing their reflection on top of the original — both are now actually mirrored. - Improved: Every control in both editors is verified to change the render by an automated pixel-difference check, and text controls like the Character Motion lettering are finally editable in the Classic editor. - New: Cookie consent is now region-aware: visitors in the EEA, UK and Switzerland are asked before any advertising or analytics runs, and everyone keeps a one-click opt-out. ### v4.1: Beat-Locked Engines, Unified Controls & Site Polish (2026-07-24) All nine engines now lock to one deterministic beat clock with upgraded visuals, every panel control actually changes the render, Studio's node graph travels with exports, and a site-wide polish pass fixes sign-in prompts, white screens, redirects, share cards, and performance. - Improved: Engine-wide beat-sync overhaul: Particles, Trails, Bloom, Character Motion, Radial, Spectrum, Bars, Tunnel, and Waveform all follow one deterministic beat clock, so hits land on the beat identically in preview and export — with per-engine visual upgrades across all nine. - Improved: Controls unified: every control in the panel now applies to the render, with the legacy 3D/4D/ADV panels folded into real, working controls instead of dead toggles. - Fixed: Studio node graph: Merge and Math nodes accept both of their inputs, effect nodes evaluate correctly, and exported files now include the full graph. - Improved: Templates reseeded with tuned defaults so every engine and mode opens looking its best. - New: Bundled original preview music so you can audition any visualizer instantly without uploading a track. - Fixed: Removed the automatic login prompt — sign-in now appears only when you explicitly click it. - Fixed: Template detail pages no longer white-screen, blog links redirect correctly again, and social share cards render with the right images. - Improved: Site performance pass: a faster bloom pipeline and a live-preview slot budget keep pages with many previews smooth. - New: Breadcrumb navigation and a share panel on content pages, plus SEO and metadata corrections across the site. ### v4.0: Shared Visualizer Platform (2026-07-22) Nine versioned engines, one deterministic composition runtime, rebuilt Studio and Classic workflows, durable saving, secure accounts, and the free creator community. - New: Nine canonical engines and 54 editable modes backed by one NovusComposition v1 contract across editors, previews, captures, and exports. - New: Studio layers, nodes, timeline, inspector, geometry, assets, and 2D/3D character rigging; Classic now edits the same document without flattening advanced data. - New: Free username/password accounts with optional passkeys, single-use recovery codes, Turso revisions, private assets, profiles, sessions, notifications, and a unified creator library. - New: Explicit immutable community publishing, public preview derivatives, creator pages, reactions, follows, comments, moderation, and attributed remixes. - Improved: Admin access now uses normal account roles, mandatory passkey step-up for privileged actions, and immutable audit entries. - Improved: Homepage, template pages, help, legal copy, captures, redirects, and documentation now describe only the shared engine platform. - Fixed: Removed billing, subscriptions, entitlements, and export quotas. Novus remains free and guest export remains available. ### v3.3: Native Header + Side Rails (2026-07-21) Content pages now open with a Native Banner header and wide-screen side rails (160×600 / 160×300), with denser mid-page and footer display units — still no Social Bar or pop-unders. - New: Sitewide Native Banner under the top nav on content pages (once per page). - New: Sticky left 160×600 and right 160×300 display rails on xl+ screens around page content. - Improved: Raised the per-page ad budget and retargeted the footer toward 468×60 / 300×250 so more unique banner sizes can show without duplicate keys. ### v3.2: Calmer Ads: Top Banner, No Social Bar (2026-07-21) Removed the intrusive Social Bar notification widget, added a reserved top leaderboard on content pages, and raised in-content ad density while keeping native mid-page and no pop-unders. - Improved: Removed Adsterra Social Bar (corner notification) for a calmer browsing experience. - New: Sitewide top leaderboard on content pages (728×90 desktop / 320×50 mobile), consent-gated and off workspaces. - Improved: Raised the soft per-page display budget so mid-content native and banner slots can show alongside the top banner. ### v3.1: Adsterra Monetization Test (2026-07-21) While waiting on AdSense approval, content pages run Adsterra display and native ads (consent-gated, density-capped) with no pop-unders or interstitials. - New: Adsterra as the default production ad network (env-switchable back to AdSense later), with native and banner units plus a discreet footer Sponsored link. - Improved: In-content ad slots revived with a per-page budget and unique unit keys so the same ad key never mounts twice on one page. - Improved: Ads stay off editor, studio, auth, admin, legal, pricing, and settings routes; advertising scripts wait for cookie consent. - Improved: Privacy, terms, cookies, ads.txt, and robots updated for the Adsterra test while keeping the Google seller line for future AdSense approval. ### v3.0: 24-Family Engine Rebuild + Creator Studio (2026-07-20) Clean category separation, 96 dedicated dimension engines, and a new Studio for authoring packs that open in the music editor. - New: Creator Studio at /studio — blank canvas, geometry nodes, environments, click-track bindings, safe expressions, and .novusvis pack export/import into the music editor. - New: 24 distinct visualizer families × 2D/3D/4D/ADV (96 engines) with Spectrum and Bars fully separated — no mixed categories, no mode dropdowns. - Improved: Music editor, captions/Whisper, audio SFX, Cover Art studio, overlays, lyric videos, themes, reaction/FFT controls, and export pipeline preserved and wired to the new catalog. - Improved: Help, marketing, and README copy updated for the 24×4 catalog; thumbnail inventory regenerated for all live engines. ### v2.16: Visualizers Come Alive: Full Reactivity Overhaul, Robust Lyrics & Complete Template Pages (2026-07-18) The biggest visual upgrade yet: every 3D, 4D, and Advanced visualizer now reacts across the whole scene — individual elements respond to their own part of the music, nothing sits still, and scenes fill the frame. Lyric generation is far more robust, template detail pages show every variant and mode, and preview images are refreshed to match. - Improved: Major reactivity overhaul across every 3D, 4D and Advanced visualizer: instead of the whole scene pulsing as one, individual elements — bars, particles, rings, bulbs — now each respond to their own slice of the frequency spectrum, keep a gentle idle motion so the scene stays alive between beats, and burst on every hit. There's always something happening on screen. - Fixed: Advanced and evolving visualizers that used to show a small centered shape (or occasionally a near-empty frame) now paint rich, frame-filling scenes that cover the whole canvas from the first frame. - Improved: The 2D visualizers — already the strongest tier — got a light polish pass: subtle idle motion so they breathe at silence, sharper on-beat events, and fuller frame coverage. - Fixed: Template detail pages now show the complete set of 2D / 3D / 4D / Advanced variants and all their modes. Previously some 4D and Advanced templates only listed a partial selection — every family now links across all four dimensions. - Fixed: Static preview images load reliably when moving between templates and switching dimensions: a canceled image request now recovers on its own instead of leaving a blank tile, and revealing a hidden dimension tab always shows its previews. - Improved: Lyric generation is much more robust. 'Isolate vocals' no longer hangs on unsupported hardware — it now detects real GPU support up front, disables the option where it can't run, and always falls back to the full mix so generation never stalls. Transcription runs faster on capable GPUs, word timing snaps to detected beats, and repeated or misheard filler words are filtered out. - Improved: Refreshed preview stills across all the upgraded visualizers so the gallery reflects the new, richer scenes. - Improved: Behind-the-scenes security hardening and dependency cleanup for a safer, leaner app. ### v2.15: Cleaner Ads, Sharper Previews & a Steadier Canvas (2026-07-16) Advertising moved to Google AdSense with every interstitial, pop-under, and push format removed for a calmer experience. Template previews load far more reliably, the Quick Start catalog renders correctly again, and the editor canvas stays locked in when you change aspect ratios. - Improved: Advertising moved to Google AdSense (Auto Ads). All interstitial, pop-under, vignette, and push-notification ad formats are gone — including the export-click pop-under — so nothing interrupts your workflow. Ads respect your consent choices under GDPR/UK rules. - Fixed: The editor canvas no longer shrinks into the corner when you change aspect ratios — visualizers stay locked to the full frame at every shape and zoom. - Fixed: Quick Start shows its full visualizer catalog again: preview cards had collapsed to thin lines on some systems; they now render at full size with their preview stills. - Fixed: Template preview images load much more reliably: stills just below the fold now preload as you scroll, a canceled image request retries instead of leaving a blank tile, and switching between 2D/3D/4D/ADV never strands a missing preview. - Fixed: Template detail pages keep an engine-accurate poster behind the live preview — rapid navigation between templates or dimensions no longer flashes a black box. ### v2.14: Accurate Catalog, Smarter Categories & a Steadier Editor (2026-07-09) A round of accuracy and polish: the docs now list every one of the 58 engines, browse-by-category is smarter about particle-style visualizers, the homepage makes all the creative tools easy to find, and the editor keeps the canvas rock-steady while you work. - Improved: The full engine catalog is documented accurately: the Visualizer Engines guide now lists all 58 active families — including Barcode, Countdown, and Oscilloscope, which were missing before — across 2D, 3D, 4D and Advanced. - Improved: Smarter browse-by-category: particle-style visualizers that were filed under the wrong heading — Spectral Rain, Snake Trails, Dust Storm, Spectral Fluid, and the Hyperspace star-warp — now show up under Particles, so what you see matches the category. - New: Easier tool discovery on the homepage: a refreshed "More Ways to Create" section surfaces the Audio Library, Lyric Video Creator, Audio Effects (SFX) Generator, Stream Overlays, and Cover Art Studio all in one place. - Fixed: The editor canvas no longer nudges when you toggle intros/outros or adjust layers — the timeline and layer previews keep the visualizer still and aligned. - Improved: Cover Art & Canvas Studio polish: a roomier effect picker, a clearer "turn any visualizer into a loop" funnel, and a de-cramped studio layout. - Fixed: Cleaner exports: ads no longer fire repeatedly after an export or bounce you off the homepage. ### v2.13: Fully Guest-Only, a Leaner Curated Library, Cover Art Studio & Editor Fixes (2026-07-05) Novus is now completely account-free — create, customize, and export entirely in your browser with nothing to sign up for. We tightened the engine library to a curated, high-quality set, rebuilt Albums into a Cover Art & Canvas Studio, and fixed a batch of editor annoyances. - Improved: No accounts, ever: sign-up, login, and saved-to-the-cloud are gone. The editor, templates, SFX, and cover art are one-time-use and export-only — your work stays on your device, and every export is yours. Privacy, terms, and cookie policies were updated to match (no auth cookies). - Improved: A leaner, curated engine library: we retired lower-performing and near-duplicate visualizer families so every remaining engine earns its place. The catalog now stands at 58 active engine families across 2D/3D/4D/Advanced, with 7 flagship optical-illusion families. Old links to removed styles redirect to the closest surviving engine. - New: Cover Art & Canvas Studio (formerly Albums): a guided, one-off tool for square streaming covers and vertical Spotify Canvas loops — layered text, backgrounds, and animated effects, exported as a high-res PNG or a silent looping MP4. The old /canvas page now redirects here. - Fixed: Editor elements no longer get stuck: text, logos, and overlays could become undraggable until a refresh after a resize gesture — they now recover automatically and stay movable. - Fixed: No more box/halo around the visualizer: scaling the canvas over a custom background, image, or transparent mode no longer shows a bordered frame — the scene blends edge-to-edge in preview and export. - Fixed: Generate Markers no longer freezes the editor, help tooltips are readable again (opaque background), audio duration never shows "Infinity:NaN", and template pages open at the top instead of scrolled down. - Improved: Ad network moved to Monetag/PropellerAds (non-personalized), keeping the whole app free with no account required. ### v2.12: Open to Everyone + a Real Fix for Fast, Flickering Bars (2026-06-23) The whole site is now open to guests — create and export visualizers free, no account needed, and post to the community as a guest. Plus a root-cause fix for spectrum-style visualizers pulsing/flickering too fast, with a new Reactivity control that's calm and smooth by default. - New: Guests can create AND export for free: you no longer need an account to export your visualizer — the whole editor, all engines and exports are open to everyone. (Sign in only to save projects, build a library, or manage posts.) - New: Guests can post to the community: publish a visualizer straight from the editor as a guest (you pick a display name, shown as a Guest). Browsing and posting are free; sign in to like, save, follow and manage your posts. - Fixed: Spectrum-style bars no longer pulse/flicker too fast: a reactivity change had every engine read an auto-leveled spectrum that amplified quiet-band noise into a fast flicker. That's removed at the source across all three places engines read audio (the full spectrum, the 32-band path, and the per-beat pump), so bars move with the music instead of strobing — in the preview and the export. - New: New "Reactivity" control (calm by default): a single slider sets how hard every visualizer reacts. It's low/smooth out of the box so bars glide when a song loads; turn it up for a snappier, bouncier response. Applies live to the preview and to exports identically. - Improved: Bars play at full height AND smoothly: calming the reaction no longer shrinks the bars — they snap to their full peak on each hit but fall gently, so you get smooth motion without losing range. Mid and treble are also better balanced against heavy bass. - Fixed: Fixed a crash on some engines: a handful of visualizers (e.g. neon/cyan glow styles) could throw an invalid-color error and freeze on a strong beat — alpha/color values are now clamped safely across the engine library. ### v2.11: Free Editor, Full-Bleed Canvas, Sharper Exports & Reliable Accounts (2026-06-22) Guests can now open and test any template in the editor (sign-in only at export), the canvas fills the frame with no box, exports look noticeably sharper, intros/outros size correctly at every resolution, and the account pages, mode pickers and overlay previews all work reliably. - New: The editor is open to everyone: you no longer need an account to open a template and try the editor — sign-in is only required when you export. Guests can explore every control first. - Fixed: Account & Community settings and the dashboard load reliably: a 500 error on the analytics endpoint (wrong table) and a 404 on the profile endpoint (missing-row) were breaking those pages — both are fixed (analytics degrades gracefully to zeroes, and a profile is synthesized from your session when no row exists yet). - Fixed: The account menu navigates on the first click: the Creator Studio / Account & Community / Creator Profile links (and the Explore/Tools menus) now navigate immediately instead of occasionally doing nothing — they were being dropped when the menu closed mid-click. - Fixed: Canvas Size & Fit is full-bleed: scaling the visualization no longer shrinks it into a boxed frame with a background border. Scale now zooms the content within a full-frame canvas (and panning keeps it fully covered), so it always blends edge-to-edge — in both preview and export. - Fixed: Intros & outros are the right size everywhere and no longer hidden behind bars: the title card now scales with the output resolution so it looks the same in the preview and a 4K export (it was tiny in 4K before), and the cinematic letterbox bars that covered the text are off by default. - Improved: Sharper exports: the export bitrate was raised across the board (and matched on the fallback path), removing most of the softness/blockiness that made exports look lower quality than the preview. True 4K is available for every aspect ratio. - Fixed: Mode pickers are complete: the Geomesh Prism template now exposes all 10 of its modes (it was showing only its styles), and Terrain 4D gained its 10th mode (Tectonic Rift). - Fixed: The Beat Grid animates across its full width: the left columns no longer sit dead — each column now normalizes to its own level so the whole grid responds to the music. - Fixed: Overlay previews render again: the overlay library / gallery / detail previews were collapsing to zero height (a CSS conflict) and showing blank — they now display their animated preview. Template cover images also retry once on a transient load failure before falling back to a gradient. ### v2.10: Editor Controls That Actually Land (2026-06-22) A correctness pass on the editor: Animation Speed now controls every visualizer, the reactivity amount and beat-effect sliders make a visible difference, and the on-the-beat screen flash now obeys its Beat-Flash toggle across the whole library instead of always playing. - Fixed: Animation Speed now works on every visualizer: ~70 engines were quietly running their own internal animation loop at a fixed speed on top of the editor's, so the Animation Speed slider barely changed them. They're now driven by a single timeline, so Animation Speed (and the smooth, even motion it guarantees) applies everywhere — preview and export identically. - Fixed: The Beat-Flash toggle is finally respected everywhere: ~165 visualizers painted a full-screen flash on every beat that ignored the editor's Beat-Flash switch — so the whole frame strobed even with it turned off. That flash now only plays when you enable Beat-Flash (the per-beat glow on shapes is unaffected). Applies in both preview and export. - Improved: The Reactivity / Pulse amount now visibly changes how hard visualizers react: turning it up makes the motion pulse harder with the music and down calms it — applied across the whole library through the shared audio path, live as you drag the slider. (Beat detection is untouched, so timing stays locked to the beat.) - Improved: Mirror Wave honors its effect controls: Pulse, Burst, Transient, Animation Speed and the Beat-Flash toggle now all produce a clear change on the Mirror Wave family (2D/3D/4D/Advanced) — previously several of these did nothing on it. - Fixed: Frame motion no longer goes dead in quiet passages: with the beat-shake / pulse / tilt / drift sliders dialed up (e.g. on Blackhole), the camera motion now keeps moving through low-energy sections instead of freezing between beats — while detected beats still clearly dominate. Preview and export match exactly. ### v2.9: Smoother, Beat-Locked Reactivity (2026-06-22) A reactivity pass so visualizers move smoothly with the music instead of twitching — bars rise and fall cleanly, heavy bass no longer slams, and over-fast spins were calmed, all without changing how effects lock to the beat. - Improved: Visualizers move smoothly, not jittery: the audio levels that drive motion are now smoothed at the source with a fast-attack / slow-release curve, so every visualizer that reacts to bass/mid/treble tracks the music cleanly instead of flickering frame to frame. Heavy bass is gently soft-compressed so a loud kick no longer makes the whole visual slam. Beat-synced effects are unchanged — they still land exactly on the beat. - Improved: Spectrum bars read as real levels: bars now rise quickly but fall gently, so you can actually see them move up and down instead of strobing. Treble is no longer over-boosted. - Improved: Optical-illusion spins calmed: the colour-illusion spinning modes (Benham disc/sphere across 2D/3D/4D/Advanced) were rotating too fast and looked choppy — they now spin at a smooth, watchable speed. ### v2.8: Rock-Solid Browsing & a Connected Creator Community (2026-06-21) The navigation freeze is fixed for good, creator profiles and storefronts open reliably, public profiles show usernames only (never your email), the community is wired together with working search & sort, and album covers display correctly again. - Fixed: Navigation freeze fixed at the source: clicking a template after switching a 2D/3D/4D or mode pill could leave the whole site unable to navigate (clicks did nothing until a full page refresh). The cause was the address-bar update on those pills putting the app's router into an inconsistent state; it now updates the URL the correct way, so browsing stays responsive no matter how much you click around. - Fixed: Template detail pages load reliably: a template page could occasionally get stuck on its loading skeleton on a slow first open. The page now does far less work per request (its mode index is built once and reused), recovers gracefully if anything goes wrong instead of hanging, and if a load is genuinely slow it offers a one-tap Reload rather than leaving you waiting. - Improved: Optical-illusion visualizers play smoother and look better: every illusion engine (colour, geometric, grid, illusory-contour, impossible-figure and their 3D/4D/Advanced variants) now smooths the audio it reacts to, removing the frame-to-frame jitter that made some of them shimmer or stutter. The Grid Illusion's first three modes are now visually distinct (a clean Hermann grid, a dotted scintillating grid, and a thin-line extinction lattice), the Kanizsa illusory-contour shapes now form the way the real illusion does — from the notched inducers alone rather than being drawn outright — and the impossible figures gained depth, a reactive backdrop and consistent motion so they feel like a finished piece rather than a lone shape. - Fixed: Creator profiles & storefronts open reliably: the "View public profile" / "Your storefront" links from Creator Studio, the dashboard and the community no longer hit a 404. All profile links now use the same canonical address the public page expects. - Fixed: Privacy: public creator profiles, page titles and social share images now show your display name or username only — never your email address. Email is no longer included in any public profile data. - Improved: A connected community with real browsing: post and comment authors now link straight to that creator's storefront, the Top Creators links work, and the community feed gained working search and Most-Liked / Most-Viewed sorting (the sort options previously did nothing). - New: Account menu: signed-in users get an account dropdown in the top bar with direct links to Creator Studio, Account & Community settings, and the Creator Profile / Storefront editor — so it's clear where to manage everything. - Fixed: Album covers display correctly again: uploaded album art is now stored durably instead of as a temporary link that broke on reload, so covers show on the My Albums grid and the album editor. Applying a canvas effect no longer flashes the whole album page like a reload. ### v2.7: Smooth Playback Everywhere — The Heaviest Visualizers Run Fast (2026-06-21) A deep performance pass across the visualizer library: dozens of the most demanding engines — optical illusions, particle and fluid fields, neon grids, crystals and more — now play back smoothly at full frame rate, and the post-pause preview stutter is gone. - Improved: Major speedup across the heaviest visualizers: 75+ demanding engines — optical illusions and op-art, cymatics, particle/fluid fields, neon grids, circuit boards, stained glass, DNA helix, neural nets, plasma webs, bioluminescence, holospheres, tunnels, mandalas, gravity wells and more (including their 3D/4D/Advanced variants) — were re-engineered to draw far more efficiently, collapsing hundreds-to-thousands of per-element glow operations into a handful per frame. Previews, the editor and exports now stay smooth at full frame rate. - Improved: Glow that's fast: the bloom on glowing engines (particles, crystals, neon, bioluminescence) is now produced with a lightweight two-pass technique instead of an expensive per-element blur — keeping the look while cutting the cost dramatically. - Fixed: No more post-pause stutter: pausing and resuming a preview no longer leaves the visualizer jittering. The cause — phantom beats firing on the locked tempo grid while the track was silent — has been fixed, so paused previews settle to a clean idle. - New: Built-in performance overlay for troubleshooting: an optional on-screen FPS / worst-frame-time HUD (plus console diagnostics) can be turned on to help diagnose playback smoothness on your device — off by default. ### v2.6: Optical Illusions Flagship — 10 New Engine Families, Every Mode Shareable (2026-06-20) A brand-new flagship collection of audio-reactive optical-illusion visualizers — moiré, impossible figures, op-art, spirals and more — plus every visualizer mode now has its own shareable link and social preview image, and template previews load faster and smoother. - New: Optical Illusions flagship: 10 new engine families — Moiré, Impossible Figure, Op Art, Geometric Illusion, Peripheral Drift, Grid Illusion, Illusory Contour, Spiral Recursion, Color Illusion and Ambiguous Figure — each shipping 2D, 3D, 4D and Advanced variants with 10 distinct, fully audio-reactive modes (400 new modes in all). Featured on the homepage and the Templates gallery. - New: Every mode is now its own page: each visualizer mode (across the whole library — 5,000+ modes) has a unique, search-engine-indexable URL with a tailored title and its own social preview image, so you can link or share a specific look, not just the engine. - Improved: Faster, smoother previews: hover previews are restored on touch-capable laptops, 3D/4D/Advanced previews run at full quality, and the template grid no longer stalls or needs a double-click — the result of more accurate device detection and fewer simultaneous live previews competing for the GPU. - Fixed: Fixed a handful of new illusion modes that could render blank or freeze the canvas (a drawing-radius edge case) — every mode now renders correctly. ### v2.5: Exports Match the Preview — Brighter, with Every Glow Intact (2026-06-19) Exported videos now look just like the editor preview: the same brightness and colour, and glowing details like pulsing fiber-optic bulbs, neon halos and bloom render at full strength instead of shrinking away at higher resolutions. - Fixed: Export visual parity: high-resolution exports are no longer dimmer than the preview, and bright glowing elements (fiber-optic bulbs, neon glow, sparks, bloom) that appeared faint or missing in 4K exports now render at full size and brightness — matching what you see in the editor. - Improved: Visualizers are drawn at a consistent visual scale for every quality tier, so 1080p, 1440p and 4K exports look identical apart from sharpness — the higher tiers are crisper, not dimmer, with all the fine glowing detail preserved. ### v2.4: 4K Exports Everywhere, Instant Navigation & Single-Click Browsing (2026-06-18) Export any shape at true 4K with a quality choice, the beat flash now pulses for the whole song in both preview and export, browsing opens on a single click without freezing, the editor canvas stays interactive, and dashboard/profile/community navigation is instant. - New: Export at true 4K for every shape: resolution is now chosen as Shape (16:9, 9:16, 1:1, 4:5, 4:3, 21:9) × Quality (1080p / 1440p / 4K), so portrait, square and cinematic exports all reach full 4K — not just landscape. If a browser can't encode an oversized size it steps down gracefully instead of dropping to a lower-quality capture. - Fixed: Beat flash plays for the entire song: it no longer fades out after a couple of seconds (or only fired on pause/restart). Once the tempo is detected it keeps pulsing on the beat in both the preview and the exported video. - Fixed: Single-click browsing: template cards now open on the first click even after using the browser Back button or navigating quickly — fixed the focus/preview race that dropped the first click and required a double-click. - Fixed: No more freezing during rapid navigation: a graphics-context leak that piled up while flipping quickly between templates and pages — eventually freezing the page — has been fixed. - Fixed: Editor stays interactive: fixed a case where the editor canvas could fail to load and you couldn't move text or elements; the main visualizer is now always given the graphics context it needs. - Improved: Instant navigation: the Dashboard, Profile and Community pages no longer re-fetch from the database every visit, so moving between pages is immediate instead of waiting on a load each time. ### v2.3: Reactive Exports, No-Freeze Browsing & Every Mode Renders (2026-06-17) Exported videos now react to your music just like the preview, browsing many visualizers no longer freezes, every engine mode actually renders (no more blank options), reactivity feels alive instantly, and template/homepage previews are fixed. - Fixed: Exported videos now react to the audio — the visualizer in your MP4 dances to the track just like the preview, instead of looking static. - Fixed: No more freezing while browsing: graphics contexts are now released the moment a preview goes away, so flipping through templates, detail pages and the homepage stays responsive instead of locking up after a handful of visualizers. - Fixed: Every visualizer mode renders: engine mode menus were advertising options that drew nothing (blank) while hiding modes that actually exist. Menus now match what each engine really renders — e.g. Gravity Well 2D shows its 10 distinct modes — across the whole library. - Improved: Reactivity feels alive immediately — removed the 3–5 second 'warm-up' where engines played a different effect before settling, and the beat flash now keeps pulsing for the entire song instead of fading out after a few seconds. - Fixed: Template browse cards now show a real preview image of each engine before you hover, instead of a blank gradient. - Fixed: Homepage showcase fixes: the Spirograph fills the frame (no black gaps), the Radial Spectrum renders correctly, a duplicate engine in 'Explore Engine Families' was replaced, and the engine cards open on a single click. - Improved: Mobile editor is usable: the toolbar is compact (actions scroll in one row instead of stacking), the settings pane keeps a real, scrollable height, the play bar no longer covers your controls, and you can reach upload and every setting. - Fixed: Intros and outros now play smoothly in the preview — the animation follows the audio clock each frame instead of stepping, matching the already-smooth export. - Improved: Lyrics: a new timing-offset slider nudges karaoke earlier/later to fix highlighting that runs 1–2s behind, and the karaoke word highlight now uses your chosen caption style and colour (in both preview and export) instead of plain white. ### v2.2: Backgrounds Behind Visualizers, Engine-Accurate Previews & Livelier Defaults (2026-06-17) Visualizers now play over your chosen background image, gradient, or underlay; every template and visualizer page shows a real preview of the actual engine (including link/social previews); default reactivity is livelier; Global Speed reaches more engines; and the editor is cleaner. - New: Background transparency: visualizers now play OVER your background image, gradient, or underlay instead of hiding it — with an Auto / Solid / Transparent control — turning the background into a real compositional layer across all 444 engines, with overlays and underlays layering correctly. - New: Engine-accurate previews: template cards, template detail pages, and the visualizer guides now show a real captured frame of each engine, so you see exactly what you'll get before opening the editor. - New: Engine-accurate link & social previews: sharing a template or visualizer now shows the actual engine in the Open Graph image, with tailored titles and descriptions on every visualizer, template, and help page. - Improved: Livelier out-of-the-box reactivity: beat-driven motion (shake, pulse, tilt, drift) is more visible at default settings while flashes are gentler — visualizers look great without tweaking, and the preview matches the export. - Improved: Global Speed now affects more engines: the speed control reaches animation rates across many more visualizers, including the 4D evolution rate, and Frequency Focus drives reactivity on every engine. - Improved: Cleaner editor: removed the SFX presets panel from the editor (the standalone Audio Effects tool is unchanged). ### v2.1: All-Visualizer Reactivity, Export Parity & Pre-Export Review (2026-06-16) Every visualizer now reacts across the full frequency range (not just bass), exports match the preview exactly — correct size and every effect baked in — a new pre-export panel lets you review and toggle effects, template browsing is snappier, and AI lyrics load reliably. - Fixed: Every visualizer now reacts to mid and treble, not just bass — a new normalized reactive spectrum lifts quieter bands so the whole frequency range drives the visual across all engines. - Fixed: Exports now match the preview exactly: the visual is correctly sized for every resolution and aspect ratio (square, portrait, landscape, 4K) and no longer appears zoomed-in or cut off at the top. - Fixed: All chosen effects are now applied to exports — pulse/burst intensities, per-band FFT colours, and frame motion (beat shake, pulse, tilt, drift, zoom, strobe and glow) are baked into the video just like the preview. - New: Pre-export review panel: before exporting, see resolution, aspect, frame rate, format and duration, plus every active effect — and uncheck any you want to leave out. - Fixed: Template carousel and grid now open on a single click — fixed a stuck overlay state that caused double-clicks, 5–10s delays and occasional freezes that needed a refresh. - Improved: Smoother browsing: live previews free their graphics contexts immediately, so scrolling through many visualizers no longer glitches or hangs. - Fixed: AI lyric generation loads its model reliably — fixed the cross-origin setup that caused the 'AI model failed to load' error — and now runs off the main thread so the editor no longer freezes while transcribing. - New: Lyrics: choose your AI model (Fast / Balanced / Accurate, auto-picked for your device) and optionally isolate the vocals before transcribing for much better accuracy on songs. ### v2.0: Unique Visualizers, New Export Engine & Community Publishing (2026-06-13) Every visualizer mode is now visually distinct and beat-synced, a rebuilt export engine produces seekable videos that match the preview exactly, and you can publish your creations to the community right from the editor. - Improved: Every engine's modes are now visually unique and audio-reactive — no more look-alike modes across 2D, 3D, 4D, and Advanced variants, with 10 distinct modes in every family. - Improved: Colour themes now apply to every visualizer — pick a palette and the whole visual recolours to match. - New: Publish to Community directly from the editor, with public or private visibility for each visualizer. - New: Visualizer Size & Fit control — resize and re-centre any visualizer (with one-click 'Fit to frame') so it sits perfectly inside the video, in both the preview and the export. - Improved: Rebuilt video export: MP4 and WebM are now seekable with the correct duration and render the exact visual you see in the preview. - New: Spotify Canvas and cover-art formats open the editor pre-sized (9:16 loop / square) and export straight to a Spotify-ready file. - Fixed: Creator Studio now loads reliably instead of erroring on the dashboard. - Improved: Lyrics transcription, audio start-up, and page navigation are more reliable; heavy engines render dramatically faster. - Improved: Stream overlays beat-pulse on hover previews and react to your track's beats in the editor. - Improved: Refreshed mobile editor, help centre (32 guides), policies, breadcrumbs, and link/SEO previews across the site. ### v1.22: Advanced Filter, Export & Preview Fixes (2026-06-08) The Advanced template filter now lists every advanced engine, MP4 export can't hang, overlay previews reflect live opacity, and category cards show more distinct previews. - Fixed: The Advanced (ADV) template filter and category now list all advanced engines instead of showing 0. - Fixed: Template filters (including dimension) now persist in the URL so refreshing or sharing keeps your view. - Fixed: MP4 export can no longer hang indefinitely — the converter now times out and falls back to WebM with a clear message. - Improved: Overlay previews in the editor now reflect the overlay's live opacity setting. - Improved: Browse-by-type and category cards show more distinct, tailored previews across more engine families. ### v1.21: Previews, Navigation & Editor Fixes (2026-06-08) Single-variant previews that cycle through each engine's modes, reliable single-click navigation, and continued editor/effect fixes. - Improved: Template previews now showcase each engine's modes — hovering a card cycles through its visualization modes instead of switching dimensions. - Fixed: Opening a template now works on the first click (no more double-click or refresh needed). - Improved: Each 2D / 3D / 4D / Advanced variant is shown as its own card so you can browse every dimension of every engine. - Fixed: Previews now start smoothly and stay beat-synced — no more spurious flash/burst when the audio first kicks in. - Improved: Faster page loads — templates render instantly and database setup runs once instead of on every request. ### v1.20: Reliability & Sharing Overhaul (2026-06-08) A foundational pass on data durability, video export, render performance, and how visualizers are shared across the web. - Fixed: Saved albums, templates, and projects now persist durably — fixed a configuration fallback that could drop user content on redeploys. - Fixed: Video export progress now always shows a sensible 0–100% (no more runaway negative percentages during MP4 conversion). - Improved: Smoother editor and export performance by eliminating costly per-frame canvas read-backs on advanced engines. - Improved: Audio now starts reliably after your first interaction on the page via a unified gesture-unlock system. - Improved: Link previews (Open Graph / Twitter cards) now resolve to the correct domain, so shared visualizers and templates preview correctly everywhere. - New: Native mobile share sheet support in the Share dialog, plus a public changelog page. - Improved: Search engine sitemap and robots rules cleaned up — public pages indexed, private pages excluded. ### v1.19: SFX Presets & Multi-Band Beat Sync (2026-05-19) A 32-item release focused on sound design, beat detection, and album artwork. - New: Sound-effects preset library with synth pads, bass, leads, percussion and more. - New: Album cover upload so you can brand your releases with custom artwork. - Improved: Multi-band beat sync — bass, mid and treble now trigger effects independently for tighter reactivity. - Improved: FAQ and help content expanded; full feature audit across the platform. ### v1.18: Performance, Overlays & Creator Studio (2026-05-17) A large platform release rebuilding overlays and adding creator tooling. - New: Stream Overlays system rebuilt with a curated catalog for Now Playing, Spectrum, Alerts, and Ambient scenes. - New: Creator Studio for managing your templates, analytics, and profile. - New: Lyric video wizard and global search across engines and pages. - Improved: Performance improvements, social/community features, and paginated browsing. ### v1.16: Engine Parity & Community (2026-05-17) Engine completeness, overlay system groundwork, and community features. - New: Community feed to share and discover visualizer creations. - Improved: Engine parity pass so 2D/3D/4D/Advanced variants stay consistent. - Improved: Audio analysis and platform polish across the editor. ### v1.15: Engine Completeness & SFX Expansion (2026-05-17) More engines, more sound effects, and a streamlined billing-free experience. - New: Expanded SFX library and additional engine variants. - Improved: Audio polish and engine completeness across the catalog. - Improved: Removed payment friction — every feature is free. ### v1.14: Complete Platform Overhaul (2026-05-07) A sweeping update touching hundreds of files across the platform. - Improved: Platform-wide overhaul of editor, engines, and UX. - Fixed: Numerous stability and rendering fixes. ### v1.12: Engine Variants & Variant Picker (2026-05-06) Every engine gained multiple modes with a full variant picker on detail pages. - New: All engines now offer 6+ visualization modes. - New: Variant picker on template detail pages to preview every mode. - Improved: Template grid cleanup and stability polish. ### v1.10: Albums, Themes & Spotify Canvas (2026-05-05) Album organization, theme persistence, and vertical Canvas export. - New: Album system to group your visualizers into releases. - New: Spotify Canvas (vertical) export preset. - New: 4D engine system, cinematic suite, and LFO automation. - Improved: Theme persistence and dashboard polish. ### v1.9: Stability, Lyrics & New Engines (2026-04-29) Stability and UX work, on-device lyrics, auth, and ten new engines. - New: Ten new visualizer engine families. - New: On-device Whisper lyrics transcription (audio never leaves your browser). - Improved: Editor effects, authentication, and preview performance. ### v1.7: Visualizer Upgrade & Showcase Templates (2026-04-27) Engine QA, navigation fixes, and pre-layered showcase templates. - New: 29 pre-layered showcase templates. - Fixed: Navigation freezes, canvas errors, and editor parity issues. - Improved: Engine-aware audio auto-bind profiles. ### v1.0: Public Launch (2026-04-23) The first public release of Novus Visualizers. - New: Browser-based visualizer editor with audio upload and real-time FFT reactivity. - New: Template gallery, engine mode variations, and MP4/WebM export. - New: Intro/outro canvas, resize handles, and media upload.