# Complete public-domain scores

These five performances use complete source scores or complete named arrangements.
Every sound is generated by Audio as Code's procedural instruments. Generation
uses no recorded samples, SoundFonts, measured impulse responses, or source audio.

```sh
uv sync --locked
uv run python examples/classic_showcase.py --ffmpeg ffmpeg
```

FFmpeg must be installed to encode the 192 kbps MP3 previews. Normal rendering is
offline and reads `examples/music/classics-full.json`. Outputs under
`output/classic-showcase/` include WAV, MP3, MIDI, editable JSON score, and a
measurement report for each piece, plus a manifest and portable source ZIP.

| Complete score or arrangement | Procedural voices | BPM | Notes | Source beats | Audio duration |
| --- | --- | ---: | ---: | ---: | ---: |
| Beethoven: Für Elise, WoO 59 | Piano, both hands | 72 | 1,041 | 187 | 156.4583 s |
| Bach: Cello Suite No. 1, BWV 1007, Prelude | Solo cello | 80 | 656 | 168 | 126.5625 s |
| Mozart: Rondo alla Turca, K. 331, third movement | Piano, both hands | 112 | 2,811 | 446 | 239.3304 s |
| Traditional: Greensleeves, Aaron Fontaine arrangement | Guitar, two voices | 100 | 110 | 97 | 58.6500 s |
| Beethoven: Ode to Joy, Peter Chubb SATB hymn arrangement | Organ, four voices | 100 | 245 | 64 | 38.8500 s |

The Bach performance is the complete 42-bar Prelude, not the six-movement suite.
Greensleeves includes the full 32-bar two-part arrangement and pickup. Ode to Joy
is the complete 16-bar SATB hymn arrangement, not Beethoven's Ninth Symphony.
Every performance adds 0.75 beats of ending space after the source timeline.

The source editions are credited to [Stelios Samelis, Mutopia 931](https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=931),
[Andreas Scherer, Mutopia 517](https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=517),
[Rune Zedeler and Chris Sawer, Mutopia 108](https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=108),
[Aaron Fontaine, Mutopia 109](https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=109),
and [Peter Chubb, Mutopia 528](https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=528).
Their imported provenance records identify them as Public Domain, checked on
2026-10-02. Score provenance is separate from this project's MIT-licensed code;
these audio files are newly synthesized performances.

Für Elise and Rondo alla Turca use explicit, edition-specific repeat maps derived
from the checked-in LilyPond notation. Their source MIDI files contain folded
repeats and alternative endings: 905 events over 156.5 beats for Für Elise and
1,614 over 255 beats for Rondo alla Turca. The importer expands the printed form
to the counts above. Mozart's grace pickups are moved before the second ending,
with the associated gates adjusted by the same 33/384-beat allocation. These
details are recorded in `repeat_expansion` and `import_notes`; no arbitrary loops
are added to extend an excerpt. The other three source sequences need no added
repeats. Ode to Joy preserves all four written voices, including simultaneous
unisons that its source MIDI merges into 238 events.

The classic recipe preserves every pitch, onset, written gate, and velocity in
the complete imported dataset, with no register shifts. Piano, cello, and guitar
match their source instrument families; the SATB hymn is played instrumentally
on organ. Track gain and pan balance the parts. Tempo and controls are fixed;
there are no tempo maps, automation, reverb, or delay. Short renderer releases
(0.10 seconds for piano/guitar, 0.04 for cello/organ) soften gate endings within
the added ending space. Sustain pedal, detailed acoustic articulation, and vocal
production are not modeled. The cello remains a procedural approximation rather
than a validated acoustic simulation.

The generator compares every emitted note with its source part, round-trips
saved scores, exports MIDI, and rejects silent, clipped, non-finite, or wrongly
timed WAV output. Artifact verification additionally compares all MIDI note
events with the score on the 480-tick grid, checks MP3 decoding and frame counts,
checks the final release, and reproduces every score using the extracted source
bundle. Numerical checks do not establish perceptual quality or realism, and do
not constitute an audition. MIDI preserves written notes and timing; its sound
depends on the receiving synthesizer.

`classic-showcase-source.zip` includes the recipe, full note dataset, optional
notation importer, checked-in source notation, engine Python modules, project
metadata and lockfile, README, license, and this guide. Extract it, run
`uv sync --locked` from `audio-as-code-classics/`, then run the command above.
The recipe's bundle-export step expects this project layout. The individual
Python download requires the adjacent `music/classics-full.json` and an installed
engine. The optional importer (`examples/music/build_classics_full.py`) downloads
notation/MIDI to rebuild the dataset; normal rendering never needs that download.
Saved scores can also be rendered with `aac render SCORE.json -o output.wav`.

Manifest IDs remain stable. Each item declares `variant: "classic"`, its matching
`pair_id`, `complete: true`, `excerpt: false`, and the exact `performance_scope`.