数字音频工作站控制协议

ReaMCP是一个用于控制和编辑数字音频工作站项目的协议,支持通过Lua桥接脚本与REAPER进行实时交互,提供全面的MIDI编辑、FX链管理、自动化等功能。

  • by danielkinahan
  • Lua
  • 本地部署
  • 更新于
在 GitHub 查看 danielkinahan/ReaMCP

使用说明

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:

  1. 收割者→ 扩展→ ReaPack→ 导入存储库
  2. 添加 https://github.com/mavriq-dev/public-reascripts/raw/master/index.xml
  3. 收割者→ 扩展→ ReaPack→ 浏览软件包
  4. 安装 mavriq lua插座
  5. 重新启动REAPER

3) 通过ReaPack安装并运行桥接脚本

  1. 收割者→ 扩展→ ReaPack→ 导入存储库
  2. 添加 https://github.com/danielkinahan/ReaMCP/raw/main/index.xml
  3. 收割者→ 扩展→ ReaPack→ 浏览软件包
  4. 安装 ReaMCP桥
  5. 通过运行一次 行动→ 显示操作列表→ ReaMCP桥
  6. 确认REAPER控制台显示 Listening on 127.0.0.1:9001
  7. 可选:将其添加到启动操作中,以便在启动时自动运行

您也可以通过以下方式手动运行此程序 操作->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桥脚本实现的。