// professional drum track generation

MIDI Drums
Generator

A plugin-based Python system for creating professional MIDI drum tracks across Metal, Rock, Jazz, and Funk — with 7 legendary drummer personalities, Reaper DAW integration, and optional AI-powered natural language generation.

example.py
# Generate a complete death metal song in 3 lines
from midi_drums.api.python_api import DrumGeneratorAPI

api  = DrumGeneratorAPI()
song = api.create_song("metal", "death", tempo=180, complexity=0.85)
api.save_as_midi(song, "death_metal.mid")

# Apply a legendary drummer's signature style to any pattern
pattern      = api.generate_pattern("jazz", "verse", "swing")
weckl_groove = api.apply_drummer_style(pattern, "weckl")
api.save_pattern_as_midi(weckl_groove, "jazz_weckl.mid", tempo=130)

# Or export a full song directly to a Reaper project with markers
from midi_drums.api.cli import main  # or use the CLI:
# midi-drums reaper export --genre metal --style doom --tempo 120 --output doom.rpp --midi
4
Genres
28
Distinct Styles
7
Legendary Drummers
62%
Code Reduction
257+
Tests Passing
capabilities

Everything you need to produce drums

From single patterns to complete songs with Reaper integration — all from Python or the CLI.

🎸

Multi-Genre Engine

Four fully-realized genre engines, each with 7 distinct styles covering the full spectrum from blast beats to bebop.

  • Metal · Rock · Jazz · Funk
  • 7 authentic styles per genre
  • Research-based pattern libraries
🥁

Legendary Drummers

Seven iconic playing styles as composable modifications — apply any drummer's feel to any genre pattern.

  • Bonham · Porcaro · Weckl
  • Chambers · Roeder · Dee · Hoglan
  • Signature fills included
🏗️

Song Structure

Generate complete arrangements with configurable section sequences, dynamic fills, and velocity humanization.

  • Intro · Verse · Chorus · Bridge
  • Configurable bar counts per section
  • Automatic fill placement
🎛️

Reaper Integration

Export drum tracks directly to Reaper .rpp projects with section markers placed at exact bar positions.

  • Creates or modifies .rpp files
  • Markers from metadata or structure
  • Works on existing projects
🤖

AI Generation

Describe drum tracks in plain English. Anthropic, OpenAI, Groq, and Cohere backends all supported.

  • Natural language input
  • Auto genre & style detection
  • Provider-agnostic API
🔌

Plugin Architecture

SOLID design with strategy, builder, and factory patterns. Add a new genre or drummer in ~60 lines of code.

  • Composable templates & modifications
  • Full type hints throughout
  • Zero magic numbers

28 styles across 4 genres

🤘 metal
heavy death power progressive thrash doom breakdown
🎸 rock
classic blues alternative progressive punk hard pop
🎷 jazz
swing bebop fusion latin ballad hard_bop contemporary
🕺 funk
classic pfunk shuffle new_orleans fusion minimal heavy
drummer personalities

7 legendary styles

Each drummer is a composable modification you can apply to any genre pattern.

John Bonham
--drummer bonham
Triplet vocabulary, behind-the-beat groove, crushing power
rockmetalblues
Jeff Porcaro
--drummer porcaro
Half-time shuffle mastery, ghost notes, studio precision
rockfunkjazz
Dave Weckl
--drummer weckl
Linear playing, sophisticated coordination, fusion mastery
jazzfusionrock
Dennis Chambers
--drummer chambers
Funk mastery, incredible chops, pocket stretching
funkjazzrock
Jason Roeder
--drummer roeder
Atmospheric sludge, minimal creativity, crushing weight
metaldoom
Mikkey Dee
--drummer dee
Speed & precision, versatile power, twisted backbeats
metalrock
Gene Hoglan
--drummer hoglan
Mechanical precision, blast beats, progressive complexity
metaldeath

Quick Install

$ uv tool install .   # installs the midi-drums CLI globally
$ midi-drums generate --genre metal --style death --tempo 180 --output track.mid