How mlecardonnel/drumsheet works
DrumSheet is a command-line drum-audio transcription tool. The user supplies audio; the CLI loads four classifiers and delegates transcription to DrumAudio, which detects percussion events, classifies their spectrograms, and produces a LilyPond score before invoking LilyPond to render a PDF. The README also describes the MedleyDB-based training context and the four instrument-specific classifiers. The source excerpts support the runtime flow; model internals and dataset processing are not shown.
Main entry points: main.py Transcription CLI · drum_audio.py Spectrogram classification · CY_60epochs Cymbal model · HH_ResNet Hi-hat model
Components 13
Command entry
- Transcription CLI
src/main.py
Audio transcription
- DrumAudio
src/drum_audio.py - Percussion detection
src/drum_audio.py - Spectrogram classification
src/drum_audio.py
Instrument classifiers
- Cymbal model
models/CY_60epochs - Hi-hat model
models/HH_ResNet - Kick model
models/KD_ResNet - Snare model
models/SD_ResNet
Score output
- LilyPond score generation
src/drum_audio.py - LilyPond score file
data/lilypond_files/MusicDelta_80sRock_Drum.ly - PDF score
data/pdf_files/MusicDelta_80sRock_Drum.pdf
Other components
- Audio provider
- LilyPond renderer
Connections 16
- Audio provider → Transcription CLI: provides audio
src/main.py - Transcription CLI → DrumAudio: constructs
src/main.py - Transcription CLI → Cymbal model: loads model
src/main.py - Transcription CLI → Hi-hat model: loads model
src/main.py - Transcription CLI → Kick model: loads model
src/main.py - Transcription CLI → Snare model: loads model
src/main.py - DrumAudio → Percussion detection: detects events
src/drum_audio.py - DrumAudio → Spectrogram classification: classifies events
src/drum_audio.py - Spectrogram classification → Cymbal model: predicts cymbals
src/drum_audio.py - Spectrogram classification → Hi-hat model: predicts hi-hats
src/drum_audio.py - Spectrogram classification → Kick model: predicts kicks
src/drum_audio.py - Spectrogram classification → Snare model: predicts snares
src/drum_audio.py - Transcription CLI → LilyPond score generation: requests score
src/main.py - LilyPond score generation → LilyPond score file: writes score
src/drum_audio.py - Transcription CLI → LilyPond renderer: requests rendering
src/main.py - LilyPond renderer → PDF score: renders PDF