A 50M-parameter byte-level piano language model, running entirely in your browser on raw WebGPU — no inference libraries, one hand-written WGSL kernel set. Claude improvises; a VRM avatar performs it live. classic.html is the original engraving-focused view (live sheet music, playhead, click-to-seek).
Run it: serve the repo root over HTTP (python3 -m http.server) and open in a WebGPU-capable browser (Chrome on Apple Silicon recommended).
Engine: Qwen3-shaped 16L/512d model trained at 64K context with hybrid attention (14 sliding-window layers + 2 global), int8 group-quantized weights (54.6MB), f16 ring-buffer KV cache, split-K flash-decoding attention, GPU-resident 16-token decode chains. Verified logit-exact against the HF reference to 16K context (window.musicgpt.longParityTest()).
Training data — public-domain compositions, but the performance datasets carry their own licenses; this repo (model weights and demo) is therefore a non-commercial research demo:
- MAESTRO v3 (Google Magenta) — CC BY-NC-SA 4.0
- GiantMIDI-Piano (ByteDance) — released with a disclaimer, no explicit license grant
- ATEPP v1.2 (QMUL) — CC BY 4.0; transcriptions of copyrighted commercial recordings
Assets & code:
- Piano samples: Salamander Grand Piano by Alexander Holm — CC BY 3.0
- three.js r170 (vendored) — MIT
- Claude model: @digi_dot_exe · VRM/three implementation: @SkyeSharkie