music/MOTIVIC_DEVELOPMENT_AND_PHRASE_GRAMMAR.md
CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
Canon served: the composition floor at docs/spine/DECISIONS_PENDING_JOSH.md — MUSIC ROUND 1
GRADED + THE COMPOSITION FLOOR, and its 2026-08-07 successor ROUND 2 GRADED (L5600-5613), which
turned both round-2 cues down; the theme rows of registries/T0_Theme_Registry [DRAFT v0.1].
If this document disagrees with canon, CANON WINS and this document is the defect.
Tier: RESEARCH SYNTHESIS, proposal-tier. It contains no canon and rules on nothing. Every
claim about published craft or evidence is cited to a URL or to a book, author and chapter; every
claim about our own stack is cited to a file and, where the file is long, to the function or the
field. Claims are labelled CRAFT CONSENSUS where the literature agrees without measuring, and
EVIDENCE where somebody measured something. The two are not interchangeable and this document
does not dress one as the other.
Volume 1 (docs/proposals/music/MUSIC_CRAFT_DOCTORATE.md and the six lanes under
craft_research/) taught the pipeline STRUCTURE — how many parts, in how many strata, entering
when, changing how often. Round 2 proved that lesson landed and proved it was not enough. This
volume is about the one thing volume 1 left alone: how a tune THINKS.
Josh's verbatim floor, docs/spine/DECISIONS_PENDING_JOSH.md L5600-5613: the songs "sounded much
better, but the melodies are way too simple. There needs to be a lot more complexity added and to
put some intelligence into the melodies and how everything orchestrates."
The diagnosis is precise and it is not "add notes." Here is what round 2's melodic layer actually
was, read off the plans rather than remembered.
62, 66, 69, 78, 71, 69 (harness/music_gen/pass2_flores.py L87-88). Five distinct pitches, four
distinct pitch classes, an ambitus of sixteen semitones, interval spine +4 +3 +9 −7 −2 — one of
the five intervals is a step.
statement, drawing on seven distincttransforms in total — augmentation, carrier_swap, diminution, fragment, inversion, literal,
octave_up — of which literal alone accounts for eight layers. Derived by counting
pattern.kind == "statement" in build/audio/pass2/plans/*.json. The 194-second battle cue
carries nine statement layers using five transforms: literal ×4, octave_up ×2, diminution,
fragment, augmentation.
`literal, octave_up, octave_down, augmentation, diminution, fragment, inversion, carrier_swap,
reharmonisation, mode_shift (harness/music_gen/pass2_realise.py compile_pattern`, the
statement branch). Six of the ten leave the interval spine bit-identical and change only
register, speed, instrument or backing. Of the four that touch the pitches, fragment truncates,
mode_shift bends every note but the first by a fixed semitone, and inversion mirrors around
the first note. There is no sequence, no retrograde, no intervallic expansion, no rhythmic
displacement, no elaboration.
sections, layers, novelty_schedule, hook, ... and hook contains head_cell, head_bars,
plain_statement_cycle, parent_quotation and a list of returns, each a cycle number plus a
transform name. A section is a span of cycles with an active layer set. Nothing in the schema can
express a basic idea, a response, a continuation, a cadence, an antecedent, a consequent or an
expansion. The composer places CELLS on a GRID. It does not write PHRASES.
That last bullet is the whole finding and it deserves its own heading, because it is the correction
the composer most needs and it outranks everything in §1.
Volume 1's leitmotif research said: state the theme plainly once, then never neutrally again. That
instruction PRESUPPOSES there is a full theme to state. We only ever wrote the head cell. In
Caplin's taxonomy a two-bar unit is a BASIC IDEA — the smallest constituent in the system, the thing
a theme is BUILT FROM — and a theme is a sentence or a period of eight bars, sixteen compound
(William E. Caplin, *Classical Form*, OUP 1998). Our plain statement is therefore two bars long, one
quarter of the smallest complete tune the classical grammar recognises, and the next four minutes
are that same two bars wearing different clothes.
The census, measured off the plans and off the compiled note lists rather than remembered
(harness/music_gen/pass2_realise.py compile_layer, run over build/audio/pass2/plans/*.json):
| cue | length | bars | cycles | statement layers | distinct transforms | SPINE-CHANGING ops | notes in theme-carrying layers | all composed notes | theme share |
|---|---|---|---|---|---|---|---|---|---|
| REST | 240.0 s | 92 | 23 | 8 | 6 | 3 | 72 | 2557 | 2.8% |
| CACI | 194.6 s | 120 | 30 | 9 | 5 | 3 | 90 | 4341 | 2.1% |
| WATERFALL | 145.5 s | 40 | 20 | 4 | 4 | 2 | 30 | 655 | 4.6% |
SPINE-CHANGING counts only operations that alter the interval spine or the phrase — fragment,
inversion, augmentation, diminution. It excludes literal, octave_up and octave_down (register
transfer), carrier_swap (re-orchestration) and reharmonisation (which in our implementation
compiles identically to literal and leaves the notes untouched). Three genuine development
operations across the 240-second exploration cue, three across the battle cue and two across the
sparse one; ninety melodic notes in a 120-bar battle cue, which is fifteen firings of the same six
notes at 0.75 melodic notes per bar.
Our stack already knows the sentence exists — the head-cell authoring tool carries a
continuation_fragment interval list on every one of its themes
(harness/music_gen/theme_compositions.py, seventeen occurrences) and author_head_cell.py checks
C05 (the response realises its declared operation), C06 (the continuation is fragmentation, not new
material) and C08 (the closure policy holds). That grammar governs a fifteen-second head-cell
artifact and was never carried into the cue composer. A four-minute cue is built by scattering the
output of a grammar-checked fifteen seconds across 240 seconds of grid with no grammar at all.
So "too simple" resolves into three defects at two levels, and the second level is the load-bearing
one:
perception evidence in §4.6). Do not lengthen the head cell.
antecedent, no consequent, no cadence, and no melodic phrase longer than two bars anywhere in any
cue. §3 supplies it and §3.6 gives the numbers. This is the first thing to build.
bit-identical. §1 replaces the list with an operation set that develops rather than redresses.
Note carefully that the operations were not ABSENT in round 2 — inversion, fragmentation and
augmentation are all present and correctly implemented, and the result still sounds simple. More
operations on a two-bar cell will not fix a missing tune. Build §3 first, then §1.
What each operation PRESERVES (which is the motif's identity — an operation that does not preserve it
has produced new material rather than development), what it CHANGES, and the failure mode that makes
it read as noodling are tabulated once in §1.13 rather than repeated per entry. The subsections carry
the definition, the evidence or craft nuance, and the function signature. CODE-ABLE means expressible
as a function on a note list; MEASURE-ONLY means assertable from the authored score and checkable in
audio only indirectly.
The reference operation vocabulary is the one shared by the Wagner literature and the Schoenbergian
tradition, catalogued in volume 1 at craft_research/LEITMOTIF_TECHNIQUE.md §1.4 and §3.2 from
and Lehman's Star Wars thematic catalogue
pp. 47-48. This section takes that vocabulary down to the level where a function signature falls out
of it.
The immediate restatement of a cell at a different pitch level, repeated in the same direction. A
REAL sequence transposes by a fixed number of semitones and preserves interval quality exactly; a
TONAL (diatonic) sequence transposes by scale degree and lets interval quality change to stay in
key; a MODIFIED sequence alters one interval or one duration per leg deliberately
(Comprehensive Musicianship §7.2).
as both the minimum that establishes a sequence and the point past which it turns mechanical
(Music Theory Academy; the Iowa
State tutorial above). Treat four legs as needing a licence and five as a defect.
workhorse, by third is brighter, and the leg interval should be smaller than the cell's own largest
interval or the sequence reads as a key change instead.
sequence(cell, legs, step_degrees, mode, scale, modify=None) -> [Cell], where mode selects real or tonal and modify is an optional per-leg interval delta. Our Cell dataclass
(harness/music_gen/compose_arm_b.py L385-455) stores intervals as offsets from the cell's own
first note, so a real sequence is a change of start_midi at realise() time and needs no new
field; a tonal sequence needs the scale, which Mode.pitch/nearest_degree (L303-323) supplies.
Mirror the interval spine. REAL inversion negates each interval in semitones; TONAL inversion
negates it in scale degrees, so the result stays in the mode and interval qualities shift. The axis
is normally the cell's first note (the simplest choice and the one our code already makes), but it
can be any fixed pitch — inverting around the tonic and inverting around the cell's own median give
audibly different results, and the choice should be a declared parameter rather than an accident.
which smuggles a mode change in under a "shape" operation. If the cell's harmonic signature is
load-bearing (harmonic_signature_holds() in author_head_cell.py L559 is the test), invert
tonally rather than really.
Cell.invert() exists (compose_arm_b.py L403) as real inversion around the firstnote; the missing parameters are the axis and the tonal/real switch:
invert(cell, axis_midi=None, kind="real"|"tonal", scale=None) -> Cell.
Retrograde plays the cell backwards; retrograde-inversion plays the mirror backwards.
(Dowling, "Recognition of melodic transformations: Inversion, retrograde, and retrograde
inversion", *Perception & Psychophysics* 12, 1972, 417-421;
PDF) found all three transforms
recognised above chance in the easier conditions, in an ascending order of DIFFICULTY of
inversion, then retrograde, then retrograde-inversion — and, critically, found no evidence that
listeners distinguish transforms preserving exact intervals from those preserving only contour.
Detecting musical palindromes is reported as hard even for trained musicians.
spending as a CONSTRUCTIVE device that generates fresh-sounding material with guaranteed family
membership, not as a moment the player is expected to notice. Never schedule a retrograde as a
landmark or as "the theme comes back"; schedule it as the source of a counter-line.
Cell.retrograde() exists (compose_arm_b.py L408); retrograde-inversion is thecomposition of two existing methods and needs one line.
The same intervals at scaled durations. Classical practice uses ratios of 2 and 1/2; 3/2 and 2/3
are available and rarer; 4 and 1/4 exist and are almost always a formal event rather than a
treatment.
landed flat. Doubling a cell's note values without changing anything underneath halves its apparent
harmonic rhythm while the accompaniment runs at the old rate, so the statement reads as the melody
getting slow rather than the music getting grand. CRAFT CONSENSUS: an augmentation is accompanied
by a slowing of harmonic rhythm and a thickening or octave-doubling of the carrier; a diminution is
accompanied by an increase in accompaniment activity, which is what a sentence's continuation
phrase does by definition (§3.1).
Cell.augment(f) and Cell.diminish(f) exist (compose_arm_b.py L413-418); the missing piece is the COUPLING — augment(cell, f, couple=("harmonic_rhythm", "carrier_weight"))
returning a cell plus a required edit to the layers under it. Round 2's augmentation transform
(pass2_realise.py) scales onset and duration and touches nothing else.
FRAGMENTATION uses a characteristic sub-cell in place of the whole. LIQUIDATION incrementally
removes the motif's characteristic features until a neutral residue remains. They are frequently
confused and they are opposites in intent: fragmentation KEEPS the characteristic piece, liquidation
DISCARDS characteristics one at a time
Schoenberg, *Fundamentals of Musical Composition*, the chapters on the sentence and on liquidation —
Schoenberg's own framing is that the melody at a cadence reduces characteristic features to
uncharacteristic ones, because characteristic features demand continuation and a cadence must not;
a recent scholarly reappraisal argues the term is richer than "removal" and carries its chemical
sense of a change of state
(Liquidation and Its Origins, *Journal of Music Theory* 63/1, 2019).
fragment transform takes cell[:k] and repeats it (pass2_realise.py), where head, tail, interior and
largest-interval fragments are all available. Always taking the head makes every fragmentation
sound identical.
composer running out of ideas, because that is formally what it depicts.
Cell.fragment(i, j) exists (compose_arm_b.py L420) and already carries thecorrect docstring about the Caplin continuation. Liquidation needs writing:
liquidate(cell, steps, target="repeated_tone"|"stepwise") -> [Cell] returning a chain in which
each successive cell has one more interval collapsed toward the target, terminating on a neutral
residue. This is the single highest-value missing operation in the set, because it is what a
cadence is made of and our cues have no cadences.
These operate on the PHRASE rather than on the cell, and they are the reason §3 exists.
insertion, identifiable because the surrounding harmony is merely bridged rather than advanced,
often with a marked slowing of harmonic rhythm (Rothstein, *Phrase Rhythm in Tonal Music*,
Schirmer 1989, ch. 3;
excerpt).
the cadential material.
always carries a hypermetric reinterpretation notated 4=1
(Open Music Theory, Hypermeter;
recomposed back to a duple length without destroying its melodic, harmonic and motivic structure
(Open Music Theory, Internal Expansions).
That is a checkable property of an authored phrase plan, not a subjective read.
evaded cadence and this operation are normally spent together.
expand(phrase, kind="prefix"|"suffix"|"interpolation"|"elision", bars, at) -> Phrase, with the
invariant that normalise(expanded) == underlying_basic_phrase.
Distinct from §1.4's rhythmic diminution and far more important for our defect. The Renaissance and
Baroque practice of DIVISIONS or PASSAGGI subdivides a long note or a whole phrase into many short
ones, elaborating a fixed structural line rather than replacing it. The treatise line is Ganassi,
*La Fontegara* (1535), Ortiz, *Trattado de glosas* (1553) — simpler and more regular than Ganassi,
and largely concerned with embellishing cadential formulas — and Bassano, *Ricercate, passaggi et
cadentie* (1585)
(Ricercate, passaggi et cadentie;
American Recorder, "Diminutions", Winter 2023).
and it is the direct answer to "put some intelligence into the melodies." Our cues already have a
pokok — a slow structural line, POKOK = [0, 2, 3, 4, 3, 2, 0, -1] (pass2_flores.py L103) — that
the kotekan pattern elaborates by a deterministic interlocking rule (compile_pattern, the
kotekan branch), which is division practice arrived at from the gamelan side. What is missing is
division applied to the HEAD CELL and to the melody carrier, at graded levels, as a scheduled event.
and still carries the longest duration or the strongest accent in its span. A division that moves
the skeleton is a new tune.
divide(cell, level, scale, nct_palette, keep_skeleton=True) -> Cell, where level 0 is the
plain cell and levels 1-4 are progressively denser; the invariant is that the level-0 pitches
remain present at their original onsets.
The same melody over different chords. Lehman separates BASIC from PROFOUND reharmonisation
precisely because the second alters the theme's whole character (Lehman, catalogue, pp. 47-48).
Basic keeps the tune's notes as chord tones under a substitute chord of the same function; profound
recasts them as dissonances, or moves the passage to a chromatically-third-related or modally
foreign region.
melody's meaning per note edited, namely zero — and it is void if the dissonance pattern does not
actually move. Our reharmonisation transform compiles identically to literal and relies on the
section's
harmony_variants index to do the work (pass2_realise.py, the statement branch and
harmony_grid), and the four declared variants are all diatonic faces of the same D-major
collection (pass2_flores.py L120-131). That is basic reharmonisation four times over and no
profound reharmonisation at all.
consonance class and require that a declared reharmonisation change it for at least a third of the
cell's notes. reharm_delta(cell, grid_a, grid_b) -> fraction_of_notes_changing_consonance_class.
The same contour in a borrowed or opposite mode. Our current mode_shift bends every note but the
first by a fixed semitone (pass2_realise.py), which is not modal mutation — it is chromatic
smearing and it will read as out-of-tune rather than as darkened.
source mode, then realise those degrees in the target mode. Our stack can already do this —
scale_degree_contour() (author_head_cell.py L625) and Mode.pitch/nearest_degree
(compose_arm_b.py L309-323) are the two halves — and neither is wired into the cue composer.
antagonist material and travel with it, never with a region's own register
(T0_Theme_Registry :: REGION_FLORES_ISLAND.deny_register_list; volume 1
LEITMOTIF_TECHNIQUE.md §6.2). Modal mutation toward a darker mode is therefore GATED by whose
material is being mutated, and the gate is a canon check rather than a taste call.
mutate_mode(cell, source_mode, target_mode) -> Cell via degree round-trip.Scale the interval spine rather than the durations: multiply every interval by a factor, or add a
constant to every interval's magnitude while keeping its sign. Contour and rhythm survive; the tune
becomes more or less strenuous.
variant of an exploration theme that is not merely the same tune louder. It is absent from our
stack entirely.
author_head_cell.py C18) and the sampler ranges are known (measured_range() in compose_arm_b.py L230), so an expansion
must clamp and must REPORT that it clamped rather than folding silently.
scale_intervals(cell, factor, clamp_range) -> (Cell, clamped_count).DISPLACEMENT keeps the cell's pitches and durations and moves the whole thing by a fraction of a bar
so its accents fall off the notated strong beats. METRIC SHIFT re-bars the cell so its internal
groupings conflict with the prevailing metre. Krebs's taxonomy is the precise one: DISPLACEMENT
DISSONANCE (labelled D x+n) is non-aligned presentation of congruent layers; GROUPING DISSONANCE
(G x/y) is the association of incongruent layers, such as a melody grouped in threes over an
accompaniment grouped in twos (Krebs, *Fantasy Pieces: Metrical Dissonance in the Music of Robert
Schumann*, OUP 1999, ch. 2, "Metrical Consonance and Dissonance: Definitions and Taxonomy";
costs nothing structurally and is guaranteed to survive the loop. Our layer patterns already carry
rotate_per_cycle for ostinato and pokok (compile_pattern), which is displacement applied to the
PITCH sequence; displacement of the ONSET grid is not implemented for statements at all.
displace(cell, beats) -> Cell is trivial; the value is in the CHECK, because adisplacement is audible only against a layer that stayed put — displacing everything at once is
not dissonance, it is a different downbeat.
Move the cell, or one note of it, by an octave or more. Distinct from octave transposition of the
whole because the useful form is PARTIAL — transferring the cell's final note up an octave changes a
settling gesture into an opening one without touching a single interval class.
octave_up and octave_down and no partial transfer. The constraints are the post-skip reversal baseline (§4.3) and the sampler's mapped range (measured_range()).
transfer(cell, note_indices, octaves) -> Cell.| operation | preserves | changes | failure mode | status in our stack | class |
|---|---|---|---|---|---|
| sequence (real / tonal / modified) | contour; intervals exactly or by degree | pitch level, harmonic implication | ladder with no arrival; four-plus legs | ABSENT | CODE-ABLE |
| inversion (real / tonal, chosen axis) | rhythm, interval magnitudes | contour direction, mode colour | real inversion smuggling a mode change | Cell.invert, real, first-note axis only | CODE-ABLE |
| retrograde / retrograde-inversion | interval and duration multiset | order | scheduled as a recognisable return | Cell.retrograde; RI is one line | CODE-ABLE |
| augmentation / diminution | interval spine, contour | weight, formal rate | uncoupled accompaniment; over-spent | present, uncoupled | CODE-ABLE |
| fragmentation | a named sub-cell verbatim | length, event rate | always fragmenting the head | head-only | CODE-ABLE |
| liquidation | rhythm, register | intervals, progressively | used outside a cadence | ABSENT | CODE-ABLE |
| interpolation / extension / elision | the underlying basic phrase | phrase length, hypermetre | extension with no attempted closure | ABSENT (no phrase object) | CODE-ABLE on plan |
| division / passaggi | structural notes on structural beats | surface density ×2 to ×8 | skeleton obscured | present for pokok only | CODE-ABLE |
| reharmonisation (basic / profound) | pitches, rhythm | consonance class per note | all variants diatonic | basic only | CODE-ABLE as check |
| modal mutation | contour, degree identity | interval quality, colour | semitone smear instead of degree map | wrong implementation | CODE-ABLE |
| intervallic expansion / contraction | contour direction, rhythm | ambitus, effort | range overflow, silent folding | ABSENT | CODE-ABLE |
| rhythmic displacement / metric shift | pitch spine, durations | accent placement | displacing every layer at once | ABSENT for statements | CODE-ABLE |
| register transfer (partial) | pitch classes, rhythm | contour, effort | breaks post-skip reversal without reason | whole-cell only | CODE-ABLE |
| carrier migration | everything | timbre | mistaken for development | present | MEASURE-ONLY |
| contrapuntal combination | both motifs | the relation between subjects | spent more than once or twice a game | ABSENT | MEASURE-ONLY |
Schoenberg coined the term for the procedure by which "variation of the features of a basic unit
produces all the thematic formulations" in homophonic-melodic music, providing "fluency, contrasts,
variety, logic and unity"
(Wikipedia, Developing variation, quoting
Schoenberg's *Style and Idea* and *Fundamentals of Musical Composition*). Walter Frisch's
*Brahms and the Principle of Developing Variation* (California Studies in 19th-Century Music 2,
University of California Press, 1984;
clarified, refined and enlarged the concept into an analytical tool that works on whole movements
rather than only on themes, and traced its evolution across eighteen Brahms works. The reception
history — including the objections to Réti's and Ratz's versions of thematic analysis — is surveyed
in Nicole Grimes, "The Schoenberg/Brahms Critical Tradition Reconsidered", *Music Analysis* 31 (2012)
(PDF).
The distinction that matters operationally is developing variation against Liszt's THEMATIC
TRANSFORMATION. Thematic transformation reprises one theme in a succession of characters, each a
disguise of the whole, achieved by permutation, augmentation, diminution and fragmentation
(Wikipedia, Thematic transformation).
Developing variation is not a set of disguises of one object; it is a CHAIN in which each
formulation is derived from the one before it by a small named change, so the material at bar 200 is
recognisably descended from bar 1 without any single step being large.
That difference is the whole design instruction for pass 3, and it is expressible as a data
structure. Round 2 built a STAR: one head cell at the centre, every statement a transform applied to
the original. Developing variation is a CHAIN: statement *n* is a named operation applied to
statement *n−1*. A star produces exactly what Josh heard — the same tune, again, with a different
coat. A chain produces material that has travelled.
derived_from pointing at another statement (not always the plant) and an operation naming one
entry from §1.13. The cue is a developing variation if the mean chain depth over its statements
exceeds one and the maximum depth is at least three or four. Round 2's mean chain depth is 1.0 by
construction on all three cues, because every returns[] entry names a transform of the head.
listener. Wagner's and Williams's practice, as catalogued in volume 1, is plant plainly, then
never neutrally again — but the plant RECURS in near-plain form at the arrival points. The
correct shape is a chain with periodic resets, not a chain that walks away and never comes back.
Statement(id, derived_from, operation, params, at_cycle, layer) as a plan record; chain_depth(plan) -> {statement_id: depth} as the check; a battery predicate requiring mean
depth above 1.5 and max depth at least 3 for a full-length cue.
This is what replaces a section map that has no phrases in it.
Caplin's sentence is an eight-bar theme in three formal functions: PRESENTATION (bars 1-4) =
basic idea plus its repetition; CONTINUATION (bars 5-6 in the classic case) = fragmentation,
harmonic acceleration, sequence and often liquidation; CADENTIAL (bars 7-8) = the closing
progression. Presentation articulates "beginning", continuation articulates "being in the middle",
cadential articulates "ending"; a continuation may be based entirely on an expanded cadential
progression, which Caplin labels "continuation ⇒ cadential" to mark the retrospective reinterpretation
(William E. Caplin, *Classical Form*, OUP 1998, and *Analyzing Classical Form*, OUP 2013;
The repetition inside the presentation is itself a choice with names: EXACT repetition,
STATEMENT-RESPONSE repetition (the basic idea restated over a changed harmony, typically tonic then
dominant), and SEQUENTIAL repetition (restated at another pitch level). Our head-cell tool already
knows this — check C05, "the response realises its declared operation" — and the cue composer does
not.
and 1 + 1 + 1 + 1 for a compressed cell-length sentence inside a two-bar cycle.
natural size for a game cue built on a four-bar cycle: presentation over cycles 1-2, continuation
over cycle 3, cadence over cycle 4.
sentence(basic_idea, repetition_kind, continuation_ops, cadence) -> Phrase where thecontinuation is REQUIRED to be built from fragments of the basic idea (our existing C06 rule).
Two phrases and two cadences: ANTECEDENT (basic idea + contrasting idea, ending in a weak cadence,
canonically a half cadence or an imperfect authentic cadence) and CONSEQUENT (the basic idea
returns, ending in a strong cadence, canonically a perfect authentic cadence). A PARALLEL period
begins both phrases with the same basic idea; a CONTRASTING period does not. Eight bars at the
standard scale, sixteen compound.
The cadence STRENGTH LADDER is the load-bearing part for us and it is the thing our cues have none
of, in either direction: half cadence weaker than imperfect authentic, weaker than perfect
authentic; and the deceptive and evaded cadences sit outside the ladder as denials of it.
Caplin's four hybrid types recombine the halves: antecedent + continuation, antecedent + cadential,
compound basic idea + continuation, compound basic idea + cadential (Aziz review, above; and
Hepokoski's summary,
The Classification of Theme Types).
COMPOUND themes double the standard eight-bar types.
For a looping game cue the hybrid "antecedent + continuation" is the most useful single type in the
catalogue, because it opens with a symmetrical, memorable, easily-recognised pair and then
accelerates into fragmentation — which is exactly the shape a loop wants, since the acceleration
lands the listener back at the top with energy rather than at a closed full stop. The doctrine
already forbids full closure at a loop point (theme_compositions.py L106 and L190 both record
withheld cadences), and the hybrid is the formal name for what that produces.
The devices, with the identification test from §1.6:
material.
repeated to postpone the arrival. Open Music Theory's Beethoven Op. 2 No. 3 example adds five
measures to reach the expected perfect authentic cadence at bar 13 instead of bar 8.
bridges a standing harmony rather than advancing it, often with a slowing of harmonic rhythm.
cadence, the cadence is evaded, the music retries it (Janet Schmalfeldt, "Cadential processes: The
evaded cadence and the 'one more time' technique", *Journal of Musicological Research* 12/1-2,
1992, 1-52; publisher record).
The Mozart K. 309 iii example evades the expected cadence at bar 16, repeats bars 13-15 varied,
and resolves at bar 19.
The one-more-time technique deserves a specific note for a game score. It is the cheapest genuine
DRAMA available to a cue, it costs no new material, and it produces exactly the "small event, big
consequence" hierarchy that our own corpus derivation says separates loved tracks from filler
(volume 1 §2, and build/audio/exemplars/PATTERN_FINDINGS_V3.md §10). An evaded cadence is a
structural event with a magnitude a listener feels and a segmenter barely registers.
The concrete deliverable of this section. Alongside sections, layers, novelty_schedule and
hook, a pass-3 plan carries phrases, and each phrase record carries: an id; a theme type from
{sentence, period, hybrid_ant_cont, hybrid_ant_cad, hybrid_cbi_cont, hybrid_cbi_cad}; a scale
(standard or compound); a start cycle and a length in bars; the constituent functions with their bar
spans; a cadence type from {HC, IAC, PAC, deceptive, evaded, none_withheld} with its bar; an optional
expansion record naming kind, bars added and location; and the derived_from/operation chain link
of §2 for the basic idea it uses.
length with no gap; a continuation contains only fragments of its own presentation's basic idea
(C06 lifted from the head-cell tool to the cue); a period's antecedent cadence is strictly weaker
than its consequent's; an expansion normalises back to a duple underlying length; no cue ends a
loop on a PAC unless the theme row licenses closure; at least one evaded cadence per full-length
cue.
The composer will implement whatever this document specifies, so the numbers are given explicitly
and each is labelled REPORTED (a figure from a cited source or a re-derivation of our own corpus) or
PROPOSED (this document's recommendation, with the reasoning that produced it). A proposed number is
a defensible starting value to be revised by measurement, never a finding.
the sentence and the period, with the compound types enlarging the standard eight-bar theme by a
factor of two (Caplin, *Classical Form*, OUP 1998; *Analyzing Classical Form*, OUP 2013;
Aziz review, MTO 20.1). Our head
cell is two bars. It is a basic idea. It is not a theme and never has been.
minimum that establishes a sequence and the point past which it turns mechanical
(Comprehensive Musicianship §7.2;
Music Theory Academy). CRAFT
CONSENSUS, not evidence.
IN THE LOW HUNDREDS — cue counts per Star Wars film run 43 to 184 (Lehman, catalogue, pp. 63-64;
volume 1 LEITMOTIF_TECHNIQUE.md §3.3). Scale STATEMENTS with runtime, never motif count.
(build/audio/exemplars/PATTERN_FINDINGS_V3.md §10, N = 30 against 927 siblings). Treatment
changes every 5.79 bars under roughly three landmarks per track at 0.88 strong events per minute
(volume 1 §2 and §5 principle 4).
theme-carrying layers; 3, 3 and 2 spine-changing operations; the longest melodic phrase anywhere
is two bars.
compound, built as a sentence, a period or a Caplin hybrid, of which the existing head cell is the
basic idea. Reasoning: this is not a preference but the definition — a two-bar unit is a basic
idea by Caplin's own taxonomy, so a cue containing only two-bar units contains no theme. The floor
is the smallest complete object the grammar recognises.
exists, a bare two-bar cell is a FRAGMENT, and fragmentation is a continuation device with a place
in the form (§3.1). Permitting bare cells everywhere is what collapsed round 2 into a motto loop.
contrasting idea which may be derived from the theme by inversion or retrograde and used as a
counter-line. Reasoning: the period's antecedent is basic idea PLUS contrasting idea by
definition, so one idea cannot fill a period; and the ostinato-plus-melody practice volume 1
documents in Mitsuda (§4.3) is two ideas by construction. Round 2 has one.
SPINE-CHANGING. Reasoning, from the envelope of two independent laws we already hold: Josh's
three-to-five-cycle novelty floor over 23 to 30 cycles requires five to ten structural events, and
the corpus's treatment change every 5.79 bars over 92 to 120 bars implies sixteen to twenty
treatment changes. Ten is the lower envelope of the two; six spine-changing is the corpus's
landmark-to-tide ratio applied to it. Round 2 delivered three, three and two.
NOTES PER SOUNDING BAR. Reasoning: round 2's theme-carrying lines average 0.75 notes per bar and
hold 2.1 to 4.6 percent of composed notes, which is a cue that is 97 percent accompaniment. An
eight-bar sentence at division level 1 carries twenty to thirty notes over eight bars, so two per
bar is a floor rather than a target. No source gives a percentage; this number is derived from our
own measurement and is the most revisable figure in the list.
ONE. Reasoning: §2's distinction between a star and a chain, with the reset carrying volume 1's
requirement that the plant recur near-plain at the arrival. Round 2's mean chain depth is exactly
1.0 on all three cues by construction.
Reasoning: the evaded cadence is the cheapest structural event that a listener feels and a
segmenter barely registers (§3.4), which is precisely the small-event hierarchy our corpus rewards;
the single near-plain arrival is volume 1's plant-then-never-neutrally rule with its one licensed
exception.
Josh's word is "intelligence", not "notes", and the distinction is the crux of the whole volume.
A DECORATED line has more notes over the same skeleton and the same formal function. A DEVELOPED
line has changed what the material DOES. Both may have identical note counts. The operational
difference: after a decoration, the phrase is in the same place in its own argument; after a
development, it is somewhere new. This is why §2's chain-depth measure is the right instrument and
note density is the wrong one — a cue can double its note count with divisions and still have chain
depth 1.0, and it will still sound simple, because it is.
The correct use of decoration is therefore as the SURFACE of a developed structure, never as a
substitute for one. A four-minute cue needs both: development supplies the argument, division
supplies the sophistication of the surface, and the failure that produces "busy" is division with no
development underneath it.
Schenker's fundamental line (Urlinie) is a stepwise descent in the upper voice spanning a third, a
fifth or an octave — 3-2-1, 5-4-3-2-1 — supported by a bass arpeggiation, and everything on the
surface is an elaboration of it
(Wikipedia, Fundamental structure;
Schenkerian analysis). Stripped of its
metaphysics, the usable claim is modest and true: a melody that a listener follows has a small
number of GOAL PITCHES arriving at structurally strong points, and the notes between them are
traffic. A melody without goal pitches wanders regardless of how many notes it has.
land on, and the surface is written to arrive on them. Our pokok already is such a line for the
accompaniment (pass2_flores.py L103) and no equivalent exists for the melody.
Schenkerian claim that it is universal is contested and this document does not assert it.
skeleton_arrivals(phrase) -> [(bar, pitch)] and a predicate that thedeclared structural pitches carry the longest duration or the strongest metric position within
their span.
EVIDENCE. Von Hippel and Huron ("Why Do Skips Precede Reversals? The Effect of Tessitura on Melodic
Structure", *Music Perception* 18/1, 2000, 59-85;
found that across many cultures a large interval tends to be followed by a change of direction, and
argued that this arises from REGRESSION TO THE MEAN within a melody's tessitura rather than from a
listener expectation: skips reach toward the edges of the range and from an edge the only available
move is back. Their conclusion is that gap-fill, registral direction and registral return are side
effects of tessitura constraints.
The reading for a composer is that post-skip reversal is a statistical BASELINE, not a rule to
obey and not a rule to break for effect. Writing a melody that never reverses after a leap will
sound wrong because it implies a range the carrier does not have; writing one that always reverses
is the default and carries no information. Our own head cell does the normal thing — the +9 leap to
78 is followed by −7 then −2 — and that is correct and should stay.
Our corpus adds a caution against over-reading any of this: gap-fill after leap scores AUC 0.516
and stepwise interval fraction 0.474 in separating tracks Josh named from their own album siblings
(build/audio/exemplars/PATTERN_FINDINGS_V3.md §10). Both are at chance. Step-leap balance is
craft hygiene, not a differentiator.
This is the concrete demonstration that a plain triadic tune becomes a sophisticated one by
elaboration alone, over an unchanged skeleton. The vocabulary, with the approach-and-departure rule
that defines each
(Open Music Theory, Embellishing tones;
Fundamentals, Function, and Form ch. 15):
whose dissonance is prepared.
before returning.
it produces a characteristic shape rather than a generic decoration.
Applied to our cell: 62, 66, 69, 78, 71, 69 over a D chord is a triad outline plus a leap and a
step-down. The same six pitches held as the skeleton, with a passing 64 between 62 and 66, a lower
neighbour 68 before 69, an accented appoggiatura 79 falling to 78, a suspension of 71 across the
bar into the Bm, and an anticipation of 69 before the next downbeat, is a fourteen-note line with
the identical structural pitches on the identical beats. Nothing about the motif's identity moved.
Every check our stack runs on the head cell — contour class, one licensed deviant, harmonic
signature, ambitus — still passes on the skeleton. That is what "intelligence in the melody" buys at
the surface, and it is entirely mechanical to generate.
divide(). The NCT palette is a per-regionfield, because which embellishments are idiomatic is a cultural fact and not a universal one; the
organology lane owns that roster (craft_research/ORGANOLOGY_SLICE_CULTURES.md).
departure match its declared type, and the count of NCTs per structural note is capped by the
division level. Level 1 permits one per structural note, level 2 up to three, level 3 up to seven.
The idea that a motive stated on the surface also appears, augmented across a whole phrase or
section, in the structural pitches beneath it. Charles Burkhart, "Schenker's Motivic Parallelisms",
*Journal of Music Theory* 22 (1978), 145-75, distinguishes three types by the length of the copy
relative to the pattern; the technique is surveyed with worked Beethoven examples in Jack Boss,
"Schenkerian-Schoenbergian Analysis and Hidden Repetition in the Opening Movement of Beethoven's
Piano Sonata Op. 10 No. 1", *MTO* 5.1 (1999)
(MTO).
This is the deepest available answer to "intelligence", and it is also the cheapest for a
programmatic composer, because it is one line of arithmetic: derive the phrase's structural pitches
FROM the motif's own interval spine rather than choosing them freely. Our cue would then have a
head cell whose intervals are +4 +3 +9 −7 −2 and a phrase-level goal-line built on the same
intervals stretched over sixteen bars. A listener never names it and the coherence is audible
anyway. CRAFT CONSENSUS on the effect; no evidence is claimed that listeners detect it consciously,
and the Baker and Müllensiefen leitmotif-perception result in volume 1 §1.5 suggests they would not.
parallelism(cell, span_bars) -> [(bar, degree)], feeding §4.2's structural-pitchdeclaration.
Three findings, and they constrain how far this document is entitled to push.
complexity is supported in shape — a review of 57 studies categorised 50 of them (87.7%) as
compatible with a segmented inverted-U model (Chmiel and Schubert, "Back to the inverted-U for
music preference: A review of the literature", *Psychology of Music*, 2017;
SAGE) — while clear Wundt effects
were found in only a minority of them, and several strands find greater preference for
prototypical or subjectively simpler music. The honest statement: more complexity is not
monotonically better, and the peak is not at the complex end.
"Predictability and Uncertainty in the Pleasure of Music: A Reward for Learning?", *Journal of
Neuroscience* 39/47 (2019), 9397 (J Neurosci),
quantified uncertainty and surprise over 80,000 chords with IDyOM and found pleasure varying
non-linearly with their INTERACTION: passages were liked when uncertainty was low and surprise
high, or the reverse. Translated into composition instructions: establish a clear, low-entropy
context and then violate it, or run a high-entropy context and resolve it plainly. Doing neither —
a moderately unpredictable tune in a moderately unpredictable context — is the dead zone, and it
is where an algorithm lands by default.
model accounted for about 90 percent of the variance in listeners' perceived-complexity ratings of
melodies, using tonal, intervallic and rhythmic components
(Expectancy-based model of melodic complexity, ICMPC 2000;
commentary in *Empirical Musicology Review*,
Albrecht 2016). The model is
monophonic-only, which matches how we would use it — on an authored melodic line, before render.
Together these say something quite specific: the target is not "more complex melodies". The target
is a LOW-ENTROPY, CLEARLY-ESTABLISHED context inside which specific, placed, structurally-meaningful
violations occur. That is a description of phrase grammar with development, and it is why §3 and §2
are the answer rather than §1 alone.
Many of the most-loved game melodies are simple, and our own corpus says so more forcefully than any
outside source could. Kondo composed under a four-channel constraint and the received account of his
practice is that short, repetitive, meticulously-shaped melodies were the design goal rather than a
compromise, written so that short segments could repeat endlessly without becoming tiresome
(secondary and community sources, labelled as such:
volume 1 LEITMOTIF_TECHNIQUE.md §4.2 carries the primary GDC-2007 material).
And our measured corpus is blunter still. In build/audio/exemplars/PATTERN_FINDINGS_V3.md §10,
across thirty tracks Josh named against 927 of their own album siblings, every axis the folk theory
of hummability is built from sits between AUC 0.46 and 0.59: stepwise interval fraction 0.474,
gap-fill after leap 0.516, interval 3-gram repetition 0.488, contour turns per note 0.459, melodic
salience 0.462, time to hook 0.487, hook range 0.589, melodic span 0.600. Not one has moved
meaningfully across three derivations at N = 11, 28 and 30. What DOES separate a loved track from
its own album is size and return: section count AUC 0.715 (median 16 against 9), length 0.700,
mean section self-similarity 0.685 (0.901 against 0.854), drops 0.676, bars 0.675.
Read that honestly and it says the loved tracks are not melodically more complex than the filler
beside them. They are LONGER, they have MORE SECTIONS, and they RETURN TO THEMSELVES MORE. Which is
to say: their simple material is developed and recontextualised across a much larger structure.
argument — an eight- or sixteen-bar sentence or period with a real cadence, recurring at least four
times, at least half of those returns carrying a named spine-changing operation from §1.13, mean
derivation-chain depth above 1.5, and at least one return reharmonised or mode-mutated so that
which of its notes are consonant has changed.
re-orchestrated with nothing above it: no phrase, no cadence, no antecedent that ever tried to
close, chain depth 1.0, and every return a register, carrier or tempo change. That is round 2
exactly, and the numbers are in §0.1: three spine-changing operations in 240 seconds, ninety
melodic notes in a 120-bar battle cue, 2.1 percent of the composed notes carrying the theme.
and adding notes to it is not the fix; the corpus is full of loved tracks whose melodic-craft axes
sit at chance. Round 2 failed because a basic idea was RESTATED twenty-one times and never once
grew into a theme. Pass 3 keeps the cell exactly as simple as it is, builds one real tune out of
it, and makes every later statement the next link in a chain.
The schedule is TWO-LEVEL, because round 2 had only the lower level and that is exactly why it
failed. Level A is what happens to the PHRASE across the cue. Level B is what happens to the CELL
inside a phrase. Level B is an invariant engine instantiated by every span of level A; it is not a
separate schedule and it never runs on its own.
Cycle numbers assume a 4/4 four-bar cycle and a cue of three to four minutes, which is 23 to 30
cycles as measured on round 2. A two-bar-cycle sparse cue halves every span, collapses spans 3 and 4
into one, and keeps the level-B engine unchanged.
presentation across bars 1-8 (the head cell as basic idea in bars 1-2, extended to four, then its
statement-response repetition), continuation across bars 9-12, cadential across bars 13-16 with
the cadence withheld or a half cadence per the theme row's closure policy. Division level 0. This
is the only span in which the theme is neutral, and it is the span round 2 never had — its
equivalent was two bars long.
closing weak, consequent with a new continuation heading for a strong cadence — and that cadence
EVADED at its expected bar and retried, Schmalfeldt's one-more-time. The evasion is what makes this
span four and a half cycles instead of four, and the irregularity is the point: the form breathes
rather than tiling. Division level 1. Chain depth 2.
on the theme MUTATED by degree map into a borrowed mode, on a different carrier, over a profound
reharmonisation that changes the consonance class of at least a third of its notes. The contrasting
idea enters here as a counter-line derived from the theme's retrograde — family membership
guaranteed, recognition not claimed (§1.3). Division level 2. Chain depth 3, derived from span 2's
continuation rather than from the plant.
together for the only time in the cue. The theme displaced by one or two beats against a rhythm
layer that holds the original grid — Krebs's D-type dissonance, audible only because something
stayed put. Intervallic expansion by a factor of 1.5 on the last statement of the span, with any
range clamping reported rather than folded silently. Division level 2. Chain depth 4.
three parts. The theme's PRESENTATION ONLY, in augmentation ×2, with the harmonic rhythm halved
and the carrier octave-doubled — the coupling §1.4 requires and round 2 omitted. No continuation
and no cadence: the phrase is deliberately incomplete, which is what makes span 6 an arrival.
Division level 0 on the melody, so the surface simplifies exactly where the weight increases.
Chain depth resets to 1, derived from the plant — the periodic reset of §2.
near-plain in the widest registration of the cue, over the home harmony, with the removed parts
re-entering one at a time on phrase boundaries rather than bar lines, and with its structural
pitches now derived from the cell's own interval spine (§4.5's hidden repetition). Then liquidation
over two to four steps into the loop join, cadence withheld, ending on the pokok's
step-under-tonic so the loop wants to continue. Division level 1 falling to 0.
Every span above instantiates this four-part engine at its own scale. It is Caplin's sentence with
our operations named at each function, and it is the thing that makes a phrase out of a cell.
sequential (transposed by one or two scale degrees), RECORDED as a field — and never the same
choice in two consecutive spans.
largest-interval, recorded — sequenced for two or three legs, with the accompaniment's harmonic
rhythm doubled and the division level raised by one. New material is refused here; this is C06
lifted from the head-cell tool to the cue.
progression, at the cadence type the span declared. The division level returns to 0, because a
cadence that is still ornamented has not closed.
is simplest at the two points of greatest weight (spans 1 and 5) and densest in the middle. Inside
a span the engine adds one level at the continuation and returns to 0 at the cadence.
bar theme, no post-plant statement under four bars, two distinct melodic ideas, at least ten named
operations of which six are spine-changing, theme-carrying layers sounding in at least half the
bars at two or more notes per sounding bar, one evaded cadence, exactly one near-plain arrival.
intervallic expansion, augmentation and liquidation used at most twice; retrograde used freely as
material and never as an announced return; contrapuntal combination once, in span 4, and never
twice (at game scale it is rarer still — volume 1 §6.1).
register-or-carrier-or-tempo-only, which is the rule round 2 would have failed on every transition.
lengths are deliberately unequal — 4, 4.5, 4, 4, 3, 4 — because equal spans are the audible
signature of a grid.
BUILD ORDER: the Phrase object first, then liquidation and division, then the rest. Everything
below is downstream of there being a phrase to develop, and a composer that gains nine new cell
operations without gaining a phrase will produce a more elaborately decorated motto loop.
THE PHRASE OBJECT, which is new and has no counterpart in the pass-2 schema:
Phrase(id, theme_type, scale, start_cycle, bars, functions[], cadence, expansion, basic_idea_ref) where functions[] tiles the phrase with (name, start_bar, end_bar) records drawn from
{presentation, continuation, cadential, antecedent, consequent, contrasting_idea}.
sentence(basic_idea, repetition_kind, continuation_ops, cadence) -> Phrase — the level-B engineof §6.2, with the continuation required to be built from fragments of the basic idea.
period(basic_idea, contrasting_idea, weak_cadence, strong_cadence) -> Phrase.expand(phrase, kind, bars, at) -> Phrase with the invariant that the expansion normalises back toa duple underlying length.
New operations on the Cell object in harness/music_gen/compose_arm_b.py, which already has
invert, retrograde, augment, diminish, fragment and rhythm:
sequence(cell, legs, step_degrees, mode, scale, modify=None) -> [Cell]invert(cell, axis_midi=None, kind="real"|"tonal", scale=None) -> Cell (extends the existing)liquidate(cell, steps, target) -> [Cell]divide(cell, level, scale, nct_palette, keep_skeleton=True) -> Cellmutate_mode(cell, source_mode, target_mode) -> Cellscale_intervals(cell, factor, clamp_range) -> (Cell, clamped_count)displace(cell, beats) -> Celltransfer(cell, note_indices, octaves) -> Cellparallelism(cell, span_bars) -> [(bar, degree)]New plan records, extending the pass-2 schema in harness/music_gen/pass2_plan.py and the emitters:
statements[] with id, derived_from, operation, params, at_cycle, layer — the chain of §2, replacing hook.returns[]'s flat transform names.
phrases[] with the §3.5 schema — theme type, function spans, cadence type and bar, expansionrecord, structural pitches.
division_level per statement, and an nct_palette per region on the theme row.New battery predicates, alongside the thirty-seven the pass-2 validator already runs:
melodic statement after the plant shorter than four bars — CODE-ABLE, and it is the predicate
round 2 would have failed first.
two notes per sounding bar; at least two distinct melodic ideas per full cue — CODE-ABLE off the
compiled note lists, which is how §0.1's table was produced.
CODE-ABLE.
basic idea — CODE-ABLE, and it is C06 lifted from author_head_cell.py to the cue.
cadence per full cue; no PAC at a loop join unless licensed — CODE-ABLE.
divide(), every level-0 pitch is present at its original onset —CODE-ABLE.
of the cell's notes — CODE-ABLE.
grid — CODE-ABLE.
consecutive register-or-tempo-only stages — CODE-ABLE.
authored monophonic melody line before render, and report rather than gate, because the model is
descriptive and our corpus says these axes do not separate loved from filler — MEASURE-ONLY.
hook-presence instrument (volume 1 §6, item two), reports the INTERVAL of a return — the one
audio-side measure that can see a transposed statement as a return rather than as new material.
Everything else in §1 is asserted from the score with the render as evidence only — MEASURE-ONLY.
1. THE PHRASE OBJECT AND THE COMPLETE THEME (sentence, period, hybrid, with function spans and a
declared cadence) — CODE-ABLE. This is the missing LEVEL, not a missing operation. Nothing else
in this document can be scheduled without it and it is the one thing that, built alone, would
change how round 3 sounds.
2. LIQUIDATION INTO A CADENCE — CODE-ABLE. Our cues have no cadences at all; this is what a cadence
is made of, and it is what turns the phrase object from a schema into a sound.
3. DIVISION / PASSAGGI AT GRADED LEVELS — CODE-ABLE. The surface sophistication, at no cost to
identity, and the direct answer to "too simple" that does not touch the motif.
4. THE DERIVATION CHAIN (derived_from + operation, with a depth check) — CODE-ABLE. Turns a star
into developing variation, which is the organising idea of the volume.
5. SEQUENCE, real and tonal, two-to-three legs, with a required goal — CODE-ABLE. The continuation
engine, absent today.
6. THE EVADED CADENCE AND ONE-MORE-TIME — CODE-ABLE. The cheapest genuine drama available, and it
produces the small-event hierarchy our corpus rewards.
7. MODAL MUTATION BY DEGREE MAP — CODE-ABLE. Replaces a semitone smear with a real operation, and
carries the care gate.
8. RHYTHMIC DISPLACEMENT AGAINST A HELD GRID — CODE-ABLE. Free structural energy for a cyclic
composer, with an audibility check.
9. INTERVALLIC EXPANSION WITH RANGE CLAMPING REPORTED — CODE-ABLE. The grown form of a theme without
new material.
10. AUGMENTATION COUPLED TO HARMONIC RHYTHM AND CARRIER WEIGHT — CODE-ABLE as a coupled edit; the
ceremonial gesture, which today changes only the melody and therefore lands flat.
Marked MEASURE-ONLY and deliberately below the line: contrapuntal combination (asserted from the
score, unmeasurable in audio, and a game-scale event rather than a cue-scale one); carrier migration
(present already, and frequently mistaken for development); retrograde as a recognisable return
(the perception evidence says it is not one).
that the ear is the thing it keeps failing. Josh is the first ear and remains so.
from 1972 with short-term recognition of novel tunes, not with themes learned over a
seventy-nine-node game; the leitmotif-perception result in volume 1 §1.5 suggests exposure changes
the picture substantially, and neither result tells us whether a listener enjoys a development
they cannot name.
descending fundamental line underlies all tonal music is contested and is not asserted here; the
claim that followable melodies have goal pitches at strong points is the part that is doing work.
our scoring frame, which is a reference composition, and it does NOT license imposing sentence
and period structure on material that belongs to a tradition with its own phrase grammar. Where a
region's own practice supplies a form — the gong-chime colotomic cycle already does in the Flores
cues — that form governs and this section's categories are the frame around it, not a replacement
for it. The organology lane owns that boundary.
systematically prefers things that can be written as functions, and the thing Josh is actually
asking for — intelligence — is not one of them. What is offered is the scaffolding that makes
intelligence possible to schedule, not a proof that scheduling produces it.
Everything in §§1-4 derives from the published sources cited inline. Everything in §0, §5's second
half, §6 and §7 derives from reading our own stack at HEAD: harness/music_gen/pass2_flores.py
(the head cell L87-88, the mode L79-81, the pokok L103, the harmony and pokok variants L120-140),
harness/music_gen/pass2_realise.py (compile_pattern, and its statement branch in particular),
harness/music_gen/compose_arm_b.py (the Cell, Mode, Part and Score primitives),
harness/music_gen/author_head_cell.py (the C01-C18 battery, harmonic_signature_holds,
scale_degree_contour), harness/music_gen/theme_compositions.py (the continuation_fragment
fields), build/audio/pass2/plans/*.json, build/audio/pass2/cards/*.json and
build/audio/pass2/PROTOTYPE_VERDICT.md. Corpus figures are quoted from
build/audio/exemplars/PATTERN_FINDINGS_V3.md §10 with its stated denominators (30 corpus rows,
927 album siblings, 1180 cards). The canon this document serves and never overrides is the
composition floor at docs/spine/DECISIONS_PENDING_JOSH.md, including the ROUND 2 GRADED entry at
its tail, and the theme rows of registries/T0_Theme_Registry [DRAFT v0.1]. Where this document
names an outstanding operation or measurement it is a FINDING for the pass-3 build lane, not a
change to canon and not a change to any harness file — this pass wrote exactly one file.