Project Info
Your AI-powered music production co-pilot for REAPER (slightly chopped DAW)
Inspiration
Music production has a steep learning curve, especially in powerful DAWs like REAPER. Beginners often know what they want to hear — something like a “house beat” — but don’t yet know what that means: a four-on-the-floor kick, a clap on 2 and 4, and off-beat hi-hats. And even if they do, they may not know how to build it inside the DAW. That gap between musical instinct and technical execution is where most people get stuck. AI coding assistants have transformed software development — not by replacing engineers, but by helping them move faster and learn as they build. Music production hasn’t had that kind of support. We built Magentic to change that.
What it does
Magentic is a web-based AI agent with direct, real-time control over REAPER. It combines a conversational chat interface with deep DAW integration to help producers: Control REAPER directly — create tracks, add MIDI patterns, apply FX chains, adjust mixing parameters, and more — all from natural-language commands executed instantly in your session AI Stem Separation + MIDI Conversion — Upload any track, split it into drums, bass, vocals, and more using AI tools, then convert those stems to MIDI so you can reuse and reinterpret the original musical ideas directly inside REAPER. Manage FX presets — browse, switch, and apply FX presets on any track through chat Stay project-aware — Magentic reads your live REAPER session (tracks, FX, items, BPM, duration) and gives context-specific responses referencing your actual project state
How we built it
Frontend: React + Vite with a custom dark magenta UI, sleek styling, smooth animations, and an intuitive, split-panel layout (file upload, project details, and main chat panel). Backend: Node.js + Express API server using OpenAI’s GPT-4o and Anthropic’s Claude 3.7 with structured function-calling tools — not just prompt engineering, but a full agentic loop. The AI can call 40+ production tools (create tracks, generate MIDI, apply FX, separate stems, convert audio to MIDI, etc.) and chain them together into multi-step workflows. Python Bridge: A Flask-based bridge server connected to REAPER via the reapy library. Tool calls are translated into live DAW modifications, giving Magentic real-time read/write access for the full session. Stem Separation + Audio-to-MIDI: AI-powered source separation using Demucs (open-source, originally by Meta) splits tracks into drums, bass, vocals, and more. We also convert audio to MIDI using Basic Pitch (open-source by Spotify), allowing users to study and reinterpret musical ideas from their favorite artists directly inside REAPER. Live Editing: Magentic isn’t just offline automation — it works during performance. You can ask the chatbot to modify FX, adjust arrangements, or trigger changes in real time while you’re recording, listening, and producing.
Challenges we ran into
Some of the biggest challenges were technical and architectural. We had to correctly interface with REAPER’s API in a way that was stable, safe, and responsive in real time. Getting GPU inference running reliably required moving from RunPod to Modal (>>>>), where we were finally able to deploy and scale the models properly. Integrating open-source ML models like Demucs and Basic Pitch into the existing agentic tool-calling loop also required restructuring parts of the backend so model outputs could flow cleanly into REAPER actions without breaking the conversational workflow.
Accomplishments we're proud of
(as 1st time hackers) We’re proud of: A working, tool-calling AI agent that can directly modify a live REAPER session — not just suggest ideas, but execute real production actions inside the DAW. Seamless integration of open-source ML models (like Demucs and Basic Pitch) into our agentic architecture, enabling stem separation and audio-to-MIDI inside a unified creative workflow. A fully functional live demo — real-time editing, model inference, and DAW control working together in one system. A creator-first philosophy — empowering bedroom producers to develop and share their ideas, not replacing their creativity, but helping them learn, build confidence, and move faster.
What we learned
We learned that building an AI agent is hard. We also dove deep into REAPER's internals via reapy, learning how DAWs represent tracks, items, takes, and MIDI at the API level. On the music side, building the Educational Engine taught us how much implicit knowledge exists in production — terms like "Backbeat" and "Sidechain Compression" are second nature to pros but completely opaque to beginners.
What's next
Stronger contextual memory — so Magentic can recognize patterns in a user’s style and give more consistent, personalized guidance over time. Surround sound support — tapping into REAPER’s multichannel capabilities to help producers experiment with spatial and immersive audio. Expanded music knowledge — adding more coverage of mixing, arrangement, and sound design concepts so users can learn as they build. Ongoing improvements — refining live editing, model integration, and tools that empower producers without replacing their creative control.
Why Magentic?
Music production has a steep learning curve, especially in powerful DAWs like REAPER. Beginners often know what they want to hear — something like a "house beat" — but don't yet know what that means: a four-on-the-floor kick, a clap on 2 and 4, and off-beat hi-hats. And even if they do, they may not know how to build it inside the DAW.
That gap between musical instinct and technical execution is where most people get stuck.
AI coding assistants have transformed software development — not by replacing engineers, but by helping them move faster and learn as they build. Music production hasn't had that kind of support. We built Magentic to change that.
What it does
- Control REAPER directly — Create tracks, add MIDI patterns, apply FX chains, adjust mixing parameters, and more — all from natural-language commands executed instantly in your session.
- AI Stem Separation + MIDI Conversion — Upload any track, split it into drums, bass, vocals, and more using Demucs (open-source, originally by Meta), then convert those stems to MIDI using Basic Pitch (open-source, by Spotify) so you can reuse and reinterpret the original musical ideas directly inside REAPER.
- Manage FX presets — Browse, switch, and apply FX presets on any track through chat.
- Stay project-aware — Magentic reads your live REAPER session (tracks, FX, items, BPM, duration) and gives context-specific responses referencing your actual project state.
Architecture & Workflow
Frontend — React + Vite with a custom dark magenta UI, sleek styling, smooth animations, and an intuitive split-panel layout (file upload, project details, and main chat panel).
Backend — Node.js + Express API server using OpenAI's GPT-4o and Anthropic's Claude 3.7 with structured function-calling tools — not just prompt engineering, but a full agentic loop. The AI can call 40+ production tools (create tracks, generate MIDI, apply FX, separate stems, convert audio to MIDI, etc.) and chain them together into multi-step workflows.
Python Bridge — A FastAPI-based bridge server connected to REAPER via the reapy library. Tool calls are translated into live DAW modifications, giving Magentic real-time read/write access to the full session.
ML Models (via Modal) — Two open-source ML models are integrated into the workflow and run on GPU via Modal:
| Model | Source | Purpose |
|---|---|---|
| Demucs (htdemucs) | Meta / Facebook Research | AI-powered source separation — splits any audio track into drums, bass, vocals, and other stems |
| Basic Pitch (ONNX) | Spotify | Audio-to-MIDI transcription — converts audio stems into MIDI note data so users can study and reinterpret musical ideas |
Reasoning — An optional reasoning layer using Qwen 2.5 (served via Modal on A100 GPUs) provides a dedicated planning step for complex, multi-tool production requests before execution.
User ──► React Frontend ──► Express Backend ──► Python Bridge ──► REAPER
│ │
│ GPT-4o / Claude 3.7
│ (40+ tool schemas)
│ │
│ Modal GPU Endpoints
│ ├─ Demucs (stem separation)
│ ├─ Basic Pitch (audio → MIDI)
│ └─ Qwen 2.5 (reasoning)
│ │
└────────────────────┘
responses + tool results
Project Structure
Magentic/
├── bridge/ Python FastAPI bridge (REAPER via reapy) — port 5001
│ └── main.py
├── backend/ Express + OpenAI/Anthropic API — port 3001
│ ├── server.js
│ ├── agent/ AI system prompt, tools, Anthropic client
│ ├── orchestrator/ Intent routing (direct vs. plan)
│ ├── musicPlan/ Reasoning model planner client
│ ├── routes/ API routes (chat, files, functions)
│ └── lib/ Supabase client, file store, music theory
├── planner/ Modal serverless functions
│ ├── modal_planner.py Qwen 2.5 reasoning model
│ └── modal_functions.py Demucs + Basic Pitch GPU endpoints
└── frontend/ React (Vite) — port 5173
└── src/
Installation
Prerequisites
- REAPER installed and open
- reapy configured (Python REAPER API)
- Node.js 18+
- Python 3.10+
- An OpenAI API key (required)
- An Anthropic API key (optional, used as fallback when OpenAI rate-limits)
- A Supabase project with a
magentic-filesstorage bucket (for persistent file/stem/MIDI storage)
1. Bridge (REAPER control)
The bridge is a FastAPI server that connects to REAPER via reapy. It must be running for any DAW interaction to work.
cd bridge
pip install fastapi uvicorn python-reapy pydantic
python main.py
The bridge starts on port 5001. Make sure REAPER is open before starting it. If you see
reapyconnection errors, runpython -c "import reapy; reapy.configure_reaper()"first to enable the REAPER API.
2. Backend
cd backend
cp .env.example .env
npm install
npm run dev
Edit .env with your keys:
OPENAI_API_KEY=sk-your-key
ANTHROPIC_API_KEY=sk-ant-your-key # optional — Claude fallback
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your-service-role-key
# ML Functions (see Limitations below)
FUNCTIONS_PROVIDER=modal
FUNCTIONS_MODAL_URL=https://your-modal-url.modal.run
# Reasoning model
REASONING_PROVIDER=openai # or 'modal' for Qwen 2.5
3. Frontend
cd frontend
npm install
npm run dev
Start order
1. Open REAPER
2. bridge/ → python main.py
3. backend/ → npm run dev
4. frontend/ → npm run dev
Open http://localhost:5173 — chatbot on the right, import panel and project state on the left.
Current Limitations
-
Reasoning model — The Qwen 2.5 reasoning model (originally served via Modal) does not yet produce reliable enough plans for complex multi-step production tasks. In most cases, the system defaults to gpt-4o for both direct execution and planning.
-
Modal GPU endpoints disabled — As of February 16, 2026, the Modal GPU endpoints for Demucs (stem separation), Basic Pitch (audio-to-MIDI), and QWEN (planning) have been disabled. Users will not be able to run stem separation or audio-to-MIDI conversion until the endpoints are re-deployed. To re-enable, deploy the Modal functions:
cd planner modal deploy modal_functions.pyThen set
FUNCTIONS_MODAL_URLinbackend/.envto the deployed URL.
Analysis
View
Metric
- 22
- 16
- 15
- 9
- 2
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- ExpressIn code
- FastAPIIn code
- HTMLIn code
- JavaScriptIn code
- OpenAIIn code
- PythonIn code
- PyTorchIn code
- ReactIn code
- SupabaseIn code
- Node.jsClaimed
11 of 12 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeCommits
- CursorCommits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
27 MB
Source files
2,501
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
adrian-pan/Magentic
2,772 files · 42.5 MB · @ 4f28b0c
Structure
Interface
17 files · 1%Screens, components and styles rendered to the user.
+2 moreAPI & routing
12 files · 0%Request entry points: routes, handlers and controllers.
Application logic
2,568 files · 93%Domain rules, services and shared utilities.
+12 moreBackground jobs
1 file · 0%Work run outside a request: tasks, workers and schedules.
Data & schema
72 files · 3%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python99%
- JavaScript1%
- CSS0%
- Markdown0%
- Shell0%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/functions/requirements.txt
pypi · 18- dora-search
- einops
- julius
- lameenc
- librosa
- mir_eval
- numpy
- onnxruntime
- openunmix
- pretty_midi
- pyyaml
- resampy
- scikit-learn
- scipy
- torch
- torchaudio
- tqdm
- typing_extensions
frontend/package.json
npm · 12- react
- react-dom
- react-router-dom
- +9 more
backend/package.json
npm · 9- @anthropic-ai/sdk
- @supabase/supabase-js
- ajv
- ajv-formats
- cors
- dotenv
- express
- multer
- openai
requirements.txt
pypi · 6- fastapi
- openai
- python-dotenv
- python-reapy
- requests
- uvicorn
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.