Skip to content

Give harmony direction through progressions, voice leading and cadences #9

Open

Description

@davidnmbond

Difference and current behaviour

Each bar chooses a random scale degree and inversion without a progression-level goal. Scale membership alone does not specify harmonic tension, resolution or how individual chord voices move.

Assessed against SongGenerator.cs, Types.cs and docs/DESIGN.md, including the proposed changes in PR #5.

Requested capability

  • Add opt-in progression plans with harmonic roles, phrase-level tension and configurable cadence points.
  • Choose chord voicings with register limits and bounded voice movement; coordinate bass and melody with harmony while permitting passing and suspended tones.
  • Support an initial tonal progression vocabulary and explicit transitions or key changes. Document which musical traditions each preset models.

Acceptance criteria

  • Provide deterministic examples of an unresolved phrase, a resolved cadence and a section transition, with chord and harmonic-role annotations.
  • Tests verify progression constraints, cadence placement, chord voice ranges and configured movement limits.
  • A demo shows chord names, voice movement and tension targets; listening review assesses musical direction separately from mathematical validity.
  • Add API documentation and an educational same-score comparison with labelled controls/axes where applicable.
  • Preserve the existing seed output by default; any intentional output change must increment SongGenerator.Version and deliberately update the golden hash. Seeded independent decisions, sample-rate consistency and note/stem ground truth must remain testable.

Relationships and boundaries

Roadmap: #6.

Suggested foundations (integration dependencies, not a ban on isolated prototyping):

Implementation should keep the composition plan separate from performance/rendering choices. Subjective musical effectiveness needs listening review as well as deterministic signal/event tests. This issue adds a selectable capability; styles may deliberately use a straight, restrained or minimal alternative.

Activity

  1. davidnmbond commented on Oct 20, 2026

    @davidnmbond
    ContributorAuthor

    PR #34 adds selectable/transposable common progressions, custom chord symbols, native chord annotations and inversions that minimise voice movement. Strong melody beats follow harmony. Cadence planning, tension targets and key transitions remain open; the new arranger does not claim a resolved ending merely because a section is called Outro.

  2. davidnmbond commented on Oct 20, 2026

    @davidnmbond
    ContributorAuthor

    PR #36 adds verse/chorus/bridge harmonic plans, functional/seventh-colour variation, dominant-directed open sections, tonic chorus closure and explicit V7-I cadence/tag endings. Duration planning reserves an outro instead of truncating a section. Explicit modulation and longer-range tension plans remain open.

  3. davidnmbond commented on Oct 20, 2026

    @davidnmbond
    ContributorAuthor

    Research follow-up (PR #38): add beat-based harmonic spans, chords held across bars, local harmonic destinations and cadence preparation; protect hook landmarks during reharmonisation. Mozart K.545 illustrates thematic return in changed harmonic context; Bon Jovi illustrates prechorus preparation. These remain proposals, not new shipped capabilities. Full report: https://github.com/panoramicdata/PanoramicData.MusicGeneration/blob/docs/hooks-and-development-research/docs/HOOKS_AND_DEVELOPMENT.md

  4. davidnmbond commented on Oct 21, 2026

    @davidnmbond
    ContributorAuthor

    PR #42 fixes the default full-contrast path that discarded the selected progression for verses/bridges. Section plans now derive from that cycle; custom verse/bridge chord symbols survive with progression variation zero. The inspector exposes performed section sequences, and regression tests cover all named choices and custom symbols. Bass fifths now follow diminished/augmented chord qualities.

    Rule R04 is updated in catalogue 0.2.0. This does not complete harmonic spans, local tonal destinations or richer voice-leading/cadence controls; this issue remains open for those capabilities.

  5. davidnmbond commented on Oct 22, 2026

    @davidnmbond
    ContributorAuthor

    Status check against main (3040a59): partly implemented. Selectable progressions, inversions with minimal voice movement, section harmonic plans and V7-I cadence endings are in main (PRs #34, #36, #42). Open: beat-based harmonic spans, local destinations and cadence preparation, explicit modulation, tension targets and the annotated unresolved/resolved examples. Staying open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions