Orpheus
An AI agent that analyzes and transforms music projects in REAPER, explaining why it sounds a certain way and reshaping it toward a desired style through natural language interaction.
README
π΅ Orpheus
An AI agent that doesn't just build music in REAPER β it listens to what you've made, tells you why it sounds the way it does, and reshapes it toward the sound you want.
"Why does this beat sound like Dominic Fike?" Β· "Make this sound Classical." Orpheus analyzes your project, recommends concrete changes with reasons, and β on your approval β applies them as real, editable tracks. One
Ctrl+Zundoes the whole thing.
π§ Status: early (pre-alpha), and moving. What's built + tested today: the full architecture, a documented analysis of the entire Reaper/DAW-MCP frontier, the music-theory core, and β as of M0 β the REAPER bridge: the AI can connect to a live REAPER and round-trip commands (proven by Python + Lua + cross-language integration tests). What's still stubs: the analysis and apply tools (M1βM3 on the roadmap). So it connects and is wired end-to-end, but doesn't compose or transform yet. The first feature release (
v0.1) ships the understand-and-explain half; the transform half follows inv0.3. Star/watch to follow along. β
Orpheus is an MCP server. It plugs into any MCP-compatible client (Claude Desktop, Cursor, Claude Code) and gives the model a set of tools to read, reason about, and edit a live REAPER session.
Why Orpheus exists
There is a thriving ecosystem of MCP servers that let an AI build music in a DAW by natural language. After reading the source of the leading projects (see docs/frontier-analysis.md), one gap is unmistakable:
The "build me a track" half is solved and even viral. The "look at my track, explain it, and improve it toward a reference" half is completely unclaimed.
No shipping server can look at your existing project, reason over both its composition and its sound, propose reasoned changes toward a target style, and apply them back as editable tracks. That loop β
ANALYZE β RECOMMEND (with reasons) β [you approve] β APPLY β VERIFY
β is Orpheus's entire reason to exist.
How it's different from what's out there
| Capability | Control servers (shiehn, xDarkzx, Ableton-MCP) | Analysis servers (dschuler36) | Mix-match tools (Matchering, Ozone) | Neural "genre changers" | Orpheus |
|---|---|---|---|---|---|
| Build a track from NL | β | β | β | β | β |
| Read the current project's harmony | β | partial (MIDI-blind) | β | β | β |
| Explain why it sounds like X | β | objective warnings only | β | β | β |
| Recommend changes with reasons | β | β | β | β | β |
| Human approval gate | β | n/a | β | β | β |
| Apply changes as editable tracks | fire-and-forget | β | audio only | β (baked WAV) | β |
| Match harmony / instrumentation, not just EQ | β | β | β | β (unexplained) | β |
Orpheus is the first to make a single CompositionSpec the contract for an analyze β recommend β apply loop over an existing project. The compositional dimensions (key, harmony, instrumentation) are where it's genuinely first; the mix/master dimension it assembles from solved parts (it vendors Matchering).
The north-star demo
You: (open an 8-bar beat in REAPER) "Make this sound Classical."
Orpheus: Analyzingβ¦ detected A minor (confidence 0.71), 120 BPM, a iβiv vamp,
drum-forward mix, low band +8 dB hotter than the classical reference.
Here's my plan (each change, and why):
1. 120 β ~70 BPM β classical phrasing breathes slower
2. transpose to A minor β keep your tonal center, lean modal
3. iβiv β iiβVβi with a secondary dominant β functional harmony is the
classical signature
4. add a Strings track (from your installed FX) β idiomatic voice
5. master-match tonal balance to the reference β cut ~3 dB at 120 Hz
Apply all 5? [you approve]
Orpheus: Done β wrapped in one undo block. Re-rendered and re-measured:
now within 1.2 dB of the reference across all three bands.
Every line of "here's why" is a real diff between your project and a cached style fingerprint β not a vibe.
Architecture (one paragraph)
Orpheus is an external Python FastMCP server. It never calls REAPER's API directly. Instead it speaks to a single hardened file-based JSON bridge watched by a persistent Lua ReaScript loop inside REAPER β the same dependency-free transport the most comprehensive existing server ships, hardened with a heartbeat lock-file, atomic writes, static dispatch, and per-call note caps. The model talks in beats, never ticks; all PPQ/tempo math lives inside the bridge. Read-only analyze_* tools build a CompositionSpec of your current project; recommend_changes diffs it against a style fingerprint into a reason-annotated EditPlan; a separate, destructiveHint-flagged apply_changes executes the approved plan in one undo block. Full detail: docs/architecture.md.
Why not
python-reapyor OSC? REAPER's OSC can't pass arguments to custom actions, so it literally cannot create tracks or write MIDI notes.python-reapyis effectively unmaintained (documented REAPER 7 / Python 3.13 failures) and its distant API throttles to ~30β60 calls/sec. The in-REAPER Lua bridge sidesteps both. This is a deliberate divergence from the most-starred prior art β see the architecture doc for the full justification.
Install
Not yet published. These are the planned one-line install paths once
v0.1is on PyPI.
# 1. Run the server (no clone needed, once published)
uvx orpheus-mcp
# 2. Load the in-REAPER bridge script (one-time)
# Copies orpheus_bridge.lua into REAPER's Scripts folder and tells you how to run it.
orpheus-mcp install-bridge
Then add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"orpheus": { "command": "uvx", "args": ["orpheus-mcp"] }
}
}
Restart Claude Desktop, open a project in REAPER, run the Orpheus bridge action, and ask Claude to "check the Orpheus connection." Full per-OS steps: docs/installation.md.
Roadmap
Orpheus ships in honest milestones (full detail + the "why this order" in docs/roadmap.md):
| Milestone | What works | Scale |
|---|---|---|
| M0 | Hardened bridge + FastMCP scaffold + get_connection_status |
foundation |
| M1 | Build/modify correctly: tracks, transport, FX, PPQ-correct MIDI | construction core |
| M2 | Understand a project: harmony, groove, audio character, theory scaffolding | β v0.1: it explains your track |
| M3 | Transform: recommend_changes + gated apply_changes + style fingerprints |
β v0.3: the differentiator |
| M4 | NL ergonomics + generate-from-scratch composers | polish |
| M5 | Docs, PyPI, MCP Registry, the launch demo | ship |
| M6 | Reach: MIDI recording, audioβreference ingest, groove transfer | post-launch |
v0.1 (weeks) explains; v0.3 (months) transforms. The full loop is a real build, scoped honestly.
Standing on shoulders β credits
Orpheus deliberately aggregates the best of a generous open-source ecosystem rather than reinventing it. Full per-project analysis with citations in docs/frontier-analysis.md.
- shiehn/total-reaper-mcp β the file-JSON IPC bridge pattern + NL DSL resolvers + tool profiles.
- xDarkzx/Reaper-MCP β bridge hardening (heartbeat, static dispatch, per-call caps).
- ahujasid/ableton-mcp β beats-not-ticks note model, atomic-tool altitude, the demo-led launch playbook.
- dschuler36/reaper-mcp-server β the typed project tree + four objective audio analyses (the seed of the recommend engine).
- jarmstrong158/waveform-MCP β the
CompositionSpecIR, primitives-vs-composers split, mix-calibration table (patterns reimplemented under MIT, not copied β its code is GPL-3.0). - bonfire-audio/reaper-mcp β chord/drum theory primitives + correct headless render recipes.
- music21, asume21/music-theory-mcp β the theory + genre knowledge layer.
- Matchering β the entire mix/master "sound like" layer.
- AI TrackMate β the analyze β "LLM-readable music report" β reasoned-feedback pattern.
License
MIT Β© 2026 Mal0ss. Orpheus reimplements patterns from the projects above; it does not copy GPL-licensed source.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.