TASTE: Taxonomy-Aware Symbolic Piano Generation from Textual Description
Organizations: University of California, San Diego · University of Rochester
Abstract
Text-conditioned symbolic music generation has attracted growing interest with the development of generative models. Yet two questions remain underexplored: what aspects of music the conditioning text should describe, and how the corresponding data should be collected and trained to improve controllability and text-music alignment. We address these challenges with TASTE, a taxonomy-aware framework for symbolic music generation with a main focus on piano pieces. First, we introduce a taxonomy of musical elements that specifies how a piece can be captured through textual description in a musically grounded way. The taxonomy comprises a set of metadata tags (genre, emotion, section plan, etc.) together with a free-form description of music imagery. This structure decomposes textual input to match the generation goal more coherently and precisely. Second, we build a data pipeline for collecting, annotating, and retrieving public symbolic piano resources, yielding a corpus of 432K MIDI files labeled at multiple levels of granularity. Finally, we design a staged training procedure that leverages this multi-granularity data across two model families: an autoregressive model and a non-autoregressive diffusion model. Both objective and subjective evaluations show that our models achieve superior musical-element control, text-description alignment, and overall music quality. We will release the full pipeline, all annotated datasets, and the model checkpoints.
Figures & tables
| Model | Key | Tempo | Emotion | Genre | Accomp. | Perf. | CLaMP 3 | CLAP |
|---|---|---|---|---|---|---|---|---|
| Reference | 1.000 | 0.820 | 0.840 | 0.830 | 0.550 | 0.530 | 0.132 | 0.338 |
| MuseCoco | 0.636 | 0.386 | – | – | – | – | ||
| text2midi | 0.181 | 0.456 | 0.276 | 0.380 | 0.205 | 0.270 | 0.054 | 0.273 |
| MIDI-LLM | 0.340 | 0.713 | 0.285 | 0.370 | 0.201 | 0.226 | 0.059 | 0.292 |
| EMO-Disentangler | – | – | – | – | – | – | ||
| Piano Transformer | – | – | – | 0.458 | – | – | – | – |
| System | Boundary F1 | Contrast (random) | Pairwise F1 |
|---|---|---|---|
| Reference | 0.896 | 2.52 (1.72) | 0.769 |
| AR | 0.517 | 1.99 (1.69) | 0.608 |
| DiT | 0.868 | 3.18 (1.78) | 0.775 |
| Model | MAESTRO V | MAESTRO C | POP909 V | POP909 C | PQ | CE |
|---|---|---|---|---|---|---|
| Reference | 0.497 | 193.427 | 0.662 | 239.368 | 8.007 | 7.333 |
| MuseCoco | 1.045 | 372.282 | 0.964 | 280.778 | 7.709 | 6.879 |
| text2midi | 1.067 | 296.012 | 1.113 | 277.089 | 7.789 | 6.953 |
| MIDI-LLM | 1.425 | 282.214 | 2.025 | 250.544 | 7.586 | 6.840 |
| EMO-Disentangler | 0.979 | 356.460 | 0.560 | 250.884 | 7.944 | 7.448 |
| Piano Transformer | 0.745 | 196.619 | 1.542 | 247.119 | 7.761 | 7.180 |
| System | Quality (1–5) | Imagery accuracy (%) |
|---|---|---|
| Reference | 3.85 0.85 | 69.7 |
| text2midi | 2.71 0.91 | 54.5 |
| MIDI-LLM | 2.82 1.08 | 51.5 |
| TASTE (AR) | 3.26 0.79 | 80.3 |
| TASTE (DiT) | 2.73 1.00 | 75.8 |
Appendix figures & tables15 assets
Supplementary material from the paper’s appendix.
Appendix
| Field | Classes and operational definition |
|---|---|
| Key | 24 classes, 12 major and 12 minor tonics: one global estimate per piece. |
| Tempo | 3 classes from the estimated bpm: slow , moderate , fast . |
| Emotion | happy brightness, playfulness, or triumph. sad sorrow, longing, or grief. calm serenity or reflection without persistent distress. angry confrontation or defiance. anxious tension, restlessness, or foreboding. |
| Genre | classical Baroque through modern and neoclassical. jazz ragtime, stride, swing, blues, jazz ballads. pop pop-song covers, pop ballads, New Age and easy-listening styles. Hybrids take the strongest overall identity. |
| Accompaniment | chordal block or voiced chords. ostinato a repeated driving cell. arpeggiated broken or rolling chords. sustained held tones, pedal points, or sparse long harmony. contrapuntal independently moving voices. |
| Performance | Two binary axes crossed into four classes: timing steady (strict, even, motoric) versus flexible (rubato, elastic, breathing), and articulation connected (legato, singing, smooth) versus detached (staccato, crisp, percussive). |
| Source | Pieces |
|---|---|
| Aria-MIDI named subset ( Bradshaw and Colton, 2025 ) | 32,522 |
| PIAST-YT ( Bang et al., 2024 ) | 8,669 |
| Pop2Piano cover index ( Choi and Lee, 2023 ) | 5,866 |
| PiJAMA ( Edwards et al., 2023 ) | 2,777 |
| POP909 ( Wang et al., 2020 ) | 909 |
| EMOPIA-derived pieces ( Hung et al., 2021 ) | 387 |
| Emotion | Genre | Accomp. | Timing | Articulation | Performance | |
|---|---|---|---|---|---|---|
| Unpruned | 0.5353 | 0.9086 | 0.4445 | 0.6527 | 0.7256 | 0.5119 |
| Pruned | 0.5629 | 0.9130 | 0.4621 | 0.6523 | 0.7405 | 0.5027 |
| Kept | 55.3% | 93.1% | 50.8% | 65.4% | 81.0% | – |
| Field | Applied | Val. prec. | Coverage | Binding rule | ||
|---|---|---|---|---|---|---|
| Emotion | 0.7319 | 0.8807 | 0.7319 | 0.600 | 86.6% | precision |
| Genre | 0.3968 | 1.0000 | 0.3968 | 0.936 | 100.0% | precision |
| Accompaniment | 0.9873 | 0.8097 | 0.8097 | 0.538 | 75.0% | coverage floor |
| Performance | 0.9319 | 0.9083 | 0.9083 | 0.588 | 75.0% | coverage floor |
| Parameter | Value |
|---|---|
| Layers / hidden width / context | 26 / 1,536 / 4,096 |
| Query heads / key–value heads / head width | 24 / 6 / 64 |
| Feed-forward width (SwiGLU) / embedding table | 6,144 / 2,176 |
| Normalization / rotary base / embeddings | RMSNorm QK-norm / 100,000 / tied |
| Backbone parameters | 892,881,664 |
| Tag tables (emotion, genre, accomp., perf.) |
| Pretrain | Large public | Curated | High-quality | |
| Distinct pieces per pass | 816,682 | 369,553 | 50,130 | 9,849 |
| Passes / training rows | 5 / 4,083,410 | 6 / 2,217,318 | 3 / 150,390 | 5 / 49,245 |
| Validation rows | 1,518 | 1,500 | 1,000 | 100 |
| Training tokens | 11.44B | 6.60B | 429.72M | 155.97M |
| Optimizer updates | 43,708 | 12,616 | 1,644 | 607 |
| Peak learning rate |
| Parameter | Value |
|---|---|
| Hidden width / layers / heads | 1,024 / 16 / 16 |
| Feed-forward ratio (GELU) / latent width | / 128 |
| Canvas positions / conditioning-code width | 384 / 512 |
| AdaLN-Zero head output width per block | |
| Cross-attention context width | 2,560 |
| Normalization | LayerNorm, no affine; QK-RMSNorm |
| Pretrain | Large | Curated | High- | ||
| public | (a) | (b) | quality | ||
| Steps | 120,000 | 120,000 | 24,000 | 36,000 | 9,000 |
| Peak learning rate ( ) | 10 | 10 | 5 | 3 | 2 |
| Warm-up steps | 3,000 | 2,000 | 500 | 500 | 300 |
| Timestep mean | |||||
| Passes visited | 2 | 3 | 3 | 3 | 3 |
| System | Received conditions and adaptation |
|---|---|
| MuseCoco ( Lu et al., 2023 ) | Attribute-to-music stage: piano, emotion quadrant, genre, key mode, tempo class, 4/4 meter, and a length request over 60 s. Native top- 15, temperature 1.0, and 512–2,560 tokens. Its tempo cutoffs (76/120 bpm) differ from ours (75/115). |
| text2midi ( Bhandari et al., 2025 ) , MIDI-LLM ( Wu et al., 2026 ) | All six tags and imagery in a caption. Tempo classes become Adagio 65, Andante 95, or Allegro 135 bpm. Decoding masks non-piano programs and drum notes. |
| EMO-Disentangler ( Huang et al., 2024 ) | Emotion quadrant, decomposed into valence and arousal across its two stages. The first stage samples and declares its own key. |
| Piano Transformer ( Lehmkuhl et al., 2025 ) | Genre prefix only. |
| Aria ( Bradshaw et al., 2025 ) , Compose & Embellish ( Wu and Yang, 2023 ) | Unconditional piano generation for quality evaluation. |
| Model / stage | Key | Tempo | E4 | E | G0 | G | A | P | CLaMP 3 | CLAP |
|---|---|---|---|---|---|---|---|---|---|---|
| Reference | 1.000 | 0.820 | 0.630 | 0.840 | 0.500 | 0.830 | 0.550 | 0.530 | 0.132 | 0.338 |
| MuseCoco | 0.636 | 0.280 | 0.315 | 0.386 | – | – | – | – | ||
| text2midi | 0.181 | 0.456 | 0.268 | 0.276 | 0.330 | 0.380 | 0.205 | 0.270 | 0.054 | 0.273 |
| MIDI-LLM | 0.340 | 0.713 | 0.281 | 0.285 | 0.391 | 0.370 | 0.201 | 0.226 | 0.059 | 0.292 |
| EMO-Disentangler | – | 0.477 | – | – | – | – | – | – | ||
| Piano Transformer | – | – | – | – | 0.375 | 0.458 | – | – | – | – |
| Model / stage | Key | Tempo | E4 | E | G0 | G | A | P | CLaMP 3 | CLAP |
|---|---|---|---|---|---|---|---|---|---|---|
| AR | ||||||||||
| Large public | 0.642 | 0.731 | 0.440 | 0.395 | 0.388 | 0.451 | 0.295 | 0.281 | 0.083 | 0.339 |
| Curated | 0.559 | 0.682 | 0.406 | 0.370 | 0.434 | 0.615 | 0.236 | 0.300 | 0.090 | 0.332 |
| High-quality | 0.767 | 0.730 | 0.514 | 0.585 | 0.444 | 0.509 | 0.296 | 0.273 | 0.141 | 0.335 |
| w/o large public | 0.781 | 0.754 | 0.516 | 0.566 | 0.458 | 0.481 | 0.252 | 0.299 | 0.131 | 0.333 |
| DiT | ||||||||||
| MAESTRO | POP909 | PQ | CE | |||
| Model / stage | V | C | V | C | ||
| AR | ||||||
| Large public | 0.210 | 172.422 | 0.998 | 286.869 | 7.775 | 7.252 |
| Curated | 0.319 | 175.372 | 1.177 | 226.742 | 7.781 | 7.168 |
| High-quality | 0.426 | 170.697 | 0.605 | 201.652 | 7.946 | 7.410 |
| w/o large public | 0.445 | 165.549 | 0.592 | 206.130 | 7.947 | 7.416 |
| Boundary @5 s | Contrast | Pairwise | |||
| Model / stage | P | R | F1 | (random) | F1 |
| Reference | 0.876 | 0.918 | 0.896 | 2.52 (1.72) | 0.769 |
| AR | |||||
| Large public | 0.384 | 0.301 | 0.338 | 1.88 (1.66) | 0.600 |
| Curated | 0.362 | 0.275 | 0.313 | 1.82 (1.65) | 0.623 |
| High-quality | 0.567 | 0.475 | 0.517 | 1.99 (1.69) | 0.608 |
| Quality (1–5) | Imagery accuracy (%) | |||
|---|---|---|---|---|
| System | 2 years | 2 years | 2 years | 2 years |
| Reference | 4.00 | 3.72 | 70.0 | 69.4 |
| text2midi | 2.90 | 2.56 | 56.7 | 52.8 |
| MIDI-LLM | 2.93 | 2.72 | 50.0 | 52.8 |
| TASTE (AR) | 3.37 | 3.17 | 76.7 | 83.3 |
| TASTE (DiT) | 2.97 | 2.53 | 80.0 | 72.2 |
Text-to-Music Generation
Text-to-music generation turns natural-language descriptions into audio or symbolic scores, with control over style, instruments, mood, lyrics, and structure.
See all 47 papers