music/RHYTHM_GROOVE_AND_PERFORMANCE_PRACTICE.md
PROPOSAL TIER. Nothing here is ratified canon. It is craft research: the published rhythm
literature, the ethnomusicological performance-practice scholarship for the traditions our slice
actually names, and the practitioner manuals — read against the composer we have actually built.
Canon authority is unchanged: the CVD wins, the tier docs win, and every §17.1 care call in
section 7 is flagged rather than applied.
Companion volumes in this folder: COUNTERPOINT_AND_VOICE_LEADING.md (the vertical dimension),
MOTIVIC_DEVELOPMENT_AND_PHRASE_GRAMMAR.md(the melodic dimension),COUNTER_MELODY_AND_DIALOGUE.md
(the dialogue dimension), ORCHESTRATION_TEXTURE_AND_DENSITY.md (the density dimension). This one
is the temporal dimension, which is the one Josh named.
---
Josh graded round 3 in eleven words: "they clash and have no rythm or complexity." Two independent
measurements now exist that say the second half of that sentence is a structural fact about the
writing rather than an impression about the mix.
The first is harness/music_gen/instr_groove.py, the rhythm instrument. On the score tier — where
there is no extraction error at all, because the plan IS the notes — it reports that round 2's three
cues carry an articulated per-voice syncopation of 0.000 / 0.056 / 0.062 against a symbolic ceiling
of 1.0, and that round 3 improves only to 0.096 / 0.108 / 0.161. More damning: the COMPOSITE
syncopation, the number that asks what the percussion section does TOGETHER, is exactly 0.0000 in
all six cues. Across sixty-two percussion and bass parts, no note in this program has ever hung over
a stronger rest.
The second is arithmetic on the landed plan itself. Reading
build/audio/pass5/plans/PASS5_FLORES_ROUNDS.json at head:
one cycle is 6.486 s.
B01) fires at beat 0.0 and beat 8.0, plus a third stroke at beat 0.0every fourth cycle. Two positions. Gong-to-gong is 6.486 s; the interior stroke sits 3.243 s away.
B02–B08) are hand-typed beat lists compiled by the ostinato branch of pass2_realise.compile_pattern (lines 206-212 in the current file). That branch reads exactly
one dur and exactly one vel_scale for the whole pattern. So B06, the shaker, plays
thirty-two consecutive eighth notes at one identical duration and one identical velocity, in every
cycle of the cue. So does every other ostinato voice, at its own single value.
compile_layer places every note at abs_beat * beat_s. There is no timing deviation anywhere inthe program — no swing, no push, no lay-back, no per-voice offset, not even a random jitter.
base_vel * vscale * (0.55 + 0.65 * intensity).A section changes loudness for the entire layer at once, and nothing changes loudness within it.
And the third fact, which is the one that matters most: harness/music_gen/groove.py — the
symbolic rhythm engine that owns the metrical weight hierarchy, the syncopation measure, the pulse
salience number, the interlock pair, the groove library and the density ladder — is imported by
exactly one file in the repository, and that file is instr_groove.py, the RULER. No composer
imports it. Not pass2_plan.py, not pass3_flores.py, not pass5_flores.py, not pass7_flores.py.
We built the measuring instrument and the pattern library on the same day and wired only the
instrument.
So "no rhythm" decomposes into five separable defects, and this document is organised to attack them
in order of how much each is worth:
1. Every voice is dynamically FLAT. A pattern with no accent hierarchy inside it is not a groove,
it is a metronome with a timbre.
2. The section never SYNCOPATES against itself. Composite syncopation of 0.0000 is the single most
directly relevant number in the empirical groove literature, and ours is pinned at the floor.
3. The colotomic clock is not a metric level. Both of its inter-onset intervals exceed the upper
bound at which a human can entrain to a periodicity at all.
4. There is no performance layer. No micro-timing, no non-isochronous subdivision, no leader, no
tempo motion, no density level change.
5. The traditions we are borrowing structure from are represented by one rule each where practice
has a taxonomy, and one of them is attributed to the wrong island district.
---
The field has converged on a definition that is narrow enough to be measured: groove is the pleasant
sense of wanting to move along with music. Senn and colleagues built and validated the Experience of
Groove Questionnaire around exactly two correlated factors — Urge to Move and Pleasure — and
the instrument has since been translated and re-validated in German and Japanese, which is the sort
of replication that makes a construct usable rather than fashionable.
This is worth adopting as our own vocabulary for one specific reason. Josh's energy floor ruling
(docs/spine/DECISIONS_PENDING_JOSH.md:5652-5663) says a serene scene needs a track that is
"peaceful and still uplifting" and that "an ARPG valley still moves (pulse present, contour lifting,
engagement sustained)". That is the two-factor definition in his own words: pleasure held constant
while urge-to-move is dialled per purpose class. The two axes are separable, and a cue can be graded
on both. A single "groove score" would collapse exactly the distinction his ruling depends on.
Witek, Clarke, Wallentin, Kringelbach and Vuust (PLoS ONE, 2014) is the anchor result. Rhythms with
MEDIUM levels of syncopation generate the most pleasure and the strongest urge to move. Low
syncopation urges less movement; high syncopation makes it hard to synchronise and the urge falls
again. The relationship is an inverted U, not a monotone.
Madison and Sioros (Frontiers in Psychology, 2014) attacked it from the production side: they had
four musicians play simple and complex melodies twice, once instructed to minimise groove and once to
maximise it, and then measured what actually changed. What changed was event count, metrical level
and syncopation. Both the number of notes and the syncopation measure were higher in the
maximum-groove condition. The authors state the conclusion plainly: syncopation is a central strategy
for inducing groove.
Two things follow for us immediately.
inverted U — the exact condition the literature identifies as *urging less movement*. This is the
strongest single mapping in this document between a published finding and a number our own
instrument already reports.
groove.py's CLASS_BANDS already encodes bands rather than minima (EXPLORATION 0.05–0.34, BATTLE 0.05–0.38, TENSION 0.06–0.46, SANCTUARY 0.02–0.26,
MELANCHOLIC 0.02–0.30, AMBIENCE 0.01–0.30). That shape is right and matches the research. The
defect is not the shape of the rule, it is which quantity the rule is pointed at — see 1.3.
groove.py's R02 deliberately judges the ARTICULATED PER-VOICE MEAN and explicitly refuses the
composite, on the stated grounds that "a dense composite fills its own gaps and an LHL measure of it
falls as the groove drives harder, which would call BATTLE unsyncopated". That reasoning is real and
the effect it describes is real. But the consequence is that the ONE number the empirical literature
ties to groove — what the section does together — has no rule with teeth on it anywhere in the
program, and it is sitting at exactly zero in every cue we have ever rendered.
The literature has since moved directly onto this question. Sioros, Madison, Cocharro, Danielsen and
Gouyon published "Syncopation and Groove in Polyphonic Music: Patterns Matter" (Music Perception
39/5, 2022, pp. 503-531) precisely because the monophonic result did not transfer cleanly to real
multi-instrument music. Their finding, stated in their own terms, is that a moderate level of
syncopation increases groove but only for certain syncopation PATTERNS, and that what separates the
originals from the de-syncopated and algorithmically re-syncopated variants is the DISTRIBUTION of
syncopation across instruments and across metrical positions. Sioros and Guedes's earlier
ISMIR work supplies the machinery — the Longuet-Higgins and Lee metrical-weight measure our stack
already uses, plus the weighted note-to-beat distance measure, in which a note's syncopation value is
inversely related to its distance from the nearest beat and is weighted up when it crosses over the
following beat.
The honest reading is that neither the composite nor the per-voice mean is sufficient alone, and the
program currently reports both and refuses only on one. What is missing is a rule that fires when the
composite is DEGENERATE — pinned at zero, which is not "dense enough to fill its own gaps", it is a
section in which no voice ever plays anywhere a stronger position is left empty.
Madison and Sioros found the groove-maximising performances put more events on eighth-note positions
and more on sixteenth-note positions. Density at the fast metrical level is a real groove device, and
it is the device our own ORCHESTRATION_TEXTURE_AND_DENSITY.md already constrains from the opposite
direction (the anti-tutti ceiling, the carpet rule, subtraction as the strongest event).
Those two are not in conflict, and the resolution is the one groove.py already half-encodes: the
density belongs to the COMPOSITE, and the individual voices stay thin. A section can present
sixteenth-level activity without any single part playing sixteenths, if the parts interlock. That is
what hocket is for, and it is also — exactly — what kotekan is for. The tradition our slice already
borrows from is the tradition that solved this specific problem.
Etani, Senn and colleagues manipulated the tempo of drum-and-bass patterns whose originals sat
between 89 and 130 BPM and confirmed the standing hypothesis: medium tempi around 100 BPM are best
suited to entrained behaviour, because the beat rate maps easily onto periodic body motion, and the
urge to move peaks there. The Lucerne Groove Library (444 short Western popular drum-and-bass
patterns with behavioural, structural and audio measurements attached) is the corpus that work rests
on and is the closest thing the field has to a reference stimulus set.
Our Flores cue runs at 148 BPM. That is not a defect on its own — it is a ceremonial-drive cue and
the tempo band is a deliberate authored choice — but it should be recorded as a KNOWN COST rather
than a neutral parameter, and it interacts with section 4.1 in a way nobody has priced.
Hove, Marie, Bruce and Trainor (PNAS 111/28, 2014) is the result that explains a convention: when two
tone streams sound together, the brain detects timing deviations better in the LOWER-pitched stream,
and tapping synchronises to the lower stream. Their modelling places the effect early in the auditory
pathway, in the cochlea. Across cultures, polyphonic music puts melody high and rhythm low, and this
paper argues the convention is physiology before it is taste. Companion work in the same journal
found neural tracking of the beat is enhanced by low-frequency sounds.
The measurement literature agrees from the signal side: variability measures — the variance of the
RMS curve, and spectral flux specifically in the low bands — predict groove ratings, and algorithms
that emphasise variability BETWEEN beats predict them better than ones that do not.
For us this is a placement rule, not a mixing rule. The voice that owns the tactus should be the
lowest-pitched articulate voice in the texture, and the low band should VARY beat to beat rather than
running flat. Our B02 bass drum plays four strokes per sixteen-beat cycle at one velocity; our
M06 bass line is a pokok at one note per several beats. Nothing in the Flores cue puts an
articulate, dynamically varying low voice on the tactus.
---
This section is written carefully, because it is the one place where the popular understanding and
the experimental record disagree, and where a naive adoption would make our music worse.
The best current synthesis is "Bins, Spans, and Tolerance: Three Theories of Microtiming Behavior"
(Music Theory Spectrum 45/2), which sets out the three live positions.
shape, which can hold several nearly-simultaneous events. Her worked case is D'Angelo's "Left and
Right", where kick and bass articulate the beat roughly 55–80 ms apart — 8–12% of a quarter note at
92 BPM — and listeners nonetheless hear one beat, with the bin widening as they acclimatise to the
groove.
open a temporally extended space in which events can land. His case is Afro-Cuban rumba columbia,
where the segundo and salidor consistently sit off any single grid without losing coherence — a
product of competing metric forces, not tempo fluctuation.
disrupting flow, and events have flexible perceptual locations with no single correct
interpretation. His case is Swedish polska, where the first beat fluctuates between 347 and 635 ms
— a 288 ms spread — across measures of the same performance, largely unnoticed by expert listeners.
What all three share, and what matters to a program that quantises everything: the grid is not the
music. Two sounds at the same notated position are a compositional decision about the SHAPE of a beat,
not a redundancy to be collapsed.
Friberg and Sundström (Music Perception 19/3, 2002) measured drummers' ride-cymbal swing across
recordings and a play-along record. Their findings are precise and unhelpful to anyone hoping for a
constant:
falling to 1:1 at fast tempi.
100 ms across medium to fast tempi, which the authors read as a perceptual floor on tone duration.
Benadon ("Slicing the Beat", Ethnomusicology 50/1, 2006, pp. 73–98) generalised this into the
beat-upbeat ratio (BUR), treating jazz eighth-note pairs as a continuously variable expressive
micro-rhythm rather than a style constant, and arguing that BURs vary within a performance in ways
that articulate phrase structure. Micro-rhythm as expressive syntax, not as noise. (Citation
verified; the article itself sits behind a paywall that refused every fetch route tried, so the
often-quoted numeric BUR span of roughly 1:1 to 4:1 is NOT verified here and is deliberately not
asserted. Nothing in section 10 depends on that number — RG-16's floor comes from Friberg &
Sundström, which is verified.)
The design consequence for us is a formula, not a constant: any swing we implement must be a function
of tempo with the short note pinned near a floor, and it must be allowed to differ by voice.
Rainer Polak's "Rhythmic Feel as Meter" (Music Theory Online 16/4, 2010) is the single most important
paper in this document for a program that has only ever written isochronous grids.
Polak measured Malian jembe ensembles in a four-beat, twelve-subpulse cycle and found the ternary
subdivision is systematically UNEQUAL and systematically STABLE. The lead jembe in the *manjanin*
échauffement gives a mean pulse ratio of 27:33:40 — the first subpulse takes 27% of the
normalised beat, the second 33%, the third 40%. The standard deviation from that ratio is around 2%
per pulse. The third pulse runs 45–75 ms longer than the first at tempi between 150 and 180 ternary
BPM, against a mean pulse duration just above 100 ms. Four different lead players were measured and
all conform to the same short-medium-long feel, with individual means clustering tightly (one player
at 26:32:42); the dunun and the second jembe independently realise the same pattern on quite
different instruments. The feel holds from a slow opening near 135 ternary BPM (405 pulses per
minute) to a finale near 205 BPM (615 ppm), shifting to a different non-isochronous shape
(28:36:36, in which the medium and long pulses blur together) only beyond about 200 ternary BPM
— 600 pulses per minute. That second shape is a TEMPO-dependent transformation at the top of the
range, not a performer-to-performer variant.
His argument, borrowing London's formulation, is that these lengthenings and shortenings are not
deviations from the norm — they ARE the norm. The uneven subdivision is categorical metric structure,
learned and reproduced, not expressive shading applied on top of an even grid.
Naveda, Gouyon, Guedes and Leman (Journal of New Music Research 40/3, 2011) found the same class of
thing in samba from 106 audio excerpts: the third and fourth semiquavers of a beat are systematically
anticipated relative to their quantised positions. Again a stable, culturally specific,
non-isochronous subdivision.
London's own theoretical frame in *Hearing in Time* accommodates this directly through the
well-formedness constraint of maximal evenness, which permits meters with uneven (non-isochronous)
beats or beat subdivisions — the constraint he added specifically after considering non-Western
practice.
This matters to us more than swing does. Our slice is not a jazz slice. But our slice IS built on
cyclic, interlocking, non-Western structure, and we have no representation for a non-isochronous
subdivision anywhere: groove.metrical_weights builds its dot grid from subdiv positions per beat
and assumes they are equal, and _tile places figures on integer beat fractions.
Against all of that sits an experimental record that repeatedly fails to find a groove BENEFIT from
adding micro-timing to programmed music.
students rate a simple snare-and-bass-drum pattern at five microtiming conditions (−25, −15, 0,
+15, +25 ms). Five results: the rhythmically accurate QUANTIZED version was rated highest;
increasing deviation lowered ratings monotonically; early shifts were rated worse than the
comparable late shifts; snare deviations were rated worse than bass-drum deviations; and expertise
in rock and pop had no effect. Their conclusion is that at least some styles of groove-oriented
music are characterised by an aesthetics of *exactitude*.
groove in short rhythms", Music Perception) is the companion study routinely cited alongside it.
weights at all, but five out of six weights are slightly negative", and wrote that micro-timing
"has now repeatedly been associated with less groove".
Reconciling this with section 2.3 is not hard, and the reconciliation is the actual rule.
**Micro-timing that is CATEGORICAL — part of the metre, culturally specific, stable, reproduced by
every player in the ensemble — is structural and is worth having. Micro-timing that is RANDOM —
jitter sprayed over a grid to make it sound human — is measurably worse than leaving the grid alone.**
Polak's ratios are the first kind. A humanise knob is the second kind. Frühauf's asymmetry result
(early shifts penalised more than late ones) says the same thing from the other direction: a
deviation is heard against an expectation, and an early note is a wrong note more readily than a late
one is.
This gives our program a rule it can actually enforce, and it is a rule that COSTS US NOTHING today,
because we have no humanise knob to remove. What we should build instead is a per-idiom subdivision
RATIO — a declared, deterministic, auditable property of a cue's metre — and nothing else.
Two practitioner observations survive the experimental counterweight because they are about
structure, not jitter.
different elements — kick and snare near 52%, hats near 57% is the canonical example — creating
internal tension between parts rather than a global tilt. This is Danielsen's beat bin rendered as
a production technique: the bin has a shape because the parts inside it disagree by design.
(arXiv 2411.06892) found the timing deviations carry clear long-range correlations, that the
two-bar phrase carries a distinctive repeating pattern in the timing AND dynamics of the hi-hat,
and that the track shows the tempo drift typical of recording without a metronome. The groove's
micro-timing is periodic at the phrase level. It is composition, not noise — which is precisely why
a random generator cannot reproduce it and a deterministic per-position offset table can.
The J Dilla case is often invoked here and is usually invoked wrongly. The documented innovation was
not a swing setting; it was turning quantise OFF and playing in, then applying irregular amounts of
swing to different elements — kick early, snare dragging — so that the parts disagree with each other
in a fixed, repeatable way. Roger Linn's own commentary on drum-machine groove makes the same point:
the machine's swing was a global delay of even sixteenths, and what people admired was what happened
when that global rule was broken per-part.
Danielsen's beat-bin case gives concrete numbers — kick and bass 55–80 ms apart, heard as one beat —
and her group has continued directly onto the question of how asynchrony between compound sounds
shifts perceived timing (Annals of the New York Academy of Sciences, "All About That Bass Drum?
Asynchrony Effects on the Perceived Timing of Compound Musical Sounds"; paywalled at the time of
writing and cited here for its existence and framing rather than for extracted findings).
Our compile_layer puts every layer that shares a notated onset at the same sample. Ten layers
striking beat 0 strike it at literally identical times. Acoustically this is a single fused
transient with a comb-filtered spectrum, not an ensemble. The fix is not jitter — it is a declared
stack order with declared offsets, which is a compositional statement about which instrument defines
the beat and which ones lean on it.
---
The academic literature says what makes rhythm work perceptually. The practitioner literature says
what to actually type. Justin Paterson's *The Drum Programming Handbook* (Backbeat Books) is the
closest thing the field has to a textbook — it runs from one-shot MIDI programming through samplers
and romplers to advanced timing for swing and beat-mapping, and ends with per-style chapters, with
over 250 downloadable audio examples. Paterson is a drummer, producer and head of the MA in Advanced
Music Technology at the London College of Music, which is the right provenance for a manual.
The consensus practice across that manual and the working tutorial literature reduces to five rules,
and every one of them is a rule about DYNAMICS rather than about timing.
A real drum part has accents, normal strokes and ghost notes, and the ghost tier is not merely
quieter. The standard programming figures: ghost notes sit around velocity 20–40 out of 127, and for
subtle work 10–22; accented strokes (classically beats 2 and 4 in a backbeat) take full strokes at
high velocity; everything else lives between.
Our entire program has ONE tier. pass2_realise.compile_pattern's ostinato branch applies a single
vel_scale to every onset in a pattern, and compile_layer then applies a single section intensity
to the whole layer. There is no ghost tier and no accent tier anywhere in the Flores cue. This is,
by itself, a sufficient explanation for "no rhythm": a pattern with no internal dynamic contour reads
as a timbre repeating, not as a rhythm being played.
The specific figure the tutorial literature gives for hi-hats is a spread of roughly 20 velocity
points around the average, with no two consecutive hits at exactly the same value, because the wrist
motion that produces repeated hi-hat strokes cannot produce identical ones. The same reasoning
applies to any hand-played sustaining figure — shaker, frame drum, damped gong.
Our B06 shaker plays thirty-two consecutive eighths at one velocity. This is the exact case the
rule was written against, at maximum length.
The most-repeated warning in the practitioner literature: programming ghost notes with the same
sample as the main stroke does not work, because a soft stroke has a different TONE and not just a
different level. Real kits are multi-sampled by velocity layer for exactly this reason.
We are already positioned to comply. harness/music_gen/sfz_palette.py maps several struck
instruments onto multi-key stroke inventories — gong.stroke occupies keys 60-62, frame_drum
60-65, slit_drum 60-61 — and groove.py already rotates through those inventories deliberately.
What is missing is the BINDING between the dynamic tier and the stroke key: the ghost tier should
select the ghost stroke, not merely turn the accent stroke down.
The DAW convention is well defined and worth stating in our units: 50% is straight, 66.7% is a full
triplet shuffle, and most working practice sits between 52% and 60% for a perceptible groove that is
not a shuffle. Swing delays the even-numbered subdivisions within the beat. Differential swing —
different amounts per element — is the technique of choice for anything meant to feel played rather
than programmed.
We should implement swing exactly once, as a declared cue-level and voice-level ratio in the plan,
with the tempo dependence of section 2.2 applied, and never as a random offset.
The one structural device in the practitioner literature with no counterpart in our composer is the
FILL: a short, denser, differently-articulated figure that occupies the last bar or half-bar before a
formal boundary and announces it. Its sibling is the pickup or anacrusis that leads INTO a phrase.
groove.py has break_window(), and R06 refuses a groove with no break in the last third. But a
break is a SUBTRACTION — dropped roles, reduced texture — and a fill is an ADDITION. Both are needed;
they do different work. Our program can currently take things away at a boundary and has no way to
put anything extra in front of one. This matters even more in a cyclic idiom than in a strophic one,
because the cyclic idiom's arrival point is its ONLY strong formal event (section 5.2).
Jason Graves's GDC 2025 session "Fascinating Rhythm: Bending the Power of Groove To Your Will" is the
game-side statement of exactly this material — creative drum and percussion patterns, orchestral
writing in odd time signatures, musical phrasing and its impact on gameplay, grooves that support the
in-game action, and layered rhythms building to a satisfying interactive experience, deconstructed
from *Dead Space*, *Still Wakes The Deep*, *No Rest For The Wicked* and *Tomb Raider*. It is the
closest thing to a peer statement of our own problem by someone shipping AAA.
---
Justin London's *Hearing in Time: Psychological Aspects of Musical Meter* (Oxford, 2nd ed.) develops
a set of metric well-formedness constraints that bound the temporal range in which metric entrainment
can occur at all. The load-bearing one for us: the inter-onset interval for a metric element must be
greater than about 100 ms and less than about 1.5–2.0 s. Below the floor, events fuse and
stop being countable; above the ceiling, successive events stop being heard as a periodicity and
become a sequence of separate arrivals. Metric behaviour is strongly tempo-dependent throughout.
Apply that to the landed Flores cue and something uncomfortable falls out.
| level | period at 148 BPM | inside London's window? |
|---|---|---|
sixteenth (subdiv 4) | 101 ms | at the floor, marginally |
| eighth (the shaker's grid) | 203 ms | yes |
| beat (tactus) | 405 ms | yes |
| bar | 1.622 s | yes, near the ceiling |
| colotomic interior stroke, beat 8 | 3.243 s | NO |
| cycle, gong to gong | 6.486 s | NO |
| the every-fourth-cycle stroke | 25.9 s | NO |
The colotomic clock — the layer whose stated job is to state the metre by instrumentation — sits
entirely ABOVE the entrainment ceiling. It is not a metric level for a listener. It is a formal
punctuation mark, and it should be described and defended as one. That is a legitimate role (it is
what the largest gong does in Java too), but it means the claim that our metre is "stated by
instrumentation" is currently carried by nothing a listener can entrain to, because the levels below
the gong are all hand-typed ostinati with no accent.
This is, in one table, the mechanism by which a cue can pass every structural rule we own and sound
like "a bunch of noise".
London's further constraint of maximal evenness is what licenses meters whose beats or subdivisions
are unequal — the theoretical opening that Polak's jembe data and Naveda's samba data walk through.
For a program with a beats_per_bar integer and a subdiv integer, this is the missing degree of
freedom: our metre can only be even, and roughly half the world's dance music is not.
The West African literature supplies the other half of the metric-hierarchy story: a distinctly
timbred, asymmetrical, aurally prominent ostinato that acts as the reference against which everything
else is heard. Agawu's much-argued account (Journal of the American Musicological Society 59/1)
describes the standard pattern as a seven-stroke figure spanning twelve eighth notes, and — the part
usually ignored — argues strenuously AGAINST the "additive rhythm" framing, calling it a default
grouping mechanism adopted by transcribers who disregard the choreography rather than an indigenous
conception. Anku's "Circles and Time" (Music Theory Online 6/1) supplies the **Regulative Time
Point** (RTP) as the neutral way to talk about where a cycle is measured from without importing
"meter": since the regulative beat always falls on one of the time points of each set rhythm, Anku
labels that position the Regulative Time Point rather than calling it a beat.
Two rules for us, one positive and one negative.
Our colotomic clock is a degenerate version of it (two strokes, above the entrainment ceiling); a
proper reference part sits at bar or half-bar level, is asymmetric, and never varies.
groove.py's header names itsBATTLE and TENSION figures as "additive 3+3+2 grouping" and calls that "a general additive figure".
Agawu's argument is that the additive framing is a transcription artefact rather than a general
truth, and our own file already takes care to say the figure is "NOT attributed to any living
tradition". The care instinct there was right; the LABEL should be repaired anyway, because
"additive" carries a theoretical claim that the cited literature disputes. Call it a 3+3+2 stroke
distribution and drop the theory word.
---
Our COUNTERPOINT_AND_VOICE_LEADING.md §7.3 already carries the one-sentence version — the largest
gong marks the cycle, smaller gongs subdivide it at fixed positions, the metre is stated by
instrumentation rather than by accent. Everything below is what that sentence compresses.
A Javanese *gongan* is punctuated by a hierarchy of instruments, each operating at its own period,
and the FORM is named by that schedule. The lancaran — a fast-paced sixteen-beat cycle used in
lighter pieces — is conventionally notated with kethuk strikes every two beats, kenong every four,
kempul every four but offset from the kenong, one kempul omitted by a *wela* (a deliberate rest at
the position where the pattern would otherwise sound), and the gong ageng closing the cycle. Ketawang
and ladrang are longer forms with correspondingly sparser kenong and kempul schedules over 16- and
32-beat cycles.
The kenong, kethuk and kempyang are sets of inverted pots on rope in wooden frames, and all three are
played by ONE musician with two mallets. The kenong marks off divisions of a structure smaller than
the gongan.
The design fact to extract: at least four active periodicities, at 2, 4, 4-offset and 16 beats,
plus a wela — a hole punched in one of them so the pattern is not symmetric. Our B01 has two
positions and no hole.
This is the most consequential single structural fact in this section and it is stated independently
on both islands.
Tenzer's "Theory and Analysis of Melody in Balinese Gamelan" (Music Theory Online 6/2) puts it
directly: stress points are "measured backwards in groups of four tones from the final tone of the
melody, which receives the strongest stress of all", and the gong stroke marks that final point where
all parts converge, with the midpoint taking a secondary stress reinforced by the jegogan. The
descriptive literature on kebyar says the same in plainer words: the gong gedé marks cycle
conclusions, while kempur and kemong subdivide.
A colotomic cycle is END-ACCENTED. It is a goal, not a launch. Everything in it is heard as
approaching the gong.
Our B01 places its LOUDEST stroke (vel_scale 1.0) at beat 0.0 and its quieter stroke
(vel_scale 0.7) at beat 8.0. We have built a start-accented cycle: a downbeat that launches a bar,
which is the Western convention and the opposite of the practice we cite as our authority for the
device. This inverts the entire phrase-goal architecture — the melodic writing in
pass3_grammar.py composes towards cadences that the clock then contradicts.
Irama is the concept our composer most conspicuously lacks. It is not tempo — it is the ratio between
the structural melody (*balungan*) and the elaborating instruments' density, and Javanese practice
treats it as a separate axis from tempo (*laya*, itself subdivided *seseg* / *sedeng* / *tamban*),
so the same irama can be played at different speeds.
The levels, in saron panerus (peking) notes per balungan note:
| irama | name | panerus notes per balungan note |
|---|---|---|
| 1/2 | lancar | 1 |
| I | tanggung | 2 |
| II | dadi (dados) | 4 |
| III | wiled (wilet) | 8 |
| IV | rangkep | 16 |
Sumarsam's "Temporal and Density Flow in Javanese Gamelan" is the standing treatment of this
relationship between temporal and density flow, and his "Theorizing About Music: The Case of Gamelan"
is the companion methodological essay on treating gamelan theory on its own terms.
What this buys a game composer is enormous and is exactly the thing we keep trying to build by other
means: a formal system in which the same material is presented at four or five different SURFACE
DENSITIES over an unchanged structural line, with the transitions cued live. That is vertical
layering with a theory behind it — and it maps onto Winifred Phillips's game-side account of pure
vertical layering (layers "play in multiple configurations, interacting with the actions of the
player", building complexity as they are added, instilling "a sense of progression and variety
without needing to fragment the composition") far better than a simple on/off layer stack does,
because the layers are related by a stated ratio instead of merely coexisting.
Our COUNTER_MELODY_AND_DIALOGUE.md operations ledger already boards this as item 7 — "irama_level
per section multiplying the kotekan subdivision", marked CODE-ABLE. It has not been built. It should
be near the top of the queue.
The hand-played *kendang* controls the tempo and rhythm of pieces as well as the transitions from one
section to another. The ensemble has a leader and the leader is a drummer, not a conductor and not a
melodist.
Our composer has no leader voice, no cue signal, and no tempo motion at all — one tempo_bpm per
cue, applied to every note. The whole apparatus by which this music changes is missing.
---
Michael Tenzer's *Gamelan Gong Kebyar: The Art of Twentieth-Century Balinese Music* (University of
Chicago Press, 2000) is the standard reference, and reviewers single out precisely the material we
need — its richly detailed treatment of dynamics, tempo, affect and drumming, topics earlier
scholarship neglected, informed by Tenzer's own years playing and composing professionally.
Tenzer's four-part texture, organised by rhythmic density:
| stratum | density | typical instruments |
|---|---|---|
| kotekan (figuration) | four notes per beat | highest-pitched metallophones, in interlocking pairs |
| neliti (primary melody) | one to two tones per beat | trompong, ugal |
| pokok (trunk tones) | one tone per two beats | calung |
| jegogan (foundation) | one per four beats or sparser | jegogan |
His load-bearing sentence: "each stratum has its own points of metric stress, which also connote
special structural relevance." The strata are not merely different speeds of the same thing; each has
its own accent geography, and they agree at the structurally important points and not elsewhere.
Balinese melody is, in his description, "composed in a stratified fashion, in which several
realizations of the same melodic idea are presented simultaneously at different rhythmic densities".
Our composer implements the SHAPE of this (pokok, kotekan from_layer, elaboration layers) and
gets the principle right. Section 6.2 is where it diverges.
Wayne Vitale's "Kotekan: The Technique of Interlocking Parts in Balinese Music" (Balungan 4/2, 1990,
pp. 2–15) is the classic dedicated treatment, and notes that interlocking parts — also called
*candetan* — appear across many Balinese forms beyond gong kebyar. The documented figuration classes
and their part-relations:
figuration, no shared pitches, the composite forms a single melodic line. Structurally the simplest
and, because it is used at the fastest tempi, among the hardest to play accurately.
UNISON, and then each takes one of its neighbour tones.
MIDDLE pitch is played in unison by both parts (with the reyong an exception, since those players
share pots).
pitch — and the lowest and highest pitches are typically struck SIMULTANEOUSLY.
Colin McPhee's earlier taxonomy from the 1930s (*Music in Bali*, 1966) names four melodic kotekan
types on the same axis — *chandetan*, *tutugan*, *ochètan*, and *semi-ochètan*, the last defined as an
interlocking pattern in which "the parts meet on a unison".
Read that list against our compiler. pass2_realise.compile_pattern's kotekan branch implements
telu and empat pitch-sets correctly — telu gives polos [base-1, base] and sangsih [base, base+1]
with base shared, which is exactly the three-pitch shared-middle rule; empat gives polos
[base-1, base] and sangsih [base+1, base+2] with no sharing, which is exactly the four-pitch rule.
The PITCH logic is right.
The RHYTHM logic is one line: if (part == "polos") != on_beat: continue — polos strictly on-beat,
sangsih strictly off-beat, forever. And pass2_realise's own self-test R5 asserts as a LAW that
"polos and sangsih share no onset".
That hard-codes strict alternation as the definition of kotekan. Three of the five documented classes
require the opposite at specific points: nyok cok requires both parts in unison on the anticipation,
empat has its outer pitches struck simultaneously, and McPhee's semi-ochètan is DEFINED by the parts
meeting on a unison. The coincidence points are not sloppiness in the tradition; they are where the
composite locks, and Tenzer's account says the same thing from the melodic side — "the final
(stressed) tone of each kotekan contour class is the same as the prevailing tone" of the slower
stratum, and the classes themselves are eight-member figures lasting two beats.
One further detail from Tenzer worth encoding, stated precisely because the loose version of it is
wrong: where two tones sound together at the kempyung interval (the pelog fifth), "the lower tone
has acoustic dominance". Tenzer says this of the kempyung dyad, NOT of a polos/sangsih interlock in
general, and this document does not extend it there. What it licenses is narrow and real: where our
writing produces a simultaneous dyad in this idiom, which tone dominates is an acoustic fact of the
interval and not a free mixing choice.
And Leslie Tilley's *Making It Up Together: The Art of Collective Improvisation in Balinese Music and
Beyond* (University of Chicago Press, 2019) is the modern corrective to the assumption our whole
implementation rests on. Through the reyong's melodic *norot* practice and the interlocking drumming
tradition *kendang arja*, she shows that even Bali's famous interlocking techniques can be IMPROVISED,
and analyses the fixed and flexible connections between polos and sangsih — countering earlier claims
that there is little or no improvisation in Balinese music. Our implementation treats the polos/sangsih
relation as fully determined. The scholarship says part of it is fixed and part of it is negotiated
in performance, which is a much better model for a generative system than a single deterministic rule.
Bali separates two functions our stack has merged. The kajar (or kempli) keeps the beat — a
continuous, unglamorous, timbrally distinct pulse instrument. The gong, kempur and kemong
punctuate the cycle at their own periods. Gongs "provide a structure for phrasing for the music by
repeating a four or eight beat pattern".
The named forms are short. *Gilak* is an eight-beat colotomic structure involving kajar, gong, kempur
and kempli; in shorter compositions such as the Gilak used in Topeng and Baris dances the first two
kempur are omitted. *Bapang* is an eight-beat unit; *batél* a four-beat one. Intermediate beats are
subdivided into these smaller units, allowing layered elaboration while the cyclic repetition holds.
Two facts land hard on our Flores cue. First, the working cycles are EIGHT and FOUR beats, not
sixteen — that is 3.2 s and 1.6 s at 148 BPM, which is exactly London's entrainment window rather
than well outside it. Second, there is a dedicated continuous beat-keeper that is not the gong and not
a drum. We have neither.
The Hawaii Gamelan Bali forms reference (remus.shidler.hawaii.edu/GAMELAN/BALIFORM.HTM) is the
canonical online table of these schedules and is listed in SOURCES; it was unreachable at the time of
writing and should be re-fetched before any schedule is transcribed into code.
The kendang is a double-headed conical drum played in tuned pairs: *lanang* (male, higher) and
*wadon* (female, lower), in interlocking patterns that are described as almost melodic. The **kendang
wadon player typically tops the hierarchy of the ensemble, setting tempi and aurally cuing
transitions like a conductor**; the lanang fills the interlock. The pair cues tempi, sections,
responses, and *angsel* — the explosive cue accents that punctuate the form — with different patterns
for different colotomic forms.
Tenzer describes the drummer beating a tempo of about four beats per second while responding to the
dancer's cues and signalling the rest of the ensemble; toward the end of a performance the drummer
and dancer may engage in a kind of duet, seeming to struggle for control of the music.
And the style's signature is "explosive changes in tempo and dynamics", including unmetered *kebyar*
sections with dramatic transitions.
Three absent primitives, named:
instructions rather than as counterpoint.
break_window(), which is a texture subtraction. An angsel is everyone hitting a thing together
and then resuming.
has one scalar for it.
Male/female instrument pairs in kebyar are deliberately detuned against each other to produce a
beating, shimmering, pulsating quality; some ensembles tune the pairs nearly a quarter-tone apart for
pronounced beating. This is a rhythm phenomenon expressed in the frequency domain — an amplitude
periodicity produced by tuning rather than by striking — and it is worth naming here because our Bali
identity card (emit_identity_cards.py, HF_MT_12_REGION_BALI) already declares "paired detuned
ranks" and a B-section where "the paired detuning becomes audible as beating". If that is realised,
the beat FREQUENCY is a rhythmic parameter and should be chosen against the cue's tempo, not left to
whatever the sampler does.
---
This section exists because the slice's first region cue is a Flores cue, COUNTERPOINT_AND_VOICE_LEADING.md
§7.3 declares the Flores substrate thin and rules that the lane "must not fill that gap and must not
invent it", and both of those positions turn out to need amendment — one because there is more
published detail than we thought, and one because we have attributed an ensemble to the wrong people.
*Gong waning* is a folk ensemble of Sikka Regency, in central-eastern Flores, around Maumere. It
is used in adat ceremony and dance accompaniment, sacred and secular, and is documented as present
since around the 1920s.
The organology is published in more detail than "thin" implies. What follows is restricted to what
the fetchable Indonesian-language sources listed in 9.6 actually say, and where they disagree, the
disagreement is shown rather than averaged:
idiophone — *saur*, also given as *peli anak* — a tube of roughly 1 to 1.5 m struck with two small
sticks in alternating strokes, whose stated job is to hold the ensemble's rhythm. All three sources
agree this third category exists, and it is the closest thing in the ensemble to a dedicated
beat-keeper (compare 6.3).
hide, single-membrane, played with hands and/or sticks. The smaller is named *dodor* in one source
and *waning anak* in the general literature.
gongs and does not name them; cintaindonesia gives five — *Ina wa'a, Ina depo, lepe, Higo-hagong,
Udong*, with *higo-hagong* being a pair struck together; Kompas gives four — *Inan* (large),
*Lepen* (medium), *Udong Beit* (small), *Anak* (smallest). The one stable fact across all three is
a graded SET of small-to-medium gongs named as a family by relative size, plus drums, plus the
bamboo timekeeper.
Two claims that appeared in an earlier revision of this section have been REMOVED as unverified:
the centimetre measurements (waning inan ~35 × 60 cm, waning anak ~25 cm, gongs 35 cm down to 20 cm),
the name list *inan / depun / beit / udon / anak*, the nine-player count, and the playing description
"held in the left hand, struck with a rubber-padded mallet, damped against the player's chest". They
were attributed to Grove Music Online via a **browse-index URL, which is a navigation page and
carries no article text** — it cannot support any specific claim, and no fetchable source in 9.6
corroborates them. Kompas does say the gongs are struck with wooden mallets tipped with rubber, so
the rubber-padded mallet survives; the chest-damping and the measurements do not. Anyone wanting them
must read the Grove *Flores* article itself, or an organological monograph, and cite it by article.
One structural gift survives that deletion intact, because it does not rest on the removed material:
a graded family of small-to-medium gongs, named by size and distributed across separate players,
alongside a dedicated bamboo timekeeper, is a gong-chime-plus-pulse architecture — which is a more
specific and more useful structural claim than the generic three-tier stratification §7.3 currently
settles for. The ring-length question our _marker() decides ("the ring lengths are the span to the
next stroke, because a gong is an acoustic fact") is now formally OPEN for this ensemble rather than
settled in favour of a short damped ring: small hand-carried gongs plausibly ring shorter than a
suspended gong ageng, but this document no longer has a citation that says so.
docs/spine/CH_03.md is a Manggarai chapter: Wae Rebo, the Compang Ruteng centre-stone, the
lingko spider-web fields, the Todo royal ground, the caci. Manggarai is WEST Flores. It is a
different district from Sikka with a different ensemble.
What the documentation of Manggarai music actually says:
Celestial Harmonies field recording *Music of Indonesia: Flores* (13175-2, 25 tracks, 72:42) is
focused on the Manggarai district specifically — its notes open by calling Manggarai by far the
largest of the five districts of Flores — and covers central, western and eastern Manggarai
including a dedicated Penti harvest-ritual section. Its notes tie the ensemble to the ancestors
who invented it and still often play it at ritual moments. (The women-players claim is NOT from
this recording's notes — see the caci bullet below for where it actually comes from. Corrected on
citation review.)
plus mbata. All of these are confirmed in the recording's notes and track listing. The spatial
rule often quoted alongside them — mbata performed inside the *mbaru gendang* (the drum house),
danding and caci outside in the *natas* (the village courtyard) — is UNVERIFIED: it is not in
the fetched liner-note text, and no other source in 9.6 was found to carry it. It is retained here
as a lead to chase, not as a citable fact, and it must not enter a card or a cue until a source
names it.
(drum), and the musicians are usually women**: during the match the musicians, who are usually
women, gather and play the drums and gongs. Caci is performed by Manggarai people across the
greater Manggarai cultural area of western Flores, is most frequently performed at Penti (held
at roughly five-year intervals), and a caci event at Penti runs at least a full day and often two
or three. The tandak claim — women performing chanted and sung cheering that blends into the
music — is UNVERIFIED and has been demoted: neither the caci reference nor the Celestial
Harmonies notes mention it. A women's vocal layer over the ensemble is a plausible and attractive
compositional idea, but it is currently OURS, not the tradition's, and section 11 does not adopt it.
That is a real, citable, structural picture for our own chapter: a drum-and-gong ensemble, played by
women, in the open courtyard, at a harvest festival held every few years, for a scored contest that
lasts for days. The sung/chanted vocal layer is the one element of that picture the sources do not
yet support.
harness/music_gen/emit_identity_cards.py (the HF_MT_03 Flores card) declares the instrumentation
as a "gong-waning ensemble at reference register — tuned hanging gongs, kettle gongs, ceremonial
drum", declares the care note "the gong-waning register is reference-composed and never sampled from
consecrated performance", and declares substrate confidence "thin on the caci contest detail and the
gong-waning musical theory".
Three problems, in ascending order of seriousness.
of a Manggarai caci at Todo is a factual error, and under CVD §17.1 it is also a care error of the
specific kind the doctrine exists to prevent: it flattens two distinct living cultures on one
island into one.
a kettle-gong chime. Gong waning's gongs are a graded family of small-to-medium gongs struck with
rubber-tipped wooden mallets; Manggarai's caci accompaniment is gong and gendang. (The stronger
"hand-held and chest-damped" characterisation that stood here was removed on citation review — see
7.1. The point that the card's description is gamelan-shaped survives without it.)
performance context and enough ensemble-level organology for both ensembles to compose a
structurally faithful cue with no invention at all. The correct amendment is not "the gap is
filled" — it is that the gap is narrower and better mapped than §7.3 recorded. The specific
remaining gaps are the melodic and modal material, and — after the citation review recorded in 7.1
— the fine organology (exact gong counts, gong names, dimensions, damping technique), on which the
accessible sources visibly disagree with each other.
This is flagged, not applied. It touches region attribution and a §17.1 care call, so it goes to the
director rather than being edited in this lane. The three-line fix is obvious (name Manggarai's own
drum-and-gong ensemble, correct the playing description, restate the confidence note), but naming a
people's ensemble is not a proposal-tier call to make unilaterally.
---
Every one of these is present in the landed Flores cue and every one is measurable before a single
sample is rendered.
thing in performed music. This is the primary defect.
and no accent — our shaker. It occupies the sixteenth level permanently, so no other part can
create an event there, and it can never be subtracted for effect because its absence would be the
only thing anyone noticed.
onset_synchrony; capped at 0.55 by R03; but the cap is only checked between voices INSIDE a Groove object, and no plan is built
from a Groove object.
idiom whose entire stress architecture is measured backwards from the end.
design document assigns to metre.
transition signal, and no reason for anything to change at any particular moment.
is only available as layers switching on and off.
reaction to this document. See 2.4.
---
Every source below was read or fetched for this document. Where a fetch failed or a source is an
aggregator, that is stated inline rather than hidden.
CITATION REVIEW, 2026-08-08. This list was independently re-verified after the first draft. Every
entry marked ✅ was re-fetched and confirmed to exist AND to say what this document claims of it.
Entries marked ⚠ could not be re-fetched (paywall, 403, dead host, or a format the fetcher could not
read) and are cited at reduced confidence. Six defects were found and repaired in place — they are
listed here so the repair is auditable rather than silent:
1. Author error. "Syncopation and Groove in Polyphonic Music" was credited to "Sioros, Witek et
al." Witek is not an author. Corrected throughout to Sioros, Madison, Cocharro, Danielsen &
Gouyon (2022).
2. Terminology error. Anku's term was given as "Referential Time Point". His term is
Regulative Time Point (RTP). Corrected in 4.3.
3. Misattributed quote. Tenzer's "the lower tone has acoustic dominance" was applied to an
interlocked polos/sangsih dyad. He states it of the kempyung interval. Corrected in 6.2,
RG-28 and GAP-15, and the rule was narrowed accordingly.
4. Misread finding. Polak's 28:36:36 was described as the far end of a performer-to-performer
range. It is a tempo-dependent shift beyond ~200 ternary BPM (600 ppm, not the "570 ppm" first
written). Corrected in 2.3.
5. Unsupported organology. The gong waning measurements, the gong-name list, the nine-player
count and the chest-damping playing description were sourced to a Grove Music Online BROWSE-INDEX
url, which carries no article text, and are contradicted or unmentioned by all three fetchable
Indonesian sources. Removed from 7.1, 7.3, GAP-12 and GAP-13; the surviving claims are restated
from the sources that actually carry them, disagreements shown.
6. Misattributed field-recording claims. The Celestial Harmonies liner notes were credited with
saying the nggong-tembong ensembles are played by local women (that claim belongs to the caci
source) and with the mbaru-gendang/natas spatial rule and the women's *tandak* chanting (neither
appears in any fetched source). Re-attributed and demoted in 7.2.
Nothing in section 11 (WHAT WE ADOPT) changed as a result: items 1–8 rest on ✅ sources, and item 9
is a FLAG to the director whose factual core — gong waning is Sikka's, CH_03 is Manggarai — is
confirmed by both the caci reference and all three Sikka sources.
"Syncopation, Body-Movement and Pleasure in Groove Music." *PLoS ONE* 9(4): e94446. Re-verified:
the article reports "an inverted U-shaped relationship between degree of syncopation in drum-breaks
and movement- and pleasure-ratings, indicating that intermediate degrees of syncopation elicit the
most desire to move and pleasure in music associated with groove."
https://journals.plos.org/plosone/article/file?id=10.1371/journal.pone.0094446&type=printable
(PubMed record: https://pubmed.ncbi.nlm.nih.gov/24740381/ ; 2015 correction, which the authors
state does not affect the outcome or interpretation:
https://journals.plos.org/plosone/article?id=10.1371%2Fjournal.pone.0139409 )
and complex melodies, and how listeners perceive it." *Frontiers in Psychology* 5:894.
https://www.frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2014.00894/full
Re-verified: four professional musicians, twelve melodies (six simple, six complex), deadpan plus
intentional minimum- and maximum-groove renditions; maximum-groove performances show higher event
density, greater syncopation, and more notes on 8th- and 16th-note positions. Micro-timing carries
"no significant weights at all" with "five out of six weights are slightly negative".
(2022). "Syncopation and Groove in Polyphonic Music: Patterns Matter." *Music Perception* 39(5):
503–531. DOI 10.1525/mp.2022.39.5.503
https://online.ucpress.edu/mp/article/39/5/503/182325/Syncopation-and-Groove-in-Polyphonic-MusicPatterns
(publisher returned 403; verified via the University of Plymouth research portal record:
https://researchportal.plymouth.ac.uk/en/publications/syncopation-and-groove-in-polyphonic-music/ ).
An earlier revision of this document credited this paper to "Sioros, Witek et al." — **Witek is not
an author**, and the error is corrected here and in 1.3. The verified finding: a moderate level of
syncopation increases groove but only for certain syncopation patterns, with the key difference
lying in the distribution of syncopation across instruments and metrical positions.
ISMIR 2012. https://ismir2012.ismir.net/event/papers/283_ISMIR_2012.pdf (PDF text layer did not
extract; cited for the WNBD and LHL definitions as summarised in the indexed abstract)
https://www.researchgate.net/profile/George-Sioros/publication/275886115_Syncopation_as_Transformation/links/557af01c08ae8d0481931ef1/Syncopation-as-Transformation.pdf
collapsed them under a single author and url:
Kilchenmann, L., Hoesl, F., Baldassarre, A., & Alessandri, E. (2020). "Experience of Groove
Questionnaire: Instrument Development and Initial Validation." *Music Perception* 38(1): 46–65.
DOI 10.1525/mp.2020.38.1.46. Two correlated scales: urge to move and pleasure.
*Music Perception* 39(1): 83–99. DOI 10.1525/mp.2021.39.1.83. Lead author is Düvel, not Senn —
the first draft attached Senn's name and the original paper's title to this url.
https://online.ucpress.edu/mp/article/39/1/83/118491/Experience-of-Groove-QuestionnaireGerman
43(1): 91–103. DOI 10.1525/mp.2025.2457869.
https://online.ucpress.edu/mp/article/43/1/91/211844/Japanese-Version-of-the-Experience-of-Groove
The body claim in 1.1 — that Senn and colleagues built the EGQ around two factors and that it has
been re-validated in German and Japanese — is confirmed by all three records.
properties and listeners' attitudes." *PLoS ONE*.
https://journals.plos.org/plosone/article?id=10.1371%2Fjournal.pone.0199604
https://www.researchgate.net/publication/384351633_The_Effect_of_Tempo_Manipulation_on_the_Urge_to_Move
(ResearchGate returned 403 on re-fetch; the 89–130 BPM stimulus range and the ~100 BPM optimum
reported in 1.5 are therefore UNVERIFIED at this pass. RG-25 depends on this number and should be
treated as provisional until the paper is read directly. Note that RG-25 is a *declared cost*
field, not a refusal, so a wrong optimum mis-labels a cue rather than blocking one.)
bass patterns with behavioural, structural, and audio measurements."
https://www.researchgate.net/publication/392490455_The_Lucerne_Groove_Library_An_audio_stimulus_corpus_of_444_short_Western_popular_music_drum_and_bass_patterns_with_behavioural_structural_and_audio_measurements
https://escholarship.org/content/qt2sw3r2dw/qt2sw3r2dw_noSplash_e9a6f0db254762f58a16e0f2528004c1.pdf
lower musical pitch explains why bass-ranged instruments lay down musical rhythms." *PNAS* 111(28):
10383–88. https://pubmed.ncbi.nlm.nih.gov/24982142/ ; publisher:
https://www.pnas.org/doi/abs/10.1073/pnas.1402039111 (403 on re-fetch); author PDF:
https://trainorlab.mcmaster.ca/publications/pdfs/PNAS_2014_Low_pitch_timing.pdf (text layer did not
extract). Re-verified via PubMed: "mismatch negativity responses were larger for timing deviants of
the lower tones"; "tapping synchronization was more influenced by the lower-pitched stream"; and
"a biologically plausible model of the auditory periphery suggest[s] that nonlinear cochlear
dynamics contribute to the observed effect." All three claims made in 1.6 are confirmed.
https://www.pnas.org/doi/pdf/10.1073/pnas.1801421115
(Foundational statement of the position the experiments in 2.4 test; cited by title and author.)
33(1); and Butterfield, M. (2010), "Participatory Discrepancies and the Perception of Beats in
Jazz," *Music Perception* 27(3). Benadon's published commentary on Butterfield:
https://mtosmt.org/issues/mto.07.13.1/mto.07.13.1.benadon.php
Microtiming Behavior." *Music Theory Spectrum* 45(2): 181–198. DOI 10.1093/mts/mtad005
https://academic.oup.com/mts/article/45/2/181/7234305 (authors and pagination added on citation
review — the first draft cited it anonymously). Re-verified: all three theories are present as
described, the D'Angelo "Left and Right" analysis carries the 55–80 ms figure quoted in 2.1 and
RG-18, the rumba columbia case is Los Muñequitos de Matanzas' "Elegía a los columbianos", and the
polska case is "Frisells storpolska".
https://mitpressbookstore.mit.edu/book/9781409403401 ; review discussion of the beat-bin model:
https://distantreader.org/stacks/journals/dancecult/dancecult-366.htm
Compound Musical Sounds." *Annals of the New York Academy of Sciences*.
https://nyaspubs.onlinelibrary.wiley.com/doi/10.1111/nyas.70306 (paywalled — HTTP 402 on fetch;
cited for existence and framing only, no findings claimed)
Evidence for a Common Rhythmic Pattern." *Music Perception* 19(3): 333–349.
DOI 10.1525/mp.2002.19.3.333
https://online.ucpress.edu/mp/article-abstract/19/3/333/61900/Swing-Ratios-and-Ensemble-Timing-in-Jazz
Re-verified: the swing ratio runs from 3.5:1 at slow tempi to 1:1 at fast tempi; the 2:1
"triple-feel" appears only at particular tempi; the short note holds a roughly constant ~100 ms
duration, read as a perceptual limit. All three numbers used in 2.2 and RG-16 are confirmed.
*Ethnomusicology* 50(1): 73–98.
https://scholarlypublishingcollective.org/uip/etm/article/50/1/73/234546/Slicing-the-Beat-Jazz-Eighth-Notes-as-Expressive
; JSTOR: https://www.jstor.org/stable/20174424 ; author copy:
http://www.fernandobenadon.com/uploads/1/8/4/2/18429773/slicing_the_beat.pdf
Existence and exact citation CONFIRMED via Benadon's own reference list in *Music Theory
Online* 13/1 (2007), which cites it as "Benadon, F. 2006. Slicing the Beat: Jazz Eighth-Notes as
Expressive Microrhythm. *Ethnomusicology* 50(1), 73–98." Every route to the article text itself
(publisher, SEM page, author site) returned 403 or failed, so the specific numeric BUR span is
UNVERIFIED and 2.2 no longer asserts it.
Mali." *Music Theory Online* 16(4). Re-verified in full: the 27:33:40 ratio and its gloss, the ~2%
standard deviation, the four lead players conforming to the same short-medium-long feel, the
independent realisation by dunun and second jembe, the 135 → 205 ternary BPM span, and the
28:36:36 shape beyond 200 ternary BPM. One error corrected in 2.3: the first draft presented
28:36:36 as the far end of a performer-to-performer range and placed the shift at "570 pulses per
minute". It is a tempo-dependent transformation at the top of the range, at beyond 600 ppm.
https://mtosmt.org/issues/mto.10.16.4/mto.10.16.4.polak.html ; PDF:
https://www.mtosmt.org/issues/mto.10.16.4/mto.10.16.4.polak.pdf ; author publication list:
https://www.rainerpolak.de/publications/
Stable Ensemble Entrainment: A Corpus Study of Malian Jembe Drumming."
https://www.academia.edu/28459109/Both_Isochronous_and_Non_Isochronous_Metrical_Subdivision_Afford_Precise_and_Stable_Ensemble_Entrainment_A_Corpus_Study_of_Malian_Jembe_Drumming
with Musical Properties in Samba Music." *Journal of New Music Research* 40(3): 225–238.
DOI 10.1080/09298215.2011.603833
https://www.tandfonline.com/doi/full/10.1080/09298215.2011.603833
Citation confirmed exactly (authors, journal, volume, issue, pages, year, DOI). The publisher
returned 403 on every re-fetch, so the two specifics used in 2.3 — the 106-excerpt corpus size and
the systematic anticipation of the third and fourth semiquavers — are UNVERIFIED at this pass.
Nothing in section 10 depends on them: RG-15's mechanism comes from Polak, which is ✅.
microtiming on the perceived groove quality of a simple drum pattern performance."
*Musicae Scientiae* 17(2): 246–260. DOI 10.1177/1029864913486793
https://journals.sagepub.com/doi/abs/10.1177/1029864913486793 (publisher 403; verified via the
Crossref record and its deposited abstract). Confirmed: 93 music students; five conditions at −25,
−15, 0, +15, +25 ms; "the highest ratings of perceived drum pattern quality were given for the
rhythmically accurate (quantized) version"; "early time shift was rated more negatively than the
comparable late time shift". The two remaining results reported in 2.4 — snare deviations rated
worse than bass-drum deviations, and no effect of rock/pop expertise — plus the "aesthetics of
exactitude" phrasing, are from the full text and were not re-confirmable from the abstract.
Perception of Groove in Short Rhythms." *Music Perception*.
https://www.diva-portal.org/smash/get/diva2:698301/FULLTEXT01.pdf (PDF text layer did not extract;
its result is characterised here only as Madison & Sioros themselves characterise it)
https://www.frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2017.01709/full
Rosanna Shuffle." arXiv 2411.06892. https://arxiv.org/abs/2411.06892 (authors added on citation
review). Re-verified: it analyses Jeff Porcaro's original drum track on Toto's 1982 "Rosanna" and
reports "clear long-range correlations in the microtiming deviations", that "the two-bar phrases of
the song feature a distinctive repeating pattern in the timing and dynamics of the hi-hat beats",
and "notable tempo drift typical of tracks recorded without a metronome". All three claims in 2.5
and RG-19 are confirmed.
https://www.scup.com/doi/10.18261/ISSN1504-2960-2006-01-11
Press. https://global.oup.com/academic/product/hearing-in-time-9780199744374 ; Oxford Academic
record: https://academic.oup.com/book/9899 ; author's introduction PDF:
https://musikwissenschaft.univie.ac.at/fileadmin/user_upload/i_musikwissenschaft/Forschung/Vortragsreihen/J_London_Hearing_in_Time_Intro.pdf
(the introduction PDF's text layer did not extract on re-fetch and the book itself is not openly
readable). The book is real and is the standard reference; the two NUMBERS this document leans on —
the ~100 ms floor and the ~1.5–2.0 s ceiling for a metric element's inter-onset interval, and the
maximal-evenness constraint licensing non-isochronous beats — are UNVERIFIED at this pass, and
RG-09, the 4.1 table and GAP-08 all depend on them. They are consistent with the well-known shape
of London's constraints and with Polak's ✅ demonstration that non-isochronous subdivision is
metric, but the exact bounds should be read out of a copy of the book before RG-09 is coded as a
hard validator with those thresholds. Note the direction of the risk is mild: the Flores cue's
colotomic periods are 3.243 s, 6.486 s and 25.9 s, which sit far outside any plausible reading of
the ceiling, so GAP-08's conclusion survives a wide margin of error in the bound itself.
(Already the definition in use in harness/music_gen/groove.py.)
'Standard Pattern' of West African Rhythm." *Journal of the American Musicological Society* 59(1):
1. https://online.ucpress.edu/jams/article-abstract/59/1/1/50100/Structural-Analysis-or-Cultural-Analysis-Competing
(403 on re-fetch); verified via CUNY open record: https://academicworks.cuny.edu/gc_pubs/935/
Confirmed: author, exact title, journal, volume, issue, year, and the description of the standard
pattern as "a seven-stroke figure spanning twelve eighth notes" set against "a putative
African-cultural understanding" — the structural-vs-cultural framing 4.3, RG-30 and GAP-25 rely on.
Rhythm in African Music." *Music Theory Online* 6(1).
https://www.mtosmt.org/issues/mto.00.6.1/mto.00.6.1.anku.html
Re-verified, and the first draft had Anku's term wrong. He writes: "since the regulative beat
occurs on one of the time points of each set rhythm, it is expedient to label it *Regulative Time
Point* (*RTP*) instead of regulative beat." The term is Regulative Time Point, not
"Referential Time Point". Corrected in 4.3.
*Music Theory Online* 16(4). https://www.mtosmt.org/issues/mto.10.16.4/mto.10.16.4.burns.html
the tresillo cross-rhythm derivation, which is corroborated by Anku and Burns above)
https://sumarsam.faculty.wesleyan.edu/files/2023/01/4_Temporal_and_Density_Flow.pdf (PDF text layer
did not extract on fetch; retained as the standing scholarly reference for the irama/density
relationship and already cited by COUNTERPOINT_AND_VOICE_LEADING.md §7.3)
https://sumarsam.faculty.wesleyan.edu/files/2023/01/2_Theorizing_About_Music.pdf
https://lsa.umich.edu/content/dam/cseas-assets/cseas-documents/gamelan/JavaneseGamelanMusic.pdf
(PDF text layer did not extract)
but the table is standard and matches Sumarsam's framing)
kepatihan notation carries the colotomic structure)
https://centerforworldmusic.org/2022/08/instruments-of-the-central-javanese-gamelan-1/
http://bernjordan.com/gamelan/glossary.html (fetch failed on a self-signed certificate; listed for
a later re-fetch of the per-form stroke schedules)
as COUNTERPOINT_AND_VOICE_LEADING.md §7.3 flags the same site for imbal; used only for the
lancaran schedule shape, which must be confirmed against Sumarsam or a gamelan primer before it is
transcribed into code)
Chicago Press. https://books.google.com/books/about/Gamelan_Gong_Kebyar.html?id=im7j-tHxOLAC ;
lending copy: https://archive.org/details/gamelangongkebya0000tenz ; review with the dynamics/tempo/
drumming assessment: https://symposium.music.org/index.php/42/item/3190-gamelan-gong-kebyar-the-art-of-twentieth-century-balinese-music-by-michael-tenzer
6(2). Re-verified. Confirmed verbatim: "In each stratum, such points of stress are measured
backwards in groups of four tones from the final tone of the melody, which receives the strongest
stress of all according to the way Balinese conceptualize it"; "This is where all parts converge
and are supported by the stroke of the large gong"; and the midpoint "receives the second-strongest
stress and is reinforced by the *jegogan*". These carry 5.2, RG-11 and GAP-06, which are the
document's highest-value structural repair — they survive review intact.
One correction: the quote "the lower tone has acoustic dominance" is stated of the *kempyung*
interval (the pelog fifth), NOT of an interlocked polos/sangsih dyad as the first draft had it.
Corrected in 6.2, RG-28 and GAP-15.
https://mtosmt.org/issues/mto.00.6.2/mto.00.6.2.tenzer.html ; PDF:
https://www.mtosmt.org/issues/mto.00.6.2/mto.00.6.2.tenzer.pdf ; further copy:
https://hugoribeiro.com.br/biblioteca-digital/Tenzer-Theory_Analysis_Melody_Balinese_Gamelan.pdf
30(4). https://mtosmt.org/issues/mto.24.30.4/mto.24.30.4.tenzer.pdf (PDF text layer did not extract;
listed as the current indigenous-theory reference and queued for re-fetch)
Music and Beyond.* Chicago Studies in Ethnomusicology, University of Chicago Press. Re-verified:
the publisher's description confirms the two case studies named in 6.2 — "the *reyong* gong chime's
melodic *norot* practice and the interlocking drumming tradition *kendang arja*" — and the
collective-improvisation argument that RG-29 and GAP-16 rest on.
https://press.uchicago.edu/ucp/books/book/chicago/M/bo44520596.html ; review:
https://academic.oup.com/ml/article-abstract/101/4/767/6218796 ; Project MUSE review:
https://muse.jhu.edu/article/858213/summary
4(2): 2–15. The volume/issue/page citation could NOT be independently confirmed at this pass.
*Balungan* (American Gamelan Institute) is not indexed in Crossref, gamelan.org returned 403/404,
and WorldCat rate-limited. Wayne Vitale is confirmed as a real and active Balinese-music scholar
(e.g. his review in *Asian Music* 49/1, 2018, pp. 125–29, DOI 10.1353/amu.2018.0007), and the
article is widely cited in the kotekan literature, so this is a *could-not-verify*, not a
fabrication — but the page numbers should be checked against a library record before this document
is cited onward. Load-bearing note: the figuration taxonomy 6.2 attributes partly to Vitale is
independently corroborated in detail by the tertiary entry below, so RG-26/RG-27/GAP-14 do not
stand on the unverified citation alone.
chandetan, tutugan, ochètan, semi-ochètan — as transmitted in the practical summary at
https://www.ancient-future.com/kotekan.html , re-verified: "There were four types of melodic
kotèkans that were recognized in North Bali by *Music in Bali*...chandetan, tutugan, ochètan, and
semi-ochètan", and "The semi-ochètan is an interlocking rhythm in which the parts meet on a
unison" — the definition RG-27 and GAP-14 turn on. Note this page does NOT cite Vitale.)
and confirmed to carry every specific used in 6.2: nyog cag as straightforward alternation with
each part playing every other note; nyok cok with both parts anticipating the next pokok pitch in
unison then taking neighbour tones; kotekan telu's three pitches with "the middle pitch is always
played in unison by both parts" and the reyong exception; kotekan empat's four pitches with no
shared pitch where "usually the lowest and highest pitches are struck simultaneously". *Norot* is
NOT in this entry — 6.2 correctly sources it to Tilley.)
of the ensemble hierarchy; gong gedé marking cycle conclusions; paired detuning; explosive tempo
and dynamic change)
(eCampusOntario Pressbooks). Chapter:
https://ecampusontario.pressbooks.pub/beyondtheclassroom/chapter/balinese-music-gamelan/ ; Gilak
lecture-demonstration transcript:
https://ecampusontario.pressbooks.pub/beyondtheclassroom/chapter/transcript-balinese-music/ (both
returned 403 to the fetch; the gilak eight-beat structure with kajar, gong, kempur and kempli is
taken from the indexed summary and should be re-fetched before transcription)
https://openwa.pressbooks.pub/bbccworldmusic/chapter/balinese-music-gamelan/ (403 on fetch)
refused at the time of writing; this is the canonical online table of Balinese colotomic schedules
and must be re-fetched before any schedule is coded)
https://www.cambridge.org/core/journals/yearbook-for-traditional-music/article/abs/different-temporalities-the-time-of-balinese-gamelan/0317894144F7A2FF3B5CBDD1A80AB93F
https://www.harmonies.com/releases/13175.htm Re-verified. The liner notes DO carry: the Manggarai
focus ("The district (*kabupaten*) of Manggarai is by far the largest of the five districts of the
island of Flores"), the "ancestors who invented and still often play the *nggong–tembong*
(drum-gong) ensembles at ritual moments", the "musical whip duels (*main caci*)", the "solo and
choral circle dances (*raga*, *gezang*, *danding*, *sanda* and *ronda*)", mbata in the track
listing, and a dedicated Penti Harvest Ritual section.
They do NOT carry, and the first draft wrongly attributed to them: that the ensembles are
played by local women (that belongs to the caci source below), the *mbaru gendang* / *natas*
spatial rule, or *tandak* chanting. Corrected and demoted in 7.2. Track listing example:
https://www.amazon.com/Nggong-Mese-Great-Gongs-Tembong/dp/B000QMDL58
https://folkways.si.edu/music-of-indonesia-vol-9-from-central-and-west-flores/islamica-world/album/smithsonian
Confirmed: "Caci is mainly performed by Manggarai people distributed within the greater Manggarai
cultural area of western parts of Flores island"; "During the match, musicians, who are usually
women will gather and play drums and gongs"; Penti held "usually at 5-year intervals" with caci
"most frequently performed during Penti"; and "caci fights might last at least a full day — but
more often they may take two or three days". This — not the Celestial Harmonies notes — is the
source of the women-musicians claim in 7.2. It does NOT mention tandak, which is why that claim
is now marked UNVERIFIED. Also listed, the Indonesian Ministry of Tourism's "Tari Caci — the
warrior dance of Flores":
https://www.indonesia.travel/gb/en/travel-ideas/culture/tari-caci-the-warrior-dance-of-flores
Re-fetched: gives "5 buah gong (semacam kempul Jawa)" — five gongs, unnamed — two single-membrane
*waning* drums, and "satu buah saur (sepotong bambu yang berukuran ± 1 meter)". No dimensions, no
player count, no playing technique.
https://travel.kompas.com/read/2019/05/08/152100627/mengenal-gong-waning-musik-tradisional-dari-sikka-flores?page=all
Re-fetched: gives four gongs — "gong Inan (besar), gong Lepen (sedang), gong Udong Beit (kecil),
dan gong Anak (paling kecil)" — struck with "kayu yang ujungnya ada gulungan karet ban" (wooden
mallets tipped with rubber), two *waning* of coconut wood and dried hide, a *sa'ur* bamboo tube
~1.5 m struck in alternating strokes to hold the rhythm, and "anggota 8 orang" (eight members).
Sikka." (ResearchGate 403 on re-fetch; not relied on for any claim.)
https://www.researchgate.net/publication/395187933_MAKNA_PSIKOLOGIS_MUSIK_GONG_WANING_DALAM_RITUAL_ADAT_KEMATIAN_MASYARKAT_HEWOKLOANG_KABUPATEN_SIKKA
https://www.cintaindonesia.web.id/2018/08/gong-waning-musik-tradisional-dari.html
Re-fetched: gives five gongs with a third name set — "gong Ina wa'a, gong Ina depo, gong lepe,
gong Higo-hagong, dan gong Udong", the *higo-hagong* being a pair struck together — two drums, the
larger plus a smaller called *dodor*, "terbuat dari batang kelapa dan kulit sapi/kambing yang sudah
dikeringkan", and *peli anak*/*saur*, bamboo of ~1 m, which stabilises the rhythmic pattern. No
playing technique, no player count.
Music Online, organology browse for traditional and Indigenous musics of Asia" at
https://oxfordmusiconline.com/grovemusic/browse as the source for detailed gong waning organology:
waning inan ~35 cm × 60 cm, waning anak ~25 cm, five bossed gongs named inan / depun / beit / udon
/ anak, chest-damped, rubber-padded mallet, nine players. **That url is a browse/navigation index
with no article text — it cannot be the source of any specific measurement**, and no name in that
list matches any of the three name sets the fetchable sources actually give. Those claims have been
removed from 7.1, 7.3, GAP-12 and GAP-13 rather than carried at "MEDIUM confidence". The rubber-
tipped mallet survives on the Kompas source above. If the detail is wanted, read the Grove *Flores*
article itself (subscription) or an organological monograph and cite it by article, not by
browse index.
(Eastern Flores, Eastern Timor)" (2015).
https://www.academia.edu/12501949/Music_as_evidence_of_settlement_the_case_of_diphonic_singing_in_Eastern_Indonesia_Eastern_Flores_Eastern_Timor_2015_
(With Online Resource).* Backbeat Books (Hal Leonard). ISBN 9781480392878.
https://www.amazon.com/Drum-Programming-Handbook-Complete-Creating/dp/1480392871 ; publisher/press
coverage: https://www.mixonline.com/the-wire/drum-programming-handbook-426093 ; review:
https://audionewsroom.net/2015/12/the-drum-programming-handbook-how-to-create-great-rhythm-tracks/
Re-verified: the ISBN, the publisher, "more than 250 downloadable audio files", Paterson leading
"the MA course in Advanced Music Technology at the London College of Music", and the coverage arc
claimed in section 3 — rhythm-programming history, MIDI and one-shot programming, samplers and
romplers, advanced timing for swing and beat-mapping, drum synthesis, production and effects, and
per-style chapters.
https://blog.samplefocus.com/blog/how-to-produce-ghost-notes-for-organic-drums/
https://www.musicradar.com/tuition/tech/how-to-add-groove-and-pace-to-a-beat-using-ghost-notes-625526
https://www.loopmasters.com/articles/4436-How-to-Program-Realistic-MIDI-Drums-5-advanced-tips-for-virtual-drummers
https://www.loopcloud.com/cloud/blog/5254-7-Drum-Programming-Tips-to-Improve-Any-Groove
https://blog.native-instruments.com/drum-programming-101/
https://musicproductionwiki.com/articles/how-to-use-groove-and-swing-in-music.html
https://melodiefabriek.com/sound-tech/mpc-swing-reason/
https://brettworks.com/2013/07/23/roger-linn-on-drum-machine-groove-and-j-dillas-off-beat-sound/
Rhythm.* (Cited by title and author for the documented practice of turning quantise off and applying
irregular per-element swing.)
Rhythm: Bending the Power of Groove To Your Will." GDC 2025, Audio track.
https://gdcvault.com/play/1035504/Fascinating-Rhythm-Bending-the-Power ; schedule page (403 on both
fetches): https://schedule.gdconf.com/session/fascinating-rhythm-bending-the-power-of-groove-to-your-will/907146
Re-verified via GDC Vault: Graves is credited to Jason Graves Music, Inc.; the description covers
creative drum/percussion patterns, orchestral writing in odd time signatures, musical phrasing's
gameplay impact, grooves supporting in-game action, and layered rhythms building to a satisfying
interactive experience; and all four games named in 3.5 — *Dead Space*, *Still Wakes The Deep*,
*No Rest For The Wicked*, *Tomb Raider* — are confirmed. Co-presenters added on citation review;
the first draft credited Graves alone.
https://www.gamedeveloper.com/game-platforms/pure-vertical-layering-for-game-music-composers-from-spyder-to-sackboy-gdc-2021-
to Sackboy: GDC 2021)."
https://www.gamedeveloper.com/audio/horizontal-resequencing-and-dynamic-transitions-for-game-music-composers-from-spyder-to-sackboy-gdc-2021-
https://schedule.gdconf.com/session/from-sibelius-to-game-crafting-adaptive-music-for-kingdom-come-deliverance/915597
---
Each rule names the file it lands in and the tier it belongs to. CODE-ABLE means it is a constraint on
authored symbolic material and can be enforced before a sample is rendered. MEASURE-ONLY means it
needs the render. FLAG means it touches canon or care and goes to the director.
Source-strength note (citation review, 2026-08-08). These rules were re-checked against the
verification states recorded in section 9, because a rule is only as good as the finding under it.
The result: the rules the document actually adopts first are the best-sourced ones. RG-06/RG-07 rest
on Witek ✅ and Sioros et al. ✅; RG-11 on Tenzer ✅, quoted verbatim; RG-13 on Hove ✅; RG-15 on Polak
✅; RG-16 on Friberg & Sundström ✅, whose three numbers were all confirmed; RG-17 on Frühauf ✅ and
Madison & Sioros ✅; RG-18 on Danielsen et al. ✅; RG-19 on the Rosanna analysis ✅; RG-26/RG-27 on the
kotekan taxonomy ✅ and McPhee's semi-ochètan definition ✅; RG-29 on Tilley ✅; RG-30 on Agawu ✅.
RG-09 depends on London's bounds, which are ⚠ — code it as a REPORTED table first and only as a hard
validator once the thresholds are read out of the book. RG-25 depends on Etani ⚠ and is a declared
cost rather than a refusal, so it degrades safely. RG-10, RG-14, RG-21, RG-22 and RG-23 depend on
per-form gamelan schedules and kebyar descriptions that could not be fetched (GAP-26) and must be
re-fetched before any schedule is transcribed. RG-01 through RG-05 and RG-24 rest on the practitioner
drum-programming consensus: Paterson's manual is ✅ verified as to existence, authorship, provenance
and scope, but the specific velocity figures (ghost notes at 20–40 of 127, a ~20-point hi-hat spread)
come from the working tutorial literature listed in 9.7, which was not individually re-fetched — they
are ordinary craft numbers rather than research findings, and RG-01/RG-03 should be tuned by ear
against our own palette rather than treated as measured constants.
distinct velocity tiers across its onsets: accent, normal, ghost. Ghost tier targets roughly 0.15–0.32
of the accent tier (the 20–40-of-127 figure normalised against a 127 accent), with a subtle sub-tier
down to about 0.08–0.17 available. Lands in harness/music_gen/groove.py _accent(), which today
returns three tiers by METRICAL POSITION but is never used by a plan; and in
harness/music_gen/pass2_realise.py, which cannot express it. CODE-ABLE.
compile_pattern's ostinato branch reads one scalar vel_scale for a whole pattern. It needs an optional vels list, parallel to
grid, defaulting to the scalar for backward compatibility. Same for dur. Without this, RG-01
cannot reach audio through any of the ten ostinato layers in the landed Flores plan. Lands in
harness/music_gen/pass2_realise.py and the PATTERN_KINDS schema in
harness/music_gen/pass2_plan.py. CODE-ABLE. **This is the single highest-value line of code in
this document.**
carry the same velocity, and a sustaining figure must span at least a 20/127 range around its own
mean. Refuse. Lands as a new finding in groove.check() and as an axis in
harness/music_gen/instr_groove.py. CODE-ABLE.
harness/music_gen/sfz_palette.py exposes a multi-key stroke inventory for an instrument (gong.stroke 60-62, frame_drum 60-65,
slit_drum 60-61), the dynamic tier must select the key, not merely scale the velocity. Lands in
groove.py's voice construction and in sfz_palette.py as a declared tier→key map. CODE-ABLE.
groove._is_carpet()currently tests onsets per beat. A voice that plays every subdivision is a carpet even at low
density if it is also dynamically flat. Extend the predicate; keep the existing threshold.
CODE-ABLE.
groove.check() R02 judges the articulatedper-voice mean and deliberately ignores the composite. Add a separate finding that refuses a
composite syncopation of exactly 0.0 (or below a small floor, e.g. 0.02) for any class above
AMBIENCE. The literature ties the composite to groove; ours has been pinned at zero for six cues
and no rule has ever fired. Lands in harness/music_gen/groove.py check() with a mutation control
in self_test, and as a reported axis in harness/music_gen/instr_groove.py. CODE-ABLE.
CLASS_BANDSas bands. Record in the file's docstring that the upper bound exists because high syncopation
reduces the urge to move (Witek et al.), not because it is "too much". No code change; a claim
repair. CODE-ABLE.
activity target is measured on Groove.composite_grid(); no individual voice may exceed the carpet
threshold to achieve it. This is the formal statement of "use hocket, not a busier drummer", and it
is already how groove.py is built — it just is not stated as a rule with a number. CODE-ABLE.
tempo_bpm, any level claimed to state the metre must have an inter-onset interval between 100 ms
and 2.0 s (London). A level outside that window may exist but must be declared as FORMAL
PUNCTUATION, not as metre. Lands as a validator in harness/music_gen/pass2_plan.py and as a
reported table in harness/music_gen/instr_groove.py. CODE-ABLE.
Javanese schedule: a fast punctuation every 2 beats, a mid every 4, a cycle-closing stroke, and one
deliberate omission (*wela*) so the pattern is asymmetric. Two positions is not a colotomic clock.
Lands in the colotomic pattern in harness/music_gen/pass2_realise.py (already supports
every/phase, so this is authoring plus a validator) and in the plan generators
pass3_flores.py / pass7_flores.py. CODE-ABLE.
not at position 0, because stress in this idiom is measured backwards from the final tone (Tenzer)
and the gong marks cycle conclusions. Secondary stress at the midpoint. Refuse a colotomic layer
whose maximum vel_scale sits at at_beat 0.0 while a later stroke exists. Lands in
harness/music_gen/pass2_realise.py validation and groove.py R04, which currently checks
coincidence but not polarity. CODE-ABLE. Highest-value structural repair in this document.
beat_keeper role, modelled on the kajar/kempli:continuous, timbrally distinct, unvarying, at the tactus or half-tactus, never the gong and never a
drum. This is the voice that makes the metre audible when the punctuation period is above the
entrainment ceiling. Lands in groove.py's library and the role vocabulary in
harness/music_gen/pass2_plan.py. CODE-ABLE. Strengthened by the citation review: the Balinese
kajar/kempli evidence sits in sources that would not fetch (GAP-26), but the *saur* / *peli anak* —
a bamboo tube of roughly 1–1.5 m, struck in alternating strokes, whose stated function is to hold
the ensemble's rhythm — is confirmed by all three fetchable gong waning sources. So the dedicated,
timbrally distinct, non-gong non-drum timekeeper is attested in the Flores ensemble our own slice
is actually citing, independently of the Bali material. This rule now has a ✅ source, and for the
right island.
be the lowest-pitched articulate part, and its low band should vary beat to beat. Refuse a cue whose
tactus-carrying voice is not its lowest articulate voice. Lands in groove.py check() and as an
axis in harness/music_gen/instr_groove.py; the audio half is MEASURE-ONLY via low-band spectral
flux variance.
beats (gilak, bapang, batél). At our tempi those land inside the entrainment window where our
16-beat cycle does not. Treat cycle length as a composed parameter with a stated reason, not as a
default 4 bars. Lands in pass2_plan.py / the flores plan generators. CODE-ABLE.
per-voice subdivision_ratio (e.g. [27, 33, 40] for a ternary feel, [54, 46] for a light
binary swing) that the compiler applies as an exact position map. It is metre, not humanisation:
deterministic, auditable, identical every cycle, reported in the manifest. Lands in
harness/music_gen/pass2_realise.py (compile_layer's abs_beat * beat_s) and
harness/music_gen/groove.py (metrical_weights and _tile must stop assuming equal
subdivisions). CODE-ABLE.
declared, it must scale with tempo toward 1:1 as tempo rises, and the short element must not fall
below roughly 100 ms (Friberg & Sundström). Express as a formula in the plan, not a constant.
CODE-ABLE.
different ratios (kick straighter than hats). No code path may introduce a per-note random timing
offset, ever — the experimental record says it makes things worse. Lands as a hard prohibition in
harness/music_gen/pass2_realise.py's docstring and as a grep-able control in
harness/music_gen/instr_groove.py. CODE-ABLE.
declare a stack order and per-voice offsets in the low tens of milliseconds. Danielsen's D'Angelo
case measures 55–80 ms between kick and bass and is still heard as one beat. Zero is a choice and
should be an explicit one. Lands in harness/music_gen/pass2_realise.py compile_layer and
harness/music_gen/mix_policy.py. CODE-ABLE.
structure, it repeats on a stated period (the Rosanna two-bar hi-hat pattern is the exemplar). A
deviation table indexed by position-within-phrase, not by note index. CODE-ABLE.
irama_level per section, multiplying theelaborating layers' subdivision against an unchanged structural line, with the Javanese ladder
(1, 2, 4, 8, 16) as the available set. This is already boarded as item 7 of
COUNTER_MELODY_AND_DIALOGUE.md's operations ledger and unbuilt. Lands in the section schema in
harness/music_gen/pass2_plan.py and the kotekan branch of pass2_realise.py. CODE-ABLE.
plan["tempo_bpm"] is one number for a whole cue. Theidioms we borrow from treat tempo motion as the primary formal device, and kebyar's signature is
explosive tempo and dynamic change. Add a per-section tempo (or a tempo map) and let geometry()
integrate it. Lands in harness/music_gen/pass2_realise.py and every generator that reads
tempo_bpm. CODE-ABLE, and non-trivial — flag the cost.
section transitions are keyed to ITS figures rather than to a bar count. Modelled on the kendang
wadon, which sets tempi and cues transitions. Lands in groove.py's role vocabulary and
pass3_flores.py / pass7_flores.py. CODE-ABLE.
coincides on a strong accent and then resumes. This is the one place the anti-tutti ceiling (R03) is
legitimately suspended, and the suspension must be DECLARED, exactly as the marker-pair exemption
already is. Lands in groove.py check() R03's exemption list and a new pattern in the library.
CODE-ABLE.
break_window() subtracts before a boundary; add thecomplementary addition — a denser, differently-articulated figure in the last half-bar before a
formal boundary, and an anacrusis leading into a phrase. Lands in harness/music_gen/groove.py.
CODE-ABLE.
BPM entrainment optimum, and if not, what it is buying. Not a refusal — a declared cost. Lands as a
reported field in harness/music_gen/instr_groove.py. MEASURE-ONLY on the audio side, CODE-ABLE on
the plan side.
telu and empat: nyog_cag (straight alternation, no shared pitch), nyok_cok (both parts in unison on
the pokok anticipation, then neighbour tones), and allow empat to strike its outer pitches
simultaneously. Lands in pass2_realise.compile_pattern's kotekan branch. CODE-ABLE.
pass2_realise.py's self-test R5 asserts that polos and sangsih share no onset. That is true of nyog_cag and false of three other documented classes,
and McPhee's semi-ochètan is DEFINED by the parts meeting on a unison. Scope R5 to the classes it
actually describes. CODE-ABLE.
interval (the pelog fifth), NOT of a polos/sangsih interlock — corrected on citation review; an
earlier revision of this rule over-generalised it to any interlocked dyad. Scope it accordingly:
where our writing produces a simultaneous kempyung dyad, encode the lower tone's dominance as a
velocity relation rather than leaving both parts at the layer default. Whether the same relation
holds at polos/sangsih coincidence points is an open question this document does not answer.
CODE-ABLE, narrowly.
connections between polos and sangsih, and shows kotekan being improvised. Our generator should
carry a small, bounded variation space inside the fixed frame — which is precisely the operator
notes_for(..., variation=n) already implements and which is currently unused for interlocking
parts. CODE-ABLE.
groove.py's header calls its 3+3+2 figures "a generaladditive figure". Agawu argues at length that "additive rhythm" is a transcription artefact rather
than an indigenous conception. Keep the figure, keep the existing refusal to attribute it to any
living tradition, and change the word to a neutral description of the stroke distribution.
CODE-ABLE, one docstring.
emit_identity_cards.py's HF_MT_03 cardnames a Sikka ensemble (gong waning) for a Manggarai chapter (CH_03), and describes it with
gamelan-shaped organology it does not have. FLAG — region attribution plus a §17.1 collective-care
call. See section 7 and GAP-11.
COUNTERPOINT_AND_VOICE_LEADING.md §7.3's "must not invent it" stands, but the surrounding claim
that there is nothing to say is now falsified by published organology and field-recording
documentation for BOTH Flores ensembles. Supersede in place (living-source rule), narrowing the
declared gap to the melodic and modal material. CODE-ABLE as a doc edit; the ensemble NAME half is
FLAG.
---
Ranked by value per unit of work. The first four are the answer to "no rhythm"; everything below is
depth.
1. **RG-02 plus RG-01: per-onset velocity in the ostinato kind, and a three-tier accent ladder on
every articulated voice.** This is a small change to one compile branch plus a schema field, and it
converts every percussion part in the program from a metronome into a played figure. Nothing else
in this document is worth as much per line.
2. RG-11: flip the colotomic clock to end-accented. One authoring change plus one validator. It
re-aligns the entire phrase-goal architecture with the idiom we cite as our authority, and it costs
nothing.
3. RG-06: a refusal on a degenerate composite syncopation. We have shipped six cues with the one
number the literature ties to groove pinned at exactly zero, and no rule fired. Arming this is a
dozen lines and a mutation control.
4. RG-09 plus RG-12 plus RG-10: make the metre audible. Validate every claimed metric level
against the 100 ms / 2 s window; add the kajar-style beat-keeper; give the colotomic clock three
periods and a hole. Together these fix the specific mechanism by which our cue can pass every
structural rule and still not present a metre.
5. RG-20: irama as a per-section density level. Already boarded, already CODE-ABLE, and it is the
single most powerful formal device in the tradition we are borrowing from — and it maps directly
onto the vertical-layering system the game side needs anyway.
6. **RG-15 and RG-17 together: a declared, deterministic subdivision ratio, and an absolute ban on
random jitter.** Adopt the Polak model of micro-timing (categorical, stable, auditable) and
explicitly refuse the humanise-knob model the experimental record repeatedly finds harmful. Adopting
the ban is free and prevents a plausible wrong reaction to this document.
7. RG-22 through RG-24: leader, angsel, fill. The apparatus by which cyclic music changes. Higher
cost, and it should follow the first six.
8. **RG-26 through RG-29: the kotekan taxonomy, the retired no-shared-onset law, the lower-tone
dominance rule, and the bounded variation space.** Idiom fidelity, and each is small.
9. RG-31 and RG-32: the Flores attribution and the amended substrate ruling. Flagged to the
director. It is a factual correction with a care dimension and it should not wait on the music work.
What we explicitly do NOT adopt: a humanise function, a global random timing spread, a "groove
template" applied by ear, and any per-note velocity randomisation. All four are the failure mode
section 2.4 documents. Variation in this program is composed, deterministic, and reported — or it does
not happen.
---
Deviations between the practice found above and the named files in our stack, as they stand at head.
The audit phase consumes this list. Each entry names the file, the observed state, and the practice it
departs from.
harness/music_gen/groove.py is not wired to any composer. The only importer in the repository is harness/music_gen/instr_groove.py (line 115). pass2_plan.py, pass3_flores.py,
pass3_grammar.py, pass5_flores.py and pass7_flores.py do not import it. The metrical
hierarchy, the groove library, the density ladder, the accent function, the interlock rule and the
break window all exist and none of them has ever produced a note. Every other gap below is
downstream of this one.
pass2_realise.py compile_pattern, ostinato branch: one velocity, one duration, for a whole pattern.** The branch reads pat["vel_scale"] and pat["dur"] as scalars. Practice (the
velocity-ladder consensus across the drum-programming literature; ghost notes at 20–40 of 127,
hi-hats at a ~20-point spread with no two consecutive equal) requires at minimum a per-onset
velocity list. Ten layers in build/audio/pass5/plans/PASS5_FLORES_ROUNDS.json (B02–B08,
M04, M05, M08) are ostinati and therefore dynamically flat by construction. B06, the shaker,
is 32 consecutive identical eighths.
pass2_realise.py compile_layer: velocity is a per-layer, per-section scalar. vel = base_vel * vscale * (0.55 + 0.65 * intensity). Even where a pattern kind could vary
velocity, the only variation available above the pattern is a whole-layer section intensity. There
is no accent geography anywhere in a rendered cue. Deviates from Tenzer's "each stratum has its own
points of metric stress" and from the entire practitioner literature.
pass2_realise.py compile_layer: abs_beat * beat_s, exact.** No swing, nosubdivision ratio, no per-voice offset, no phrase-periodic deviation. Deviates from Polak
(categorical non-isochronous subdivision at 27:33:40 with ~2% SD, stable across a 135→200+ BPM
range), from Naveda (systematic samba anticipation of the 3rd and 4th semiquavers), and from
Friberg & Sundström (tempo-dependent swing with a ~100 ms short-note floor). Note this gap is
DIRECTIONAL: the fix is a declared ratio, and the same literature (Frühauf; Davies; Madison &
Sioros) says the fix is emphatically NOT random jitter.
groove.py metrical_weights() and _tile() assume isochronous subdivision. The dot grid is built from subdiv equal positions per beat and figures are placed on integer fractions.
Deviates from London's maximal-evenness constraint, which exists precisely to license
non-isochronous beats and subdivisions, and from Polak's demonstration that such subdivisions are
metric rather than expressive.
PASS5_FLORES_ROUNDS.json layer B01: the colotomic clock is start-accented. Strokes sit at at_beat 0.0 with vel_scale 1.0 and at_beat 8.0 with vel_scale 0.7. Practice is
end-accented: Tenzer states stress is measured backwards from the final tone, which "receives the
strongest stress of all", with the gong marking that final convergence point and the midpoint taking
secondary stress; the kebyar literature says the gong gedé marks cycle CONCLUSIONS. We have built the
Western downbeat and labelled it colotomy.
B01 has two colotomic positions where practice has four or more, and no *wela*.** AJavanese lancaran runs kethuk every 2 beats, kenong every 4, kempul every 4 offset, gong at the
close, with one kempul deliberately omitted so the pattern is asymmetric. Our clock is a two-hand
clock with no hole. COUNTERPOINT_AND_VOICE_LEADING.md §7.3's own sentence — "smaller gongs
subdivide it at fixed positions" — is not realised by the plan that cites it.
period is 6.486 s, the interior stroke is 3.243 s away, and the every-fourth-cycle stroke is 25.9 s.
London's well-formedness constraint puts the upper bound for a metric level at roughly 1.5–2.0 s.
The layer whose declared function is to state the metre states nothing a listener can entrain to.
Meanwhile the Balinese working forms (gilak 8 beats, bapang 8, batél 4) would land at 3.24 s and
1.62 s — inside the window.
(continuous, timbrally distinct, unvarying pulse) from the gong (punctuation) and from the kendang
(leader). Our B01 is asked to be all three and is none of them; the pulse role is spread across
seven hand-typed ostinati with no accent.
plan["tempo_bpm"] is a singlescalar. Practice: the kendang wadon "typically tops the hierarchy of the ensemble, setting tempi and
aurally cuing transitions like a conductor"; the Javanese kendang "controls the tempo and rhythm of
pieces as well as transitions from one section to another"; kebyar's defining feature is explosive
change in tempo and dynamics. groove.break_window() is a subtraction, not an angsel, and the
program has no addition-before-a-boundary primitive at all (no fill, no pickup).
emit_identity_cards.py HF_MT_03 names the wrong district's ensemble. The carddeclares a "gong-waning ensemble at reference register — tuned hanging gongs, kettle gongs,
ceremonial drum" for a chapter (docs/spine/CH_03.md) that is unambiguously Manggarai: Wae Rebo,
Compang Ruteng, the lingko fields, the Todo royal ground, the caci. Gong waning belongs to **Sikka
Regency**, central-east Flores. The Manggarai ritual ensemble documented in the Celestial Harmonies
Manggarai-focused field recording is nggong-tembong (drum-gong), and caci is accompanied by
gong and gendang, with the musicians during a match usually women. This is a factual error and
a §17.1 collective-care issue (two distinct living cultures on one island flattened into one).
FLAG — director call, not this lane's to apply. (Citation review: both halves of this gap —
gong waning is Sikka's, CH_03 is Manggarai, and Manggarai's own ensemble is nggong-tembong with
gong-and-gendang caci accompaniment played by women — are CONFIRMED against the Celestial Harmonies
liner notes and the caci reference. The women's *tandak* chanting that this gap previously asserted
is UNVERIFIED and has been struck; see 7.2. The correction the director is being asked to make does
not depend on it.)
gongs" describes a gamelan-family gong chime. Gong waning is a graded family of small-to-medium
gongs struck with rubber-tipped wooden mallets, plus two single-membrane coconut-shell drums, plus
a bamboo *saur*/*peli anak* timekeeper; Manggarai's caci accompaniment is gong and gendang. Neither
is a kettle-gong chime, and neither card description mentions the bamboo timekeeper at all.
(REVISED on citation review: an earlier version of this gap asserted that gong waning's gongs are
hand-held and chest-damped and therefore contradict groove._marker()'s free-ring rule. That
playing description is not supported by any fetchable source — see 7.1 — so the _marker() ring
question is OPEN for this ensemble, not a confirmed contradiction. The card-vs-ensemble mismatch
stands on its own.)
COUNTERPOINT_AND_VOICE_LEADING.md §7.3's "the substrate is thin" is now over-broad.The section says the lane "must not fill that gap and must not invent it" and settles for a generic
three-tier stratification. But published sources give the gong waning ensemble as **a graded family
of small-to-medium gongs named by relative size, two single-membrane drums of coconut stem and
dried hide, and a bamboo *saur* / *peli anak* timekeeper of roughly 1–1.5 m whose stated job is to
hold the rhythm**; and give Manggarai's own ensemble, its women performers, its ritual calendar
(Penti at roughly five-year intervals, caci running one to three days) and its named vocal forms
(raga, gezang, danding, sanda, ronda, mbata). The remaining genuine gaps are melodic and modal, and
the FINE organology. Supersede in place per the living-source rule; the ensemble-NAME half goes with
GAP-11 to the director. (Confidence note, REVISED on citation review: the sources visibly disagree
on gong count — four or five — and give three mutually inconsistent name lists; ensemble size is
eight in one source and unstated in the others. The centimetre measurements, the name list
*inan/depun/beit/udon/anak*, the nine-player count and the chest-damping description that stood
here previously were sourced to a Grove Music Online BROWSE-INDEX url — a navigation page with no
article text — and have been removed. Nothing organological finer than "a graded gong family, two
drums, one bamboo timekeeper" may enter a card until a named Grove article or an organological
monograph is read and cited by article.)
pass2_realise.py kotekan branch: one interlock rule where practice has a taxonomy. The branch enforces polos strictly on-beat and sangsih strictly off-beat with a single line, and
the file's own self-test R5 asserts as law that the two parts "share no onset". Documented practice:
nyok cok has both parts in UNISON on the pokok anticipation; kotekan empat typically strikes its
lowest and highest pitches SIMULTANEOUSLY; McPhee's semi-ochètan is defined by the parts meeting
on a unison; nyog cag is the only class our rule actually describes. The pitch-set logic for telu
and empat is correct; the rhythm logic is one of five classes hard-coded as all of them.
*kempyung* interval (the pelog fifth) "the lower tone has acoustic dominance" — a claim about that
dyad, not about interlocking parts in general (corrected on citation review; an earlier revision of
this gap mis-stated it as a kotekan rule). Our polos and sangsih layers carry independent
layer-level velocities (M02 at 84, M03 at 80 in the landed plan) with no rule connecting them
and no treatment at coincidence points, and no cue anywhere in the program encodes a velocity
relation for a simultaneous dyad of any kind. The kempyung case is the one this document can cite.
Tilley's *Making It Up Together* documents fixed AND flexible connections between polos and sangsih
and shows kotekan being improvised. groove.interlock() displaces deterministically "in the kotekan
idiom rather than by jitter" — the right instinct — but there is no bounded variation space, and
notes_for(..., variation=n) is not used for interlocking parts at all.
kotekan pattern's subdivision is a constant per layer; sections carry intensity, harmony_variant, pokok_variant and cut, but no density
level. Practice gives five levels at 1 / 2 / 4 / 8 / 16 elaborating notes per structural note, with
tempo (*laya*) as a SEPARATE axis. This is already boarded as item 7 of
COUNTER_MELODY_AND_DIALOGUE.md's operations ledger and remains unbuilt.
groove.check() R02 measures the per-voice mean and nothing refuses the composite.The exclusion is reasoned and the reasoning is sound, but the consequence is that the composite has
been exactly 0.0000 in all six rendered cues (instr_groove.py's own headline) with no rule
firing. The empirical construct in Witek et al. and in Sioros et al.'s polyphonic follow-up is the
composite. We measure it, print it, and never refuse it.
groove._accent() is a three-tier step function of metrical position only. Tiers arebar-downbeat, on-beat, off-beat. There is no ghost tier below the off-beat tier, no variance
requirement, and no dependence on anything except position — so two adjacent off-beat strokes are
guaranteed identical, which RG-03 refuses.
groove.check() R07 caps distinct durations at 4 per voice; every landed voice hasexactly 1.** The rule is guarding against the wrong end of the range. Every ostinato in the Flores
plan carries a single dur. Tappability in the source rule (SNES_JRPG_SCHOOL.md ECON-07) depends
on the pattern being recognisable tapped without pitch, and a pattern with no duration contrast and
no dynamic contrast is not recognisable, it is a pulse train.
beat 0 of the Flores cycle simultaneously. Danielsen's beat-bin analysis measures 55–80 ms between
kick and bass in a groove that is still heard as one beat. Zero asynchrony is a choice our stack has
never made explicitly.
timing perception. In the Flores plan, B02 (bass drum) plays 4 strokes per 16-beat cycle at one
velocity and M06 (bass line) is a pokok at one note per several beats. Neither is an articulate,
dynamically varying voice on the tactus. Nothing in the program states that it must be.
runs at 148 BPM; the entrainment/urge-to-move literature puts the optimum around 100–120 BPM. This
may well be the right authored choice for a ceremonial-drive cue, but it is currently an unexamined
default rather than a recorded trade.
groove.py's stated instrument-care rule is contradicted by the landed plan. The file's header says that "where the palette carries a tradition-named instrument (conga, bongos,
agogo_bells, sfz_palette.py:456-462, :504-517) this module does not reach for it". The landed
Flores plan's layer M08 is agogo_bells. The rule and the artefact disagree; one of them should
move.
groove.py calls its 3+3+2 figures "additive". Agawu argues at length in JAMS that"additive rhythm is a highly problematic concept for African music" and a default grouping mechanism
of transcribers. The file's refusal to attribute the figure to any living tradition is correct and
should stand; the theoretical label attached to it should not.
swept rather than the instance.** The independent citation review of 2026-08-08 (logged at the head
of section 9) found six defects, and five of them share one root cause: **a claim was written at
the confidence of the paragraph it sat in rather than at the confidence of the source behind it.**
The worst instance hung five specific organological facts on a Grove Music Online *browse-index*
url — a navigation page with no article text — and carried them at "MEDIUM confidence" instead of
refusing them. The others attached a paper's title to a different paper's url, added an author who
was not on the paper, generalised a quote from the interval it described to a technique it did not,
and read a tempo-dependent shift as a performer range. None of these would have been caught by any
gate we own, because we have no gate that reads a citation. Two rules follow, and they are cheap:
(1) a url that cannot contain the claim cannot be its source — browse pages, search pages and
journal front pages are never citations; (2) **every numeric or named specific carries the
verification state of the source it came from**, so a paywalled source yields a confirmed CITATION
and an unconfirmed FINDING, and the document must say so at the point of use rather than in a
footnote. Both are enforceable by eye at authoring time and by a critic at review time. This gap is
the audit's and the lane's, not the composer's.
Gamelan Bali forms table (connection refused), the eCampusOntario gilak lecture-demonstration
transcript (403), the openwa Balinese gamelan chapter (403), and the Javanese gamelan glossary
(self-signed certificate) are all listed in SOURCES and none was read directly. The gilak/bapang/
batél and lancaran/ketawang/ladrang stroke schedules are reported here from indexed summaries at
MEDIUM confidence and **must be re-fetched and verified before any of them is transcribed into
pass2_realise.py or a plan generator.** This gap is the audit's, not the composer's.