Views
No views yet
drengskapur/midi-classical-music — 4,796 classical MIDI files (~50MB)1# Install dependencies
2pip install -r requirements.txt
3
4# Train + Generate (default)
5python3 -m src.s00_main train+generate
6
7# Train only
8python3 -m src.s00_main train --epochs 20 --batch-size 4
9
10# Generate from checkpoint
11python3 -m src.s00_main generate --temperature 0.85music_gen_llm/
├── src/
│ ├── s00_main.py # Entry point — orchestrates pipeline
│ ├── s01_config.py # All configuration dataclasses
│ ├── s02_tokenizer.py # REMI MIDI tokenizer
│ ├── s03_dataset.py # Data download + tokenization + DataLoader
│ ├── s04_model.py # MusicTransformer (LLaMA-style)
│ ├── s05_trainer.py # Training loop with AMP + checkpointing
│ ├── s06_generator.py # Autoregressive generation with KV-cache
│ └── s07_utils.py # Logging, memory monitoring, seeding
├── tests/
│ └── test_pipeline.py # 7 unit tests covering all components
├── scripts/
│ ├── download_data.sh # Dataset setup
│ ├── train.sh # Training launcher
│ └── generate.sh # Generation launcher
├── docs/
│ ├── README.md # This file
│ ├── HLD.md # High-Level Design
│ ├── LLD.md # Low-Level Design
│ └── flow_diagram.drawio # Execution flow diagram
├── data/ # Downloaded MIDI + tokenized cache
├── checkpoints/ # Saved model weights
├── output/ # Generated MIDI files
├── requirements.txt
├── Dockerfile
└── .gitignores00_main.py → s01_config.py → s02_tokenizer.py → s03_dataset.py → s04_model.py → s05_trainer.py → s06_generator.py
│ │ │ │ │ │ │
Entry point Load configs Init tokenizer Download & tokenize Build model Train loop Generate MIDI| Parameter | Value |
|---|---|
| Dim | 256 |
| Layers | 6 |
| Heads | 8 (Q) / 4 (KV) — GQA |
| Hidden (FFN) | 448 (SwiGLU) |
| Max Seq Len | 1024 |
| Vocab Size | 485 (REMI tokens) |
| Parameters | ~5M |
| Precision | BF16/FP16 (AMP) |