# Half an Hour with Dead Composers

*Part one of this series taught a music model Chopin in five minutes and handed you a dial. This is the rest of the story: two more dead composers taught the same way — a hundred and six marches, then Bach — and then the part we've been building toward: blending composers with linear algebra, where the obvious method is mathematically wrong, the correct one costs a measurable one percent to squeeze back into a single file, and a sentence already staged for publication had to be taken back before you ever saw it. Every claim carries a receipt, including the retraction.*

*Published 2026-09-02 (UTC) · A small (human) team and a fleet of AI agents.*

**the short version:** Two more dead composers taught the same way — a hundred and six marches, then Bach — and then blending composers with linear algebra, where the obvious method is wrong, the right one costs a measurable one percent, and a sentence already staged for publication had to be taken back before you ever saw it.

3,504 words · about 16 minutes (at 220 words/min) · 2 tables · data kit: yes

https://research.strata2signal.com/half-an-hour-with-dead-composers/

---

## Previously, in five minutes {#previously-in-five-minutes}

If you read [part one](/chopin-in-five-minutes/), you know the machinery: an open-weights music generator (ACE-Step
1.5), a small detachable adapter trained with LoRA in under five minutes on a
five-year-old consumer graphics card, and a strength dial that provably changes the
sound — with the honest line that nobody has yet proven the far end of the dial *sounds
like Chopin*. One more part-one mechanic rides along: each adapter answers to its own
made-up name tag — part one's was `pd-shakedown`, and the two below are
`sousa-shakedown` and `bach-shakedown`. That piece ended with a promise: the other dead
composers are coming. Here they are — trained the same week, by the same recipe, on the
same card, so the runs are comparable by construction.

## Sousa: a hundred and six marches {#sousa-a-hundred-and-six-marches}

The second corpus could not be more different from twenty-four solo-piano recordings:
**the complete marches of John Philip Sousa — 106 recordings by a full military band**,
4.4 times as many recordings as Chopin's corpus whether you count what was fetched or
what was trained on. The rights chain
has two layers, and both are clear: the recordings are works of the United States
federal government, which by law cannot carry copyright at all, and the compositions
left copyright by age. (The archive mirror adds a third, independent stamp — a public-domain mark on
every one of the 106 items, verified per item, not sampled.)

One beat from that verification is worth retelling. The band's own website answered our
fetcher — which identifies itself honestly, by name — with **HTTP 403**. We don't dress
our tools up as browsers to get past a filter, so the corpus came from the Internet
Archive's mirror instead: every one of the 106 files checked against the archive's
published checksums and byte lengths, 106 of 106, zero mismatches. Slower, and proven.

> 🔊 **Listen 1 — a probe, the stock model with no adapter attached** · sha256 (first 16) `1bcc23ac3fa0b85e` — just *ask* the stock model for a Sousa-style march, in plain words. A probe with its own request, not a control — the switched-off renders below are this page's baselines.
>
> 🔊 **Listen 2 — the march request, adapter attached but turned to zero** · `f8490e7086b88ac5` — part one's cleanest kind of baseline: everything held fixed, the adapter contributing nothing.
>
> 🔊 **Listen 3 — the same request, the Sousa adapter at full strength** · `c617868d661a4112` — the one to hold against Listen 2: same request, the adapter contributing all of it instead of nothing.

*Each code is the first 16 characters of that file's sha256; every clip on this page is
AI-generated.*

Training: ten passes over 84 recordings (22 held back by piece, same rule as part one),
**14 minutes 36 seconds** by the trainer's own clock — the longest run in this story.

**And now the confession this section owes.** The Sousa run produced the arc's first
real process lesson: *select the checkpoint you ship on its measured loss, never on
recency.* Its halfway checkpoint — pass five of ten — carries **better** training loss
than the "final" pass-ten file (0.8768 against 0.8839). The lesson was written down the
same day. Here is the honest part: **it was written** *from* **Sousa and never applied** *to*
**Sousa.** The shipped adapter *is* the pass-ten file, byte for byte — and every artefact
downstream used it: the duet, the trio, the full-strength march above. The lesson was a
lesson for the next run, not a description of what shipped.

We did render the road not taken. The halfway checkpoint's render sits 0.10629 from the
shipped one on the same request and seed — more than half either one's distance from
its own switched-off baseline — so the loss plateau did not mean the adapter stopped
moving. Which of the two is the better *adapter* is an ears question, and no ear has
ruled; nothing downstream was rebuilt on it. Judge for yourself:

> 🔊 **Listen 4 — the halfway checkpoint, same request** · `817694f173534e85` — against Listen 3 above, which is what shipped.

The next run that finally applied the lesson — a fourth adapter, whose story is a later
piece — promptly met the sequel: its true best pass was never saved at all, because
snapshots were written every five passes and its best loss landed on pass nine. The
training ledger we now keep has a column whose whole job is recording how the shipped
checkpoint was chosen.

## Bach: the pianist who freed her own recordings {#bach-the-pianist-who-freed-her-own-recordings}

The third corpus solves the licensing problem the most direct way imaginable: **the
performer gave the recordings away herself.** Kimiko Ishizaka's crowd-funded "Open"
Bach projects — the *Open Goldberg Variations* and the *Open Well-Tempered Clavier*,
79 recordings — exist precisely so that studio-grade Bach can be free: the Goldberg
files carry the CC0 public-domain deed outright, and the Well-Tempered Clavier files
carry a public-domain mark whose own rights field asserts the same dedication. The
dedication is in the archive items' metadata, not inferred from reputation. And one
tempting copy of the same music, offered under a licence requiring attribution, was
**declined on purpose** — this arc wanted corpora with zero obligations, so that every
credit on this page is paid voluntarily.

One defect in the source material, caught by two independent receipts: the Goldberg
album ships 31 files for 32 pieces — one file is two variations joined together, found
because its duration matches the sum of the two movements on a sibling release to
within a tenth of a second, and because its own filename names both. Our train/held-out
splitter as written would not have seen it, so the split machinery had to grow: Chopin's
corpus had one *piece recorded twice*; Bach's had the mirror image, one *file carrying
two pieces*; the unit of splitting became the connected group of files-and-pieces,
which handles both directions at once. The rule stands: the same piece never sits on
both sides of the test, whatever shape the files arrive in.

Training: 63 recordings in, 16 held back, **8 minutes 23 seconds**.

> 🔊 **Listen 5 — the Bach adapter, solo** · `0356a72033c3d301` — this pair runs the other way round from Sousa's: the adapter first, its switched-off baseline second.
>
> 🔊 **Listen 6 — the same request, the adapter attached but turned to zero** · `85e1dcd0ad099540`

## The bill {#the-bill}

| | Chopin | Sousa | Bach |
|---|---|---|---|
| corpus → training files | 24 → 19 | 106 → 84 | 79 → 63 |
| held back, by piece | 5 | 22 | 16 |
| training passes | 10 | 10 | 10 |
| training time (the trainer's own clock) | 4m 49s | 14m 36s | 8m 23s |
| training error, first pass → last | 0.94 → 0.61 | 1.24 → 0.88 | 0.93 → 0.57 |

Total: **27 minutes 48 seconds of training for three composers** — the half hour of
the title, on one five-year-old card. (Two honesty notes on the table:
clock-on-the-wall timings run a few seconds longer per run, counting model load and
adapter save, and the table quotes the trainer's own clock; "training error" is the
trainer's per-pass mean loss throughout — its log also prints per-step figures, and the kit
carries both.) What that half hour costs *per second of music* — and why the second, not
the track, is the honest unit — has a piece of its own coming.

## You cannot average two composers {#you-cannot-average-two-composers}

Now the part we saved for last. Each adapter is a *file*. Two adapters trained on the
same model, in the same shape — surely you can just average the two files and get a
blend? **No — and the reason is the good part.**

An adapter changes the model through a *product* of two learned matrices: **A**
squeezes the signal down into the adapter's small space, **B** projects it back out.
Average A with A and B with B across two adapters, and the multiplication turns on you:

    (½·B₁ + ½·B₂) × (½·A₁ + ½·A₂)
        = ¼·(B₁A₁ + B₁A₂ + B₂A₁ + B₂A₂)

Those middle terms pair *Chopin's* squeeze with *Sousa's* projection and vice versa —
mathematical chimeras that belong to neither composer and to no blend of them. The
correct target is to add the adapters' *effects*, not their pieces — and that sum is
too big to fit back in an adapter-sized file, so it gets squeezed to fit: a standard
technique (truncated SVD) finds the best small stand-in by one exact measure — least
squares, matrix by matrix — and the tool that does it then prices its own approximation
against the exact sum it could not keep:

| merge | parents | mean error vs the exact blend | worst matrix |
|---|---|---|---|
| Bach + Chopin | 2 | 1.1 % | 3.6 % — a key projection, layer 17 |
| Chopin + Sousa | 2 | 1.2 % | 3.4 % — a key projection, layer 7 |
| the trio | 3 | 1.5 % | 4.3 % — a key projection, layer 17 |

Two parents cost about one percent of error; a third adds about 27 % more. And a pattern
we did not expect: in all three merges, **the hardest thing to squeeze is a key
projection — three for three.** Whatever the attention mechanism's "keys" are doing for
these adapters, that projection is the least compressible part of them. (Fine print: parents must
share the same capacity settings so the scaling cancels; the whole operation runs
offline on the CPU — a weight merge touches no graphics card; a merged adapter comes out
as an ordinary adapter file — same size, same shape as its parents. And one
disclosure: one of the three merges has no surviving build log — the Chopin+Sousa
error row comes from the merged adapter's own records, which is what the kit
carries.)

## Where the blends actually sit {#where-the-blends-actually-sit}

Three clips on one request and one pinned seed: the duet, then each parent alone as its
control. Whether the first sits between the other two is what the numbers below ask.

> 🔊 **Listen 7 — the 50/50 Chopin + Sousa duet** · `82b09312c1365513`
>
> 🔊 **Listen 8 — the same request, Sousa alone** · `300deb847f8597e2`
>
> 🔊 **Listen 9 — the same request, Chopin alone** · `eec9348b428bc7dd`

First, the guard that makes any of these numbers readable: every comparison in this
section holds the request *and the random seed* fixed, and moves only the adapter —
the single-adapter versions were rendered specifically as controls for these
comparisons. By part one's crude ruler — lining clips up and adding up how far apart
the waveforms sit — the duet behaves like a genuine middle: **its render is closer to
each parent than the parents are to each other** (0.112 and 0.127, against 0.152
between the parents). That claim is clean and survives its own numbers.

Separately, and on a completely different kind of evidence: one of us — the one who
runs the machines — listening informally, off-gate and unblinded — said this about the
same clip, quoted exactly as typed: *"the 50/50 chopin/souza duet is the best imo, truely
unique"*. That is a preference, not a measurement; it is on this page because the
house reports what its own ears said and labels it exactly what it is.

Equal weights, by the way, do not buy an equal blend. The trio below, asked for at
equal thirds, leans toward Bach by waveform closeness (38.8 % where an even split
predicts 33.3 %) — while by brightness it sits 35.9 % of the way from its darkest
parent to its brightest, where an equal blend predicts 56.3 %. Two axes, two answers;
we report both and reconcile neither.

## The sentence we took back {#the-sentence-we-took-back}

The trio's clips share one payload — 60 seconds, 96 BPM, C minor, one fixed seed —
with all three parents rendered alone on the identical request as controls.

> 🔊 **Listen 10 — the trio: three composers at equal thirds** · `f6d6d2e74801f888`
>
> 🔊 **Listen 11 — the trio's request, everything turned to zero** · `52dded99ece5bf25`

And here is the sentence that was staged for publication — *"the trio is closer to each of its
three parents than any two parents are to each other"* — **and it is false on its own
numbers.** One of the nine comparisons breaks it: the trio sits 0.11358 from Chopin,
while Bach and Sousa sit 0.11120 from each other. A reader with the table in hand
breaks the sentence in one subtraction, so we broke it first. The honest replacement
survives: **for each parent, the trio sits closer to that parent than that parent sits
to either other composer** — three for three, same geometry. The margin the false
version failed by, 0.00238, is nearly two orders of magnitude below the seed-to-seed
spread our ruler carries — we retracted the sentence because it fails arithmetically,
not because the geometry swung. A published claim that loses to its own table by *any*
margin does not ship. That is the rule, not the physics.

## The ruler's noise floor {#the-rulers-noise-floor}

And now the caveat that governs every distance on this page, stated beside the
numbers. We measured our ruler's own noise floor, and it is humbling: four Sousa
renders differing *only* in the random seed sit 0.18225 apart on average — while the
Sousa adapter itself moves a render 0.19274 from its own baseline. **The floor is 95 %
of the largest adapter effect we measured — and the Chopin and Bach adapters pull
0.077 and 0.093,** *less* **than the floor.** What that floor forbids is reading any
distance as an *amount of style*. What it does not forbid are the orderings above,
because the seed was pinned in every comparison those orderings rest on — the floor
itself was measured by deliberately letting the seed move, and nothing else. The ruler counts moment-by-moment difference; whether any of these
clips *sounds* like a blend belongs to ears, and to a sealed listening test this
series still owes itself.

## The blend that wasn't {#the-blend-that-wasnt}

One more receipt, because it explains why the merges exist at all. The serving engine
that renders these clips *accepts* two loaded adapters with a strength for each, and
reports exactly what you asked for — **and silently plays only the last one you
touched.** We know because the "both adapters at 0.6" render came back **byte for
byte identical** to the Sousa-only control: `11-crossover-nocturne-brass.wav` and
`ctrl-sousa-only-0.6.wav`, one sha256 (`206f174346f91448`) between two files
requested as different things — while the Chopin-only control hashed differently
(`30073e5ebdfbeffc`). The engine's status report was bookkeeping, not truth. Blending
is a merge-time operation, full stop — and both files stay on the access-controlled
review shelf under both names, because a duplicate that *proves* something is worth
more than a tidy directory.

## What we did NOT measure {#what-we-did-not-measure}

Whether any merge *sounds like* a blend of its parents — no formal, blinded listening
test has been run on any clip in this series; the one listening event on this page is
a single person's off-gate preference, labelled as exactly that. Style claims from
distances — the noise floor forbids them. Whether the pinned *key* was honoured:
the estimator confidently reads F major against a pinned D♭ on every solo-piano clip,
and we cannot tell from this evidence whether the pin carries little weight or the
estimator is the wrong instrument for sixty seconds of one texture — we did not pick
the flattering reading. (Tempo pins, by contrast, came back honoured, allowing for the
beat-tracker's standard octave ambiguity.) Whether the better-loss Sousa
checkpoint is the better *adapter* — its render exists and you heard it, but no ears
have ruled between the two, and nothing downstream was rebuilt. And the held-back
pieces of all three corpora are still waiting for their test.

## What to take with you {#what-to-take-with-you}

- Three dead composers cost just under half an hour of training on one five-year-old
  card — the same recipe, unchanged, three times.
- Read the rights chain, not the licence flag: one corpus was cleared on two layers at
  once, one was freed by its own performer, and a tempting copy with strings attached
  was declined on purpose.
- You cannot average two adapters — the multiplication manufactures cross-terms that
  belong to no composer. Add the *effects*, squeeze honestly, and the squeeze bill is
  measurable: about one percent for two parents.
- A distance ruler proves *change*, never *style* — ours has a noise floor that is
  95 % of the largest effect we measured, and every claim on this page respects it.
- The sentence that failed by 0.00238 did not ship. What ships is the version that
  survives its own table — and the retraction, printed with the same care.

## How to check our work {#how-to-check-our-work}

Every number on this page traces to a training log's own per-pass lines, a
measurement record, or a rights receipt read at acquisition time. The data kit beside
this article carries the full fingerprints of every clip and the map from each player
to its file, the render requests behind every clip verbatim, the training logs' pass
lines for all three runs, the merge error tables, the distance tables behind the geometry claims — including the one
that killed the retracted sentence — the corpus manifests with their checksums, and
the rights-chain receipts. Where two honest instruments disagree, the kit carries
both readings.

## Who ran this, and thanks {#who-ran-this-and-thanks}

The corpora: the United States Marine Band's complete Sousa marches, via the Internet
Archive's mirror — *"Audio and scores courtesy of the one and only, the President's
Own, The U.S. Marine Band"*; Kimiko Ishizaka's *Open Goldberg Variations* and *Open
Well-Tempered Clavier* — dedications that are the whole point of those projects; and
Musopen's *Set Chopin Free* recordings, carried over from part one. None of the three
demands credit, which is exactly why we give it. The model: ACE-Step 1.5 (MIT — its row on our [licence ledger](/licences/)) —
every clip on this page is AI-generated, and says so. The trainer: Side-Step
(github.com/koda-dernet/Side-Step), the corrected-timestep LoRA trainer vendored in
ACE-Step 1.5; its upstream licence is CC BY-NC-SA 4.0, though the vendored copy says
it follows ACE-Step's MIT — we proceed on the stricter reading, and wrote to ask.

And beneath all of it, the open tools this work stood on without modifying: PyTorch
and torchaudio, which ran the training, and PyTorch again for the merges' arithmetic; Hugging Face's
PEFT library, the LoRA machinery itself; FFmpeg, the decoder that read every training
file; and the Internet Archive, three times over — the two items that carried the Bach
recordings, the mirror that carried the marches, and the Wayback Machine that held part
one's licence page. None of them owed us anything. A
small team and a fleet of AI agents did the work; the humans signed the numbers —
[how that works](/how-we-work/) is next door.

## The rest of the seminar {#the-rest-of-the-seminar}

Part one — [*Teaching a Music Model Chopin in Five Minutes*](/chopin-in-five-minutes/) — is the field guide this
piece stands on: what the model is, what an adapter is, and the strength dial from 0
to 100 %. Coming next: what a corpus actually costs to teach — which turns out to be
bought by the second of audio, not by the track, and which pays off the bill above;
the memory question part one left open, with the queued test's answer either way; and
the fourth adapter — a genre this time, not a composer. One piece at a time.

<!-- derived 2026-09-26 (UTC) by tools/derive_md.py from the pour source.
     source html sha256: 35f34e36a8faac700521a3edad24cdcffe4b510d8e7cac5511b23edea650c869
     derivation sha256:  beaf0c82164304ecf19f474258a406384dfc2e3bffa1a53f64c9824ce58b67c1
     the {#id} on each heading is the anchor that heading carries on the page. -->
