VARIETY_MATRIX.md

music/complete_tracks/VARIETY_MATRIX.md

THE VARIETY MATRIX — the tooth that refuses two tracks that sound the same

CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
The canon: the CVD · the T1 foundation docs · the T0 registries (registries/) · the spine
(docs/spine/CH_*.md) · the region pages (_source/02_Tier_2_Region_Pages/). Authority order: docs/DOC_MAP.md § 0.
Canon served: T0_Theme_Registry · T0_Motif_Registry · T0_Chapter_Index · T0_Festival_Registry.
If this document disagrees with canon, CANON WINS and this document is the defect.

Emitted by harness/music_gen/emit_identity_cards.py. The cards themselves are

build/audio/complete_tracks/cards/HF_MT_*.json. The control arm is

build/audio/complete_tracks/SAMENESS_BASELINE.md.

0. The rule

No two cards may share tempo_band + instrumentation_family + energy_class.

Those three axes were chosen because they are what the sameness baseline measured as collapsed.

The shipped cohort carries 2 texture classes across 15 tracks, 2 length classes, and exactly one

value of distinct_composed_sections. Pitch-set distinctness — the axis the lane had been

optimising — is not on this list, because it is not audible in the first four seconds.

The exemplar model is the Super Mario 64 track list: a roster of roughly this size where every

entry separates from every other by SOUND before any melody is recognised.

1. The matrix

#cardroledurtempo (band)instrumentation familyenergysectionsmotifs
1HF_MT_01_TITLEtitle3:42104 (T4_moderate)full_orchestra_tuttiE11_heroic_declamatory74
2HF_MT_02_EXPLORATION_TRAVERSALexploration_traversal3:0892 (T3_walking)strings_and_winds_chamberE04_open_warm124
3HF_MT_03_BATTLE_ORDINARYbattle_ordinary2:38152 (T6_fast)full_orchestra_tuttiE14_driving_combat74
4HF_MT_04_BOSS_CHAPTERboss_chapter_tier3:29138 (T5_brisk)low_brass_and_organ_weightE13_menacing_weight74
5HF_MT_05_BOSS_APEXboss_apex_tier4:00176 (T7_very_fast)full_orchestra_and_choirE16_apocalyptic95
6HF_MT_06_SANCTUARY_RESTsanctuary_rest4:4356 (T1_very_slow)solo_instrument_ledE01_stillness64
7HF_MT_07_TRADE_AND_FESTIVALtrades_festival4:22132 (T5_brisk)wind_and_drum_period_bandE09_communal_celebration84
8HF_MT_08_SORROW_LOSSsorrow_loss4:2950 (T1_very_slow)choir_and_low_stringsE17_peak_grief64
9HF_MT_09_WONDER_DISCOVERYwonder_discovery4:0072 (T2_slow)strings_and_winds_chamberE03_luminous_wonder54
10HF_MT_10_CREDITScredits4:5588 (T3_walking)full_orchestra_tuttiE12_valedictory_suite85
11HF_MT_11_REGION_FLORESregion_theme4:04126 (T5_brisk)percussion_forwardE10_ceremonial_drive84
12HF_MT_12_REGION_BALIregion_theme4:51112 (T4_moderate)plucked_and_struck_period_ensembleE08_hypnotic_interlock85
13HF_MT_13_REGION_SUMATRA_JAVAregion_theme4:4268 (T2_slow)voice_led_chant_ensembleE18_austere_tension74
14HF_MT_14_REGION_SRI_LANKAregion_theme4:4564 (T2_slow)choir_and_low_stringsE05_devotional_awe74
15HF_MT_15_REGION_SOUTH_INDIAregion_theme4:43104 (T4_moderate)percussion_forwardE07_processional_grand84
16HF_MT_16_REGION_SWAHILI_COASTregion_theme4:4158 (T1_very_slow)voice_and_soundscape_minimalE02_elegiac64
17HF_MT_17_REGION_ETHIOPIAregion_theme4:5476 (T2_slow)plucked_and_struck_period_ensembleE06_nocturnal_ritual74
18HF_MT_18_REGION_CENTRAL_AFRICAregion_theme4:3366 (T2_slow)wind_and_drum_period_bandE19_antiphonal_night75
19HF_MT_19_REGION_WEST_AFRICAregion_theme4:52158 (T6_fast)percussion_forwardE15_ferocious85
20HF_MT_20_REGION_SOUTH_AFRICAregion_theme4:4684 (T3_walking)voices_and_body_percussionE17_peak_grief75

2. The proof

3. The duration law, and the apparent conflict it resolves

SNES LOOP-01 prescribes loop lengths by cue class — hook-bearing theme loops 30–60 s, ambient

and exploration 1:30–2:30, combat 15–30 s. Josh asked for complete tracks of 2.5–5 minutes.

Those are not the same measurement and the cards carry both:

development and a coda. This is what a listener hears as a piece of music, and what the

exemplar soundtracks ship.

The two are related by composition, never by tiling: the loop span is a designated region of the

composed track with a composed seam, and no section of any card is a verbatim repeat of another.

That is the NO TILING law from RECOMPOSE_RUNG_TWO_FINDINGS stated as a schema rather than

as an instruction — and it closes § 1.1's defect directly, because a card can now say *a loop

composed of N sections, each with its own bar count*, which is the thing the old schema could

not express.

4. What is HELD, and why — so a gap reads as a decision

HF_MT_XX_REGION_RIFT_VALLEY — East African Rift Valley

HF_MT_XX_FAIRY_REALM — Fairy Realm (Prologue, CH_01)

5. The stack gap, stated before anyone renders

The landed CPU stack is sfizz 1.2.3 over VSCO2-CE and VCSL — 23 instruments, all CC0. It

contains no percussion of any kind, no choir, no trumpet, no tuba, and no period instrument.

So the shipped cohort's single texture is not only a compositional choice; it is partly what the

stack could physically play. Every card declares its own stack_coverage, and the cards that

name a sound the stack cannot make are naming an acquisition, not claiming a render.

4 of 20 cards are renderable on the landed stack today. The rest are the

wave-two sourcing worklist: CC0 or public-domain percussion, choir and period sample sets, with

the same hash-and-licence discipline as the landed stack, and the standing rule intact — no

sample from any set is ever a conditioning, fine-tune or LoRA input to any generator.

6. How to check this rather than trust it

python harness/music_gen/sameness_baseline.py      # re-measure the control arm
python harness/music_gen/emit_identity_cards.py --selftest   # arm every tooth
python harness/music_gen/emit_identity_cards.py    # re-emit; refuses on any collision

Re-run the baseline against the next rung's renders. Every axis in its § 3 clustering table must

move, and the cards above are the specification of how far.

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