Output examples
Elegy in C-sharp minor — 608 notes, every one composed by the model (plan-driven: it states a theme, develops it by fragmenting, inverting and transposing, then brings it back transformed).
Both files below contain identical pitches. Nothing was added, removed or re-pitched. The only difference is how they are played.
| file | |
|---|---|
elegy_01_score_as_composed.mid / .mp3 |
raw model output: no pedal, near-flat velocities, onsets square on the beat |
elegy_02_performed.mid / .mp3 |
the same 608 notes performed — melody voiced above the accompaniment, chords rolled by choice, rubato around a felt pulse, 196 pedal events caught at harmony changes |
Why the pair matters
Play 01 and then 02. The gap between them is the most useful thing we learned building this
model: a dry-sounding symbolic generation is usually not a composition failure but an unperformed
one. Pitch content and performance are separable layers, and performance carries far more of the
perceived quality than we expected.
There's an acoustic reason as well as a musical one. Staggering a chord's attacks by roughly 20–70 ms spreads its beating partials out in time, which measurably lowers sensory roughness, so rolled chords aren't merely more expressive than struck ones, they're cleaner. Quantising a dense passage onto a grid makes it rougher, not just stiffer.
If you're evaluating this model (or any symbolic music model) on raw output, you're hearing about half of what's there.