Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
npx claudepluginhub os-tack/fcp --plugin fcp-midiMCP server for semantic MIDI composition.
fcp-midi lets LLMs compose music by describing musical intent -- notes, chords, dynamics, tempo changes -- and renders it into standard MIDI files. Instead of manipulating raw bytes or MIDI events, the LLM works with operations like note Bass E2 at:1.1 dur:quarter vel:90 and crescendo @track:Lead vel:45-75 @range:3.1-6.4. Built on the FCP framework, powered by pretty-midi for serialization.
midi_session('new "Voltage Drop" tempo:140 key:E-minor')
midi([
'note Drums kick at:1.1 dur:eighth vel:100',
'note Bass E2 at:1.1 dur:quarter vel:90',
'chord Pad Em at:1.1 dur:whole vel:70',
'crescendo @track:Lead vel:45-75 @range:3.1-6.4',
'tempo 174 at:11.1',
])
midi_session('save as:./voltage_drop.mid')
| Tool | Purpose |
|---|---|
midi(ops) | Batch mutations -- notes, chords, tracks, tempo, dynamics, copy/transpose |
midi_query(q) | Inspect the composition -- map, tracks, events, piano-roll, instruments, find |
midi_session(action) | Lifecycle -- new, open, save, checkpoint, undo, redo |
midi_help() | Full reference card |
Plumber's Journey -- Classic game theme faithfully recreated: 4 tracks, 288 notes, 16 seconds, 180 BPM.
Voltage Drop -- A drum-and-bass track with tempo acceleration (140 -> 155 -> 174 BPM), 5 tracks, breakbeats, sub-bass, arpeggios, and a signature DROP section. Also used in the FCP vs raw Python agent battle -- FCP produced 1,674 notes across 12 tracks in 87 seconds, compared to 694 notes from ~689 lines of hand-written Python.
See docs/examples/ for MIDI files and the full writeup.
Requires Python >= 3.11.
pip install fcp-midi
{
"mcpServers": {
"midi": {
"command": "uv",
"args": ["run", "python", "-m", "fcp_midi"]
}
}
}
3-layer architecture:
MCP Server (Intent Layer)
Parses op strings, dispatches to verb handlers
|
Semantic Model
Tracks, notes, chords, dynamics, tempo maps, markers
In-memory composition graph with event sourcing
|
Serialization (pretty-midi)
Semantic model -> MIDI binary output
Key features:
acoustic-grand-piano, synth-bass-1, standard-kit)at:1.1 (bar 1, beat 1), at:3.2.240 (bar 3, beat 2, tick 240)whole, half, quarter, eighth, sixteenth, tripletcrescendo, diminuendo across rangesuv sync
uv run pytest # 658 tests
uv run pytest -m "not slow" # skip stress tests
uv run ruff check # linting
uv run pyright # type checking
MIT
Share bugs, ideas, or general feedback.
Based on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
AI music generation workflow for Suno - album concepts, lyrics, prompts, mastering, release
Guidelines and tools for creating Max/MSP patches with MaxMCP
Comprehensive Suno AI music prompt creation with automated artist research, structured prompts, genre-specific techniques, AI-slop avoidance, quality review, and Chrome automation for direct upload to suno.com
AI audio engineering skills for mixing, mastering, effects, diagnostics, and session setup. Pairs with the Phantom MCP server for audio analysis.
Generate AI music with ElevenLabs Music API. Use for: background music, soundtracks, jingles, theme songs, instrumental tracks, AI music composition.
Memory compression system for Claude Code - persist context across sessions
Query and refactor Rust codebases through intent-level commands
Create and edit draw.io diagrams through intent-level commands
Create and edit PowerPoint presentations through semantic commands
Query and refactor Python codebases through intent-level commands
Generate Terraform HCL through resource declarations
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claim