使用说明
ReaMCP
ReaMCP是一个Reaper MCP,用于控制和编辑DAW中的项目。将其连接到代理编辑器,如Claude Desktop、VS Code或Zed,以使用Reaper中的查询和编辑工具。
该项目目前处于alpha阶段。备份您的项目,并报告您发现的任何问题。这是用Linux测试的,但我想让它与所有操作系统兼容。
这与类似项目有何不同
还有其他一些REAPER MCP服务器。以下是它们的比较:
dschuler36/reaper-mcp 服务器 --只读,基于文件。解析 .rpp 直接从磁盘投影文件,并对渲染的文件进行音频分析。没有实时REAPER连接——REAPER不需要打开。适合查询现有项目和混合反馈,但不能创建或更改任何内容。
itsuzef/收割机mcp --通过OSC或ReaPy(REAPER中的Python)进行实时连接。OSC仅限于传输和基本推子控制;ReaScript模式功能更强,但需要在REAPER中配置Python。只有少数工具(创建曲目、添加MIDI音符、获取项目信息)。
这个项目 --通过REAPER内部运行的持久Lua桥脚本进行实时连接,通过本地TCP套接字进行通信。无需OSC设置,无需Python DLL连接 reaper.* Lua API表面,提供了一个更广泛、更可靠的工具集:完整的MIDI编辑、FX链管理、自动化、发送、标记、媒体项目操作等等。
它做什么
- 读取项目并跟踪状态
- 创建、复制和删除曲目和媒体项目
- 在时间线上移动和调整媒体项目的大小
- 创建MIDI项目;读取、插入、修改和删除MIDI音符、CC、音高弯曲和程序更改事件;批量编辑和人性化笔记
- 将音频文件插入曲目
- 控制传输和光标位置
- 添加、列出和删除FX(包括在主轨道上);读取/写入FX参数;绕过/启用FX;通过不区分大小写的回退枚举按名称加载预设
- 读取并设置节奏/时间特征和项目参数
- 保存项目并触发撤消
- 添加、列出和删除标记和区域
- 按路径打开项目文件
- 创建、删除和调整曲目发送(音量和平移)
- 设置轨道记录输入和输入监控模式
- 读取并插入自动化包络点;透明信封;插入节拍对齐点
- 复制和重复时间范围(重复合唱、延长外展等)
- 将时间范围渲染到音频文件
- 通过非破坏性的模拟渲染,测量单个曲目或主混音的响度(LUFS集成、短期、瞬时、真实峰值)
- 在一次调用中将跟踪量标准化为目标LUFS级别
需求
- 后部(带 ReaPack)
- Python 3.10+
设置
1) 安装Python服务器
pip install -e . # You can also `uv sync` but it's not supported.
2) 安装 mavriq-lua-sockets 在REAPER中重新启动
REAPER的嵌入式Lua在此上下文中无法加载现有的LuaSocket版本。安装 mavriq-lua-sockets 通过ReaPack:
- 收割者→ 扩展→ ReaPack→ 导入存储库
- 添加
https://github.com/mavriq-dev/public-reascripts/raw/master/index.xml - 收割者→ 扩展→ ReaPack→ 浏览软件包
- 安装 mavriq lua插座
- 重新启动REAPER
3) 通过ReaPack安装并运行桥接脚本
- 收割者→ 扩展→ ReaPack→ 导入存储库
- 添加
https://github.com/danielkinahan/ReaMCP/raw/main/index.xml - 收割者→ 扩展→ ReaPack→ 浏览软件包
- 安装 ReaMCP桥
- 通过运行一次 行动→ 显示操作列表→ ReaMCP桥
- 确认REAPER控制台显示
Listening on 127.0.0.1:9001 - 可选:将其添加到启动操作中,以便在启动时自动运行
您也可以通过以下方式手动运行此程序 操作->ReaScript:运行ReaScript(EEL2或Lua)。.. 并从该仓库中选择lua脚本。
4) 启动MCP服务器
python -m reaper_mcp
可选环境变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
REAPER_BRIDGE_HOST |
127.0.0.1 |
网桥主机 |
REAPER_BRIDGE_PORT |
9001 |
桥梁港口 |
MCP工具
| 工具 | 说明 |
|---|---|
ping |
验证网桥是否可用 |
get_project_info |
项目元数据/状态 |
get_project_parameters |
循环范围、光标、循环启用 |
save_project |
将当前项目保存到磁盘 |
undo |
触发器REAPER撤销 |
open_project |
打开a .rpp 按绝对路径列出的项目文件 |
list_tracks |
列出所有曲目 |
get_track |
按从0开始的索引获取一条轨迹 |
create_track |
插入曲目 |
delete_track |
删除曲目 |
duplicate_track |
复制曲目(在原始曲目后插入副本) |
set_track_properties |
设置名称/音量/平移/静音/独奏/手臂 |
set_track_input |
设置录音输入(音频通道或MIDI) |
set_input_monitoring |
设置输入监控模式(播放时关闭/打开/不打开) |
move_media_item |
将媒体项目移动到新的时间线位置 |
resize_media_item |
更改媒体项目的长度 |
delete_media_item |
从曲目中删除媒体项目 |
get_item_properties |
获取物品的位置、长度、音高、播放率等 |
duplicate_item |
在其轨道上复制媒体项目 |
create_midi_item |
使用可选的预填充音符创建MIDI项目 |
get_midi_notes |
读取MIDI项目中的所有MIDI音符 |
set_midi_note |
修改现有的MIDI音符(音高、速度、位置等) |
delete_midi_note |
按索引删除MIDI音符 |
insert_midi_event |
插入CC、变桨弯曲或程序更改事件 |
insert_audio_file |
在某个时间位置插入音频文件 |
transport |
play / stop / pause / record / goto_start / goto_position |
add_fx |
将外汇/工具添加到曲目中 |
list_fx |
在轨道上列出外汇链条目 |
list_available_fx |
列出所有已安装的FX插件;可选的 filter 按名称/类型(例如。 "fabfilter", "vst") |
get_fx_params |
列出所有外汇参数 |
set_fx_param |
设置FX参数(标准化 0.0–1.0) |
set_fx_enabled |
启用或绕过FX插件 |
remove_fx |
从链中删除FX |
set_fx_preset |
加载一个命名的FX预设;回退到不区分大小写匹配的索引扫描。使用 track_index=-1 主赛道 |
list_fx_presets |
列出已在轨道上的插件的基于工厂和文件的预设 |
get_tempo |
读取BPM和时间签名 |
set_tempo |
设置BPM和可选时间签名 |
set_project_parameter |
设置 loop_start, loop_end, loop_enabled, cursor_position, playrate |
add_marker |
添加标记或区域 |
list_markers |
列出所有标记和区域 |
delete_marker |
按枚举索引删除标记或区域 |
create_track_send |
创建从一个曲目到另一个曲目的发送 |
remove_track_send |
删除曲目发送 |
set_track_send |
设置发送音量和摇摄 |
get_envelope_points |
读取所有自动化包络点 |
insert_envelope_point |
插入自动化包络点 |
clear_envelope_points |
从信封中删除所有点 |
insert_envelope_point_at_beat |
插入一个与音乐节拍位置对齐的自动化点 |
get_track_items |
列出曲目上的所有媒体项目,包括位置、长度和拍摄信息 |
set_midi_notes |
在一次通话中批量编辑多个MIDI音符 |
nudge_midi_notes |
通过随机定时和速度偏移使MIDI项目中的所有音符人性化 |
duplicate_time_range |
复制一个时间范围内的所有项目,并在选择后粘贴N次 |
render_time_selection |
使用REAPER的渲染管道将时间范围渲染到音频文件 |
analyze_track_loudness |
通过非破坏性的模拟渲染测量单声道的综合响度(LUFS)、短期/瞬时最大值和真实峰值 |
analyze_master_loudness |
与上述相同,但适用于全主混合物 |
normalize_track |
测量轨道响度并调整衰减器以达到目标LUFS级别(默认值-14 LUFS) |
局限性
预设加载 — set_fx_preset 第一次尝试 TrackFX_SetPreset (适用于具有标准VST/CLAP程序库的插件),然后回落到按索引枚举所有预设,并通过以下方式进行不区分大小写的名称匹配 TrackFX_SetPresetByIndex。这涵盖了大多数插件。基于文件的预设(.ffp, .fxp)可以通过传递绝对文件路径来加载 preset_name.使用 list_fx_presets 以发现可用的出厂和文件预设。
MCP客户端配置
VS代码(.vscode/mcp.json)
{
"servers": {
"reaper": {
"type": "stdio",
"command": "./.venv/bin/python",
"args": ["-m", "reaper_mcp"]
}
}
}
克劳德桌面(claude_desktop_config.json)
{
"mcpServers": {
"reaper": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "reaper_mcp"]
}
}
}
配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
Zed(~/.config/zed/settings.json)
{
"context_servers": {
"reaper": {
"command": {
"path": "./.venv/bin/python",
"args": ["-m", "reaper_mcp"]
}
}
}
}
此仓库中的ReaPack包
index.xml 发送桥牌脚本(bridge/reaper_mcp_bridge.lua)作为ReaPack软件包,用户可以直接从REAPER安装和自动更新。
建筑
MCP client (AI / IDE)
│ stdio
▼
Python MCP server ──── JSON-RPC over TCP (127.0.0.1:9001) ────► bridge/reaper_mcp_bridge.lua
(src/reaper_mcp/) └─ reaper.* Lua API (inside REAPER)
Python进程是一个标准 mcp 服务器。REAPER控制是通过REAPER内部运行的持久Lua桥脚本实现的。