Plan reference
- Enum:
https://github.com/ktsu-dev/Semantics/blob/7852eab73d673ab42ff1ad10cb1ad1124b8b0122/docs/superpowers/specs/2026-07-01-music-analysis-aggregate-design.md#L238-L241
- Example song map:
https://github.com/ktsu-dev/Semantics/blob/7852eab73d673ab42ff1ad10cb1ad1124b8b0122/docs/superpowers/specs/2026-07-01-music-analysis-aggregate-design.md#L230-L233
enum NamedForm { ThirtyTwoBarAABA, TwelveBarBlues, VerseChorus, Binary, Ternary, Rondo, Strophic, ThroughComposed, Unknown }
Repetition and song-map semantics are expressed by repeating Section entries in order (e.g. Verse, Chorus, Verse, Chorus, Bridge, Chorus).
What exists today
Semantics.Music/NamedForm.cs declares VerseChorus ("Verse-chorus form").
Form.RecognizePattern (Semantics.Music/Form.cs ~L103-112) has no branch that returns it, and no test references it.
- Neither the spec nor the code records a deliberate deviation. Compare
ChromaticKind.AugmentedSixth, whose doc explicitly marks it as reserved.
What's missing
- There is no recognition rule, so the spec's own example (Verse, Chorus, Verse, Chorus, Bridge, Chorus →
ABABCB) comes out Unknown.
- The spec gives no letter pattern for this form. Recognition naturally keys on
SectionType, which Form.Of has and Form.Parse(pattern) does not.
Acceptance criteria
Form.Of returns VerseChorus when an arrangement alternates Verse and Chorus sections: at least two of each, with each verse followed by a chorus. Intro, PreChorus, Bridge and Outro sections around them are allowed. Pin down the exact rule in the XML doc.
Form.Parse keeps letter-only recognition, and its doc states that it cannot produce VerseChorus (as with TwelveBarBlues).
- Tests:
- The spec example yields
VerseChorus.
- An all-verse arrangement stays
Strophic.
- If the form is not wanted after all, mark the member as reserved in its XML doc instead, as
AugmentedSixth is.
Dependencies
None. #314 touches the same method but does not overlap with this.
Plan reference
https://github.com/ktsu-dev/Semantics/blob/7852eab73d673ab42ff1ad10cb1ad1124b8b0122/docs/superpowers/specs/2026-07-01-music-analysis-aggregate-design.md#L238-L241https://github.com/ktsu-dev/Semantics/blob/7852eab73d673ab42ff1ad10cb1ad1124b8b0122/docs/superpowers/specs/2026-07-01-music-analysis-aggregate-design.md#L230-L233What exists today
Semantics.Music/NamedForm.csdeclaresVerseChorus("Verse-chorus form").Form.RecognizePattern(Semantics.Music/Form.cs~L103-112) has no branch that returns it, and no test references it.ChromaticKind.AugmentedSixth, whose doc explicitly marks it as reserved.What's missing
ABABCB) comes outUnknown.SectionType, whichForm.Ofhas andForm.Parse(pattern)does not.Acceptance criteria
Form.OfreturnsVerseChoruswhen an arrangement alternatesVerseandChorussections: at least two of each, with each verse followed by a chorus. Intro, PreChorus, Bridge and Outro sections around them are allowed. Pin down the exact rule in the XML doc.Form.Parsekeeps letter-only recognition, and its doc states that it cannot produceVerseChorus(as withTwelveBarBlues).VerseChorus.Strophic.AugmentedSixthis.Dependencies
None. #314 touches the same method but does not overlap with this.