MAiSTROAI classical composition

Build a model · 2

Rehearsal

Fit one of the three architectures on the prepared notes. A tenth of the corpus is held out for validation, and checkpoints are saved every five epochs into checkpoints/lstm_attention/, so models never overwrite each other and any two can meet in the arena.

Field notes

Reading the rehearsal

Loss is a more reliable marker than epoch count, since it scales with your dataset, a run of 200 files reaches a given loss in a different number of epochs than a run of 20. Here is the arc most training runs follow.

loss > 0.6

Finding a pulse

The safest bet the model has before it understands sequence at all: one note, or a narrow cluster, held far longer than anything in the dataset, with only the occasional stray token breaking the silence. Not a bug, just the starting line.

0.4 – 0.6

Chords before rhythm

Harmony tends to arrive before timing does. Expect the full pitch range in use and dense vertical stacks, the model has learned which notes co-occur, but note durations stay suspiciously uniform and the texture repeats in blocky columns.

0.2 – 0.4

Phrasing emerges

Duration starts to vary, the texture thins toward a single line with harmony underneath, and a melodic contour appears across bars. Usually the first checkpoint worth actually generating from and listening to.

< 0.2

Past the sweet spot

Don't assume lower is better. A loss this low is exactly as consistent with genuine mastery as with quoting the dataset outright. Trust your ears less here, and your comparisons more.

Picking a checkpoint

  • Sample more than once. One generated clip is a noisy read on a checkpoint, generate a handful before judging a run by ear.
  • Watch for verbatim quoting. If a late checkpoint reproduces long unbroken runs from the dataset, that is overfitting, no matter how good the loss number looks.
  • Check the distribution, not just the ear. The note-distribution comparison in backend/maistro/overfit_check.py scores a generated piece against every dataset track by cosine similarity, above ~0.8 means it is closer to copying than composing, 0.5–0.7 is the range you want.
  • When in doubt, go earlier. Between two checkpoints that sound about the same, the earlier one is the safer bet, it has had less opportunity to memorize anything.