The guitar-only models were only ever modelling half the band. Metal MIDIs carry bass and drums too — a quarter of every song is drums we’d been throwing away. Keeping all three turns a lone riff into an arrangement, and unlocks the question of whether one instrument can be rebuilt from another.
A band, composed from a single start token
No prompt: the model is handed one “begin” token and writes guitar, bass, and drums together, interleaved beat by beat. These are raw samples, rendered through a general-MIDI kit.
g_metal_band_s1, generating
Every take has all three parts with sensible densities — riff, root-following bass, kick/snare. It's arranging, not just riffing.
d512/8L, ctx 2048, 26.4M params, batch 24, 12k steps on an RTX 4090 (~25 min, ~$0.35). Validation loss 0.18 — the lowest of any model here, because the drum track is so repetitive it drags the average down.
How the band fits in one stream
A multi-instrument tokenizer flattens the whole arrangement into one time-ordered sequence. Each note carries a Program marker for its instrument, and within every beat the order is fixed: guitar, then bass, then drums. That ordering is not a detail — it’s what makes reconstructing the drums from the riff even possible, because a drum token is always predicted with the same-beat guitar and bass already in view.
What it is, and isn’t
This is the riff genome of metal — harmony and rhythm — not the genre: there are no vocals, no timbre, no production. Instrument roles are recovered from unreliable general-MIDI program numbers, so the extraction is clean on roughly 55% of files (the ones with a full rhythm section). The drums are programmed, not performed.
Researcher notes
- Extraction. Per song: merge distorted/overdrive guitars → one part, GM-bass → one part, all drum tracks → one; require guitar + drums, bass optional; dedupe within each instrument; keep tempo.
- Tokenizer. REMI with
use_programs, one interleaved stream, programs restricted to guitar / bass / drums; drums asPitchDrumtokens. Vocabulary 271. - Not comparable to the guitar-only line. New tokenizer and vocabulary, so
g_metal_band_s1starts a fresh family of models rather than extendingg_metal_s1.