# Ultimate Wallpaper Generator Roadmap

Updated: 2026-05-19

## Goal

Turn Wallpaper EQ Generator into a launcher-based creative suite. The launcher opens separate generator modes, but all modes share media import, audio analysis, project saving, preview rendering, final export, and QA.

## Launcher Model

Create a mode registry instead of hard-coding one wizard:

```ts
type WallpaperGeneratorMode = {
  id: string;
  name: string;
  description: string;
  defaultProject(): ProjectConfig;
  renderPreview(input: RenderInput): Promise<PreviewFrameResult>;
  renderExport(input: RenderInput): Promise<GenerationResult>;
  controls: ModeControlSchema;
};
```

The app shell should own:

- recent projects
- media library
- Windows/macOS/Linux packaging
- FFmpeg/FFprobe checks
- audio/video decode and timeline sync
- render queue
- QA gate
- mode install/update metadata

Each mode should own:

- visual controls
- generated overlay layers
- mode-specific presets
- mode-specific sample project templates
- mode-specific renderer code

## Media Workflow

The next major feature should support MP4 upload/import as a first-class media source:

1. User imports an MP4.
2. App probes video and audio tracks with FFprobe.
3. If the MP4 has audio, the app uses that audio for analysis unless the user overrides it with a separate audio file.
4. Preview playback uses one shared clock based on media time.
5. Overlay frames are rendered at exact frame timestamps.
6. Final export composites the original/synced video with the audio-reactive overlay.

The key rule is one canonical timeline clock. Audio analysis frames, video frames, physics frames, and overlay triggers should all derive from `timeSec`.

## Mode 1: Core EQ

This is the existing product:

- bottom/line/ring/spectrum EQ shapes
- transparent item sprites
- auto hitbox extraction
- physics reactions
- kick camera shake/bump/jiggle
- QA-gated MP4 export

Keep this as the stable baseline mode while new modes are built on the same engine.

## Mode 2: Porter Robinson-Inspired Original Mode

Working name: `World Garden`

This must be original fan-made visual language, not copied official art.

Visual ingredients:

- low-poly or simple 3D landforms
- bright sky, grass, flowers, water, light weather, and floating terrain
- digital/nature hybrid marks
- hand-drawn scribble lines and small sketch loops
- simple 2D motion graphic shapes mixed with 3D-like depth
- soft ethereal bloom and clean pastel highlights
- symmetrical/kaleidoscopic moments on big musical sections
- particles that feel like pollen, stars, pixels, or tiny UI sparks

Audio reactions:

- kicks trigger terrain pulse and camera breath
- snares trigger short sketch-line flashes
- highs spawn tiny white/cyan particles
- chord intensity controls sky glow and horizon color
- section changes can swap between garden, sky island, and digital-grid layers

Useful references:

- Invisible Light Network described the Worlds tour visuals as combining anime, pixel art, CG, epic landscapes, and storylines built from anime/MMORPG inspiration: https://invisiblelightnetwork.com/2014/10/15/porter-robinson-worlds-tour-visuals/
- Jack McEntee's Nurture Live project notes that the visual experience used 3D and 2D motion graphics, creative coding, motion tracking, and video artwork: https://jackentee.com/porter-robinson/
- Public summaries of Worlds note video-game-like and pixelated worlds on large LED displays: https://en.wikipedia.org/wiki/Worlds_%28Porter_Robinson_album%29

## Mode 3: Sewerslvt / Glitchbreak-Inspired Original Mode

Working name: `Fracture Night`

This must be original fan-made visual language, not copied official art.

Visual ingredients:

- fast broken linework
- high-energy glitch strokes
- VHS/CRT scanline texture
- pixel sorting and datamosh-style tearing
- dark purple, black, gray, dull green, and sharp neon accents
- Y2K/webcore UI fragments
- optional anime-adjacent silhouettes only when user provides or owns the background art
- aggressive transient flashes, but with photosensitivity controls

Audio reactions:

- breakbeats drive jagged stroke bursts and stuttered frame offsets
- sub hits trigger screen compression and chromatic split
- amen edits trigger micro-cut line clusters
- pads control fog/noise fields
- high hats trigger tiny pixel sparks and edge shimmer

Useful references:

- Glitchbreak is commonly described around ambient textures, drum-and-bass/jungle roots, Amen breaks, Y2K web design, glitch art, and anime-adjacent visuals: https://aesthetics.fandom.com/wiki/Glitchbreak
- Melodigging describes glitchbreak production and visuals around chopped Amen/Think breaks, buffer stutters, bitcrushing, time-stretch artifacts, moody pads, and anime/Y2K net aesthetics: https://www.melodigging.com/genre/glitchbreak

## Required Safety Controls

Add controls for:

- flash limiter
- max contrast jump per second
- motion intensity
- glitch density
- reduced-motion export preset
- warning when a preset may be photosensitive

## Technical Milestones

1. Create `ModeRegistry` and split Core EQ renderer into a mode plugin.
2. Add a launcher screen with recent projects and mode cards.
3. Add first-class MP4-with-audio project source.
4. Create shared `TimelineClock` and analysis cache.
5. Create mode asset folders and preset schemas.
6. Build `World Garden` with generated/original geometry, particles, scribble strokes, and kaleidoscope layers.
7. Build `Fracture Night` with glitch strokes, scanlines, tearing, and photosensitivity limits.
8. Add mode-specific sample projects.
9. Keep export and QA shared across all modes.

## Implementation Notes

The current `packages/engine` is the right place to grow shared math, audio analysis, and renderer primitives. Avoid putting mode-specific visual decisions into shared engine code. Shared engine code should provide composable primitives; each mode should assemble them into its own visual identity.
