# The art of returning — recital 026

Ergentics, LLC · 23 September 2026. An original teaching score accompanying the
three-body research exhibition. The three movements use two rhythmic voices,
four, six or nine seconds per phrase, optional pure tones or reference clicks,
and an inspectable still score.
The score and clicks are authored presentation choices; they are not a historical
composition, a physical instrument model, or measured sound from celestial motion.

## Selected first-party source trace

The source is Ergentics `music-theory-app`, commit
`d9c80ba40cea43437d983eb14626f69d6e1af485`, observed with a clean working tree.
This recital does not modify that repository or claim a new run of its Swift tests.

| Source locator | Use in this recital |
| --- | --- |
| `curriculum-map.html:76–128` | Bounded inventory of pulse, rhythm and canonical skill IDs; not a new curriculum assessment |
| `Sources/MusicTheoryKit/MusicTheory.swift:1128–1147` | `phaseShift` and `polyrhythmPeriod`: modular phase and the least common multiple of cycle lengths |
| `rhythm-trainer.html:92–95` | Existing JavaScript GCD, LCM and phase-shift primitives; source reference for the interpretation |
| `euclidean-rhythms.html:159–239` | Reference-click envelope and the use of audio time for visible phase; the recital adds finite playback and invalidates pending resume work |
| `Tests/MusicTheoryKitTests/OracleTests.swift:1506–1523` | Existing wrapping and common-period examples, inspected as historical source evidence |
| `hello-440.html` | A440/E660 teaching pair, transposed down an octave to 220/330 Hz; pure sine timbre and envelope are authored for this recital |
| `COLOR.md`, “The committed mappings” | Color assignments are conventions. This recital uses named voices and distinct marker shapes; it does not assign pitch classes to gravitational bodies |

Only these selected relationships are adopted. The source's broad statements
about consonance, cultural universality and exact perceptual color uniformity
are not claims of this exhibit. In particular, its fifths hue map is
`h(pc)=anchor+30*((7*pc) mod 12)`; a semitone shift is not always 30 degrees.

## What the score establishes

With phrase fraction `0 ≤ u ≤ 1`, the phase functions in turns are
`pA = a*u mod 1` and `pB = (b*u+δ) mod 1`. A strike occurs at an integer
unwrapped phase. The fixed score uses `(a,b,δ) = (1,1,0), (3,2,0), (3,2,1/2)`.
Its exact event lists, in twelfths of a phrase including the closing boundary:

| Movement | A | B |
| --- | --- | --- |
| Together | 0, 12 | 0, 12 |
| Three against two | 0, 4, 8, 12 | 0, 6, 12 |
| A different entrance | 0, 4, 8, 12 | 3, 9 |

For the shifted movement, simultaneous strikes would require `3u=m` and
`2u+1/2=n` for integers m,n, hence `4m+3=6n`, which is impossible by parity.
Both phases nevertheless return to their own initial values at u=1.
The six-cell interpretation of movement II has cycle lengths 2 and 3,
whose LCM is 6. Cycle lengths and number of strikes per phrase are distinct.

The circular Lagrange and Euler families in the research explorer are rigid
rotations with a common angular speed. The 3:2 rhythmic rates are not their
orbital frequency ratios. Sharing a phase representation establishes a useful
teaching connection; it does not solve a general three-body problem or demonstrate
a physical equivalence. The user's proposed later theory has not been specified
or tested by this recital.

## Playback and evidence contract

Play this phrase respects the selected sound setting and ends after the remaining
phrase plus a 0.32-second release window. Listen to the recital explicitly opts
into pure tones when sound is off and plays all three movements once. Each
closing strike has its release window, followed by a 0.75-second silent interlude
before the next movement. The program lasts 14.46, 20.46 or 29.46 seconds, according
to pace. The final state is held. Seeking, reset, changing movement, pace, audible voice, changing sound,
tab hiding, or changing the motion preference cancels pending work. Returning
to a tab does not resume. Reduced motion retains still inspection and permits
explicit playback. Sound defaults off. A-only and B-only listening preserve the complete visual
score. Listening level defaults to 50 percent and can change during play. The
explicit Listen control explains its sound choice beside the button. No recording, microphone, tracking,
storage, account, or external audio fetch is involved.

Reference clicks preserve the source's two pitch sweeps and 3ms attack/100ms
decay envelope, with a lower authored master gain of 0.2. At most two clicks
overlap; their analytical absolute peak bound is `0.2*(0.7+0.45)=0.23`.
This is a digital amplitude bound, not a listening-level safety guarantee.
Physical volume remains controlled by the listener's device.

The pure-tone voices use a 10ms linear attack, hold to 70ms and linear release
to zero at 190ms. Their peaks are 0.4 and 0.3 before the capped master gain,
so simultaneous tones have the bound `0.2*(0.4+0.3)=0.14`. The 330:220 pitch
ratio is distinct from rhythmic counts. No particular interval is claimed to be
universally preferred. Audio time drives the score when listening; silent
playback uses a monotonic display clock. A generation token invalidates old
callbacks when a performance is cancelled.

The release checks enumerate expected events separately from the runtime,
sample fractional states, test actual browser cancellation and keyboard input,
and render overlapping clicks and tones with OfflineAudioContext. Swift executes
the actual JavaScript model through JavaScriptCore; C++ independently derives
rational onsets, segment times and conditional gain bounds. Their agreement
checks a finite contract, not every browser or arbitrary incoming score. Browser
checks cover the full program, interlude cancellation, voice selection, volume,
phase announcements and unavailable scripts. These checks do not
establish speaker quality, device latency, listener comfort, musical preference,
educational effect, or independent mathematical certification. The saved SVG is
a generated teaching diagram, not a screenshot or a live playback capture.
