--- title: MAJEPPA Conditional Generation emoji: 🎹 colorFrom: indigo colorTo: purple sdk: gradio sdk_version: 6.13.0 app_file: app.py pinned: false license: cc-by-nc-4.0 short_description: Conditional piano performance generation with LLM-JEPA. hardware: zero-a10g sleep_time: 300 --- # MAJEPPA — Conditional Piano Performance Generation Anonymized HF Space accompanying the MAJEPPA paper submission. Generates expressive performance MIDIs from deadpan score MIDIs, conditioned on **performer type** and **recording context**. ## How it works - Base: `loubb/aria-medium` (660M params, MIDI tokenizer with bar/onset/duration tokens). - Fine-tune: LoRA r=512 on `mixed_qkv` + `att_proj_linear`. - Special tokens: ``, ``, ``. - Inference prompt: `[Score] [EOS] [COND_perf] [COND_rec] [PRED_1] [first_score_note]` → manual autoregressive sampling (temperature 0.8, top-k 50) until EOS. ## Hardware GPU recommended (T4-small or better). Each generation runs ~512 manual decode steps; on CPU this is ~30–60s per call. ## Files ``` app.py # Gradio UI, lazy-loads the model on first request inference.py # Inference wrapper: load + generate(score, performer, recording) src/models/ # Model code (slim): backbone + LoRA wrapper + sequence builder examples/ # Five preset score MIDIs from the paper figures requirements.txt ```