Omadrop should turn a song into an authored visual performance. It must respond at three time scales:
- Attacks: kicks, snares, hats, and other transients change the image immediately and differently.
- Groove: beats and bars establish repeated motion that makes the rhythm clear without reducing the scene to a spectrum display.
- Arrangement: phrases, sections, breakdowns, returns, and peaks change composition, density, color, and scene choice.
The renderer should be nearly still when the audio is silent. Music must change the scene's own geometry and behavior. Generic flashes, rings, zooms, and camera shake are not substitutes for scene-specific response.
- Ship fewer scenes when the alternatives are weaker.
- A new scene needs a distinct composition and motion system, not a new palette on an existing shader.
- Every scene needs a stable subject or spatial structure that can be followed over time.
- Color supports form. A scene must still read in grayscale.
- ASCII is a material applied to the same high-quality continuous image.
- Automatic direction respects the song. It does not change scenes to meet a timer when a musical boundary is available.
- Silence produces almost no activity.
- Launch, display synchronization, controls, cover art, and shutdown remain as polished as the visuals.
- Audio analysis stays local and deterministic.
- Automated metrics catch regressions. Human review decides whether a visual is beautiful enough to ship.
Every scene, transition, and release must pass the same review.
- Declare at least three primary musical inputs and the visible role of each.
- Produce a measurable response to each declared input within 100 ms of its presentation time.
- Keep each role spatially or behaviorally distinct from the others.
- Keep quiet-frame motion below 15 percent of typical active motion.
- Avoid continuous high response caused by long envelopes or false onsets.
- Preserve readable beat motion across sparse acoustic, dense electronic, and heavily compressed mixes.
The initial quantitative floor is 1.75 times quiet-frame motion for each declared transient response. Existing baselines will determine stricter per-scene thresholds. A high score does not compensate for ugly motion.
- The still frame has a deliberate focal structure, balance, and negative space.
- Motion develops the composition instead of erasing it every frame.
- Brightness stays controlled during feedback accumulation.
- Album-derived palettes remain legible for neutral, dark, and oversaturated covers.
- Continuous and ASCII materials both preserve the identity of the scene.
- The scene remains strong during quiet, developing, driving, peak, and release passages.
Review each scene on these axes:
| Axis | Examples |
|---|---|
| Composition | radial, horizontal, perspective, figure and ground, full field |
| Matter | line, surface, particle, fluid, volume, glyph |
| Motion | orbit, flow, growth, fracture, folding, wave, camera travel |
| Density | sparse, layered, dense |
| Depth | flat graphic, shallow field, deep space |
| Energy character | restrained, elastic, sharp, heavy, explosive |
A candidate does not ship when it matches an existing scene on most axes. Contrast across the rotation matters as much as the quality of one scene.
- No desktop, title bar, intermediate window, or setup frame is visible at launch or shutdown.
- Multi-monitor windows show the same musical state and control response.
- Manual scene changes do not disable automatic direction.
- Saved preferences survive updates and output-device changes.
- The 99th-percentile frame time stays below 18.5 ms at 1080p on the reference machine, with no sustained drop below 55 FPS at native display resolution.
- A deterministic recording contains only its approved audio source.
Do not add scenes yet. Establish a reliable baseline for the ten that exist.
- Build a locked, rights-cleared replay set covering sparse percussion, dense rock, electronic music, acoustic music, vocals, quiet intros, breakdowns, and fast section changes.
- Add a scene scorecard that records role response, false activity, frame pacing, brightness, continuity, and transition behavior.
- Raise Spectral Ribbons and Constellation Field to the response level of the strongest current scenes without destroying their form.
- Review all ten scenes in grayscale, continuous color, ASCII, and at least six album-derived palettes.
- Add regression cases for launch while a track is already playing, pause, seek, track change, output change, display hotplug, and shutdown.
- Keep the new recording audio guard and add an automated opening-audio check.
- Fix installation and GPU compatibility issues reported after the v0.3 post.
- All ten scenes pass their declared response thresholds.
- No current scene fails the still-frame composition review.
- The launch and ending remain clean in every test configuration.
- There are no known release-blocking install, display, audio, or persistence defects.
Improve the information available to every scene before increasing the scene count.
- Normalize transient and band response across quiet, loud, compressed, and bass-heavy masters.
- Improve downbeat, tempo, and half-time or double-time stability.
- Add rhythmic density, syncopation, spectral contrast, and tonal movement to
MusicFrame. - Add chroma and harmonic-change signals for color and structural movement.
- Separate short attacks from sustained percussion more reliably.
- Improve online phrase and section detection without requiring a full-song preprocessing pass.
- Add an optional developer signal monitor that overlays timing and confidence during replay, never during normal playback.
- Calibrate end-to-end presentation delay per output with a repeatable tool.
- The beat clock remains stable through intros, breakdowns, and tempo ambiguity.
- Section events occur on useful musical boundaries across the replay set.
- Existing scenes improve or remain unchanged under deterministic A/B review.
- No visual backend reads analyzer internals outside
MusicFrame.
Make the renderer easy to extend without turning it into a collection of special cases.
- Split the current application loop into audio, track state, display session, cover presentation, director, and render modules.
- Replace hardcoded scene switches with a versioned scene registry containing identity, materials, musical roles, selection traits, transition anchors, and performance limits.
- Give each scene persistent CPU-side state where its composition needs memory beyond the shared feedback buffers.
- Add shader hot reload and deterministic replay controls for development.
- Build shared primitives for flow fields, particles, curves, surfaces, refraction, signed-distance geometry, and feedback transport.
- Formalize a three-role palette system for background, body, and accent while keeping scene-specific color behavior.
- Define transition inputs that allow scenes to expose a focal point, axis, depth field, or motion vector to the incoming scene.
- Add GPU timing per render pass and automatic quality scaling that preserves the composition.
- The current ten scenes render identically within the golden-image tolerance.
- A new scene can be added through the registry without editing launch, director, input, or multi-monitor code.
- Transitions can preserve a declared landmark or motion direction.
- Performance diagnostics identify the cost of each active pass.
Prototype broadly, then ship only the strongest work. The target is 18 to 20 excellent native scenes, not the largest possible count.
- Ink Current: fluid calligraphy with bass-driven flow, kick vortices, snare cuts, and hat droplets.
- Glass Choir: refractive vertical forms whose harmonic content changes shape while percussion creates controlled fractures.
- Shadow Architecture: deep, sparse structures lit by onsets, with bars changing perspective and sections rebuilding the space.
- Particle Weave: independent particle threads for rhythmic roles that braid together across a phrase.
- Kinetic Relief: a moving topographic surface where groove controls traversal and arrangement changes reshape the terrain.
- Cellular Bloom: organic growth and division tied to sustained energy, with transients changing growth direction rather than adding flashes.
- Glyph Weather: a native glyph field whose density, flow, and grouping respond to musical structure. It must work as a full composition, not an overlay.
- Negative Space: a restrained scene where the music carves darkness out of a luminous field. This provides contrast with dense feedback scenes.
- Vector Storm: sharp directional forms that make syncopation and stereo movement visible.
- Chroma Tides: broad layered color fields driven by tonal movement and harmonic change, with percussion affecting boundaries rather than the whole frame.
Build at least two rough candidates in each broad visual grammar. Promote at most one when the alternatives are too similar. A candidate is cut if it does not look strong in a still, does not move distinctly, or duplicates an existing scene.
- The rotation contains at least two strong sparse scenes, two deep scenes, two surface or fluid scenes, two particle or line scenes, and two high-energy scenes.
- Every addition passes the full quality gate and has a clear reason to exist.
- A blind contact sheet and motion review can distinguish every shipped scene.
- The full rotation stays within the frame-time budget.
Turn a sequence of scenes into a coherent performance of the whole song.
- Score candidates by instrumentation, energy direction, rhythmic density, stereo width, tonal motion, current palette, visual density, and recent use.
- Plan contrast across multiple scene choices instead of selecting only the next scene.
- Recall a scene family when a chorus or motif returns, while allowing its details and intensity to develop.
- Distinguish intros, verses, choruses, bridges, breakdowns, peaks, and outros when confidence is sufficient.
- Build several transition grammars: flow carryover, focal morph, depth travel, controlled fracture, and negative-space reveal.
- Select transitions from scene compatibility and current musical state.
- Make
Nrequest the next scene while automatic direction continues. Use a separate explicit control if a manual lock is ever added. - Show a short, optional state label after manual input so auto, locked, scene, ASCII, and sync state are never ambiguous.
- High-confidence changes land on detected musical boundaries.
- No automatic sequence repeats a recent visual shape or energy character.
- Repeated song sections produce recognizable visual recurrence.
- Every scene has at least two strong incoming and outgoing transition paths.
- Manual input never leaves the user in an accidental permanent mode.
Give users meaningful control without making configuration necessary.
- Persist favorites, hidden scenes, ASCII state, intensity, brightness, motion level, audio delay, display selection, and director profile.
- Add a small set of director profiles such as balanced, kinetic, restrained, and high contrast. Profiles change selection and intensity, not core timing.
- Add a first-run control reference and an optional minimal status overlay.
- Add reduced-motion and photosensitivity-conscious modes with explicit flash, luminance-change, and camera-motion limits.
- Add color-vision-safe palette constraints and high-contrast materials.
- Work with deaf and hard-of-hearing testers before making accessibility claims. Test whether rhythm roles and arrangement changes are understandable, then revise the mappings from their feedback.
- Version the preferences file and test migration between releases.
- Default behavior remains strong with no setup.
- Every preference has a clear visual effect and a safe default.
- Reduced-motion and high-contrast modes pass their measured limits.
- Accessibility wording reflects completed testing rather than assumptions.
Allow more people to create scenes while keeping the official rotation strict.
- Define a versioned scene-pack format with shader files, metadata, declared musical roles, transition anchors, performance limits, and attribution.
- Build
omadrop pack validatefor compilation, missing metadata, unsafe resource use, response thresholds, and frame-time limits. - Add an authoring session with shader reload, deterministic audio replay, signal inspection, and side-by-side continuous and ASCII output.
- Separate installed community packs from the curated official rotation.
- Require manual review before a community scene can be featured.
- Keep projectM as a compatibility and historical preset path, not the design constraint for native scenes.
- A third party can create and test a scene without modifying Omadrop source.
- Broken or incompatible packs fail with specific errors.
- Community content cannot silently enter the official automatic rotation.
- The scene API can evolve without breaking older validated packs.
- Complete long-duration stability, GPU compatibility, display hotplug, output switching, suspend and resume, and memory-growth testing.
- Ship reliable packages and updates for Omarchy first, followed by broader Wayland packaging only when behavior matches the Omarchy build.
- Add crash diagnostics that contain no captured audio or private track data.
- Finish the website gallery, scene documentation, keyboard reference, and troubleshooting path.
- Record a rights-cleared launch film that demonstrates quiet, rhythmic, dense, transitional, and peak passages.
- Review every scene again and remove anything below the final quality floor.
- At least 18 visually distinct native scenes pass every gate.
- The director produces coherent full-song performances across the replay set.
- Installation, launch, playback, display behavior, and shutdown have no known critical defects.
- Omadrop can run for hours without frame degradation, memory growth, or sync drift.
- Create the ten-scene quality scorecard and replay matrix.
- Quantify and improve Spectral Ribbons and Constellation Field first.
- Add automated contaminated-audio detection to the demo acceptance script.
- Split the 2,000-line live application into stable modules before adding renderer complexity.
- Add rhythmic density, tonal motion, and harmonic-change signals to
MusicFramewith deterministic tests. - Prototype Ink Current, Glass Choir, and Negative Space as the first three deliberately different scene families.
- Promote only the candidates that pass still-frame, motion, music-response, ASCII, transition, and performance review.
This order improves the existing product before increasing its surface area. Each release should be obviously better in use, not only larger in a feature list.