music/GAME_SCORING_AND_ADAPTIVE_PRACTICE.md
CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
Canon served: _source/01_Tier_1_Foundation/T1_Audio_Spec [DRAFT v0.1].md §3.7 (adaptive
delivery) and §10.10, which records in writing that no dedicated audio comparator research has
ever been run and names the first of its four unanswered questions as "how shipped AAA titles
structure an adaptive music system's authoring surface." This document answers that question and
only that question; the other three (SFX library scale, VO routing against script churn, automatic
mix and loudness validation) stay boarded.
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 field and the operation.
WHAT THIS LANE ANSWERS. The four craft volumes that precede this one are all about the NOTES —
COUNTERPOINT_AND_VOICE_LEADING.md (how voices avoid destroying each other),
COUNTER_MELODY_AND_DIALOGUE.md (how voices talk to each other),
MOTIVIC_DEVELOPMENT_AND_PHRASE_GRAMMAR.md (how a cell becomes a melody),
LEITMOTIF_TECHNIQUE.md (how a melody becomes an identity). Every one of them assumes a piece of
music that plays from beginning to end. This document is about what happens when the player
interrupts it. It is the volume on FORM UNDER INTERACTION: how a cue is built so that a runtime
system can enter it, leave it, escalate it, layer it, interrupt it and loop it without the music
sounding broken, and how that constraint reaches back into the composition itself. Where it touches
a topic docs/proposals/MUSIC_COMPOSITION_DOCTRINE.md §6 already opened — vertical layering,
horizontal re-sequencing, the state model, the grid contract — it says so and supplies the practice
evidence, the measurable form, and the deviation, rather than restating the doctrine.
Stated in our own numbers first, because a research document that cannot say what is wrong is a
reading list.
Our composition layer has no adaptive fields at all. The pass-plan schema — the artifact that is
actually compiled and rendered, at build/audio/pass7/plans/*.json via
harness/music_gen/pass2_realise.py — carries exactly these top-level keys: schema_version,
pass, cue_id, public_name, theme_id, theme_family, cue_purpose_class, chapter_id,
region_page, cue_rows, brief, derivation, care, target_duration_s, tempo_bpm,
beats_per_bar, key, cycle, harmony, harmony_variants, pokok, pokok_variants,
sections, layers, novelty_schedule, hook, theme, phrases, statements,
melodic_schedule, silence_windows, leitmotif_references, instrumentation_plan,
declared_expectations, repairs, harmonic_plan. There is no state, no transition, no entry or
exit cue, no adaptive role, no motif-carrier declaration, no stinger. A repository-wide search for
adaptive_role, motif_carrier_stem, state_machine, transition_class, entry_cue and
exit_cue across harness/, registries/ and build/audio/ returns nothing. Every cue we have
authored to date is a linear through-composed piece that happens to loop.
The addressing layer does carry an adaptive vocabulary, and it is unconsumed.
build/audio/music_cue_table.csv holds 222 rows with adaptive_class (loop 90, adaptive 76,
oneshot 56), layer_role (bed 84, stinger 56, tension 33, combat 33, motif 10, bed_chapter_scope 6),
layer_mode (swap 132, base 84, ambience_stack 6), track_type (zone_bed 90, stinger 56,
tension_layer 33, combat_layer 33, motif_statement 10) and trigger_event (zone_enter 84,
threat_state_rise 33, boss_phase_enter 33, and six smaller classes). So the plan of record already
says that 33 combat layers, 33 tension layers and 56 stingers exist. None of them has been composed,
none has been scored, and the ledger records the whole table as having no in-engine consumer
(docs/PIPELINE_LEDGER.md §7 row F1).
T0_Theme_Registry has the columns and not the values. 38 rows, 45 columns. closure_policy,
motif_class and tier are populated 38/38; carrier_voice 30/38; plant_node 13/38;
diegetic_surface 4/38. But per_stem_role, tempo_bpm and bar_length are populated 0/38 —
the three fields any runtime scheduler needs before it can quantise anything.
The one seam object we own is the self-loop, not the state pair.
harness/music_gen/loop_seams.py composes a written turnaround so a cue wraps onto its own head
under five declared rules (S1 no second deviant, S2 no new pitch class, S3 the final chord prepares
the opening chord, S4 the harmonic signature survives, S5 measured against a no-turnaround control).
That is genuinely good craft and it is the wrong axis: it solves cue-to-itself and says nothing about
cue-to-cue. music_seams in harness/gates_config.json runs loop_seams.py --self-test, so the
gate proves the module works and never touches a transition.
The energy floors are whole-track statistics on a class vocabulary with a hole in it. From
build/audio/exemplars/instruments/DYNAMIC_ARC_VALIDATION.md §8: EXPLORATION 0.274 (n=8), BATTLE
0.502 (n=5), MELANCHOLIC 0.222 (n=4), CREDITS_TRIUMPH 0.293 (n=4), TITLE_CHARACTER 0.293 (n=3), BOSS
0.350 (n=2), TENSION 0.213 (n=2). SANCTUARY has no row, and harness/music_gen/mix_policy.py
CLASS_MAP maps SANCTUARY onto MELANCHOLIC's corpus. Our current flagship cue,
build/audio/pass7/plans/PASS7_FLORES_FALLS.json, is cue_purpose_class SANCTUARY at
target_duration_s 180.0 — so the borrowed floor sits directly on the critical path.
That is the diagnosis. The rest of this document is what the practice actually does about each of
those, and what of it we should take.
Read in full unless marked. Where a source was blocked or unavailable, that is stated on its line and
nothing in this document rests on it alone.
2014 (ISBN 978-0321961587). Publisher sample containing the full table of contents, the front
matter and the complete text of Chapter 1 read at
https://ptgmedia.pearsoncmg.com/images/9780321961587/samplepages/9780321961587.pdf . Chapters
cited by title and page range from that TOC: ch. 2 Breaking Down the Language of Interactive Music
(35), ch. 3 Spotting the Game (53), ch. 7 Composing and Editing Music Loops (125), ch. 8 Horizontal
Resequencing (143), ch. 9 Vertical Remixing (155), ch. 10 Writing Transitions and Stingers (165),
ch. 14 Real-Time Tempo Variation and Synchronization (211), ch. 15 Advanced Dynamic Music
Manipulation Techniques (219), ch. 16 Aleatoric Performance Techniques for Video Games (229),
ch. 17 Algorithmic and Generative Music Systems (237), ch. 18 Using Middleware to Create Advanced
Compositions (247), ch. 20 Composing Music with a Digital Audio Workstation (269). Book page:
https://www.oreilly.com/library/view/writing-interactive-music/9780133563528/
fourteen chapters. Publisher page: https://mitpress.mit.edu/9780262534499/a-composers-guide-to-game-music/ .
Book not held; chapter-level content sourced from Phillips's own author posts, which cite her page
numbers directly — p. 195 (Vertical Layering part 1) and p. 200 plus chapters 11-12 on interactive
versus procedural systems (Vertical Layering part 2, comment reply). **An earlier revision also
claimed repetition fatigue is treated in chapters 4, 9, 10 and 12; no fetched post says that, and
the claim is withdrawn — see §2.2.**
CRC Press/Routledge, 2016 (ISBN 978-1138021419).
https://www.routledge.com/Composing-Music-for-Games-The-Art-Technology-and-Business-of-Video-Game/Thomas/p/book/9781138021419 .
**UNVERIFIED ON RE-CHECK (2026-08-08): both routledge.com and taylorfrancis.com now return HTTP 403,
so the part/chapter structure below could not be re-confirmed against any publisher page. It is
reported as previously read, not as verified. Only the §2.4 ordering argument depends on it, and
that argument is marked structural there.** Structure as read: PRINCIPLES (ch. 1 Timeless Principles of Music
Scoring, ch. 2 Distinguishing Principles of Video Game Scoring, ch. 3 Applied Principles in Music
Design), TECHNIQUES (ch. 4 Basic, ch. 5 Advanced Music Scoring Techniques for Games), PROCESSES
(ch. 6 Composition, ch. 7 Production, ch. 8 Implementation), BUSINESS, EVOLUTION. The publisher's
sample PDF at routledge.com returned HTTP 403 and was not read.
Engine*, Focal Press/Routledge, 2015.
https://www.routledge.com/Game-Audio-Implementation-A-Practical-Guide-Using-the-Unreal-Engine/Stevens-Raybould/p/book/9781138777248 .
Named as the engine-side companion text; contents not read, and nothing below rests on it.
978-1-107-11687-0), foreword by James Hannigan. Book not held. The CUP front matter at
https://assets.cambridge.org/97811071/16870/frontmatter/9781107116870_frontmatter.pdf carries the
full contents: Introduction: Beyond the Candelabrum [1]; part i analysing video game music — 1 The
Video Game as a Source [13], 2 Methods of Analysis [33]; part ii critical perspectives — 3
Texturing and the Aesthetics of Immersion [57], 4 Music and Virtual Game Worlds [85], 5
Communication for Play [116], 6 Hollywood Film Music and Game Music [143], **7 Musical Play and
Video Games [178]**; Epilogue: Fun, Play and Music [201]; Appendix: How to Hear a Video Game [208].
Michael Austin's review at https://www.gamejournal.it/tim-summers-understanding-video-game-music/
(G|A|M|E 6/2017) confirms the chapter 7 subject independently: "Summers underlines in Chapter 7 the
importance of interaction in the analysis and overall understanding of video game music," with
*Ocarina of Time*'s played ocarina as the example. **CORRECTION LANDED 2026-08-08: an earlier
revision of this document attributed Hollywood/classical thematic practice to chapter 7 and
credited the book with a finding that leitmotif identification is easier with a reprise than with a
variation. The chapter number was wrong — Hollywood film music is chapter 6 — and the
reprise-versus-variation finding is in neither cited source and could not be verified anywhere. It
has been removed from §7 and nothing in this document now rests on it.**
25.3, September 2019. Full text read at
https://www.mtosmt.org/issues/mto.19.25.3/mto.19.25.3.medina.gray.html (PDF:
https://www.mtosmt.org/issues/mto.19.25.3/mto.19.25.3.medina.gray.pdf ). The single most useful
paper for this lane: it makes seam quality measurable on five named parameters.
PhD dissertation, Yale University, 2014.
https://www.academia.edu/7594328/Modular_Structure_and_Function_in_Early_21st_Century_Video_Game_Music
(referenced as the longer form of the same method; abstract only).
read in full at https://www.docswell.com/s/geekdrums/KRXX3J-GDC2017-magi (mirror:
https://slideshare.net/geekdrums/gdc2017-epic-and-interactive-music-in-final-fantasy-xv ). Vault
entry: https://www.gdcvault.com/play/1023971/Epic-AND-Interactive-Music-in
Gamasutra/Game Developer, 29 May 2003. Read in full at
https://www.gamedeveloper.com/audio/design-with-music-in-mind-a-guide-to-adaptive-audio-for-game-designers
https://awintory.medium.com/from-journey-to-erica-214355002896
Developer / author blog. Read in full at
https://winifredphillips.wpcomstaging.com/2017/08/15/video-game-music-systems-at-gdc-2017-tools-and-tips-for-composers/
. Summarises five GDC 2017 sessions: Steve Green on *ABZU*, Leonard J. Paul on *Vessel*, Sho
Iwamoto on *Final Fantasy XV*, Becky Allen on *Plants vs. Zombies: Heroes*, Paul Weir on *No Man's
Sky*.
Spyder to Sackboy: GDC 2021)". Read in full at
https://winifredphillips.wpcomstaging.com/2021/08/15/horizontal-resquencing-and-song-structure-for-game-music-composers-from-spyder-to-sackboy-gdc-2021/
Read in full at
https://winifredphillips.wpcomstaging.com/2020/07/14/game-composers-and-the-importance-of-themes-repetition-in-game-music-pt-2/
Developer. Read in full at
https://www.gamedeveloper.com/audio/music-game-plan-tactics-for-the-video-game-composer-part-four-
https://winifredphillips.wpcomstaging.com/2014/03/06/a-composers-guide-to-game-music-vertical-layering-part-1/
and https://winifredphillips.wpcomstaging.com/2014/03/12/a-composers-guide-to-game-music-vertical-layering-part-2/
https://www.gdcvault.com/play/1024068/-DOOM-Behind-the , video at
https://www.youtube.com/watch?v=U4FNBMZsqrY . Announcement coverage read at
https://80.lv/articles/gdc-behind-the-music-of-doom-with-mick-gordon ; the talk itself was not
viewed and no technique claim below is attributed to it.
Collaboration and Geese!", GDC 2011. https://gdcvault.com/play/1014617/From-MYTH-to-HALO-Marty —
**entry confirmed (speaker, year, title) but the session abstract and video are behind Vault
membership; nothing in this document may be attributed to it.** The only O'Donnell material
actually read is the GDC 2005 *Halo 2* audio-production session coverage at
https://www.gamedeveloper.com/audio/gdc-2005-report-audio-production-for-i-halo-2-i- , and §7 has
been narrowed to what that coverage supports.
https://bearmccreary.com/god-of-war/ and the PlayStation Blog theme breakdown at
https://blog.playstation.com/archive/2018/05/08/god-of-wars-composer-reveals-the-secrets-behind-five-themes-from-the-games-epic-soundtrack/
full at https://jasonyu.me/breaking-the-loop-botw/ (Game Developer mirror:
https://www.gamedeveloper.com/audio/breaking-the-loop-a-look-at-the-cinematic-music-of-breath-of-the-wild )
https://www.audiokinetic.com/library/2025.1.3_9037/?id=building_interactive_music_hierarchies_tips_best_practices
— HTTP 403, not fetched.
(https://www.audiokinetic.com/en/courses/wwise201/?id=setting_tempo_and_cues ), "Positioning Entry
and Exit Cues"
(https://www.audiokinetic.com/en/courses/wwise201/?id=lesson_1_re_sequencing_creating_variation_using_horizontal_approach_positioning_entry_and_exit_cues/ ),
"Adjusting the Default Transition Rule"
(https://www.audiokinetic.com/en/courses/wwise201/?id=lesson_6_implementing_transitions_part_i_adjusting_default_transition_rule/ ),
"Configuring a Music Switch Container"
(https://www.audiokinetic.com/en/courses/wwise201/?id=configuring_music_switch_container ),
"Configuring the Transition Segment"
(https://www.audiokinetic.com/en/courses/wwise201/?id=using_transition_segments_configuring_transition_segment/ )
— all HTTP 403, not fetched. Audiokinetic's own community Q&A threads
(https://www.audiokinetic.com/qa/9281/sync-to-last-exit-position-and-have-transition-segments and
https://www.audiokinetic.com/qa/10882/music-exit-source-next-grid-should-include-exit-cue-falls-grid )
were surfaced by search but likewise not fetched. **Consequence, stated plainly: every Wwise
behaviour described in §3 below is taken from practitioner documentation that reproduces it, not
from Audiokinetic's own pages. It is second-hand and marked as such at the point of use.**
Music For Video Games Part 3". Read in full at
http://www.gamesounddesign.com/in-depth-creation-of-dynamic-music-in-a-video-game.html ,
http://gamesounddesign.com/in-depth-creation-of-dynamic-music-in-a-video-game-page-four.html and
http://gamesounddesign.com/making-interactive-music-for-games-part-three.html
https://geraldclarkaudio.medium.com/space-shooter-adaptive-music-with-wwise-and-unity-5d7e95d0af56
(working-with-instruments, authoring-events, glossary) returned empty bodies; the site is
JS-rendered.** FMOD behaviour in §3.3 is therefore taken from third-party tutorial material:
Stephen Swift, "FMOD, an Audio Engine for Video Games, Adapted for Theater"
(https://www.usitt-sound.org/wp-content/uploads/2020/09/FMOD_Adapted_for_Theater.pdf ), the SAE
course notes at https://limulo.github.io/game-sound-sae2017/fmod.html , and the "Adaptive Music in
FMOD Studio" tutorial series ( https://www.youtube.com/watch?v=7PpSYcigCUQ tracks and tempo
markers; https://www.youtube.com/watch?v=DgzgAXe-6fI transition markers and logic).
https://splice.com/blog/adaptive-music-video-games/ — read in full; used only for dated system
history (iMUSE 1991, Banjo-Kazooie 1998), not for craft rules.
US patent filed 1994. https://en.wikipedia.org/wiki/IMUSE . The Splice history above dates its
debut to *Monkey Island 2* (1991) and names the team as Land, McConnell and Clint Bajakian; the
patent is Land and McConnell.
Several search results for "how long should a game music loop be" and "combat music best practices"
were content-marketing blog posts on AI-music and stock-music sites. They agree with each other and
cite nobody. No number in this document comes from them. Where this document gives a duration it
is either from a named practitioner source, from a measured corpus row, or it is labelled CRAFT
CONSENSUS and given as a band rather than a value.
Sweet's Chapter 1 builds the comparison the whole field starts from (*Writing Interactive Music*,
Table 1.1, p. 16): film is passive watching, a console game is active interaction; film averages two
hours against ten-plus for a console game; film is played once, a game many times; film is linear
with one beginning, middle and end, a game nonlinear with multiple outcomes; film carries about one
hour of music, a console game two to three hours. Table 1.2 (p. 17) extends it: a casual game of 2-3
hours carries 15+ minutes of music, a console game of 10+ hours carries 2-3 hours, an MMORPG of 50+
hours carries 15+ hours.
Those tables matter to us directly. Josh's expanded bar is twelve to twenty tracks per chapter at two
to seven minutes each across seventy-nine nodes (T1_Audio_Spec §2.1) — 950 to 1600 tracks, and at
the midpoint of the duration band that is roughly 71 to 120 hours of music. **That is between five
and eight times the entire music budget Sweet records for an MMORPG.** The masterpiece program
already answers this with a leitmotif economy rather than a library (motif × palette × purpose class,
each authored once and combined), and this document's contribution is the second half of the same
answer: an adaptive architecture is the other multiplier, because a cue that can be re-sequenced and
re-layered produces many musical experiences from one composed artifact. The arithmetic is not a
footnote; it is the argument for taking this lane seriously.
The repetition problem is the founding constraint and it is named as such. Sweet reproduces the
attribution to George "The Fat Man" Sanger — repetition is the problem — and states the mechanism
plainly: the play experience is typically far longer than the music can support (p. 18). Everything
in the interactive toolbox exists to buy mileage against that arithmetic.
Sweet's taxonomy of the composer's toolbox (ch. 2, pp. 44-50) is the cleanest available list of what
a runtime system can actually do to music, and it is broader than the vertical/horizontal pair we
have been working with:
Chapter 3's scoring-technique ladder is the one we should map ourselves against: noninteractive game
score, horizontal resequencing, vertical remixing, MIDI scores, advanced interactive scores (pp.
62-65). We are on the first rung.
The music-function list (ch. 1, "Exploring Music Function within Games", pp. 26-27) is the
functional grammar this document uses for cue classes in §4. Sweet's list includes communicating an
event to the player — where he defines a musical stinger as a short musical phrase of **3 to 12
seconds** acting as a musical exclamation point — emotionally connecting a player to a game through
an iconic theme, and enhancing narrative and dramatic story arcs.
The hook vocabulary. Sweet: the game engine makes requests to the music engine to change state
or fire a stinger, and those requests are called hooks because the game is hooking into the music
engine (p. 28). His list of triggers a composer should expect: changing the emotional state (explore
to combat), moving to a different location, number of enemies attacking, player health remaining,
time of day or weather, proximity of an enemy, solving a puzzle or finding treasure, killing a boss
or finishing a stage (p. 28). **Every one of those exists as a real game-state source in our own
design, and none of them is wired to music.**
Serendipitous sync is Sweet's name for a score with no synchronisation at all — music that begins
on area entry and then runs statically, ending when it ends, like turning on the radio during a film
(p. 28). He names the original *Bioshock* (2007) as a shipped example. This is worth naming precisely
because serendipitous sync is exactly what our current pipeline produces, and Sweet's framing
lets us say so without pretending it is a failure state: it is the first rung of a real ladder and a
shipped AAA title stood on it.
The conceptualisation process (ch. 1, pp. 29-32) is a seven-step ordering that our own program
should be able to answer for every chapter: gather and assess materials; prioritise primary music
objectives; create an asset list; define interactive elements in the score; create a supporting audio
style guide; create an audio design document; revise. Step 4 — define the parameters in the game that
control the elements of the score — is the step we skip. Step 5's style-guide criteria (genre, tempo,
instrumentation, size of ensemble) are already carried far more richly by our per-culture register
cards in MUSIC_COMPOSITION_DOCTRINE §4, and Sweet's own note that a globe-hopping game like
*Uncharted 2* may need a different style guide per part of the game is a direct precedent for the
per-node register card.
Phillips's operative definition is that vertical layering works on the principle of simultaneous,
stacked musical components ("Music Game Plan", part four). Her worked example is a six-layer
interactive track for *LittleBigPlanet 2: Toy Story*, and the craft warning is the useful part: all
six layers have to be able to play at once, which made the composition genuinely difficult. The
payoff she names is combinatorial — the layers are designed to be played in many different
combinations, which is what gives the implementation team choices.
Two consequences follow, and both are constraints on the WRITING rather than on the mix.
split afterwards. The doctrine already states this as its standing warning against lazy vertical
work (MUSIC_COMPOSITION_DOCTRINE §6.1: compose the piece, then cut it; never assemble layers and
call the sum a piece), and Phillips's Toy Story case is the practitioner evidence for it.
low-keyed atmosphere and deliver high energy — the same material serving both ends of the intensity
range. **That is precisely the problem our per-class energy floor is trying to police from the
outside**, and Phillips's answer is that it is solved in the writing, by choosing material that
reads correctly at both densities.
Sweet's Chapter 9 is the complementary technical treatment and gives the sub-topics a vertical
system must decide: deciding how many layers to use (p. 158); additive versus individually controlled
layers (p. 159); fade times (p. 160); layer anatomy (p. 161); non-synchronisation of layers (p. 162).
That last one is the interesting one and it is not in our doctrine: layers need not be the same
length or start together. A layer that is deliberately out of phase with the base is a standard
variation generator.
Repetition fatigue is Phillips's named through-line, and the one remedy her posts state directly
is procedural variation: a system that "avoid[s] repetition fatigue by virtue of music that randomly
or unpredictably varies its content," which she distinguishes from interactive systems that "are
designed to always react in direct accord with the state of gameplay, without any random or
unpredictable variables" (Vertical Layering part 2, comment reply, pointing at chapters 11-12 of *A
Composer's Guide*).
THE LANDMARK RULE — CRAFT CONSENSUS, attribution withdrawn 2026-08-08. An earlier revision of
this document quoted "Phillips's sharpest single rule" as: any repeating music must be carefully
constructed to avoid landmarks that would alert listeners to the looping nature of the work, and
credited repetition fatigue to chapters 4, 9, 10 and 12 of *A Composer's Guide*. Neither survives a
source check. All four Phillips items in §1.3 were fetched and read on 2026-08-08 — Music Game Plan
part four, Vertical Layering parts 1 and 2, and Repetition in Game Music part 2 — and **none of them
contains the word "landmark" or that rule in any form**, and none of them names chapters 4, 9, 10 or
12. What the posts do carry is page 195 (Vertical Layering part 1: "the concepts that you'll find in
my book, beginning on page 195") and page 200 with chapters 11-12 (part 2). The book is not held, so
the rule cannot be attributed to it either.
The underlying craft point stands on its own and is retained at CRAFT CONSENSUS with no citation: **a
"landmark" is a memorable, positionally unmistakable event** — a solo entry, a cymbal crash, a
distinctive fill — and its function inside a loop is to start a clock in the listener's head, which
is what converts repetition into perceived repetition. It is corroborated indirectly by the *Breath
of the Wild* evidence in §4.1 (silence long enough that the listener stops anticipating music is
precisely the removal of positional landmarks) and it remains a writable, checkable property that is
not in our rubric. R10 is therefore a CRAFT-CONSENSUS rule, not a sourced one, and is marked as
such at the point of use.
Her GDC 2021 material ("From Spyder to Sackboy") supplies the cleanest available answer to the
question "what are the segments?": use song-form sections. Introduction plays once at the beginning;
verse-chorus combine as the main looping section; a bridge is a shorter loop triggered at specific
gameplay moments; an interlude is inserted after particular events; an outro plays at level
completion. Her stated reason is the one that matters: song structure provides well-defined segments
that are inherently dissimilar, so jumping from one segment to the next feels dramatic rather than
arbitrary. Her *Sackboy* sequencing is purposeful rather than shuffled — intro, main loop, bridge at
a dramatic moment, interlude, main loop return, outro — and she frames the progression as a reward:
as the player advances, the music advances to reveal new content.
That reward framing is directly transplantable to a 79-node game with a 12-tier mastery ladder,
and it is a better fit for our structure than the intensity-ramp framing that dominates the shooter
literature.
Thomas's *Composing Music for Games* is organised PRINCIPLES → TECHNIQUES → PROCESSES → BUSINESS →
EVOLUTION, and the ordering is the argument: chapter 1 is Timeless Principles of Music Scoring
(everything true of scoring any medium), chapter 2 Distinguishing Principles of Video Game Scoring,
chapter 3 Applied Principles in Music Design, and only then chapter 4 Basic and chapter 5 Advanced
Music Scoring Techniques for Games. The publisher's own framing is that the book blends aesthetic,
technique, technology and business.
The book itself was not read (the Routledge sample returned 403), so this document takes exactly one
thing from it and marks it as structural rather than detailed: **the ordering is a corrective we
need.** Our audio corpus is technique-rich and principle-thin in exactly this dimension — we have a
measurement rig, a rubric, a doctrine and a licence law, and we have no written statement of what
adaptive music is FOR in this game beyond "the composition must survive interactivity"
(T1_Audio_Spec §3.7). Whitmore's article in §5.1 below supplies that missing statement from a
source we did read.
Our doctrine's §6.1 vocabulary is correct as far as it goes. This section pins it to the object model
the two dominant middlewares actually implement, because that object model is the de-facto industry
authoring surface — the thing T1_Audio_Spec §10.10 asked about — and because our own MusicDirector,
if we build one, will be judged against it.
Practitioner documentation of the Wwise music hierarchy (gamesounddesign.com, "Making Interactive
Music For Video Games Part 3" and "Dynamic Music Creation Using Wwise"; second-hand per §1.4)
describes a music segment carrying:
upbeat — which can be played over the tail of the outgoing segment;
which is played over the head of the incoming segment;
entry cue are located.
The authoring instruction that follows is concrete, and it is stated verbatim in one of the tutorial
sources — "Dynamic Music Creation Using Wwise" part 1, which is where it comes from and the only
fetched source that carries it (an earlier revision said "repeated in every tutorial source read",
which the check does not support): "Before rendering each segment in my DAW, I generally insert a few
bars of silence between them to capture the reverb tails and other unfinished notes, avoiding any
abrupt cuts. These extra bars are used as 'post-exit regions'; a segment's post-exit is played back
over the following segment, and this helps blend the segments nicely."
This is the single most transferable piece of the whole lane and we already half-have it. Our
doctrine §6.4 requires exactly this ("Deliver tails as real audio past the exit cue; never bake a
fade into a loop file") and T1_Audio_Spec §8.5 carries it as format contract. What we do not have
is the field: no plan, no theme row and no renderer knows where a cue's entry and exit cues sit, so
the tail cannot be delivered separately because there is nothing to deliver it relative to.
Phillips's and the tutorials' shared framing for the composer is: think in blocks — intro, loopable
body, variations, hits, tails — with each module usable alone and combinable with others.
A transition in Wwise, as described in the practitioner documentation, is not a fade; it is a rule
addressed by (source, destination) with these parts:
grid, next cue, next custom cue, or the segment's exit cue;
as the playing segment, the last position played, or a specified playlist item;
settings;
its own pre-entry and post-exit behaviour;
alone.
Two asymmetries in that model are load-bearing and are easy to get wrong. First, **the source sync
point may be a grid position but the destination sync point must be a cue** (Audiokinetic community
Q&A, surfaced via search summary, not fetched — treat as second-hand). That is what makes entry-cue
placement a compositional decision rather than a bookkeeping one: the entry cue is the note the
incoming music is felt to start on, and everything upstream of it is pickup. Second, the rules are
resolved by specificity: a matrix of pair-specific rules sits over a default rule, and the most
specific match wins.
Whitmore, writing in 2003, already ranked the three strategies by what they cost and buy
("Design With Music In Mind"): cue-to-cue transitions on musical boundaries are simple but musically
limited; layering gives continuity but handles rapid cue changes badly; a transition matrix enables
custom transitions between any pair, allowing dramatic yet natural motion, and he names it as ideal
for orchestral scores. **Our Tier-H lane is orchestral and horizontal-first by ruling
(MUSIC_COMPOSITION_DOCTRINE §6.2), which puts us squarely in the case Whitmore says needs the
matrix** — and §6.6 records that the engine has no native transition-matrix object, so we own it.
FMOD Studio expresses the same problems on a different geometry, and the differences are instructive
(third-party tutorial sourcing per §1.4):
jumps to a destination marker.
anywhere inside the region and the condition holds, the jump fires — with quantisation
constraining the jump to the musical pulse. This is the crucial one: it is how a system reacts
promptly to a game event while still moving on a bar line.
and the destination — FMOD's transition segment, with room for additional content, automation and
crossfades.
our design does not have an equivalent for, and it is the correct answer to "hold the music here
until the scripted thing finishes" — a boss phase that ends on a player action, a cutscene whose
length is not knowable, a ceremony that waits for the player to step forward.
The taxonomy difference is worth stating once: **Wwise composes a piece out of segments; FMOD carves
a piece out of a timeline.** They express the same five operations (wait for a boundary, jump, bridge,
hold, layer). Any MusicDirector we write should implement all five, because a design that omits "hold"
will discover it needs it during the first scripted boss phase.
Definitions converge across sources. Sweet: a short musical phrase of 3-12 seconds acting as a
musical exclamation point, used to communicate an event (ch. 1 p. 27, ch. 10 pp. 172-173, where he
splits them into synchronised and non-synchronised). The Wwise practitioner documentation adds the
implementation facts: stingers sync to the playing music via cues, they inherit segment-level
benefits such as instrument variation, they can be assigned hierarchically and overridden per
context, and a ducking bus can pull the bed down under the stinger for a breakdown effect.
The craft constraint that our doctrine states and the middleware cannot enforce for us: **a stinger
must be harmonically and rhythmically compatible with every bed it can land on**
(MUSIC_COMPOSITION_DOCTRINE §6.1, and §6.5's head-motif stinger rule restricting them to the
region's tonic and relative with beat-quantised firing). Sweet's synchronised/non-synchronised split
is the honest fallback: a stinger that cannot be made compatible with every bed is written
non-synchronised and pitched neutrally, or it is not a stinger.
Our cue table already declares 56 of them. **Not one has been composed, and no compatibility check
exists.**
The playlist container is the mechanism behind the "random playlists, track variation, and
alternative start points" and "time variation" that Sweet lists in ch. 18 (pp. 255-256). The
practitioner-documented behaviour: segments are grouped into playlists with sequence, random,
shuffle and step behaviours, weights, and loop counts, so a state maps to a POOL of segments rather
than to one file, and the same state can sound different on its third visit.
This is the correct structural answer to the repetition problem for zone beds, and it is cheap
relative to composing more music, because a variation is a re-orchestration or a re-ordering of
material that already exists.
Two further mechanisms from Sweet ch. 18 are worth keeping in view even though they cost more:
alternative start points (the same cue entered at a different section on re-entry) and time variation
(the same material at a different tempo or with different rests).
This is the section the brief asked for, and it is the one where the literature is thinnest and
craft consensus does most of the work — so the register is explicit throughout. The class names below
are ours, from harness/music_gen/mix_policy.py CLASS_MAP and the exemplar sheet vocabulary:
EXPLORATION, BATTLE, BOSS, SANCTUARY, TENSION, MELANCHOLIC, TITLE_CHARACTER, plus CREDITS_TRIUMPH in
the corpus sheet.
For each class: what the class is FOR (Sweet's function grammar), the FORM that serves it, the
DENSITY and length posture, the ENTRY and EXIT behaviour, the MOTIF policy, and the failure mode.
Function. Establish place and support unscripted, self-paced activity of unbounded duration.
Sweet's variable-length-of-experience problem lands hardest here: the composer cannot know whether
the player will spend ninety seconds or ninety minutes in a zone.
Form. Non-teleological. The material must be able to stop being interesting-in-a-forward-direction
without sounding unfinished, because it will be interrupted at an arbitrary point and re-entered
later. Song-form with a strong chorus is the wrong shape here; the doctrine's cyclic and
ostinato-based registers are the right one. **This is the one class where our Balinese-derived cyclic
grammar (pokok, colotomic strokes, kotekan) is not a cultural accommodation but the structurally
correct choice**, and that is a point in favour of the register-first approach rather than a
concession.
Density. The most important practice finding in this whole document, and it cuts directly against
a global energy floor. Two of the most admired open-world exploration scores of the modern era are
built on SILENCE as a structural element, not as an absence:
separated by silences long enough that the listener stops perceiving rhythm and therefore stops
anticipating more music — which is precisely why it does not fatigue the way a looped track does.
He is careful that this is not ambient: each musical cell is a little melody. He also documents
fragmentation as a compositional device rather than a budget one — the Temple of Time theme slowed
and fragmented to the point of near-unrecognisability — and gives measured contrasts. His
traditional-loop range runs 0:26 to 1:37, and the endpoints are **Super Mario Bros. 3 at 0:26,
Twilight Princess at 0:36 and Skyward Sword at 1:37** — a cross-franchise range, not a Zelda-only
one as an earlier revision stated. Within BotW itself he contrasts Prince Sidon's theme at "a 32
second long loop" against Mipha's, "a track, which has a distinct beginning and ending, with no
repeated section."
what make each cue land when it finally arrives. (This one is CRAFT CONSENSUS in secondary sources
rather than a composer statement; treat it as weaker evidence than the BotW analysis.)
The doctrine already names silence as a first-class state (§6.3) and cites the *Breath of the Wild*
horse-riding cue's absent percussion. What is missing is the arithmetic: if silence is a state,
somebody must declare how long it lasts and how often it returns, and no field anywhere in our stack
carries a silence duty cycle.
Length. CRAFT CONSENSUS, band not value: exploration material wants either a long arc (so the
loop point is far away) or extreme fragmentation (so there is no loop to notice). The middle — a
two-minute loop with a landmark in it — is the fatigue-maximising choice, because it is long enough
to be memorised and short enough to repeat many times inside one dwell. The landmark constraint
(§2.2, CRAFT CONSENSUS) is what binds here, not a duration number.
Entry and exit. Entry on zone boundary, quantised or not depending on whether anything is
already playing. Exit is usually pre-empted by escalation to TENSION or BATTLE, so the exploration
cue's job at exit is to have somewhere musically graceful to be interrupted — which is an argument
for frequent exit cues (every phrase, not every cycle).
Motif policy. Region and family cells (our Tier C), quoting the parent head cell where the region
carries a Tier-A payoff (MUSIC_COMPOSITION_DOCTRINE §1.4). Not the place for the full sixteen-bar
statement.
Failure mode. Sedation on one side and the wallpaper loop on the other. Our energy floor guards
one of the two.
Function. Signal state, sustain arousal, and mark resolution.
Form. Short, high-onset-density material with a fast phrase quantum. The doctrine's 4-bar quantum
for combat (§6.4) is correct and the reason is reaction time: the player must feel the music respond
within a musically short window or the response reads as coincidence.
Density. Our measured BATTLE floor of 0.502 is nearly double EXPLORATION's 0.274 and it is the
only class-level number in our corpus with enough rows (n=5) to be worth much. That relationship —
battle roughly twice exploration in the p10 energy sense — is the useful finding, not the absolute.
Entry. The practice consensus is immediate or next-beat entry for combat start; a bar-quantised
combat entry at a slow tempo is too late and reads as the music noticing the fight after the player
did. The counter-consideration from Wintory's *Assassin's Creed Syndicate* work is that entry should
be gated by THREAT ANALYSIS rather than by mere enemy presence: the system was built so combat music
does not trigger against weak enemies. That is a design rule with a real cost — a threat model — and
it is the difference between a score that comments on the fight and a score that shouts at every rat.
Exit. The hardest problem in the class, and the one every source treats as a real failure risk.
The doctrine's answer (§6.3) is hysteresis: rise fast, fall slow, escalate on the next bar, de-escalate
only after a 6-10 second clear timer and then only at a 4- or 8-bar phrase boundary, with a declared
maximum de-escalation latency per region. That rule is sound and it is not implemented anywhere.
Wintory's *Banner Saga* framing adds the complementary idea: asynchronous implementation lets a
musical segment complete before transitioning, which maintains flow — the music finishes its
sentence rather than being cut off mid-word.
Motif policy. Fragmentation is the combat-layer form of the transformation catalogue
(MUSIC_COMPOSITION_DOCTRINE §1.6). The melody must still be present: God of War's escalation works
by INSTRUMENTAL MIGRATION. In McCreary's own PlayStation Blog theme breakdown the antagonist's
theme is introduced on an unmistakable solo colour — "his theme is played by a scratchy Hardanger
fiddle, above a backdrop of chugging nyckelharpa and hammered dulcimers" — which is what makes any
later re-scoring of the same line legible as escalation rather than as a different piece.
Two source corrections landed 2026-08-08. First, that article names the character "the Stranger",
not Baldur, and it does not describe the fiddle-to-strings-to-brass migration; the migration is our
doctrine's reading (MUSIC_COMPOSITION_DOCTRINE §6.5) and should be cited as ours, not as
McCreary's words. Second, Kratos's reduction is THREE notes, not six — McCreary writes that
"Kratos' Theme is layered, but not complex. In fact, it is arguably at its most effective in the span
of only three notes." The six-note figure was an error inherited from MUSIC_COMPOSITION_DOCTRINE
§6.5, which still carries it and should be corrected at the source. The craft point is unchanged and
if anything sharpened: the action shorthand is shorter than the theme by a large factor, which is why
it survives fragmentation. **Additive layering used for melody produces the failure mode where the
quiet states have no tune at all.**
Failure mode. Flicker (state oscillation on a straggling enemy), late entry, and the eternal
combat loop that outlives the fight.
Function. Multi-phase dramatic form under a scripted structure — the one place in a game where
the music can be nearly as through-composed as film score, because the phase graph is authored.
Form. The doctrine already rules film-scoring treatment for multi-phase bosses: intro cue, phase-1
cue, transition or chase cue, final-arena cue that states the hero theme (§6.2). The FFXV deck
supplies the shipped-title shape for the same problem. Iwamoto's slide 27 gives the structure and the
rule together, and the rule is stated per transition, not per section — a precision an earlier
revision of this document lost:
"Main Loop" "Pre-end" "End" structure"Main loop" to "Pre-end" : Music first"Pre-end" to "End" : Synchronization firstSo the leaving of the main loop waits for the music, and the leaving of the pre-end waits for the
game. The pre-end is the section that makes that affordable: it is one of three elements the deck
names as required for epic interactive music, alongside tempo-and-time-signature-change support and
custom sync points — because, as slide 26 puts it, "Every beat/bar/grid couldn't work" for a
complex score, while a per-song custom sync point "enables musical transition" at the cost that you
"may have to wait 16 bars (about 14sec)". (An earlier revision described the pre-end as carrying
"dense sync points"; the deck says custom sync points, and the whole point of slide 26 is that
maximum density — every beat and bar — is the option that does not work. The corrected reading is
that the pre-end is where sync opportunities are placed close enough together to bound the wait, not
that sync points are dense in general.) **That is the cleanest available answer to the "the engine
will fade the one cadence the game has been saving" problem** our doctrine flags in §3.7, and it is
better than our current answer
(scripted non-interruptible payoff), because it does not require the game to stop being interactive.
Density. Our BOSS floor of 0.350 rests on n=2 and should not be treated as a number.
Entry and exit. Scripted. This is the class where FMOD's sustain point earns its keep — hold at a
declared point until the phase-change callback releases it.
Motif policy. The most expensive operations belong here: combination (two themes in
simultaneous counterpoint at climax), closure change, and the payoff cadence. Budget per
MUSIC_COMPOSITION_DOCTRINE §1.6-§1.7.
Failure mode. A phase transition that lands mid-phrase; a final statement that the player's win
cuts off.
Function. Safety, welcome, rest, and — uniquely — REWARD. This is the class where the player is
not being asked to do anything, which makes it the class where the music can be listened to.
Form. This is the one class where full song form and a real cadence are not only permitted but
expected. It is where the hummable A-section lives, where the theme is stated plainly, and where
Phillips's song-structure resequencing (intro / body / bridge / interlude / outro) applies most
directly. The thirty-year bar is won or lost here more than anywhere else — the SNES-era and
Zelda-lineage exemplars in T1_Audio_Spec §2.1 that "live outside their games" are overwhelmingly
town, village, sanctuary and overworld-rest themes, not battle music.
Density. Peaceful and still uplifting, per the relayed Josh ruling recorded in
DYNAMIC_ARC_VALIDATION.md §8 — the serene-waterfall distinction, and the ARPG framing that every
track needs energy scaled by theme. The instrument correctly refused a single global floor of 0.34
and published per-class floors instead. **But SANCTUARY has no floor of its own; it borrows
MELANCHOLIC's 0.222**, which is the floor of the class whose defining property is stasis. See §11.3.
Entry and exit. Slow and unquantised is acceptable here; the player is not in a hurry and neither
is the music. This is the natural home for a written cadential exit (MUSIC_COMPOSITION_DOCTRINE
§6.4).
Motif policy. Full statements permitted for Tier A. Diegetic placement belongs here too — a
sanctuary is where an in-world player, singer or instrument can plausibly be the source of the music,
which is Sweet's diegetic/source-music category (ch. 1 pp. 23-24) and the surface our doctrine's
plant-node rule wants (T1_Audio_Spec §10.3).
Failure mode. Sedation, and the ambient wash that has no tune in it.
Function. Anticipation without commitment — the state between exploration and combat, and the
state of stealth, dread, and unresolved threat.
Form. Suspension. Harmonically unresolved, rhythmically implied rather than stated, texturally
active at low amplitude. Our measured TENSION median flow_p10 of 0.218 and floor of 0.213 (n=2)
are the lowest in the corpus outside MELANCHOLIC, and that is correct rather than a defect: the class
is DEFINED by withholding energy.
The named craft observation worth carrying, from the horror-audio literature and consistent with
the class's function: the return to quiet after intensity is often more unsettling than the intensity
itself, because the player remains aroused while the threat indicator has gone away. That makes
TENSION the natural DESTINATION state after a combat de-escalation, rather than a direct fall back to
EXPLORATION — a three-state ladder (explore → tension → battle) with asymmetric transitions, not a
two-state toggle.
Entry and exit. Fast in, slow out. This class absorbs the hysteresis.
Motif policy. Fragmentation and disguised derivation. This is where our reveal-gate firewall does
its work: the antagonist pattern before Ch 38 may only appear here, fragmented, in a different local
carrier each time, never as the phrase and never as a swell (LEITMOTIF_ARCHITECTURE §3.4).
Failure mode. Reading as sedation to an instrument that measures energy without measuring
motion. Our own headline valley axis is ENGAGEMENT rather than energy level precisely because of
this, and DYNAMIC_ARC_VALIDATION.md §8 says so.
Function. Grief, loss, aftermath, memory. Usually attached to a scene rather than to a system
state.
Form. Through-composed more often than looped. Yu's BotW observation is the model: Mipha's theme
is through-composed with a distinct beginning and ending and no repeated section, while Prince
Sidon's theme is a 32-second loop — and the difference tracks function, not budget.
Density. Our floor is 0.222 (n=4), and the corpus row that anchors the low end — *An Unwavering
Heart* at flow_p10 0.106 — is squarely in genre. DYNAMIC_ARC_VALIDATION.md §8 uses it as the
proof that the low-energy tail is not an artifact of ambient outliers.
Motif policy. Augmentation (weight, memory, ceremony, death) and reharmonisation. Per the
transformation catalogue.
Failure mode. Applying the hummability checklist to a class whose members are frequently not
one-hearing hummable tunes. The doctrine already guards this with motif_class (§1.3).
Function. These are the two classes that are essentially LINEAR music inside an interactive
product, and they should be treated as such rather than forced through the adaptive apparatus.
TITLE_CHARACTER is the game's calling card and the class most likely to be heard outside the game —
the concert-performable bar (T1_Audio_Spec §2.5) lands here first. Our floor is 0.293 (n=3), and
the corpus's low outlier is the *Deus Ex* main title at 0.137, which is in genre and is a reminder
that a title theme is permitted to be quiet and still be the calling card.
CREDITS_TRIUMPH (floor 0.293, n=4) is the payoff class: the one place where the withheld authentic
cadence on the tonic may finally land, and where motif combination as reveal is cheapest because
nothing is interruptible any more.
Both classes want a real ending. Neither should carry a loop seam at all, and loop_seams.py's
turnaround rules should not be applied to them.
| class | form | loop posture | entry sync | exit sync | motif policy | dominant failure |
|---|---|---|---|---|---|---|
| EXPLORATION | cyclic, non-teleological, or fragmented-with-silence | long arc or no arc; never a memorable-landmark medium loop | zone boundary, unquantised OK | frequent exit cues (per phrase) | Tier-C cell, parent quotation | sedation / wallpaper |
| BATTLE | short, dense, 4-bar quantum | tight loop plus variation pool | immediate or next beat, threat-gated | hysteresis, phrase boundary, declared max latency | fragmentation; carrier migration, never mute | flicker / late entry / outliving the fight |
| BOSS | authored phase graph; Main Loop → Pre-end → End | no free loop; phase-scoped | scripted | scripted, sustain-point held | combination, closure change, payoff | cadence cut off by the win |
| SANCTUARY | song form; real cadence permitted | intro / body / bridge / interlude / outro | slow, unquantised | written cadential exit | full Tier-A statement; diegetic surface | sedation / wash with no tune |
| TENSION | suspension; motion without energy | loop or bed | fast in | slow out; destination of de-escalation | disguised derivation, reveal-gated | misread as sedation |
| MELANCHOLIC | through-composed more often than looped | often no loop | scene-scripted | scene-scripted | augmentation, reharmonisation | wrong bar applied (hummability) |
| TITLE_CHARACTER | linear concert form | none | n/a | n/a | full statement | forced through adaptive apparatus |
| CREDITS_TRIUMPH | linear; the payoff | none | n/a | n/a | combination, authentic cadence | spent too early |
From "Design With Music In Mind" (2003), and stated as principles rather than techniques:
pacing; it is one of the instruments that SETS pacing.
it does not demand it the way visuals do.
admission that no join was written.
His Music Design Document is the deliverable he asks GAME DESIGNERS to give composers, and it is
the artifact our program does not have: which sections need music; the desired style and mood range;
when music should be ambient versus intense; appropriate use of character themes; which gameplay
aspects benefit from musical accents; the technical integration approach. In our structure, most of
that already lives distributed across the region page, the register card and the theme registry —
which is an argument for a derived view rather than a new document.
His technology taxonomy is dated (waves in 1-4 measure segments versus MIDI with custom banks versus
a hybrid) but the underlying trade is not: **granularity buys responsiveness and costs musical
coherence**, and every system since has been an attempt to buy back the coherence.
Doctrine §6.3 already rules the split: a discrete STATE decides which music, a continuous INTENSITY
parameter decides how much of it, and collapsing them fails because a single float cannot express
"boss phase 2" and a single enum cannot express a swell. The shipped-title evidence supports both
halves independently, though the FFXV half needs stating precisely. The deck describes chocobo riding
as "Speed based mode transition" — a continuous game value selecting between DISCRETE modes, where
each mode then sets "layer volumes" and "volume, pitch, LPF" (slides 14-16). So the continuous
parameter is quantised into states before it reaches the mix; it is not a continuous crossfade across
layers. An earlier revision of this document described it as FFXV driving layers directly on a
continuous parameter, which overstates the deck. The genuinely continuous-parameter case in the
evidence is Becky Allen's *Plants vs. Zombies: Heroes*, which transposed the running MIDI score off
the score differential — "If you're up by five points all the MIDI music went up a whole step, and if
you're up by ten points all the MIDI music went up two whole steps" (Phillips, GDC 2017 write-up).
The doctrine's state/parameter split still holds; the correction is that a shipped title may
legitimately implement the "parameter" half by bucketing it into states.
Two additions from the practice that our state model does not carry:
when slowing down and about 1.5 beats when accelerating. The system does not have one transition
time; it has one per direction, chosen dramatically.
combat music triggering against weak enemies. Our trigger_event vocabulary already has
threat_state_rise on 33 cue rows, which is the right name; it needs a threat FUNCTION behind it.
Sweet's hook list (§2.1) is a list of game systems that must expose state to audio. In our project
those systems exist and are canon: integrity bands, companion loyalty, mastery tier, rarity grade
awards, boss phase, threat, zone, node, era, weather-and-time where the region page declares it. The
cue table's trigger_event census shows the design already reaching for them —
adaptive_exploration_reward 14, rarity_grade_award 14, creature_first_sighting 14, node_entry
14, beat_enter 10. The gap is not design. It is that no consumer exists, and a trigger name
with no consumer is a promise, not a system.
This is the highest-value import in the document, because it converts the one part of the adaptive
contract our doctrine explicitly left to human judgement into something an instrument can score.
MUSIC_COMPOSITION_DOCTRINE §6.9's transition acceptance rubric currently reads: every ordered state
pair is a test row, fired at three offsets, judged on captured playback by a fresh-context critic for
audible discontinuity, pitch clash, late melodic entry, and motif-carrier occupancy. That is a sound
rubric with one problem — it does not scale, because the number of ordered pairs grows quadratically
in states and every row costs a human listen.
Medina-Gray's method makes four of those five judgements computable from symbolic material.
From "Analyzing Modular Smoothness in Video Game Music" (MTO 25.3, 2019). Smoothness is the quality
of two convergent modules fitting well together; disjunction is its opposite; both are legitimate
products of modularity and neither is universally preferable. Seams are analysed on five aspects,
separately, and deliberately NOT reduced to a single score:
streams; simultaneously, smooth when the onsets support a single unified meter. Shared pulse
streams read smooth; complete metric discontinuity reads disjunct; a partial conflict involving one
kind of dissonance (grouping OR displacement) is mildly smooth; both together is mildly disjunct.
Alignment within about 50 milliseconds counts as agreement.
after it and nothing new enters; mildly smooth on partial overlap. Simultaneously, very smooth when
one module's instruments are a subset of the other's. Disjunction strength scales with instrument
relatedness: different brass is a mild disjunction, unrelated families a strong one.
the macroharmony of about five seconds before: all new pitch classes already present is very
smooth; at least half is mildly smooth; fewer than half is mildly disjunct; none is strongly
disjunct. Simultaneously, examine the intervals created between the overlapping modules: complete
pitch-class overlap is very smooth, consonances only (P4, P5, major/minor 3rds and 6ths) moderately
smooth, soft dissonances (interval class 2 — major 2nd, minor 7th) mildly disjunct, hard
dissonances (interval classes 1 and 6 — minor 2nd, major 7th, tritone) strongly disjunct.
or mismatched dynamics is disjunct.
hard cuts into silence are disjunct. This aspect applies chiefly to horizontal switching.
When a module can enter at any point of a looping module, there is not one seam but many. The method
enumerates the possible timing points, analyses each aspect at a representative resolution (for
example every sixteenth note), and reports the DISTRIBUTION — the worked example in the paper reads
as 13% of possible seams strongly pitch-smooth, 57% mildly smooth, 30% disjunct.
That is exactly the shape our transition rubric needs. Instead of three sampled offsets judged by
ear, every legal firing point is enumerated and the result is a distribution per aspect per ordered
pair. A pair passes when its distribution clears a declared band on each aspect — and the aspects
stay separate, which is the same discipline MASTERPIECE_PROGRAM §11.4 and NOSTALGIA_RUBRIC §1
already impose on us (no single scalar anywhere).
Medina-Gray is explicit that disjunction is a legitimate and often intended product: a designed break
in continuity is how a player is told the environment has changed. **Combat entry is supposed to be
disjunct.** So the rubric is not "maximise smoothness" but "declare the intended smoothness per
aspect per pair, and measure whether the material delivers it." A combat entry declaring strong
metric smoothness (the pulse continues, so the player is not disoriented) and deliberate timbral
disjunction (new instruments announce the threat) is a specifiable, checkable design.
This also supplies a principled home for a question our doctrine currently answers by rule of thumb —
when does a pair need a transition segment? Answer: when no legal firing point achieves the declared
band, the pair needs written material rather than a rule.
Our leitmotif architecture is already strong (docs/proposals/music/LEITMOTIF_ARCHITECTURE.md,
MUSIC_COMPOSITION_DOCTRINE §1.4-§1.11, and LEITMOTIF_TECHNIQUE.md). This section adds only what
the adaptive practice contributes that the leitmotif literature does not.
The carrier, not the presence, is what escalation changes. God of War's instrumental migration is
the reference case and our doctrine already carries it (§6.5). The adaptive consequence is the
per-state mute test: exactly one stem or stem group holds the head cell at every declared state,
named on the state-machine row, and migration moves the role without vacating it.
The reprise has to happen somewhere the system cannot reach it. CRAFT CONSENSUS. Under
interaction the player mostly meets VARIATIONS — fragmentation, reduced instrumentation, a carrier
migration — because that is what an adaptive system produces. A theme whose only appearances are
variations has no baseline against which the listener can hear them AS variations, so the plain
statement has to live in a class nothing is trying to interrupt. In our structure that is SANCTUARY
and TITLE_CHARACTER. Register note: an earlier revision credited this to a stated finding in
Summers's *Understanding Video Game Music* ch. 7 that leitmotif identification is easier with a
reprise than with a variation. That attribution was wrong twice over — ch. 7 is "Musical Play and
Video Games", the film-music chapter is ch. 6, and no such finding could be verified in the book's
front matter or in the published review. The inference is retained because the doctrine already
depends on it (MUSIC_COMPOSITION_DOCTRINE §1.7's Prologue-to-Ch-77 distance test presumes a plain
statement exists to measure from), but it is CRAFT CONSENSUS and carries no citation.
**Wintory's single-arc model is the alternative to a motif roster and it is worth naming as a road
not taken.** He describes *Journey* as "100% bespoke and custom, with no pervasive 'systems' (like in
traditional games where there is 'combat' music versus 'exploration' music etc)" and the resulting
score as "a constant interplay of various systems" — a piece whose organisation is continuous and
narrative rather than a per-state library. Our design is committed to the roster model (12 cardinal,
7 families, Tier-C tags), which is correct for a 79-node globe-spanning game where *Journey*'s model
would not scale. But the single-arc idea survives in a reduced form that we already hold: the
Prologue statement and the Ch-77 statement are the same tune and the player must feel the distance
(MUSIC_COMPOSITION_DOCTRINE §1.7). **Two descriptors were removed here on 2026-08-08 — that
*Journey* was conceived as a "symphonic poem", and that a solo cello is the player's voice. Neither
is in the cited article, whose only solo-instrument mention for *Journey* is a bass flute and whose
only cello reference belongs to *Assassin's Creed Syndicate*.**
Wintory's critiques are the useful part of that source and they are aimed at exactly the design
we are building: overly reactive systems create distraction and rushed pacing; ambient beds during
player-choice moments waste the dramatic opportunity; a static open-world score that ignores
narrative progression diminishes emotional investment. His *Syndicate* answer to the third — music
stratified into three narrative-progression banks so the score evolves as the player advances — is
directly applicable to a game with 77 chapters and an integrity system, and it is cheap: it is a
selection rule over material that exists, not new material.
The Halo lesson is the oldest and simplest, and it is narrower than it is usually told. What the
sourced record actually shows is the chunking: at the GDC 2005 *Halo 2* audio session, "O'Donnell
loaded an example piece in a wave editor, to show how the piece was chopped into loops, with each
loop a few measures long," which the engine then reassembles at runtime. That is the structural
point worth carrying — the composed artifact is authored as reassemblable pieces from the start,
not cut into pieces after the fact, which is the same discipline MUSIC_COMPOSITION_DOCTRINE §6.1
imposes on vertical layers and §3.1 above imposes on segments. **Two further claims were removed on
2026-08-08 — that O'Donnell worked with the level designers so music and space were designed
together, and that the system swelled for a firefight and dropped to silence on tension. Both are
widely repeated and neither appears in the two O'Donnell sources this document actually reached; the
GDC Vault entry for "From MYTH to HALO" (GDC 2011) exposes no abstract without membership. If the
collaboration point is wanted as evidence for the design-music-with-the-space argument, it needs a
source we have read.**
Consolidated from the tutorial sources, Sweet ch. 20 (pp. 269-280) and Whitmore. Where our own
contract already says the same thing, that is noted rather than repeated.
mix, so baked reverb on stems fights the game's own space. Our mix_policy.py already carries
per-class space settings (EXPLORATION rt60 1.35 s, SANCTUARY rt60 2.30 s and so on), which is the
same decision made one layer earlier — worth reconciling deliberately rather than by accident.
captured as real audio; that audio becomes the post-exit region. Never bake a fade into a loop
file. Already ours (MUSIC_COMPOSITION_DOCTRINE §6.4, T1_Audio_Spec §8.5).
offset, loop bars. Our theme registry has tempo_bpm and bar_length columns, both populated
0/38.
combinable.
Transitions between Cues", p. 278). The composer hears the joins in the DAW; the implementer should
not be the first person to hear them.
theme_id to /Game/Audio/Cues/<cat>/A_<theme_id> (T1_Audio_Spec §8.5).
16-bit.
Named failure modes, each with its source and each stated so that a check could be written against
it.
seamless transitions beat crossfades for immersion.
clock. CRAFT CONSENSUS — see §2.2 for the withdrawn attribution.
states have no tune. Doctrine §6.5, from the God of War case.
piece cut into complete musical thoughts. Doctrine §6.1; Phillips's six-simultaneous-layers case is
the positive evidence.
broken. Doctrine §6.3.
seconds, which no per-rule check catches. Doctrine §6.3 — and the reason it insists the maximum is
DECLARED.
*Syndicate*.
answer is a scripted non-interruptible payoff; FFXV's pre-end section is the better one.
never constrained to the beds it can fire over. Doctrine §6.5; Sweet ch. 10.
everything. Sweet, p. 28, naming *Bioshock* — a real shipped choice, but a choice, and it should be
declared rather than defaulted into.
Every rule names the file it touches and its tier. CODE-ABLE means a schema field plus a predicate
can enforce it before a render exists. MEASURE-ONLY means it needs audio and is therefore weaker.
adaptive block on the plan. Add to the pass-plan schema (harness/music_gen/pass2_plan.py, consumed by pass2_realise.py): entry_cue_beat,
exit_cue_beat, pre_entry_beats, post_exit_beats, phrase_quantum_bars, custom_cues[].
Without these there is nothing for a transition rule to sync to and no way to deliver a tail
separately. PIPELINE HOOK: plan schema plus a validator that refuses a cue whose exit cue is not on
its declared quantum. CODE-ABLE.
adaptive_role per layer, and motif_carrier per state. Extend the existing layer object (which already carries role, stratum, register_slot, melodic_role) with adaptive_role in
{base, intensity_layer, colour, motif_carrier, interlock_group_member} and add a per-state
motif_carrier_stem. The doctrine's per-state mute test (§1.11) cannot run without it. PIPELINE
HOOK: plan schema plus the mute-test predicate, run per state rather than per cue. CODE-ABLE.
states[] and transitions[] on the cue. A state row carries the layer subset, theintensity band, the motif carrier and the silence policy; a transition row carries source state,
destination state, source sync (immediate / next beat / next bar / next phrase / exit cue),
destination sync (entry cue / custom cue / same position / last position), transition class
(direct / bridged / stinger-covered), the direction-specific duration, and intended_smoothness
per Medina-Gray aspect. PIPELINE HOOK: plan schema plus the §10.3 instrument. CODE-ABLE.
nothing implements it. A new build/audio/grid_contracts/<sub_region>.json carrying tempo family,
tonal centre and mode, tuning table reference, phrase quantum, maximum de-escalation latency in
seconds, and the cadential-exit policy. Every plan in that sub-region validates against it. A
repository search confirms tempo_family, phrase_quantum and de_escalation appear nowhere in
harness/, build/audio/ or registries/ today. PIPELINE HOOK: new artifact plus a validator in
pass2_plan.py. CODE-ABLE.
T0_Theme_Registry populates the three empty scheduler columns. tempo_bpm and bar_length are 0/38 and per_stem_role is 0/38. No runtime can quantise anything without them.
PIPELINE HOOK: registry pass with one fidelity re-baseline in the same commit, per the standing
rule. CODE-ABLE.
0.222 through mix_policy.py CLASS_MAP, and our flagship cue is SANCTUARY-classed. Until corpus
rows exist, the borrow must be declared on the artifact rather than silently inherited, and the
acquisition sheet should prioritise sanctuary and town themes — which is also where the thirty-year
bar is most often won. PIPELINE HOOK: build/audio/exemplars/CORPUS.json acquisition priority plus
an explicit floor_borrowed_from field on the scorecard. MEASURE-ONLY (the floor), CODE-ABLE (the
declaration).
render can still ship an explore_calm state that sits under it for minutes. Once R3 exists, run
instr_dynamic_arc.measure() on each state's rendered layer subset. PIPELINE HOOK:
harness/music_gen/instr_dynamic_arc.py. MEASURE-ONLY.
sedation_spans(t, v, floor) currently receives only the rendered curve, so a declared silence_windows entry (PASS7_FLORES_FALLS carries one) and
the deliberate exploration-silence practice both read as sedation once a window exceeds the 12 s
threshold. Pass the plan; exclude declared silence; report excluded spans separately so the
exclusion cannot hide a real flatline. PIPELINE HOOK:
harness/music_gen/instr_dynamic_arc.py. CODE-ABLE.
EXPLORATION cues declare silence_duty_cycle and max_continuous_music_s, and the class contract
says whether the class is a fragmented-with-silence class or a continuous one. The BotW evidence is
that the silence must be long enough that the listener stops anticipating music. PIPELINE HOOK:
plan schema plus a per-class predicate. CODE-ABLE.
repeating cue declares its landmarks
(solo entries, crash accents, distinctive fills) and a predicate refuses more than a declared count
inside a loop of a given length, or requires that any landmark be varied across the variation pool.
PIPELINE HOOK: a predicate on sections plus novelty_schedule, which already exists. CODE-ABLE.
loop_seams.py should refuse to author a turnaround for a class whose correct form is a real
ending. PIPELINE HOOK: harness/music_gen/loop_seams.py class guard. CODE-ABLE.
floor_instruments.py. Implements Medina-Gray onsymbolic material: per ordered state pair, enumerate every legal firing point at sixteenth-note
resolution, score meter, pitch, timbre and volume per §6.1, and report the distribution per aspect.
Abruptness comes from the declared transition class. Compare against the pair's
intended_smoothness rather than against a maximise-smoothness target. PIPELINE HOOK: new
instrument in harness/music_gen/, plus a gate entry beside music_seams. CODE-ABLE — and this is
the single highest-value item in the document, because it converts doctrine §6.9's
quadratic human listen into a computation.
achieves the declared band, the pair gets a transition segment; otherwise it gets a rule. That
replaces doctrine §6.4's "transition segments for every modulating pair" with a test.
PIPELINE HOOK: the R12 instrument's verdict feeding a transition_class assignment. CODE-ABLE.
End per the FFXV shape: the pre-end carries custom sync points placed close enough together to
bound the wait, so the phase can be ended musically whenever the game says so. The priority rule
attaches to the TRANSITION, not the section — main-loop-to-pre-end resolves music-first,
pre-end-to-end resolves synchronisation-first (§4.3). PIPELINE HOOK: sections gains
sync_points[] with a declared maximum inter-point wait, and each transition row gains a
resolution_priority in {music_first, sync_first};
BOSS-class plans validate that a pre-end exists. CODE-ABLE.
escalation and de-escalation between the same two states are different rows. FFXV's roughly 4 bars
down against 1.5 beats up is the precedent. PIPELINE HOOK: transitions[] schema. CODE-ABLE.
hold_until_release as a legal state property so scripted moments do not need a guessed duration.
PIPELINE HOOK: state schema plus MusicDirector behaviour. CODE-ABLE at the schema layer.
declare stingers and none exists. A stinger declares its length (3-12 s per Sweet), its pitch
content, and the set of bed states it may fire over; a predicate checks its pitch classes against
every one of those beds' macroharmonies using the R12 pitch measure, and refuses on a hard
dissonance. PIPELINE HOOK: new plan kind plus a predicate. CODE-ABLE.
five notes fired on event, quantised to the beat. This makes the stinger lane a leitmotif-delivery
lane rather than a sound-effect lane, which is the cheapest recognition budget in the game.
PIPELINE HOOK: hook.head_cell feeding the stinger generator. CODE-ABLE.
variation_pool to the state row: a set ofsegments with selection behaviour (sequence / random-no-immediate-repeat / step / weighted) and
per-item weights. This is the cheapest possible answer to the repetition problem, because a
variation is a re-orchestration of existing material. PIPELINE HOOK: state schema plus the
MusicDirector selection rule. CODE-ABLE.
different declared section. Sweet ch. 18. PIPELINE HOOK: state schema field reentry_section.
CODE-ABLE.
share length or start point. Our layer object already carries entry_cycle, exit_cycle and
rest_spans, so the mechanism exists; what is missing is deliberate use of coprime layer lengths
so the composite does not repeat for a long time. PIPELINE HOOK: a layer_period_cycles field plus
a predicate rewarding coprime periods. CODE-ABLE.
horizontal resequencing, vertical remixing, MIDI, advanced — becomes a declared field on each cue,
so a report cannot imply adaptivity a cue does not have. Today every cue would read
noninteractive, and that honesty is worth more than the aspiration. PIPELINE HOOK: plan field
interactivity_rung, surfaced on the scorecard beside the honest-tier register that
T1_Audio_Spec §8.2 already mandates. CODE-ABLE.
p. 278. In our terms: the R12 instrument runs at plan time on symbolic material, before a render is
commissioned. PIPELINE HOOK: ordering in the pass pipeline. CODE-ABLE.
for a game whose cultural registers include in-world performance — a village ceremony is source
music and must be placed, occluded and attenuated in world space, not mixed as underscore.
T0_Theme_Registry.diegetic_surface exists and is populated 4/38; the cue table has no diegetic
flag at all. PIPELINE HOOK: music_cue_table.csv gains diegesis in {underscore, source,
transdiegetic}; the SFX and mix lanes read it. CODE-ABLE.
threat_state_rise. 33 cue rows already name the trigger. Thedesign owes a threat model — enemy count weighted by tier relative to player capability — before
combat music can be gated rather than switched. PIPELINE HOOK: a named consumer for the existing
trigger; the combat comparator rubric at harness/qa/comparator_rubrics/aggro_threat.json is the
nearest existing artifact and should be checked for reuse before a second threat model is invented.
CODE-ABLE.
Ranked by value against the Josh-gate slice, with the strongest first. Items 1 through 5 are the
answer to "what changes on Monday".
1. The modular-smoothness instrument (R12, R13). Medina-Gray's five aspects, enumerated
probabilistically over every legal firing point, compared against a DECLARED intended smoothness
per aspect per ordered pair. It replaces a quadratic human-listen rubric with a computation, it
keeps the aspects separate exactly as our existing measurement discipline demands, and it refuses
the smoothness cult by treating deliberate disjunction as a legal target. Nothing else in this
document buys as much.
2. The adaptive block on the pass plan (R1, R2, R3). Entry and exit cues, pre-entry and
post-exit, states, transitions and per-state motif carriers. Without these the doctrine's entire §6
is unimplementable and the 222-row cue table's adaptive_class, layer_role and layer_mode
columns stay decorative. This is the enabling change for almost everything else.
3. **Per-state energy evaluation and a plan-aware sedation detector (R7, R8), plus SANCTUARY's own
floor (R6).** Our floors are the most rigorous instrument in the lane and they are currently
measuring the wrong object — a whole linear render, on a class vocabulary with a hole where our
flagship cue sits, with composed silence counted as sedation. Fixing the object is cheaper than
deriving new numbers.
4. The cue-class shape contracts of §4.8. Form, loop posture, entry and exit sync, motif policy
and named failure mode per class, as a table the plan validates against. This is the piece the
brief asked for and it is the piece that makes "cue purpose class" mean something beyond a mixing
preset and an energy floor.
5. The pre-end section for boss phases (R14). The FFXV shape — leave the main loop music-first,
leave the pre-end sync-first — is a better answer to our interrupted-cadence problem than the
scripted non-interruptible lock we currently rule, because it keeps the game interactive while
still landing the cadence.
6. The variation pool (R19, R20, R21). The cheapest available answer to Sanger's repetition
problem, and the one most compatible with our arithmetic: the leitmotif economy already produces
material that can be re-orchestrated, and a pool turns re-orchestration into runtime variety.
7. The stinger lane as a composed artifact class (R17, R18). 56 rows already declared, head-motif
stingers already ruled, and the compatibility battery is a direct reuse of the R12 pitch measure.
High recognition value per unit of composition.
8. The grid contract per sub-region (R4) and the three empty scheduler columns (R5). Unglamorous
and blocking: two cues in the same sub-region can currently be authored at incompatible tempi and
nothing catches it, which makes horizontal stitching impossible by construction.
9. The honesty fields (R22, R6's declaration half, R24). An interactivity_rung that currently
reads noninteractive on every cue, a declared floor borrow, and a diegesis flag. Each costs
almost nothing and each prevents a claim we cannot support.
10. The hold primitive (R16) and direction-asymmetric durations (R15). Small schema items that
prevent two specific classes of later rework.
What we explicitly do NOT adopt.
across the globe. Our roster model stands. The one element we keep is the Prologue-to-Ch-77 single
tune, which we already have.
transposition). It buys real-time harmonic manipulation at the cost of a sampled-instrument runtime
and a mix we cannot control, and our identity is carried by register, tuning and ornament that a
general MIDI-style runtime would flatten. Revisit only if a specific mechanic demands it.
transition matrix exceeds roughly eight states with per-pair rules, re-evaluate on evidence. This
document does not move that line; it does note that the object model in §3 is what we would be
re-implementing, and that R1-R3 deliberately mirror it so the decision stays reversible.
For the audit phase. Each item names the file, the practice it deviates from, and what the deviation
costs. Nothing here is ruled; it is evidence handed forward.
Files: harness/music_gen/pass2_plan.py, harness/music_gen/pass2_realise.py,
build/audio/pass*/plans/*.json.
Practice: every source in §3 treats entry cue, exit cue, pre-entry, post-exit and a transition
rule as the minimum unit of an interactive cue.
Deviation: the plan schema has none of them, and a repository search for adaptive_role,
motif_carrier_stem, state_machine, transition_class, entry_cue and exit_cue across
harness/, registries/ and build/audio/ returns zero hits.
Cost: MUSIC_COMPOSITION_DOCTRINE §6 in its entirety — the state model, the grid contract, the
per-state mute test, the per-cue deliverable and the transition acceptance rubric — is currently
unimplementable, and every cue we author is Sweet's serendipitous-sync rung while the doctrine
describes rung four.
Files: harness/music_gen/loop_seams.py, gate music_seams in harness/gates_config.json.
Practice: the loop seam and the transition seam are different problems; middleware treats the
self-loop as a special case of the transition, not the other way round.
Deviation: loop_seams.py composes a cue-to-itself turnaround under five good rules; nothing
composes or checks a cue-to-cue join, and the gate runs --self-test only.
Cost: doctrine §6.9's transition acceptance rubric has no artifact to run on, and §6.4's
"transition segments for every modulating pair" has no pair concept to enumerate.
Files: harness/music_gen/mix_policy.py (CLASS_MAP maps SANCTUARY to MELANCHOLIC),
build/audio/exemplars/instruments/DYNAMIC_ARC_VALIDATION.md §8,
build/audio/pass7/plans/PASS7_FLORES_FALLS.json.
Practice: the safe-haven class and the lament class have opposite energy postures. Safe-haven is
where the hummable statement and the real cadence live and where the thirty-year exemplars
concentrate; lament is the class whose defining property is stasis.
Deviation: SANCTUARY inherits MELANCHOLIC's 0.222 — the second-lowest floor in the corpus — and
the borrow is declared in a source comment rather than on the artifact.
Cost: either the sanctuary cue is permitted to sedate, or the lament is over-driven; and the
cue currently carrying the lane, PASS7_FLORES_FALLS at 180 s, is the one affected.
Files: harness/music_gen/instr_dynamic_arc.py (sed = sedation_spans(t, v, floor)),
build/audio/pass7/plans/PASS7_FLORES_FALLS.json (carries a silence_windows entry).
Practice: the *Breath of the Wild* evidence is that long silences are the mechanism by which
exploration music avoids fatigue, and our own doctrine §6.3 makes silence a first-class state.
Deviation: the detector receives only the rendered energy curve. Any declared silence longer than
the 12-second span threshold reads as sedation, and there is no field anywhere declaring a silence
duty cycle for a class that the practice says should be built on silence.
Cost: the instrument will penalise exactly the design the exemplar lineage validates, and the
composer will be pushed toward continuous music in the class where continuity is the defect.
Files: harness/music_gen/instr_dynamic_arc.py, harness/music_gen/pass3_score.py.
Practice: intensity is a per-state property; Phillips's dual-brief problem is that the same
material must read correctly at both ends of the range.
Deviation: the floor is computed over a whole render.
Cost: once layering exists, a cue can pass its floor as a mixdown while shipping an
explore_calm subset that sits far below it — and that subset is what most players will hear most of
the time.
Files: MUSIC_COMPOSITION_DOCTRINE §6.4; nothing in harness/ or build/audio/.
Practice: everything in a stitchable region shares a tempo family, a tonal centre, a phrase
quantum and a declared maximum de-escalation latency.
Deviation: verified absence — tempo_family, phrase_quantum and de_escalation return no hits
anywhere in harness/, build/audio/ or registries/. Tempo, metre and key live per CUE in the
plan.
Cost: two cues authored for the same sub-region can be mutually unstitchable and nothing catches
it until an implementer tries to cross-fade them.
Files: registries/T0_Theme_Registry [DRAFT v0.1]/T0_Theme_Registry.csv.
Deviation: tempo_bpm 0/38, bar_length 0/38, per_stem_role 0/38, against closure_policy
38/38, motif_class 38/38, tier 38/38 and carrier_voice 30/38.
Cost: the identity and care columns are in good shape and the three columns a runtime actually
needs are empty, so no theme row can currently be scheduled, quantised or stem-delivered.
Files: build/audio/music_cue_table.csv (track_type stinger 56, layer_role stinger 56),
harness/emit_music_cues.py.
Practice: stingers are the cheapest interactive win, and their one hard constraint is harmonic
and rhythmic compatibility with every bed they can land on (Sweet ch. 10; doctrine §6.5).
Deviation: no stinger has been composed, no length rule is pinned, no compatibility check exists,
and the head-motif stinger the doctrine rules has no generator.
Cost: a quarter of the declared cue inventory is unrealised, and it is the quarter with the best
recognition-per-second ratio.
Files: build/audio/music_cue_table.csv (222 rows: adaptive_class loop 90 / adaptive 76 /
oneshot 56; layer_mode swap 132 / base 84 / ambience_stack 6; trigger_event zone_enter 84 /
threat_state_rise 33 / boss_phase_enter 33 and six smaller classes), docs/PIPELINE_LEDGER.md §7 row
F1 (no in-engine consumer).
Deviation: the design has already named 76 adaptive cues, 33 threat-driven rises and 33 boss
phase entries; nothing reads any of it.
Cost: this is the anti-orphan rule's exact failure shape — a rich, well-formed artifact with no
consumer — and it means the adaptive DESIGN is further along than the adaptive BUILD, which is the
opposite of what a status read of the plans would suggest.
Files: MUSIC_COMPOSITION_DOCTRINE §6.3; harness/qa/comparator_rubrics/aggro_threat.json is the
only artifact in the tree carrying "hysteresis" in a combat sense, and it belongs to the combat lane
rather than to audio.
Deviation: the rise-fast-fall-slow rule, the 6-10 second clear timer, the phrase-boundary
de-escalation and the declared maximum latency are ruled and unrepresented in data. Combat entry has
no threat function behind threat_state_rise.
Cost: the two named failure modes of the BATTLE class — flicker and the unbounded de-escalation —
have no check that could catch them, and the *Syndicate* lesson (do not shout at every rat) cannot be
applied.
Files: registries/T0_Theme_Registry [DRAFT v0.1]/T0_Theme_Registry.csv (diegetic_surface
populated 4/38), build/audio/music_cue_table.csv (no diegesis column).
Practice: Sweet ch. 1 pp. 21-24 makes this the first taxonomic split in the field, and it changes
implementation completely — source music is placed, occluded and attenuated in world space.
Deviation: the theme registry has a column at 4/38 and the cue table has none.
Cost: for a game whose cultural authenticity is carried partly by in-world performance —
ceremonies, work songs, festival music, a player-plantable motif — the surface that would make those
diegetic is not addressable, and doctrine gate 5's plant-node/diegetic-surface debt
(T1_Audio_Spec §10.3) stays open at the cue layer as well as the theme layer.
Files: build/audio/pass*/plans/*.json (target_duration_s), T1_Audio_Spec §2.1 (two to seven
minutes, twelve to twenty tracks per chapter).
Practice: length follows function and expected dwell time. A boss phase is as long as the phase;
an exploration bed is either much longer than the band or fragmented far below it; a stinger is 3-12
seconds; a title theme is a concert length.
Deviation: one global band, one target_duration_s per plan, and no dwell-time input anywhere in
the schema.
Cost: the band is a reasonable default and a poor contract — it will over-length stingers, under-
length boss material, and give exploration exactly the fatigue-maximising middle length that the
landmark constraint (§2.2) warns against.
Files: T1_Audio_Spec §8.2 (the honest tier register: GENERATED SCORE — ITERATION,
AUTHORED_HEAD_CELL, AUTHORED_SCORE_ORCHESTRAL_RUNG_ONE, EXTRACTED-NOT-AUTHORED).
Practice: Sweet's ch. 3 ladder is the standard axis for how interactive a score actually is.
Deviation: our tier register measures compositional and realisation provenance beautifully and
says nothing about interactivity, so a cue can be reported at the highest authored tier while being
noninteractive by construction.
Cost: a reader of an audio report cannot currently tell whether the lane's output would function
in a game at all, which is the exact class of claim the honest-tier discipline exists to prevent.
Sources were read at the URLs listed in §1 on 2026-08-08. Three primary sources were blocked and are
marked as such at the point of use: Audiokinetic's own documentation and course pages (HTTP 403),
FMOD's official documentation (JS-rendered, empty bodies returned), and the Routledge sample PDF for
Thomas (HTTP 403). Wwise and FMOD behaviour in §3 is therefore second-hand from practitioner
documentation that reproduces it, and any later pass with access to the vendor docs should re-verify
§3.1 through §3.5 before those definitions are treated as pinned. The Sweet material in §2.1 and §4 is
first-hand: the publisher sample carries the complete table of contents and the full text of Chapter
1, and all page references to that chapter are exact. Everything attributed to Phillips's book is
via her own posts citing her chapter and page numbers, not the book itself. All numbers attributed to
our own tree — the plan schema keys, the 222 cue-table rows and their column censuses, the 38 theme
rows and their population counts, the per-class energy floors, and the verified absences of
tempo_family, phrase_quantum, de_escalation and the six adaptive field names — were computed
from the working tree at the time of writing, not quoted from another document.
An independent fresh-context citation check re-fetched and re-read seventeen of the §1 sources,
including the Sweet publisher sample (text-extracted locally after the PDF returned binary to the
fetcher) and the Cambridge front matter. **The Medina-Gray paper, the Sweet book, the Whitmore
article, the Iwamoto deck, the Yu analysis, the Splice history, the Swift FMOD paper, both
gamesounddesign tutorials and all four Phillips posts exist, are correctly identified, and say what
they are cited for**, with the specific exceptions below. Sweet in particular checks out to the page:
the chapter/page table in §1.1, Table 1.1 at p. 16, Table 1.2 at p. 17, the 3-12 second stinger and
the exclamation-point wording at p. 27, the Sanger repetition attribution at p. 18, the hook
definition and the eight-item trigger list at p. 28, serendipitous sync naming the original
*Bioshock* (2007) at p. 28, the seven-step conceptualisation at pp. 29-32 with the *Uncharted 2*
per-region style-guide note, the ch. 9 sub-topic pages 158/159/160/161/162, the ch. 18 pages 255-256
and the ch. 20 pages 273/278/279 are all exact. Medina-Gray likewise verified to the number,
including the 50 ms alignment tolerance, the interval-class groupings and the 13% / 57% / 30%
worked example.
Eight defects were found and repaired in place. Each repair is marked at the point of use:
cited source. Removed; the surviving inference is relabelled CRAFT CONSENSUS.
four fetched Phillips posts. Attribution withdrawn; rule retained at CRAFT CONSENSUS.
MUSIC_COMPOSITION_DOCTRINE §6.5 and should be corrected there.** The Baldur/Stranger naming and
the fiddle-to-strings-to-brass migration are our doctrine's reading, not McCreary's words.
are in neither reachable source. Narrowed to the sourced chunking claim.
cited article. Replaced with what it says. Everything else attributed to Wintory — the *Syndicate*
threat analysis, the three narrative banks, the *Banner Saga* segment-completes-before-switching
design, and all three critiques — verified verbatim.
section, and says custom sync points rather than dense ones. Re-stated from the slide text.
not a continuous parameter driving layers. Corrected, and the genuine continuous-parameter case
(PvZ Heroes transposition) promoted in its place.
Twilight Princess, Skyward Sword), not "traditional Zelda loops".
Two further honesty downgrades: the Thomas part/chapter structure could not be re-confirmed (both
publisher domains now 403) and is marked UNVERIFIED; the DAW-silence rendering instruction is carried
by one tutorial source, not by all of them. No ACTIONABLE RULE was withdrawn. R12 and R13, the
highest-value items in the document, rest entirely on Medina-Gray and verified exactly; R15, R16,
R17, R19-R25 rest on source text confirmed word-for-word in this audit. R10 survives as CRAFT
CONSENSUS and R14's schema hook was re-specified to match what the FFXV deck actually says.