Skip to content

feat/progression-picker-and-loop-polish - #119

Merged
TwDover merged 1 commit into
mainfrom
feat/progression-picker-and-loop-polish
Jul 29, 2026
Merged

feat/progression-picker-and-loop-polish#119
TwDover merged 1 commit into
mainfrom
feat/progression-picker-and-loop-polish

Conversation

@TwDover

@TwDover TwDover commented Jul 29, 2026

Copy link
Copy Markdown
Owner

feat: progression picker, loop playback, idiomatic non-4/4 drums

Phase 4 feature work + fixes surfaced during ear-validation.

Progression picker

  • Unified "Progression" control in the setup form: style default (auto),
    the style's own templates (roman numerals + resolved chords), a saved
    library, or free-text custom. Consolidates the old Advanced-only field.
  • Saved progressions are their own localStorage library, reusable across
    any style/key. Style switch resets a style-template pick; keeps custom/saved.
  • Backend: list_styles emits progression_templates (deduped, capped);
    StyleInfo schema exposes it so /styles serves it.

Loop playback

  • Loop-mode clips now auto-loop on play; songs/arrangements play through.
    toggle() takes a loop hint threaded via ExportPanel (mode) and SongResult.

Non-4/4 drums

  • Idiomatic compound/odd feel: snare backbone on felt pulses, compound
    meters ride an eighth grid grouped in threes. 4/4 stays byte-identical.
  • Fix: loop routes now pass meter to write_midi/write_combined_midi, so
    the .mid time_signature meta matches the request instead of always 4/4.

Priors toggle

  • The "Use my local MIDI corpus" toggle always renders now (disabled with
    a hint when no prior exists) instead of self-hiding.

Tests: backend 222, frontend 123. Roadmap updated.

@TwDover
TwDover merged commit ce22d21 into main Jul 29, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant