HARMONY_AND_ARRANGEMENT_PRACTICE.md

music/HARMONY_AND_ARRANGEMENT_PRACTICE.md

Harmony and Arrangement Practice — which chord, which members, which register, which figure

CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
Canon served: the composition floor and Josh's round-4 listening grade — that the accompaniment
CLASHES with the tune. This lane owns the vertical decision: what chord is chosen, which of its
members are voiced, in what register they sit, and what figure states them.
If this document disagrees with canon, CANON WINS and this document is the defect.

TIER: RESEARCH SYNTHESIS — PROPOSAL-TIER. This document is HOW, never WHAT. It sets no canon, names

no region content, and changes no spine or registry row. Every substantive claim carries a source

(URL, or book plus author plus chapter); where sources disagree the disagreement is stated; where a

statement is craft consensus rather than evidence it is labelled CRAFT CONSENSUS. Every principle

carries a PIPELINE HOOK line marked CODE-ABLE or MEASURE-ONLY, naming the file, the function and the

field.

WHERE THIS SITS AMONG ITS SIBLINGS, so it adds rather than repeats.

docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md is the negative craft — how

simultaneous voices avoid destroying each other, Huron's six principles, the ERB spacing floor, the

fusion hazard. docs/proposals/music/craft_research/COUNTER_MELODY_AND_DIALOGUE.md is the positive

horizontal craft — how voices answer each other.

docs/proposals/music/craft_research/ORCHESTRATION_TEXTURE_AND_DENSITY.md is the census question —

how many layers and when they enter. None of the three answers the question that produced the round-4

grade, which is a question about the CHORD ITSELF: a texture can obey every voice-leading rule in

volume 1, carry a real counter-melody, and land inside the layer band, and still be built on a chord

whose members are not in the ensemble's scale. That is this document.

---

1. The measured diagnosis, computed on our own code

The finding is reproduced here rather than asserted, on harness/music_gen/harmony.py as it stands

in the working tree, for the mode the round-4 cue actually uses: D anhemitonic pentatonic, pitch

classes {D, E, F#, A, B} = {2, 4, 6, 9, 11}.

Calling harmony.build_plan for a 32-bar exploration cue WITHOUT the pitch_set argument — which is

how the plan was built before the repair described below — produces a 24-chord schedule containing

SIX pitch classes foreign to the ensemble's own scale: {0, 1, 3, 5, 7, 10} = {C, C#, D#, F, G, A#}.

The offenders, chord by chord, with the foreign pitch classes each contributes:

chordforeign pcschordforeign pcs
IV{G}imin9{C, F}
IVadd9{G}bVI{F, A#}
V{C#}Imaj9{C#}
VI{D#}IVmaj7#11{C#, G}
III{C#, A#}bIII{C, F}

Note which chord is NOT in that table. vi7 in D pentatonic is B–D–F#–A, every member inside the

scale; it is the one extension chord in the ambient pool that is innocent here. The clash Josh heard

is carried by IVmaj7#11, Imaj9, imin9 and the borrowed colour chords, and its severity is not a

matter of taste. It follows from a property of the mode:

**IN AN ANHEMITONIC PENTATONIC, EVERY FOREIGN PITCH CLASS IS A SEMITONE FROM AT LEAST ONE SCALE

MEMBER.** Computed over all seven non-members of D pentatonic: C is a semitone from B; C# from D;

D# from D AND E; F from E AND F#; G from F#; G# from A; A# from A AND B. Three of the seven are a

semitone from TWO scale tones. There is no safe import. The scale that guarantees no minor second can

occur INSIDE it — the property harmony.mode_is_anhemitonic exists to assert — guarantees that any

tone brought in from outside makes one. Section 4 states the perceptual consequence with its source.

That is the technical content of "the harmony clashes". It is not a voicing problem and it is not a

spacing problem; the ERB floor was doing its job. It is a VOCABULARY problem: the chord pools were

selected by cue class and by roman-numeral function, and nothing in the selection path asked whether

the resulting pitch classes existed in the music the rest of the ensemble was playing.

THE REPAIR THAT LANDED WHILE THIS LANE WAS READING, stated so this document is not read as describing

a live defect it does not describe. Between the first and second reads of the stack on 2026-08-08 —

harness/music_gen/pass7_flores.py at 16:41, harness/music_gen/harmony.py at 16:49 — a concurrent

lane wired pitch_set= through pass7_flores.t1_harmonic_plan into build_plan, and added H19

(out-of-set chord tones must be declared AND placed at a cadence), H20 and H21 to harmony.RULE_CODES,

taking it from eighteen codes to twenty-one. Re-measured after that landing, the same call WITH

pitch_set returns zero foreign pitch classes, keeps its cadence inventory intact

({HC: 1, deceptive: 1, plagal: 1, modal_close: 1}) and hits its non-functional target almost exactly

(0.3478 against 0.35). The mechanism in section 1 is therefore the DIAGNOSIS, verified reproducible,

and the constraint is armed. What sections 5 through 9 add is everything the constraint does not

cover — because an in-set chord schedule is necessary and nowhere near sufficient, and the measured

proof of that is in section 5.3.

---

2. Sources

Every source consulted for this document, with what it is authoritative FOR. Sources that could not

be retrieved in usable form are listed with that fact stated, because a source named but unread is

not evidence.

2.1 Functional and modal harmony — the treatises

The standard American harmony text; authoritative for chord construction, doubling, spacing and

four-part part-writing discipline. The specific spacing prescription used below — adjacent upper

voices no more than an octave apart, the bass free to sit FURTHER below the tenor than an octave —

is the standard form of the rule, and the two current pedagogical statements of it consulted here

agree on the upper half and differ on the lower.

CORRECTED 2026-08-08 BY CITATION AUDIT: an earlier draft of this bullet reported both sources as

leaving bass-to-tenor entirely FREE. Neither does.

https://rwu.pressbooks.pub/musictheory/chapter/spacing-voicing-and-doubling-of-chord-tones-in-satb-style/

states "there should be no more than an octave between upper voices (soprano and alto, alto and

tenor), and no more than a twelfth between the tenor and bass" — a real ceiling, not freedom.

https://mymusictheory.com/satb-harmony/satb-doubling-omissions-spacing/ states a MINIMUM rather

than a maximum — "keep a minimum of a 5th between tenor and bass" — and its worked example marks a

chord whose bass and tenor are more than an octave apart as correctly spaced. What both sources

support is that bass-to-tenor may EXCEED an octave, not that it is unbounded. §3.2, §7.2 and HA-10

are written to the corrected reading.

HONEST LIMIT: the Piston text itself was not retrievable in full; the rule is cited to the

pedagogical consensus that states it identically, and Piston is named as its canonical home rather

than quoted.

(University of California Press). Archive copy at https://archive.org/details/theoryofharmony0000scho.

Authoritative for chord CONNECTION as opposed to chord construction: the harmonic band, the law of

the shortest way, and the classification of progressions into ascending, descending and

super-strong. Schoenberg's rules were retrieved in formalized form from a computational model of

them — the Strasheela constraint-programming implementation at

https://strasheela.sourceforge.net/strasheela/doc/Example-Schoenberg-TheoryOfHarmony.html — which is

the most directly usable form for our purposes because it is already stated as constraints.

1961). Authoritative for the non-tertian vocabulary this project actually needs: chords by fourths

and fifths, added-note chords, polychords, pandiatonicism. Archive copy at

https://archive.org/details/isbn_9780393095395. The one prescription quoted below (page 94, on the

rootlessness of quartal chords) is cited via

https://en.wikipedia.org/wiki/Quartal_and_quintal_harmony, which gives the page reference.

practitioner text for composing IN modes rather than analysing them — hybrid and slash chords,

modal chord vocabulary, avoiding functional pull. HONEST LIMIT, SHARPENED 2026-08-08 BY CITATION

AUDIT: an earlier draft advertised an archive copy at

https://archive.org/details/MillerRonModalJazzCompositionAndHarmony. That identifier exists but the

item is DARKENED — the archive metadata API returns is_dark: true and the details page returns

404 — so it serves no copy and must not be presented as one. No retrievable full text was obtained

by any route; the book is named as the field's authority and NO specific rule in this document is

attributed to it. Where a modal-vocabulary rule appears below it is sourced to

Persichetti, to Belkin, or to the Berklee chord-scale literature.

source of the avoid-note definition used in section 4: the pitches of a chord scale not used

harmonically because they destabilize the sound of the chord. Definition and the semitone criterion

confirmed at https://en.wikipedia.org/wiki/Avoid_note, which cites Nettles (Harmony 3), Terefenko

and Haerle. CORRECTED 2026-08-08 BY CITATION AUDIT: an earlier draft of this bullet also cited the

Berklee glossary at https://college.berklee.edu/core/glossary.html as carrying the same definition.

That page is real and is Berklee's own glossary, but it holds NO entry for "avoid note" — a

full-text fetch returns zero occurrences of the word. It defines "tension" and "chord scale" and is

usable for those two terms only. The avoid-note definition therefore rests on the Wikipedia carrier

of Nettles, Terefenko and Haerle, and on nothing else this lane could retrieve.

2.2 Orchestration and arrangement — the manuals

public-domain text at https://www.gutenberg.org/files/33900/33900-h/33900-h.htm. Chapter III,

"Harmony", is the single most directly applicable source in this document and is quoted below from

its sub-sections "Distribution of notes in chords" (page 67), "Duplication of timbres" (page 77) and

the Remarks following it (pages 78-79). NOTE FOR THE AUDIT: the sibling document

ORCHESTRATION_TEXTURE_AND_DENSITY.md §2.1 records that automated retrieval would not return the

body of Chapter III and correctly declines to claim from it. That limit no longer holds — the

chapter body was retrieved for this document by downloading the Gutenberg HTML and extracting it

locally rather than by remote summarisation. The sibling's honest limit should be updated, not

contradicted.

free use with attribution). PDF at

https://noty-bratstvo.org/sites/default/files/instr-artistic-orch-a-belkin_0.pdf, author's site

https://alanbelkinmusic.com/. Authoritative for planes of tone, register disposition, and orchestral

accompaniment — the sections "Planes of Tone", "Musical Lines vs. Instrumental Parts", "Register"

and "Orchestral Accompaniment" are quoted below.

https://alanbelkinmusic.com/general-principles-of-harmony/ — specifically

https://alanbelkinmusic.com/general-principles-of-harmony-coherence-and-continuity/,

https://alanbelkinmusic.com/general-principles-of-harmony-movement-interest-and-variety/,

https://alanbelkinmusic.com/general-principles-of-harmony-harmony-texture-and-orchestration/ and

https://alanbelkinmusic.com/general-principles-of-harmony-criteria-for-evaluating-harmony/.

This is the most useful single source in the document for our problem, because Belkin writes for

COMPOSERS choosing a harmonic language rather than for students realising figured bass, and because

he states the criteria as perceptual rather than stylistic.

https://wwnorton.com/books/9780393920659 — the modern pedagogical standard, authoritative for layer

roles and doubling. **Alfred Blatter, *Instrumentation and Orchestration*** (2nd ed.),

https://archive.org/details/instrumentationo0000blat_u5w6. **Ertugrul Sevsay, *The Cambridge Guide

to Orchestration*** (CUP, 2013), https://archive.org/details/cambridgeguideto0000sevs. All three are

characterised at length in ORCHESTRATION_TEXTURE_AND_DENSITY.md §2.3-§2.5 and are NOT re-derived

here; this document cites that sibling rather than duplicating its source work.

score into melody, secondary melody, harmonic support, rhythmic support and bass — the five-role

texture model this document's §7.1 builds on. Characterised, with its DeVoto assessment, in

ORCHESTRATION_TEXTURE_AND_DENSITY.md §2.2 (https://sites.tufts.edu/markdevoto/files/2015/10/Piston.pdf).

2.3 Perception research

Principles", *Music Perception* 19(1), 2001, pp. 1-64.**

https://online.ucpress.edu/mp/article/19/1/1/62106/Tone-and-Voice-A-Derivation-of-the-Rules-of-Voice,

DOI https://doi.org/10.1525/mp.2001.19.1.1. The paper's six core principles are already worked

through in COUNTERPOINT_AND_VOICE_LEADING.md §2.1 and are not restated here. What this document

takes from it is one principle only, because one principle is what the spacing and low-interval

question rests on: the MINIMUM MASKING PRINCIPLE — to minimise auditory masking within a vertical

sonority, approximately equivalent amounts of spectral energy should fall in each critical band,

which for ordinary harmonic tones means simultaneously sounding notes should be more widely spaced

as the register descends. HONEST LIMIT: the full paper is paywalled and the open-access mirrors

(SciSpace, Academia, ResearchGate) all returned 403; the principle statement is taken from

secondary reporting of it and is consistent with the treatment in the sibling document, which

worked from the same principle to derive our ERB table.

book-length form of the same programme. Named for completeness; not quoted.

ERB(f) = 24.7 (0.00437 f + 1) Hz. Already implemented in harmony.erb_floor_table with its

derivation written out in the docstring; cited here only because §8 compares it to the craft tables.

2.4 Low interval limits — the craft tables

— the clearest statement of the CAVEATS, which are the part of the table that matters: soft low

voicings on strings are more forgiving than loud ones on brass; when a voicing's lowest note is not

the root you must assume the root is present when checking; the chart is a guideline that may be

deliberately ignored for effect.

on direct fetch; definition confirmed via search result text) and **David Darling, *Encyclopedia of

Science* music entry**, https://www.daviddarling.info/encyclopedia_of_music/L/low_interval_limit.html

— both give the same definition: the lowest point of an interval, from minor second to major tenth,

below which the interval begins to sound muddy or indistinct, and both state explicitly that the

limits are not absolutes.

and Jim Funnell, "Low Interval Limits",

https://funnelljazz.eu/wp-content/uploads/2020/12/Low-Interval-Limits.pdf.

numeric table as an ENGRAVED IMAGE — a GIF or a Finale-set PDF whose glyphs carry no extractable

text. Four independent attempts returned the definition and the caveats and never the numbers. This

document therefore states the low-interval-limit PRINCIPLE and its caveats as sourced, and states NO

numeric craft table, because a table of note names reconstructed from memory would be exactly the

kind of fabricated precision this series exists to avoid. Section 8 says what we use instead and why

that is defensible.

2.5 Game and film practice

Press, 2018), https://global.oup.com/academic/product/hollywood-harmony-9780190606404, chapter

"Pantriadic Wonder" at https://academic.oup.com/book/3654/chapter-abstract/144996319. The

book-length analytical study of how film scoring evokes WONDER through non-functional "pantriadic"

chromaticism — chord succession organised by triadic voice-leading economy rather than by tonal

function. This is the scholarly name for what our non_functional_target dial is turning, and it

matters to us for one reason stated in §3.4: pantriadic wonder is built from CONSONANT TRIADS moving

chromatically, not from extension chords sitting still.

HONEST LIMIT ADDED 2026-08-08 BY CITATION AUDIT: the book and the chapter page are real — the OUP

chapter URL resolves under the *Hollywood Harmony* title — but both OUP hosts refuse automated

fetches (403 from academic.oup.com, an empty bot-challenge body from global.oup.com), so the chapter

abstract could not be read back on audit. The characterisation above is retained as a PARAPHRASE of

the book's thesis, and the verbatim phrase an earlier draft quoted in §3.4 has been de-quoted there

for the same reason.

https://gdcvault.com/play/1012601/ — examines music for its textural components, melody, harmony,

rhythm and form, to expose how those elements can be manipulated for adaptive integrity.

GDC Vault, "Implementing an Adaptive, Live Orchestral Soundtrack",

https://www.gdcvault.com/play/1013209/Implementing-an-Adaptive-Live-Orchestral. **GDC Vault,

"Digital Orchestration for the Video Game Composer"**,

https://gdcvault.com/play/1015338/Digital-Orchestration-for-the-Video. Listed as the game-side

practice literature; the Vault serves session abstracts rather than transcripts to an unauthenticated

fetch, so these are named as the field's talks and no specific rule below is attributed to them.

https://en.wikipedia.org/wiki/Quartal_and_quintal_harmony — used as the citation carrier for the

Persichetti page reference and for the So What voicing's construction. Wikipedia, "Avoid note",

https://en.wikipedia.org/wiki/Avoid_note — used as the citation carrier for Nettles/Graf.

2.6 Our own prior work, treated as source

COUNTERPOINT_AND_VOICE_LEADING.md (Huron's principles, the ERB floor, the deliberate clash),

COUNTER_MELODY_AND_DIALOGUE.md (the tension ordering by interval class),

ORCHESTRATION_TEXTURE_AND_DENSITY.md (the orchestration canon, masking, frequency-slot allocation),

and docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md (HARM-01 through HARM-07, ECON-03,

ECON-10). These are cited by filename and section throughout rather than re-derived.

---

3. Functional harmony: what the treatises actually prescribe, and what survives a modal pipeline

3.1 Schoenberg's chord connection, which is already a constraint system

Schoenberg's contribution to our problem is not his chord vocabulary but his account of what makes

two chords CONNECT. The Strasheela formalization of *Harmonielehre*

(https://strasheela.sourceforge.net/strasheela/doc/Example-Schoenberg-TheoryOfHarmony.html) states the

rules as constraints, which is the form we need:

the same voice.

formulation to Bruckner.

occur in the first but a harmonic band exists; DESCENDING when a band exists and the second chord's

root was already present as a non-root tone of the first; SUPER-STRONG when there is no band at all.

C1-C3 is ascending. A descending progression is licensed by what follows it, not by itself.

the dissonant tone — resolves downward by step.

of the underlying scale.

The first two are already implemented: harmony.voice_chord ranks candidate voicings by common-tone

retention plus minimal motion, and its docstring cites COUNTERPOINT_AND_VOICE_LEADING.md VL-5 for

exactly that. The last four are not implemented anywhere in our stack and three of them are directly

useful to us. In particular the CADENCE CRITERION is a striking result for a mode-constrained

pipeline: it says a cadence is the moment the scale is completed, which is a definition that survives

the loss of the leading tone entirely. In D pentatonic a five-note scale is completed by very few

chords, which is why harmony.build_plan labelling a leading-toneless close modal_close is

defensible — but the criterion gives us a way to MEASURE whether the close earns the label instead of

merely being assigned it.

report: over the last N chords ending at each cadence bar, the union of pitch classes against

mode_pcs(mode). Report the fraction covered. A modal_close covering three of five pentatonic

degrees is a weaker close than one covering five, and today the two are indistinguishable in the

report.

HarmonicPlan.chords: classify each adjacent pair as ascending, descending or super-strong from the

root and pitch-class membership alone, then refuse a descending pair whose enclosing C1-C3 is not

ascending. This is a purely symbolic test on data the plan already holds.

3.2 Piston's spacing and doubling, and what our code already does with it

The standard four-part discipline, in the form the pedagogical consensus states it and Piston

canonises: adjacent UPPER voices — soprano to alto, alto to tenor — must not exceed an octave, while

the bass is permitted to sit further below the tenor than an octave. HOW MUCH further is where the

pedagogical statements part company — RWU caps the tenor-to-bass distance at a twelfth, MyMusicTheory

sets only a lower bound of a fifth and marks a greater-than-octave bass-to-tenor gap as correctly

spaced, and neither licenses an unbounded gap

(https://mymusictheory.com/satb-harmony/satb-doubling-omissions-spacing/,

https://rwu.pressbooks.pub/musictheory/chapter/spacing-voicing-and-doubling-of-chord-tones-in-satb-style/).

harmony._upper_spacing_ok implements the upper-voice half precisely, and its own docstring states

the asymmetry: adjacent upper voices within an octave, bass-to-tenor unbounded. The unbounded half is

OUR choice rather than a convention either source states, which is what HA-10 is about. It is enforced as a FILTER on the

candidate voicing set inside voice_chord, and re-checked as rule H04 in harmony.check. This part of

the practice is done, correctly, and the rest of this document does not revisit it.

Doubling is the part that is only half done. harmony.MAX_THIRD_DOUBLINGS = 1 caps third-doubling and

H07 audits it, which covers the classic prohibition. What is absent is the positive doctrine — the

double_policy parameter on voice_chord defaults to "root_then_fifth" and is accepted but the

policy is not connected to a source, to a register rule, or to the timbre of the doubling part. §7.3

supplies the missing doctrine from Rimsky-Korsakov and Belkin, who both treat doubling as an

EXPRESSIVE choice with a register law attached rather than as an error to be avoided.

3.3 Where functional grammar simply stops

Our harmony._function_of assigns T, S, D or COL to a chord from its root interval and quality, and

build_plan schedules by those functions. This is correct and it is also, in a pentatonic mode,

mostly ceremonial: the functional pull of a dominant comes from the leading tone's semitone ascent and

the tritone's resolution, and an anhemitonic pentatonic contains neither. in_set_chords's own

docstring makes the argument honestly, citing SNES_JRPG_SCHOOL.md HARM-02 that a dominant substitute

working "via voice-leading rather than leading-tone pull" is grammar and not a compromise.

The consequence for this lane is a boundary statement rather than a rule: functional labels in a

pentatonic cue are a SCHEDULING device — they distribute chords so the plan does not sit on one

sonority — and they are not a claim about pull. Any measurement that grades a pentatonic cue on

functional cadence strength is measuring an artefact of the labelling. harmony.check H17 (cadence

schedule) and H16 (non-functional ratio) should both be read in that light, and their reports should

say so.

3.4 What Lehman's pantriadic account contributes, and it is a warning

Lehman's *Hollywood Harmony* is the scholarly treatment of exactly the affect our exploration and

wonder cues are chasing, and its central finding cuts against the instinct our chord pools encode.

Film's wonder idiom is built from CONSONANT TRIADS moving by chromatic third-relations and other

voice-leading-economical progressions — "pantriadic" chromaticism, which Lehman characterises as a

negation of the tonal norms of centricity, diatonicity and functionality

(https://academic.oup.com/book/3654/chapter-abstract/144996319; DE-QUOTED 2026-08-08 BY CITATION

AUDIT — the OUP page refuses automated fetches, so this wording is a paraphrase and must not be

re-quoted as Lehman's own sentence without a copy of the chapter in hand). The wonder comes from the

MOTION between simple sonorities, not from the internal complexity of a stationary one.

Our _POOL_AMBIENT encodes the opposite bet: for cue_class in ambient, wonder or exploration it

appends Imaj9, imin9, IVmaj7#11, vi7 and IVmaj7 to the functional pool — five chords whose

wonder is meant to come from their extensions. That is a jazz-ambient reading of wonder rather than a

cinematic one, and in a pentatonic mode it is also the exact mechanism that produced the six foreign

pitch classes in §1. The _pool_chords comment in build_plan already noticed half of this — it

records that stacking the ambient pool moved extension density while leaving the HARM-04 non-functional

ratio at zero, because sevenths and ninths on functional roots are still functional. The other half is

the finding here: extension-density wonder is not the film idiom's wonder, and in a five-note mode it

is unreachable without importing semitone neighbours.

triadic chromatic-mediant option that reaches wonder by MOTION between consonant triads. Inside a

declared pitch_set this will usually resolve to the mode's own two or three triads plus the sus and

quintal stacks, which is the right answer — the point is that the wonder dial should be able to turn

toward motion instead of only toward extension.

---

4. The clash mechanism, stated exactly

4.1 The avoid note, and the interval that defines it

Nettles and Graf define an avoid note as a pitch of a chord scale not used harmonically because it

destabilizes the sound of the chord (https://en.wikipedia.org/wiki/Avoid_note, citing Nettles,

Harmony 3; Terefenko; Haerle). The criterion is a SEMITONE relationship to a chord tone: F against a C

major triad is the standard example, an avoid note because it lies a semitone above the third.

CORRECTED 2026-08-08 BY CITATION AUDIT: an earlier draft added that the Berklee glossary

(https://college.berklee.edu/core/glossary.html) carries the same definition. It does not — that page

has no "avoid note" entry at all. This definition has ONE retrievable carrier, named above.

Two qualifications that the literature is emphatic about, and that a naive implementation gets wrong:

neighbouring tone. The Wikipedia treatment states the misunderstanding explicitly — avoid notes are

not to be avoided altogether. Our harmony.snap_structural_tones already encodes the correct shape

of this distinction for the melodic side, moving STRUCTURAL tones to chord members and leaving

ornamental ones alone.

same degree becomes a colour: the #11 is the standard demonstration. This is why IVmaj7#11 exists

as a quality at all, and why it is nevertheless the worst possible chord for D pentatonic — in D the

IV chord is rooted on G, its #11 is C#, and C# is a semitone below the tonic D that every other layer

in the ensemble is playing.

This gives the reciprocal rule, which is the one our engine needs, because our engine is choosing the

CHORD and the MELODY is already fixed by the mode:

**A CHORD TONE THAT LIES A SEMITONE FROM ANY PITCH CLASS OF THE ENSEMBLE'S SCALE IS AN AVOID TONE OF

THAT CHORD.** Not of the scale — of the chord. The chord is the thing being chosen, so the chord is

where the constraint belongs.

4.2 Why the pentatonic case is the worst case, and the general form

§1 proved it for D: all seven non-members are semitone-adjacent to at least one member. The general

statement is a counting argument. An anhemitonic pentatonic occupies five of twelve pitch classes with

no two adjacent, so its five members have ten distinct semitone neighbours by position; with twelve

positions and five occupied, seven remain, and ten neighbour-slots distributed over seven positions

means every remaining position is a neighbour of at least one member and three are neighbours of two.

The scale's own protective property — the one harmony.mode_is_anhemitonic tests, and the one

COUNTERPOINT_AND_VOICE_LEADING.md MOD-1 relies on for the claim that four independent parts cannot

produce a minor second — is precisely what makes it maximally exposed to imported tones.

harmony.mode_is_anhemitonic's docstring already carries an important qualification of MOD-1, that

the scale removes the minor-second row of the ERB table and leaves the major-second row maximally

reachable. The finding here is a second qualification in the same spirit and it should sit beside it:

the scale removes the internal minor second and makes every EXTERNAL tone produce one.

for a declared pitch set, the map from each foreign pitch class to the scale members it is a semitone

from. Feed it into H19's finding text so a refusal reads "C# is a semitone below D, which the pokok,

both kotekan parts and the ornament layer are playing" instead of "out-of-set pitch class 1".

A finding that names the collision is a finding an author can act on.

declared and placed at a cadence. Add the severity gradient the theory gives for free: an out-of-set

chord whose foreign tones are semitone-adjacent to TWO scale members is a harder event than one

adjacent to one, and the hardest of them should require an arrival bar rather than any cadence.

4.3 The deliberate clash still exists, and this rule does not forbid it

COUNTERPOINT_AND_VOICE_LEADING.md §6 already establishes that a clash is an expressive object when

it is placed and prepared, and build_plan's own docstring cites the two sources for placement — the

"IT IS PLACED, NOT SPRINKLED" line from volume 1 and Bolero's single harmonic event from the

orchestration sibling. Nothing in §4 revises that. The rule is about the DEFAULT: the ordinary bar gets

an in-scale chord, and the semitone is an event with a position. That is exactly the shape H19 already

enforces, and §4.2's hooks sharpen its teeth rather than replacing it.

---

5. The vocabulary modal and pentatonic practice actually uses

5.1 Quartal and quintal stacks, and what they cost

Persichetti's finding is the load-bearing one, and it is a warning as much as a licence: "Chords by

perfect fourth are ambiguous in that, like all chords built by equidistant intervals, any member can

function as the root" (*Twentieth-Century Harmony*, p. 94, quoted via

https://en.wikipedia.org/wiki/Quartal_and_quintal_harmony). The consequence the same source draws is

the one that matters to an automated pipeline: because the chord does not assert a root, the

responsibility for establishing the harmony falls on the melodically active voice.

The canonical jazz instance is the So What voicing — three stacked perfect fourths topped by a major

third, analysable as a minor seventh in root position or a major seventh with the third in the bass

(same source). Quartal voicings became the modal idiom's signature precisely because their ambiguity

blends: they do not fight a modal melody for the identity of the harmony, because they are not

claiming one.

This is a perfect fit for our problem and a real hazard at the same time, and both halves must be

stated:

third that the pentatonic melody does not have. harmony.CHORD_QUALITIES already carries quintal

= (0, 7, 14) and its comment already says exactly this — the one quality with no third at all, the

safe choice when a pentatonic melody would otherwise fight a chordal third outside its scale.

create momentum, while equidistant intervals produce a static effect

(https://alanbelkinmusic.com/general-principles-of-harmony-movement-interest-and-variety/). A chord

built entirely of fourths or fifths is equidistant by construction. A cue built entirely of them is

therefore static by construction, which is a different defect from clashing and is equally audible.

5.2 Sus, added-note and hybrid sonorities

The remainder of the modal vocabulary sits between the quartal stack and the triad. sus2 and sus4

replace the third with a second or fourth, keeping a root and a fifth so the chord still asserts a

root while dodging the third. Added-note chords — maj6 and add9 in our roster — keep the triad and

colour it with a scale member rather than an imported one; Persichetti treats added-note chords as a

category in their own right, not as incomplete sevenths.

The practical rule this yields for pentatonic writing is arithmetic rather than aesthetic: in D

pentatonic, D–E–F#–A–B, a D major triad plus its sixth (B) plus its ninth (E) uses only scale members,

so I6 and Iadd9 are colour that costs nothing. harmony.in_set_chords finds them without being

told to, and this is worth stating plainly because it is the strongest single piece of evidence that

the enumeration approach is right: asked which chords of any known quality fit wholly inside

{D, E, F#, A, B}, it returns fourteen —

I, Iquintal, Isus2, I6, Iadd9, vi, vi7 (tonic function); IIquintal, IIsus2, IIsus4

(subdominant); Vquintal, Vsus2, Vsus4 (dominant); VIsus4 (colour)

— which is, item for item, the vocabulary the modal-jazz and film-modal literature prescribes: a

tonic/relative-minor pair, added-sixth and added-ninth colour on the tonic, sus chords on the second

and fifth degrees, and stacked fifths. The code and the practice converged without being introduced,

which is the strongest form of confirmation available to us.

5.3 The measured consequence, and the rule the convergence hides

Convergence is not sufficiency, and the measurement says so. Building the same 32-bar exploration cue

WITH pitch_set armed and taking the quality census of the resulting 24 chords:

qualitycounthas a third
quintal9no
sus45no
sus23no
maj4yes
min2yes
add91yes

Seventeen of twenty-four chords contain no third at all. The TERTIAN SHARE is 0.292. By Persichetti

the harmony is therefore rootless for seventy-one percent of the cue and the melody must carry the

identity alone; by Belkin the harmony is equidistant-static for the same seventy-one percent. Both

authorities describe the same output and both call it a problem, and no rule in harmony.RULE_CODES

measures it. The repair for the clash, applied without a counterweight, produces a washy cue —

correctly in-scale, and harmonically inert.

The counterweight is not to loosen the pitch set. It is to schedule the tertian sonorities where they

do structural work. The measured cadence chords of the same plan are Vquintal at bar 8, vi at 16,

I at 24 and I at 32: three of four cadences already land on a chord with a third, which is the

right instinct arrived at by accident — the enumeration's ranking puts the simplest sonority first

within a function, and triads are simplest. Making it deliberate is one predicate.

harmony.check rule over it, with a floor rather than a ceiling. The floor is a band, not a number

— a pentatonic cue cannot reach the tertian share of a diatonic one and should not be graded as

though it could — and the band must be calibrated on the exemplar corpus before any threshold is

set, per the standing rule in COUNTER_MELODY_AND_DIALOGUE.md §9 that a target derived from our own

generator's output is not a bar.

build_plan._role, rather than letting the function ranking decide by accident. A modal half

cadence on a quintal chord is idiomatic and should stay reachable; a full close on one is a close

that never happened.

5.4 Triad pairs and planing, named and declined for now

Two further techniques appear throughout the practitioner literature for harmonising modal and

pentatonic material and are recorded here for completeness. TRIAD PAIRS harmonise a melody by

alternating two triads drawn from the mode, choosing whichever contains the current melody note as a

chord tone — a technique that turns the harmonisation problem into a lookup. PLANING moves a fixed

intervallic shape in parallel through the scale, which is the Debussy-modal signature and which Belkin

explicitly licenses when it is consistent, noting that parallel fifths are acceptable in Debussy

because they serve a consistent aesthetic

(https://alanbelkinmusic.com/general-principles-of-harmony-criteria-for-evaluating-harmony/).

Both are declined as pipeline work for now, for one reason each. Triad pairs are subsumed by

in_set_chords plus snap_structural_tones, which already solve the same problem more generally.

Planing collides head-on with harmony.check H01, undeclared parallel perfects, and the collision is

already handled by the correct mechanism — H01's declared_mud_pairs licence, whose whole design is

that a parallel is design when declared and a defect when not. Planing is therefore available today to

any card willing to declare it, and needs no new code.

---

6. Pedal points and drones — the primary modal device

6.1 Why the drone is the answer and not a fallback

Belkin, in the chapter on coherence, names persistent common tones as the simplest audible coherence

device and identifies it directly with the classical pedal point: using persistent common tones,

especially in the same octave, generates the simplest kind of audible coherence

(https://alanbelkinmusic.com/general-principles-of-harmony-coherence-and-continuity/). In the same

chapter he names the mechanism that our pitch_set argument IS, without knowing about it — that

harmonic coherence comes from limiting pitch content into FAMILIES OF CHORDS with clearly audible

resemblances, and that the more elements kept common within a harmonic family, the easier the harmonic

character is to perceive. He lists scale-or-mode-based pitch limitation first among the unifying

mechanisms.

That is an independent authority for the repair that landed in §1, and it is worth recording as such:

the mode constraint is not a defensive patch, it is the primary coherence device of the idiom, and

Belkin would have prescribed it before the clash rather than after.

The drone's specific virtue for us is that it is the one accompaniment device that cannot clash. A

sustained tonic and fifth under a pentatonic melody contributes two pitch classes, both of them scale

members by definition, and it supplies the root that §5.1 says the quartal stacks fail to assert.

Persichetti's problem and Belkin's problem have a common solution.

6.2 What our stack already has

harmony.ACCOMPANIMENT_FIGURES includes pedal, harmony.accompaniment realises it with one

re-articulation per bar across the whole plan, pass7_flores._pedal_span derives a pedal device from

a declared pedal layer and passes it into build_plan as a device, and pass2_realise.compile_pattern

carries a drone kind at its own compile branch. The machinery exists. What is missing is the

DOCTRINE that decides when to use it, and one specific capability:

TONIC pedal (stability, arrival, home) from the DOMINANT pedal (tension, expectation, the classic

pre-cadential device) and the DOUBLE pedal (tonic plus fifth, the open drone of the modal idiom).

Give _pedal_span a kind field of those three and let build_plan read it: a dominant pedal

should bias the chords above it toward the dominant-function in-set chords and toward a cadence at

its end, which is what a dominant pedal MEANS. Today the pedal's pitch class is tonic by

construction (plan["key"]["tonic_midi"] % 12) and no other kind is reachable.

duration during which at least one sustaining layer holds a scale member for a full bar or more.

This is the measure of how much of the cue is protected from clash BY CONSTRUCTION, and it is

cheap to compute from the compiled parts.

own criteria name the failure — grayness and lack of direction

(https://alanbelkinmusic.com/general-principles-of-harmony-criteria-for-evaluating-harmony/). Report

drone coverage against the ECON-03 pad share (harmony.PAD_SHARE_CEILING = 0.20) rather than

separately, so a cue cannot dodge the pad ceiling by relabelling its wall of pads as a drone.

---

7. Arrangement: layer roles, doubling, and the disposition of the chord in register

This section is where Rimsky-Korsakov's Chapter III earns its place, because it states as arithmetic

what most sources state as taste.

7.1 The five roles, and the one our plan schema is missing

Piston's *Orchestration* decomposes a score into melody, secondary melody, harmonic support, rhythmic

support and bass, and studies how composers distribute those functions across the ensemble

(characterised in ORCHESTRATION_TEXTURE_AND_DENSITY.md §2.2). Belkin's parallel account is

perceptual rather than functional and adds the crucial hierarchy: a PLANE OF TONE is one instrument or

a blended group sharing one rhythmic outline, planes are differentiated by perceptual prominence into

foreground and levels of background, and the composer must have a clear idea of what is foreground and

what is background at any moment or confusion results

(*Artistic Orchestration*, "Planes of Tone"). His mechanisms: BLEND within a plane through similarity

of colour and rhythm, close spacing with no gaps, and balance; DIFFERENTIATION between planes through

contrast of register, timbre and rhythm. The foreground is louder, in a strongly characteristic

timbre, and prominently placed. PRECISION ADDED 2026-08-08 BY CITATION AUDIT: Belkin's own list of

background kinds has FOUR entries, not two — secondary contrapuntal lines, figurations that add

animation, harmonic masses, and resonance. The two-way MOVEMENT versus RESONANCE split used below is

this document's compression of that list into a schema, offered as our simplification and not as

Belkin's taxonomy.

Our plan schema carries pattern.kind and a melodic_role proposal from the counter-melody lane, and

between them they cover foreground and movement. RESONANCE as a distinct background role — the layer

whose job is neither tune nor motion but the ringing frame under both — is not represented, and it is

the role the drone and the pad are actually filling.

resonance and frame, orthogonal to pattern.kind, and require every layer to declare one.

Then Belkin's rule becomes checkable: at any instant there is exactly one foreground plane, and a

cue with three simultaneous foreground planes is refused rather than merely dense.

7.2 The disposition law, quoted, and our measured deviation from it

Rimsky-Korsakov, Chapter III, "Distribution of notes in chords" (page 67,

https://www.gutenberg.org/files/33900/33900-h/33900-h.htm), states the natural-harmonic-scale

disposition as the guide to orchestral chord arrangement: the widely-spaced intervals lie in the lower

part of the scale, gradually becoming closer as the upper register is approached. He then adds three

prescriptions:

empty intervals, especially in forte; in piano such distribution may be possible.

The Remarks after "Duplication of timbres" (pages 78-79) restate the disposition as an explicit

register table — a chord of extended range is distributed with wide intervals, octaves and sixths, in

the bass; lesser intervals, fifths and fourths, in the middle; and close intervals, thirds or seconds,

in the upper register — and add that modern orchestrators do not allow any void in the intermediate

parts, that empty spaces are especially bad in forte, and that widely divided harmony can be used only

seldom and only in piano.

Belkin states the same law independently and in the same direction: the normal disposition follows the

overtone series, wider in the lower range and more compact getting higher, with no major gaps in the

middle, since such gaps divide the sound mass into separate planes — desirable only when

differentiation is wanted (*Artistic Orchestration*, "Register"). And in the harmony book: wider

intervals on the bottom and smaller intervals above create blended resonance, clear acoustic intervals

such as octaves and fifths on the bottom ground the harmony, and pitch clarity is greatest in the

middle register

(https://alanbelkinmusic.com/general-principles-of-harmony-harmony-texture-and-orchestration/).

Three authorities, one law, and it is the same law Huron's minimum-masking principle derives from

critical bands. This is as well-founded as anything in this series.

MEASURED AGAINST OUR OUTPUT. Voicing the 24-chord in-set plan through harmony.voice_chord with the

parameters pass7_flores.rewrite_harmony_grid actually uses — n_voices=4, low=31, high=64 from

GRID_VOICES and GRID_REGISTER — and comparing the bottom gap to the top gap of each four-note

voicing:

the cue.

exactly where he says it is worst.

minor seventh of empty air between the third voice and the top, sitting above two perfect fourths.

The ERB floor is not at fault and is in fact working: measured across the same 24 voicings, the count

of intervals of a third or narrower whose lower note falls below C3 is ZERO. voice_chord is

correctly refusing muddy low intervals. It simply has no opinion about the SHAPE of the stack above

them, because no rule was ever written for the shape.

law is a strong preference, not an absolute, and Rimsky says "rarely" and "seldom" rather than

"never". Score each candidate voicing by the monotonicity of its gap sequence from bottom to top and

break ties toward wide-low. This changes no interface and cannot make a voicing illegal that is

legal today.

hard: refuse any candidate voicing whose largest gap is both above the lowest voice and wider than

the gap below it by more than a declared margin, unless the card declares a hollow texture. Belkin

licenses hollow textures explicitly and warns that the ear tires of them quickly and that loud

passages with holes in the middle sound feeble, which is exactly the shape of a declared exception.

RECORD THE SPREAD in the code comment. The three positions are closer together than an earlier

draft of this document claimed: Rimsky says the bass should RARELY lie more than an octave below

the part above it, the RWU statement of the chorale convention caps the same distance at a TWELFTH,

and our _upper_spacing_ok bounds it NOT AT ALL. Ordered by strictness the sources run Rimsky,

then RWU, then us — so our code is the outlier rather than the arbiter between two authorities.

Our renderer is orchestral, so Rimsky's preference is the better default and the ranking term

should implement it; _upper_spacing_ok's docstring should record that its unbounded treatment

matches neither source.

7.3 Doubling as an expressive choice with a register law

Rimsky, Chapter III, "Duplication of timbres" and its Remarks: in a four-part wind chord the two

EXTREME parts are the thinnest and weakest in tone and the intermediate parts the fullest and

strongest; where correct part progression demands a temporary doubling the ear is reconciled to the

brief loss of balance; and in every chord the parts in octaves strengthen one another, the harmonics

of the lowest register coinciding with and supporting the highest.

Belkin's rule is the same one stated as intent: doublings should be intentional and expressive rather

than rigidly avoided, doublings emphasising bass notes add more solidity than doublings of middle

notes, and adjacent doublings are more noticeable than non-adjacent ones

(https://alanbelkinmusic.com/general-principles-of-harmony-harmony-texture-and-orchestration/). His

warning from the same book's "What is Poor Orchestration?" list names the failure mode directly —

heaviness as a norm instead of as a special effect, caused by too much doubling or overloading the low

register — and in "Musical Lines vs. Instrumental Parts" he adds that frequent literal doubling leads

to heaviness and greyness of colour, with octave doubling creating greater transparency than unison.

Our voice_chord accepts double_policy="root_then_fifth" and caps third-doubling at 1. That is the

prohibition without the doctrine.

root_then_fifth for solidity, octave_frame for the strengthening Rimsky describes, none for

transparency — and let the card select. Record the choice in the plan so a critic can ask why.

MOTION_CENSUS_CEILING. Belkin's greyness is a measurable quantity: the fraction of sounding time

during which two or more parts of the same timbre class play identical pitches.

7.4 Accompaniment technique, from Belkin's chapter on it

*Artistic Orchestration*, "Orchestral Accompaniment", gives four prescriptions that transfer directly

to a game cue, where the "soloist" is the hook layer:

than the accompaniment.

basses, and limit held notes to dull or weak registers.

ensemble reads as an equal rather than a mask.

Bizet — short string chords alternating low and high, under two counterpoints to the voice — and his

description of the result is the target: rich but extremely transparent.

The fourth is the one our pipeline most needs, because it is the direct answer to the temptation the

ECON-03 pad ceiling creates. harmony.PAD_SHARE_CEILING = 0.20 forbids the wall of pads; Belkin says

what to do instead, and it is not "fewer layers" but "more planes, each thinner".

---

8. Low interval limits: the craft table, our ERB derivation, and the honest gap between them

The craft concept is stated identically across sources: the low interval limit is the lowest point of

an interval, from minor second to major tenth, below which it begins to sound muddy or indistinct, and

the limits are not absolutes but regions below which the result carries real risk in a normal harmonic

context (https://www.daviddarling.info/encyclopedia_of_music/L/low_interval_limit.html,

https://www.sweetwater.com/insync/low-interval-limit/). Hoffmann's caveats are the operative part:

soft low voicings on strings are more forgiving than loud ones on brass; when the lowest note of a

voicing is not the root you must assume the root is present when checking the limit; and the chart may

be deliberately ignored for effect (https://www.robin-hoffmann.com/dfsb/low-interval-limits/).

Huron's minimum-masking principle is the reason the tables have the shape they do: equivalent spectral

energy per critical band means simultaneous notes must be more widely spaced as register descends.

The craft tables and the perceptual model are the same law at different resolutions.

WHAT WE USE, AND WHY IT IS DEFENSIBLE. harmony.erb_floor_table computes the floor directly from

Glasberg and Moore's ERB formula and harmony.ERB_PUBLISHED keeps the published comparison values

next to it: minor second never, major second A6, minor third D#4, major third E3, perfect fourth A2,

tritone E2, perfect fifth C2, minor sixth G#1, major sixth F1, minor seventh D1, octave A#0. That is a

derived table with its arithmetic written out and a self-test comparing it against the source rather

than against its own output, which is a stronger artefact than a scanned chart. The docstring already

carries the two caveats that matter — that a fundamentals-only model is MORE conservative than the

craft charts for narrow intervals because real timbres supply their own separation from upper

partials, and that the minor-second "never" is a physical result rather than a bug.

The honest gap, stated rather than papered over: this document could not retrieve a numeric craft

table from any source, because every one of them publishes it as an engraved image. We therefore

cannot check our ERB floor against the craft consensus numerically, and this document asserts NO craft

table. What can be said is that the two agree in DIRECTION everywhere and that ours is stricter for

the narrow intervals by its own construction, which is the safe direction for an automated filter to

err in. Hoffmann's root-assumption caveat, however, is a real rule we do not implement and it is

recorded as a gap in §12.

---

9. Accompaniment pattern craft: figure, harmonic rhythm, and the join between them

9.1 Harmonic rhythm is a parameter with a perceptual law attached

Belkin: faster harmonic changes raise the temperature and slower ones seem calmer; a NORM must be

established because arbitrary change loses its novelty when listeners cannot form expectations; and

consistency of harmonic rhythm unifies a section while a CHANGE of harmonic rhythm defines the

difference between sections

(https://alanbelkinmusic.com/general-principles-of-harmony-movement-interest-and-variety/).

Our build_plan takes harmonic_rhythm_bars as a single scalar for the whole cue, and

pass7_flores supplies it per cue class from a config dict. So we have the norm and we have no

mechanism for the change that defines sections — which is a structural loss, because the cue already

HAS sections and already varies its harmony grid per section through harmony_variants.

scalar. build_plan already builds its change grid by walking a step; walking a per-section step is

the same loop with a lookup. This is the cheapest available source of sectional contrast in the

whole harmonic layer.

changes every two bars from beginning to end has one section as far as the harmony is concerned,

whatever the section list says.

9.2 The figure roster, and what selects from it

harmony.ACCOMPANIMENT_FIGURES carries nine figures: block, arpeggio_up, arpeggio_down,

arpeggio_updown, alberti, broken_octave, pad, ostinato_over_changes, pedal. Measured

against the practice literature this is a good roster — it covers the sustained, the broken, the

figured and the static classes, and ostinato_over_changes covers the specific device

SNES_JRPG_SCHOOL.md HARM-06 requires. Two observations rather than additions:

harmonic rhythm, the register, or the plane. Belkin's law that held notes belong in dull or weak

registers and that aeration comes from rests and staccato basses is a SELECTION rule — it says which

figure at which register — and we have no place to put it.

window with _fit_register, which pass7_flores already flags in a comment as undoing the ERB

filtering that voice_chord performed. That is a known, documented hazard in the code; the practice

reading of it is that an arpeggio and a block chord want DIFFERENT windows, because an arpeggio's

successive tones do not mask each other and a block chord's simultaneous ones do. The single window

per figure is the root of the flagged hazard.

adjustment and a permitted plane, and have accompaniment take its window from the table rather

than from one caller-supplied pair. A sustained pad gets the narrower, higher window Belkin's

dull-register rule implies; an arpeggio may run wider and lower because its tones are successive.

9.3 What "clashes" means for a figure, as opposed to for a chord

One consequence of §4 that belongs here rather than in the chord section. An in-set chord stated as a

BLOCK presents all its members simultaneously against the melody; the same chord stated as an

ARPEGGIO presents them successively, and a successive presentation of a tone a semitone from the

melody's current note is a passing dissonance rather than a vertical one. This is exactly the

melodic-versus-harmonic distinction the avoid-note literature insists on

(https://en.wikipedia.org/wiki/Avoid_note). It means the §4 constraint is correctly scoped to the

chord SCHEDULE and not to the figure — but it also means a strictly-in-set arpeggio is spending its

licence and getting nothing, and that an out-of-set tone, when one is placed at a cadence under H19,

should preferentially be given to an arpeggiating or ornamental layer rather than to a sustaining one.

realisation: its foreign tones may be voiced only in a layer whose figure is non-sustaining, and

never in a pad or pedal. A placed clash that rings for two bars is not the placed clash the

sources license.

---

10. Actionable rules, mapped to our stack

Each rule states its source, then the operation, then the file. HA-01 through HA-08 are the vertical

grammar; HA-09 through HA-16 are arrangement and realisation.

HA-01 — THE MODE IS THE CHORD VOCABULARY, NOT A FILTER ON IT. Every ordinary chord slot draws from

the chords that fit wholly inside the ensemble's declared pitch set. Source: Belkin, coherence chapter

— scale-or-mode-based pitch limitation is the first unifying mechanism, and harmonic families cohere by

what they keep common. STATUS: IMPLEMENTED as of 2026-08-08 16:41 — harmony.in_set_chords,

harmony.build_plan(pitch_set=...), wired at pass7_flores.t1_harmonic_plan, refused by H19.

CODE-ABLE, done.

HA-02 — AN OUT-OF-SET TONE IS AN EVENT WITH A POSITION. Out-of-set chords stay reachable and become

declared and placed at a cadence or arrival. Source: COUNTERPOINT_AND_VOICE_LEADING.md "placed, not

sprinkled"; ORCHESTRATION_TEXTURE_AND_DENSITY.md on Bolero's single harmonic event. STATUS:

IMPLEMENTED — harmony.check H19. CODE-ABLE, done.

HA-03 — SEVERITY FOLLOWS SEMITONE ADJACENCY. A foreign pitch class adjacent to two scale members is

a harder event than one adjacent to one; the hardest require an arrival bar rather than any cadence,

and every H19 finding names the scale tone it collides with. Source: Nettles and Graf's avoid-note

criterion; the counting argument of §4.2. FILE: harmony.py, new semitone_neighbours() plus H19's

finding text and licence test. CODE-ABLE.

HA-04 — THE TERTIAN SHARE HAS A FLOOR. A mode-constrained plan that resolves into stacked fifths and

sus chords is in-scale and inert. Source: Persichetti p. 94 on the rootlessness of equidistant chords;

Belkin on equidistant intervals producing a static effect. MEASURED TODAY: 0.292 tertian share on the

in-set exploration plan, 17 of 24 chords with no third. FILE: harmony.HarmonicPlan.report plus a new

harmony.check rule; band calibrated on the exemplar corpus, never asserted. CODE-ABLE.

HA-05 — AN ARRIVAL TAKES A THIRD. A modal half cadence on a quintal chord is idiomatic; a full close

on one is a close that did not happen. Source: Schoenberg's cadence criterion; Persichetti on who

carries the root. FILE: harmony.build_plan._role. CODE-ABLE.

HA-06 — A CADENCE IS MEASURED BY SCALE COMPLETION. Report the fraction of the mode's pitch classes

covered by the last N chords at each cadence, so modal_close is earned rather than assigned. Source:

Schoenberg via the Strasheela formalization. FILE: harmony.build_plan report. CODE-ABLE.

HA-07 — A DESCENDING PROGRESSION IS LICENSED BY WHAT FOLLOWS IT. In C1, C2, C3 the pair C1-C2 may be

descending only if C1-C3 is ascending. Source: Schoenberg, same. FILE: a new harmony.check rule over

HarmonicPlan.chords. CODE-ABLE.

HA-08 — WONDER CAN COME FROM MOTION INSTEAD OF EXTENSION. Give the wonder dial a triadic

chromatic-mediant mechanism beside _POOL_AMBIENT, because the film idiom's wonder is consonant triads

moving, not extended chords sitting. Source: Lehman, *Hollywood Harmony*, pantriadic chromaticism.

FILE: harmony.build_plan pools. CODE-ABLE.

HA-09 — WIDE LOW, CLOSE HIGH, NO VOID. Rank candidate voicings by gap monotonicity from bottom to

top; hard-refuse a stack whose widest gap sits above the bass unless a hollow texture is declared.

Source: Rimsky-Korsakov Ch. III, "Distribution of notes in chords" and the Remarks at pp. 78-79; Belkin

"Register"; Huron's minimum-masking principle. MEASURED TODAY: 14 of 24 voicings inverted, 10 of 24

with the widest gap at the top. FILE: harmony.voice_chord ranking and filter. CODE-ABLE.

HA-10 — EVERY SOURCE PUTS A CEILING ON BASS-TO-TENOR AND WE HAVE NONE. Rimsky says the bass should

rarely lie more than an octave from the part above it; the RWU statement of the chorale convention

caps it at a twelfth; MyMusicTheory sets a floor of a fifth and treats more than an octave as

correctly spaced. Our _upper_spacing_ok bounds it not at all, which matches no source. Our renderer

is orchestral, so implement Rimsky's octave as a ranking preference rather than a filter, and write

the spread into the code comment. Source: Rimsky-Korsakov Ch. III p. 67; the two SATB pedagogical

statements in §2.1. FILE: harmony._upper_spacing_ok docstring and voice_chord ranking. CODE-ABLE.

HA-11 — DOUBLING IS A DECLARED INTENT. Make double_policy real with sourced options — solidity,

octave frame, transparency — and record the choice in the plan. Source: Rimsky on octave parts

strengthening one another and on the extreme parts being thinnest; Belkin on intentional expressive

doubling and on literal doubling producing greyness. FILE: harmony.voice_chord. CODE-ABLE.

HA-12 — EVERY LAYER DECLARES A PLANE. foreground, movement, resonance or frame, orthogonal

to pattern.kind; exactly one foreground plane at any instant. Source: Belkin, "Planes of Tone".

FILE: the plan layer schema plus a harmony.check predicate. CODE-ABLE.

HA-13 — RICHNESS COMES FROM MORE PLANES, NOT THICKER ONES. The answer to a thin accompaniment under

the ECON-03 pad ceiling is several thin planes, aerated with rests, with held notes confined to weak

registers. Source: Belkin, "Orchestral Accompaniment". FILE: pass7_flores layer construction; measured

against harmony.PAD_SHARE_CEILING. CODE-ABLE.

HA-14 — HARMONIC RHYTHM IS PER SECTION. Accept a schedule as well as a scalar, because change of

harmonic rhythm is what defines a section boundary. Source: Belkin, movement chapter. FILE:

harmony.build_plan(harmonic_rhythm_bars=...) and pass7_flores config. CODE-ABLE.

HA-15 — THE FIGURE CHOOSES THE WINDOW. A sustained figure and an arpeggio want different registers,

because simultaneous tones mask and successive ones do not; the single caller-supplied window is the

root of the _fit_register hazard pass7_flores already flags. Source: Huron's minimum masking;

Belkin on held notes in weak registers. FILE: harmony.accompaniment. CODE-ABLE.

HA-16 — A PLACED CLASH IS NOT A SUSTAINED ONE. When H19 licenses an out-of-set chord, its foreign

tones may be voiced only in non-sustaining layers, never in pad or pedal. Source: the avoid-note

literature's melodic-versus-harmonic distinction. FILE: pass7_flores realisation plus an H19

companion check. CODE-ABLE.

HA-17 — CHECK LOW INTERVALS AS IF THE ROOT WERE PRESENT. When a voicing's lowest note is not the

root, the limit is checked against the implied root, not the sounding bass. Source: Hoffmann's

low-interval-limit caveats. FILE: harmony.spacing_ok / voice_chord filter. CODE-ABLE.

HA-18 — DRONE COVERAGE IS REPORTED AGAINST THE PAD CEILING. So a cue cannot dodge ECON-03 by

relabelling pads as drones, and so the fraction of the cue protected from clash by construction is

visible. Source: Belkin on persistent common tones as the simplest coherence, and on greyness as the

failure. FILE: plan report plus harmony.check H13's neighbourhood. MEASURE-ONLY.

---

11. What we adopt

Ranked by value to the round-5 build, with the declines stated.

ADOPT, FIRST TIER — these change what the composer writes.

1. HA-04, the tertian floor. This is the single most valuable rule in the document because it is

the one nobody would have found by listening for the clash. The mode constraint that fixed the

clash produced a 0.292 tertian share, and two independent authorities — Persichetti on rootlessness,

Belkin on equidistant staticness — predict that output will read as washy. Adopting the clash fix

without this counterweight trades one audible defect for another.

2. HA-09, the disposition law. Three authorities agree, it is derivable from critical-band

perception, our output violates it in 58% of voicings, and it is implementable as a ranking term

that cannot break anything currently legal.

3. HA-03, severity by semitone adjacency. Turns H19 from a boolean into a graded rule and makes its

findings name the actual collision. Cheap, and it makes every future refusal legible to an author.

4. HA-12, planes. The resonance role is missing from our schema and it is the role our drones and

pads are actually playing. Without it, "how many layers" and "what are they for" remain

unanswerable in the same breath.

ADOPT, SECOND TIER — these change how the plan is realised.

5. HA-15 and HA-16 together, because they are the same insight applied to two ends: what a figure

does to register, and what a figure does to a licensed dissonance. HA-15 also resolves a hazard

pass7_flores has already flagged in its own comments.

6. HA-14, per-section harmonic rhythm. The cheapest sectional contrast available, and our

harmony_variants mechanism already proves the plumbing exists.

7. HA-05 and HA-06, the arrival and cadence pair. Small, and they make the modal_close label mean

something measurable.

8. HA-11 and HA-17, doubling policy and the implied-root check. Both are single-function changes

with clean sources.

ADOPT WITH A CALIBRATION GATE FIRST.

9. HA-18, drone coverage. Adopt the measurement immediately; adopt no threshold until the exemplar

corpus has been measured, per the standing rule that a target derived from our own output is not a

bar.

ADOPT AS DOCUMENTATION RATHER THAN CODE.

10. HA-10, the bass-to-tenor spread. The ranking term is worth having, but the more valuable half

is the comment recording where the sources actually sit — Rimsky at an octave, RWU at a twelfth,

our code at no limit at all. A future reader of _upper_spacing_ok should not have to rediscover

that its unbounded treatment is our own choice rather than a convention any source states.

DECLINE FOR NOW, WITH REASONS.

pentatonic mode with fourteen available chords and no leading tone, the ascending/descending

taxonomy classifies almost everything the same way, so the rule would fire rarely and prove little.

Revisit when a diatonic or heptatonic region cell is built.

pitch set the chromatic mediants are all out-of-set by construction, so this rule mostly waits on a

mode with more room. Record it; build it for the heptatonic cells.

in_set_chords plus snap_structural_tones, planing through H01's declared_mud_pairs licence.

New code would duplicate working mechanisms.

image and we will not assert numbers we did not read. The ERB derivation stands, and HA-17 adds the

one craft caveat we could verify.

---

12. Gap notes — where our named stack deviates from the practice found

For the audit phase. Each entry states the deviation, the evidence, the practice it deviates from, and

a severity. Every measurement was re-run against the working tree AFTER the concurrent lane's

2026-08-08 16:41 and 16:49 edits landed, so nothing here is stale against a repair that already

happened. Where a gap CLOSED during this lane's reading, it is recorded as closed rather than deleted,

because the audit needs to know it was checked.

GAP-01 — CLOSED DURING THIS READING. build_plan was called without pitch_set.

DEVIATION: pass7_flores.t1_harmonic_plan called harmony.build_plan without the pitch_set

argument, so _POOL_AMBIENT and _POOL_COLOUR were reachable in a pentatonic cue.

EVIDENCE: reproduced — the unconstrained call returns foreign pitch classes {0, 1, 3, 5, 7, 10} against

D pentatonic, six of them, matching the reported symptom exactly; offenders include IVmaj7#11

contributing {C#, G} and imin9 contributing {C, F}.

PRACTICE: Belkin, coherence chapter — mode-based pitch limitation is the primary unifying mechanism.

STATUS: CLOSED at pass7_flores.py:780 (file mtime 16:41). Re-measured with pitch_set armed: zero

foreign pitch classes, cadence inventory intact, non-functional ratio 0.3478 against a 0.35 target.

SEVERITY: was critical; now informational. Keep the entry so the audit can confirm the repair rather

than rediscover the defect.

GAP-02 — CLOSED DURING THIS READING. H19 was documented but not implemented.

DEVIATION: build_plan's docstring stated that check H19 refuses an undeclared out-of-set chord

while RULE_CODES ended at H18 and no H19 was emitted anywhere in check.

EVIDENCE: first read counted 18 codes and zero occurrences of the literal "H19" outside the docstring.

STATUS: CLOSED — RULE_CODES now carries 21 entries, H19 (mode), H20 (toneness band) and H21 (stream

gaps), with H19 emitted at two sites in check (harmony.py mtime 16:49).

SEVERITY: was high — a documented-but-absent rule is worse than a missing one, because it reads as

covered. Now informational.

GAP-03 — OPEN. No voicing rule implements the wide-low, close-high disposition.

DEVIATION: harmony.voice_chord filters on the ERB floor (VL-8), adjacent upper-voice spacing (VL-7)

and third-doubling (VL-12), and ranks by common-tone retention plus minimal motion. Nothing scores the

SHAPE of the stack.

EVIDENCE: measured over the 24 in-set voicings at GRID_VOICES=4, GRID_REGISTER=(31, 64) — 14 of 24

have a bottom gap narrower than their top gap; 10 of 24 have their widest gap at the top. Example:

Iquintal → [38, 45, 52, 62], gaps 7, 7, 10.

PRACTICE: Rimsky-Korsakov Ch. III p. 67 and pp. 78-79 (wide low, close high; no void in the

intermediate parts; worst in forte); Belkin "Register" (normal disposition follows the overtone

series, no major gaps in the middle); Huron's minimum-masking principle as the perceptual derivation.

SEVERITY: HIGH. This is an audible, measured, three-source deviation and the fix is a ranking term.

GAP-04 — OPEN. Nothing constrains or reports the tertian share.

DEVIATION: the mode constraint's own output is dominated by thirdless sonorities and no rule notices.

EVIDENCE: quality census of the in-set 32-bar exploration plan — quintal 9, sus4 5, sus2 3, maj 4,

min 2, add9 1. Tertian share 0.292; 17 of 24 chords contain no third.

PRACTICE: Persichetti p. 94 (equidistant chords are rootless; identity falls to the melodic voice);

Belkin, movement chapter (equidistant intervals produce a static effect, unequal ones create momentum).

SEVERITY: HIGH, and rising — this is the defect the §1 repair CREATES, so it will be shipped by the

same round that fixes the clash unless it is caught here.

GAP-05 — OPEN. No instrument measures accompaniment-versus-mode conformance.

DEVIATION: H19 is a composer-side rule inside harmony.check, evaluated on a plan. No scoring lens in

harness/music_gen/instr_*.py measures whether a REALISED cue's accompaniment stays inside the

ensemble's scale.

EVIDENCE: grep for mode_pcs, outside_set and in_set_chords across harness/music_gen/*.py

returns three files — harmony.py, pass2_flores.py, pass7_flores.py — and no instr_*.py.

Positive control: the same pattern returns 27 matches in harmony.py, so the search can match.

instr_harmony_fit.py's own LAW is about the MELODY's structural tones being chord members; it says

nothing about the chord's tones being mode members.

PRACTICE: the general discipline that a rule enforced only at authoring time is not enforced against

anything that bypasses the author. The round-4 defect reached rendered audio precisely because the

lens that would have caught it did not exist.

SEVERITY: HIGH. Without it, any future path into the plan that skips build_plan — a hand-authored

grid, a legacy plan, an ACE-Step bed — reintroduces the defect silently.

GAP-06 — OPEN. The harmony grid's bass sits below the module's own toneness floor.

DEVIATION: pass7_flores.GRID_REGISTER = (31, 64) puts the grid's lowest permitted pitch at MIDI 31,

which is G1, while harmony.TONENESS_LOW = 41 (F2) is the floor below which H20 classifies material as

colour rather than voice.

EVIDENCE: measured lowest pitch actually used across the 24 voicings is MIDI 35, B1 — six semitones

below the toneness floor, ten semitones below in the permitted range.

PRACTICE: Huron's toneness principle as our own H20 states it; Belkin's warning that overloading the

low register produces heaviness as a norm.

SEVERITY: MEDIUM. Not necessarily wrong — a frame layer below the toneness band is a legitimate

resonance role — but it is UNDECLARED, and the same module holds both numbers without reconciling

them. This is exactly the case HA-12's frame plane exists to make explicit.

GAP-07 — OPEN. double_policy is accepted and not implemented.

DEVIATION: harmony.voice_chord takes double_policy: str = "root_then_fifth" in its signature. The

only doubling behaviour actually enforced is the third-doubling ceiling.

PRACTICE: Rimsky Ch. III on octave doubling strengthening the chord and on the extreme parts being

thinnest; Belkin on doubling as intentional expression, bass doublings adding solidity, and literal

doubling producing greyness.

SEVERITY: MEDIUM. A parameter that is accepted and ignored is a latent bug — a future caller will set

it and believe it took effect.

GAP-08 — OPEN. Harmonic rhythm is a single scalar for a sectioned cue.

DEVIATION: build_plan(harmonic_rhythm_bars=...) is one number for the whole plan, supplied per cue

class by pass7_flores, while the cue has real sections and already varies its harmony grid per

section through harmony_variants.

PRACTICE: Belkin, movement chapter — change of harmonic rhythm is what defines the difference between

sections; consistency within one is what unifies it.

SEVERITY: MEDIUM. A structural expressive dimension we are not using at all.

GAP-09 — OPEN. One register window serves every accompaniment figure.

DEVIATION: harmony.accompaniment octave-fits every voicing pitch into a single caller-supplied

window via _fit_register, regardless of figure. pass7_flores already flags in its own comments that

this undoes the ERB filtering voice_chord performed.

PRACTICE: Huron's minimum masking — simultaneous tones mask, successive ones do not, so a block chord

and an arpeggio have different low limits; Belkin on confining held notes to dull or weak registers.

SEVERITY: MEDIUM, and it is the documented root of a hazard the code has already noticed.

GAP-10 — OPEN. Low-interval checking does not assume the root.

DEVIATION: harmony.spacing_ok evaluates the sounding pitches. When a voicing's lowest note is not the

root — which the bass_pc parameter explicitly permits — the practice is to check the limit as though

the root were present.

PRACTICE: Hoffmann, low-interval-limit caveats, stated as a rule rather than an aside.

SEVERITY: LOW-MEDIUM. Narrow in effect, trivially implementable, and one of only two craft-table facts

this lane could verify in text form.

GAP-11 — OPEN. Nothing distinguishes tonic, dominant and double pedal.

DEVIATION: pass7_flores._pedal_span returns a span whose pitch class is the tonic by construction;

harmony.accompaniment("pedal", ...) re-articulates once per bar across the whole plan. The dominant

pedal — the standard pre-cadential tension device — is unreachable, and so is the tonic-plus-fifth

double drone that is the modal idiom's signature sound.

PRACTICE: Belkin on persistent common tones as the simplest coherence and their identity with the

classical pedal point; the general treatment of pedal points as a two-kind device across the harmony

literature. CRAFT CONSENSUS for the tonic/dominant distinction itself, which no single source in §2

states as a numbered rule.

SEVERITY: MEDIUM. The most reliable anti-clash device in the modal toolkit is present in one of its

three forms.

GAP-12 — OPEN, AND IT IS A DOCUMENTATION GAP IN A SIBLING.

DEVIATION: ORCHESTRATION_TEXTURE_AND_DENSITY.md §2.1 records that automated retrieval would not

return the body of Rimsky-Korsakov's Chapter III and correctly makes no claim from it. That limit is

now obsolete — the chapter body was retrieved for this document by downloading the Gutenberg HTML and

extracting locally rather than by remote summarisation, and §7.2 and §7.3 above quote it.

PRACTICE: our own verification discipline — a stated honest limit that has been overcome should be

updated in place, not left to make a future reader believe the source is unavailable.

SEVERITY: LOW, but it is a one-line fix and the method it records (fetch the raw file, extract locally)

generalises to every other treatise this series has failed to retrieve through a summarising fetch.

GAP-13 — OPEN. Functional labels are reported for pentatonic cues without a caveat.

DEVIATION: harmony.check H16 grades the non-functional chord-change ratio and H17 grades the cadence

schedule, both against SNES_JRPG_SCHOOL.md bands derived from functional-tonal practice. In an

anhemitonic pentatonic there is no leading tone and no tritone, so those labels are a scheduling

device rather than a claim about harmonic pull, as in_set_chords's own docstring argues.

PRACTICE: the modal-harmony literature's basic position that functional analysis does not transfer;

SNES_JRPG_SCHOOL.md HARM-02's own concession that a dominant substitute works by voice-leading

rather than leading-tone pull.

SEVERITY: LOW. Nothing is wrong; something is unqualified. The reports should carry the caveat so a

critic does not read a strong H16 number as evidence of harmonic function that the mode cannot supply.

---

13. The honest limits of this document

Four, stated plainly.

The numeric low-interval-limit table was not obtained from any source and is therefore not in this

document. Four sources were tried; all publish it as an engraved image. §8 says what we use instead.

Two named authorities — Piston's *Harmony* and Ron Miller's *Modal Jazz Composition and Harmony* —

could not be read in full. Piston's spacing rule is cited to the pedagogical consensus that states it

identically, with Piston named as its canonical home rather than quoted. NO rule in this document is

attributed to Miller; where a modal-vocabulary rule appears it is sourced to Persichetti, Belkin or the

Berklee chord-scale literature. If Miller is acquired later, §5 is the section it would deepen.

The stack moved while this document was being written. Two of the thirteen gap notes closed between

the first and second readings, and every measurement reported here was re-run afterward against the

working tree. Any measurement in this document should be re-derived at HEAD before it is cited as

current, per the standing rule that a proof is only true at the commit it was run on.

Four citations did not survive an independent audit, and the corrections are marked in place at each

site rather than silently applied. An adversarial citation-reality pass on 2026-08-08 re-fetched the

sources behind this document's load-bearing claims. Most held exactly: Rimsky-Korsakov's Chapter III

was re-extracted from the Gutenberg HTML and every sentence §7.2 and §7.3 attribute to it is there

near-verbatim, including the register table at pp. 78-79 and the temporary-doubling passage; Belkin's

*Artistic Orchestration* was re-extracted from the PDF and "Planes of Tone", "Register", "Hollow

Textures", "Musical Lines vs. Instrumental Parts" and "Orchestral Accompaniment" all say what is

claimed, down to the Bizet example and "rich but extremely transparent"; the Strasheela formalization

carries all six Schoenberg constraints as stated; Persichetti's p. 94 sentence, the avoid-note

definition, Belkin's three harmony chapters, Hoffmann's caveats, the Darling definition, and the GDC

session title and abstract all verified. What failed: the Berklee glossary has no avoid-note entry

(§2.1, §4.1); the Ron Miller archive item is darkened and serves no copy (§2.1); the "bass-to-tenor

free" reading was contradicted by the very source cited for it, which caps the distance at a twelfth

(§2.1, §3.2, §7.2, HA-10, §11); and the Lehman phrase quoted in §3.4 could not be re-verified because

both Oxford hosts refuse automated fetches, so it is now a paraphrase. The failure mode in three of

the four was the same one this series exists to prevent — a real source named as confirming something

it does not actually say — and the audit trail is left visible so the next reader can re-run it rather

than re-trust it.

Generated by harness/site/structure_site.py — the URL path is the repo path. review root