关于 REAPER MCP
TwelveTake REAPER MCP 是一个 MCP 服务,让 AI 助手检查和控制 REAPER 项目,用于音频制作与 MIDI 工作。工具涵盖轨道、路由、FX、自动化和编辑操作,也提供多步骤制作工作流及测量功能。
主要功能
- 01轨道与项目控制
- 02FX、路由和自动化编辑
- 03MIDI 与音频素材编辑
- 04多步骤混音工作流工具
- 05响度与频谱测量
- 06可在 REAPER 中撤销的更改
适用场景
- 01设置侧链或并行压缩
- 02构建母带链或路由总线
- 03编辑 MIDI 音符和力度
- 04检查项目电平与频谱
MCP 相关
该 MCP 服务向兼容的 AI 客户端提供 REAPER 控制和分析工具。它通过邮箱目录中的 JSON 文件,与运行在 REAPER 内的 Lua 桥接脚本通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
179收录的工具列表 · 更新于 今天
此工具无需参数。
详细介绍
TwelveTake REAPER MCP
TwelveTake Studios 的一个项目。
安装指南、示例和常见问题 -> twelvetake.com/tools/reaper-mcp
已在 MCP Registry 中登记,名称为 mcp-name: com.twelvetake/reaper-mcp。
TwelveTake REAPER MCP 是一个模型上下文协议服务,可让 AI 助手控制 REAPER,完成混音、母带处理、MIDI 编曲和音乐制作。
版本: 1.9.3
为什么选择此服务
工作流工具
除了直接控制 REAPER 外,该服务还提供工作流工具,只需一次调用即可完成多步骤制作任务:
| 工具 | 它能为你做什么 |
|---|---|
setup_sidechain_compression() | 创建发送,将信号路由到通道 3-4,并配置 ReaComp 的检测器输入——一次调用即可完成完整的侧链设置 |
add_mastering_chain() | 为主轨添加 ReaEQ → ReaComp → ReaEQ → ReaLimit,并设置正确的信号流 |
add_parallel_compression() | 创建总线轨,设置发送并添加压缩器——即可混合使用 NY 风格压缩 |
create_bus() | 创建子混音轨,并将指定轨道路由到该轨 |
get_project_summary() | 返回轨道数量、所有轨道的名称/音量/声像/FX、标记、区域、速度、拍号——AI 所需信息一应俱全,只需一次调用 |
零配置
- 基于文件的通信可立即使用——无需设置网络,也无需配置端口
- 仅需 REAPER 自带组件:桥接程序是一个普通的 Lua 脚本,分析器是一个 JSFX 插件,因此无需在 REAPER 中安装其他内容
- 复制脚本、运行脚本,然后连接 AI 助手即可
180 个工具,满足实际制作需求
- 全面的 FX 控制——添加/移除插件,按索引获取/设置任意参数,管理预设,旁通插件
- FX 参数自动化——自动化任意插件旋钮(如镶边深度、滤波器截止频率等)
- 完整路由——发送、接收,以及路由侧链信号到特定的通道对
- 自动化——创建包络、添加/编辑节点、设置自动化模式
- MIDI——创建片段,逐个或批量添加音符,编辑力度
- MIDI 编辑——移调、带摇摆量化、人性化处理、按音阶吸附、拉伸、连奏、扫弦、力度渐变——每项操作均可按音高范围、节拍窗口或通道指定目标
- 音频片段——导入、拆分、复制、淡化、定位、静音
- 标记与区域——创建、编辑、导航,按区域渲染
- 测量:测量主控、轨道或片段的响度、响度范围、真峰值、倍频程频谱和立体声相关性。它通过 EBU 用于响度、真峰值和响度范围的合成合规性信号测试。
- 可撤销的编辑:AI 所做的每项更改在 REAPER 的撤销历史中都是一个带名称的步骤(“MCP: delete track”),因此在 REAPER 中按 Ctrl+Z,即可逐次撤销工具调用
要求
- REAPER(任意近期版本;完整实时测试套件在 REAPER 7.79 中全部通过)
- Python 3.10+(用于 MCP 服务)
- 兼容 MCP 的 AI 助手
安装
1. 在 REAPER 中安装桥接脚本
桥接脚本是一个在 REAPER 内运行的 Lua 脚本。MCP 服务通过它操作你的项目。可通过以下三种方式之一安装。
选项 A:运行一条命令,然后在 REAPER 中运行一次
uvx twelvetake-reaper-mcp --install-bridge
此命令会将 reaper_mcp_bridge.lua 复制到适用于你平台的 REAPER Scripts 文件夹,并将测量工具使用的 JSFX 插件 TwelveTake MCP Analyzer 复制到 Effects/TwelveTake。如果那里已有另一份桥接脚本,会先备份该文件。除此之外不会写入任何内容,而且服务绝不会自行修改你的 REAPER 安装。若 REAPER 是便携版或安装在不常见的位置,请传入路径:--install-bridge "/path/to/REAPER/Scripts"。
接下来,在 REAPER 中加载脚本。打开 Actions → Show action list:

点击 New action → Load ReaScript:

在 Scripts 文件夹中选择 reaper_mcp_bridge.lua,然后点击 Open:

现在,脚本已出现在操作列表中。选中它并点击 Run:

桥接脚本会在后台运行,不会打开窗口,直到你关闭 REAPER。第 3 步会检查它是否正常工作。
下次使用时,可在操作列表的筛选框中输入 mcp bridge 找到它,或让 REAPER 自动启动它(见下文)。
选项 B:ReaPack
如果你使用 ReaPack,打开 Extensions → ReaPack → Import repositories:

然后粘贴此地址:
https://github.com/TwelveTake-Studios/reaper-mcp/raw/main/index.xml

接着打开 Extensions → ReaPack → Browse packages,找到 TwelveTake REAPER MCP bridge,右键点击它,选择 Install,然后点击 OK:

ReaPack 会将脚本添加到操作列表并安装分析器。按照选项 A 的说明从列表中运行脚本。
选项 C:手动安装
- 将
reaper_mcp_bridge.lua复制到 REAPER 的 Scripts 文件夹:- Windows:
%APPDATA%\REAPER\Scripts\ - macOS:
~/Library/Application Support/REAPER/Scripts/ - Linux:
~/.config/REAPER/Scripts/
- Windows:
- 将
twelvetake_mcp_analyzer.jsfx复制到Effects/TwelveTake/,与该 Scripts 文件夹相邻。测量工具需要它,其他功能则不需要。 - 按照选项 A 的说明加载并运行脚本。
随 REAPER 启动桥接脚本
REAPER 关闭时,脚本也会停止。若要让 REAPER 每次启动时都启动桥接脚本:
uvx twelvetake-reaper-mcp --install-bridge --autostart
此命令会在 REAPER Scripts 文件夹中的 __startup.lua 添加一个带标记的代码块,并在修改前备份该文件,同时保留文件中的其他内容。--remove-autostart 会移除此代码块。如果你通过 ReaPack 安装,请改为运行 uvx twelvetake-reaper-mcp --autostart;它会让 REAPER 使用 ReaPack 中的副本。
更新
从 1.7.8 开始,更新无需在 REAPER 中执行任何步骤:
uvx twelvetake-reaper-mcp@latest --install-bridge
正在运行的桥接脚本会自行加载新脚本,并通过命令告知你,例如:
The running bridge reloaded itself: 1.7.8 -> 1.7.9.
使用 ReaPack 时,Extensions → ReaPack → Synchronize packages 会获取新脚本。它会在桥接脚本下次启动时运行,或通过 uvx twelvetake-reaper-mcp --reload-bridge 立即运行。如果桥接脚本版本过旧,无法满足服务的要求,服务也会要求正在运行的桥接脚本重新加载。
从 1.7.7 或更早版本更新时,仍需执行最后一个手动步骤:安装脚本后,在 REAPER 中再次运行它。
2. 安装并配置 MCP 服务
该服务已发布到 PyPI,名称为 twelvetake-reaper-mcp。最简单的方法是让你的 MCP 客户端通过 uvx(或 pipx)启动它——无需手动安装任何内容。
将它添加到 MCP 客户端的配置中(例如 .mcp.json 或客户端的 MCP 设置):
{
"mcpServers": {
"reaper": {
"command": "uvx",
"args": ["twelvetake-reaper-mcp"]
}
}
}
VS Code 使用顶层
servers键和"type": "stdio",而不是mcpServers。
若要确认服务可以自行启动:
uvx twelvetake-reaper-mcp
# or: pipx run twelvetake-reaper-mcp
它会安静地等待客户端连接——按 Ctrl+C 停止。
3. 验证
打开 REAPER 并运行桥接脚本后,询问你的助手 “我的项目中有多少条轨道?”——如果得到一个数字,就表示服务、桥接脚本和 REAPER 已成功通信。
从源代码运行(用于开发)
若要开发服务本身,请从克隆的仓库运行,而不是从 PyPI 运行。安装依赖项:
pip install -r requirements.txt # or: pip install "mcp>=1.2.0,<2.0"
让 MCP 客户端指向本地脚本:
{
"mcpServers": {
"reaper": {
"command": "python",
"args": ["path/to/reaper_mcp_server.py"]
}
}
}
然后通过以下命令检查连接:
python test_connection.py
Nix flake(可选)
如果你使用 Nix,仓库提供了基于 flake 的开发 Shell,其中包含 Python 3.12,并会为你创建和激活虚拟环境:
# Enter the dev shell manually
nix develop
# Or, with direnv, auto-activate on cd:
direnv allow
然后按常规方式安装依赖项:
pip install -r requirements.txt
这会固定 Python 版本,并将依赖项与系统环境隔离。
注意:
x86_64-linux开发 Shell 已经过测试并可正常运行。macOS(Darwin)Shell 已提供,但尚未经过测试——欢迎 macOS 用户确认其可用性。
通信方式
服务和桥接脚本会在邮箱目录中交换 JSON 文件。桥接脚本在 REAPER 内部轮询该目录。无需配置网络,也无需开放端口。
MCP Server REAPER Bridge
│ │
├── writes request_N.json ────►│
│ ├── processes request
│◄── reads response_N.json ────┤
**桥接目录:**REAPER 自身的 Scripts/mcp_bridge_data,按平台解析路径:
| 平台 | 路径 |
|---|---|
| Windows | %APPDATA%\REAPER\Scripts\mcp_bridge_data |
| macOS | ~/Library/Application Support/REAPER/Scripts/mcp_bridge_data |
| Linux | ~/.config/REAPER/Scripts/mcp_bridge_data(较旧的安装版本使用 ~/.reaper/...) |
便携式安装可通过 REAPER_BRIDGE_DIR 覆盖该路径。服务启动时会将解析后的目录打印到 stderr,并在任何超时错误中包含该目录。
随附的 HTTP 传输已在 v1.7.2 中移除。它自 v1.2.1 起就已弃用,而且其请求解析器始终无法读取 POST 请求体,因此传递给它的调用从未到达 REAPER。REAPER_COMM_MODE 不再起任何作用。
快速入门示例
基本轨道操作
"How many tracks are in my project?"
"Create a new track called 'Vocals'"
"Set track 0 volume to -6dB"
"Mute track 2"
"Solo the drums track"
混音
"Add ReaComp to the bass track"
"Set up sidechain compression from the kick to the bass"
"Create a drum bus and route tracks 0-3 to it"
"Add a mastering chain to the master track"
效果器和参数
"What plugins are on track 0?"
"Get the parameters for the compressor on track 1"
"Set the threshold to -20dB"
"Bypass the EQ on the vocal track"
MIDI 编曲
"Create a 4-bar MIDI item on track 0"
"Add a C major chord at the start"
"Get all the notes in the MIDI item"
"Set the velocity of note 0 to 100"
播放控制和导航
"Play the project"
"Stop playback"
"Set the cursor to 30 seconds"
"Add a marker called 'Chorus' at the current position"
项目管理
"What's the project tempo?"
"Set the tempo to 120 BPM"
"Save the project"
"Render to D:/Output/mix.wav"
工具参考
轨道操作(23 个工具)
| 工具 | 描述 |
|---|---|
get_track_count() | 获取轨道总数(不包括主轨道) |
get_track(index) | 获取轨道信息(名称、音量、声像、静音、独奏) |
get_all_tracks() | 获取所有轨道的信息 |
get_master_track() | 获取主轨道信息 |
insert_track(index, name) | 创建新轨道 |
create_click_track(start, end, name) | 添加跟随速度映射的节拍轨道 |
delete_track(index) | 删除轨道 |
set_track_name(index, name) | 重命名轨道 |
set_track_volume(index, db) | 设置音量(dB) |
set_track_pan(index, pan) | 设置声像(-1 至 1) |
set_track_mute(index, mute) | 静音/取消静音轨道 |
set_track_solo(index, solo) | 独奏/取消独奏轨道 |
set_track_phase(index, invert) | 反转相位 |
set_track_width(index, width) | 设置立体声宽度(0-2) |
set_track_color(index, r, g, b) | 设置轨道颜色 |
get_track_peak(index, channel) | 获取当前峰值电平(dB) |
get_track_peak_hold(index, channel) | 获取上次重置以来保持的峰值(dB) |
clear_all_peak_indicators() | 重置所有轨道的峰值保持值 |
get_track_master_send(index) | 获取主轨道/父轨道发送状态 |
set_track_master_send(index, enabled) | 启用/禁用主轨道发送 |
set_track_as_folder(index, depth) | 设置为文件夹父轨道/子轨道 |
arm_track(index, arm) | 启用轨道录音准备 |
set_track_input(index, input) | 设置录音输入 |
set_track_monitor(index, mode) | 设置监听模式 |
FX 操作(16 个工具)
| 工具 | 描述 |
|---|---|
track_fx_get_count(index) | 统计轨道上的 FX 数量 |
track_fx_get_list(index) | 列出所有 FX 及其详细信息 |
track_fx_add_by_name(index, name, position?) | 添加 FX 插件(可选指定位置) |
track_fx_move(index, fx_index, new_position) | 调整 FX 链中的顺序 |
track_fx_delete(index, fx_index) | 移除 FX |
track_fx_get_name(index, fx_index) | 获取 FX 名称 |
track_fx_get_enabled(index, fx_index) | 检查是否已启用 |
track_fx_set_enabled(index, fx_index, enabled) | 启用/旁通 FX |
track_fx_get_num_params(index, fx_index) | 统计参数数量 |
track_fx_get_param_name(index, fx_index, param) | 获取参数名称 |
track_fx_get_param(index, fx_index, param) | 获取参数值 |
track_fx_set_param(index, fx_index, param, value) | 设置参数值 |
get_fx_presets(index, fx_index) | 列出可用预设 |
get_fx_preset(index, fx_index) | 获取当前预设 |
set_fx_preset(index, fx_index, name) | 加载预设 |
save_fx_preset(index, fx_index, name) | 不支持:始终返回错误,因为 REAPER 的 API 无法保存命名的 FX 预设 |
ReaEQ 操作(5 个工具)
使用 REAPER 专用的 EQ API 控制 ReaEQ 频段,该 API 可以正确处理 ReaEQ 的 非线性参数曲线(dB 增益、对数频率、对数 Q 值)。
| 工具 | 描述 |
|---|---|
find_eq(track, instantiate?) | 查找轨道上的 ReaEQ(可选择添加) |
get_eq_bands(track, fx) | 读取所有 ReaEQ 频段及易读的数值 |
set_eq_band(track, fx, bandtype, bandidx, paramtype, value, is_normalized?) | 设置频段参数(Hz、dB 或 Q) |
get_eq_band_enabled(track, fx, bandtype, bandidx?) | 检查频段是否已启用 |
set_eq_band_enabled(track, fx, bandtype, bandidx?, enabled?) | 启用/禁用频段 |
单次 FX 操作(11 个工具)
单次(每个项目)FX,与轨道 FX 工具相对应。每个单次通过
(track_index, item_index, take_index) 寻址。
| 工具 | 描述 |
|---|---|
take_fx_get_count(track, item, take) | 统计单次上的 FX 数量 |
take_fx_get_list(track, item, take) | 列出单次上的所有 FX 及其详细信息 |
take_fx_add_by_name(track, item, take, name) | 向单次添加 FX 插件 |
take_fx_delete(track, item, take, fx) | 移除单次上的 FX |
take_fx_get_name(track, item, take, fx) | 获取单次 FX 名称 |
take_fx_get_enabled(track, item, take, fx) | 检查是否已启用 |
take_fx_set_enabled(track, item, take, fx, enabled) | 启用/旁通单次 FX |
take_fx_get_num_params(track, item, take, fx) | 统计参数数量 |
take_fx_get_param_name(track, item, take, fx, param) | 获取参数名称 |
take_fx_get_param(track, item, take, fx, param) | 获取参数值 |
take_fx_set_param(track, item, take, fx, param, value) | 设置参数值 |
单次管理与 Comping(7 个工具)
多单次工作流:列出/切换/删除单次、分解/裁剪,以及 REAPER 7 固定音轨 Comping。
| 工具 | 描述 |
|---|---|
get_takes(track, item) | 列出所有单次(名称 + 激活标记) |
get_active_take(track, item) | 获取当前激活的单次索引 |
set_active_take(track, item, take) | 切换播放的单次 |
explode_takes(track, item) | 将单次分解为重叠项目(原位) |
crop_to_active_take(track, item) | 仅保留当前激活的单次 |
delete_take(track, item, take) | 删除指定单次 |
select_comp_lane(track, lane) | 独占播放一个固定音轨(音轨 Comping) |
路由(9 个工具)
| 工具 | 描述 |
|---|---|
create_send(src, dest) | 在轨道之间创建发送 |
delete_send(index, send_index) | 移除发送 |
set_send_volume(index, send_index, db) | 设置发送电平 |
get_track_num_sends(index) | 统计轨道的发送数量 |
set_send_dest_channels(index, send_index, chan) | 路由到指定通道 |
set_send_source_channels(index, send_index, chan) | 设置源通道 |
setup_sidechain_send(src, dest, db) | 创建侧链发送 |
configure_reacomp_sidechain(index, fx_index, use) | 配置 ReaComp 侧链 |
setup_sidechain_compression(trigger, target, fx, db) | 完整配置侧链 |
传输控制(10 个工具)
| 工具 | 描述 |
|---|---|
play() | 开始播放 |
stop() | 停止播放 |
pause() | 暂停播放 |
record() | 开始录音 |
get_play_state() | 获取当前状态(播放/暂停/录音) |
get_cursor_position() | 获取编辑光标位置(秒) |
set_cursor_position(seconds) | 移动编辑光标 |
get_play_position() | 获取播放位置(秒) |
toggle_repeat() | 切换循环模式 |
get_repeat_state() | 检查是否正在循环 |
项目(15 个工具)
| 工具 | 描述 |
|---|---|
get_project_summary() | 一次调用即可获取完整的项目状态 |
save_project() | 保存当前项目 |
create_project() | 创建新项目(REAPER 无法为未保存的项目命名) |
open_project(path) | 打开项目文件 |
get_project_path() | 获取项目目录 |
get_project_name() | 获取项目文件名 |
get_project_length() | 获取项目长度(秒) |
get_tempo() | 项目起始处的速度(BPM),以及所有速度标记 |
set_tempo(bpm) | 设置项目速度 |
get_time_signature() | 获取拍号 |
set_time_signature(num, denom) | 设置拍号 |
render_project(path, start, end, tail, skip_postprocessing) | 渲染为音频文件;列出项目的归一化、淡化和其他处理,或跳过这些处理 |
render_region(index, path) | 尚未实现:始终返回错误;请使用 render_project 并指定区域的起点和终点 |
zoom_to_selection() | 缩放至时间选区 |
zoom_to_project() | 缩放以显示整个项目 |
MIDI 操作(8 个工具)
| 工具 | 描述 |
|---|---|
create_midi_item(track, pos, length) | 创建空 MIDI 乐段 |
get_midi_item(track, item) | 获取 MIDI 乐段信息 |
add_midi_note(track, item, pitch, vel, start_beat, length_beats, chan) | 添加单个音符(拍) |
add_midi_notes_batch(track, item, notes) | 添加多个音符 |
get_midi_notes(track, item) | 获取所有音符 |
delete_midi_note(track, item, note) | 删除一个音符 |
clear_midi_item(track, item) | 删除所有音符 |
set_midi_note_velocity(track, item, note, vel) | 更改音符力度 |
MIDI 实用工具(14 个工具)
用于编辑现有音符的工具。每个工具都接受相同的可选筛选条件——音高范围、以乐段起点为基准的拍数起音区间,以及通道——因此无需手动选择即可定位某个乐句。时间单位为拍,音高单位为半音。每项操作都会生成一个撤销步骤。
| 工具 | 描述 |
|---|---|
transpose_midi_notes(track, item, semitones, ...) | 移动音高;超出 0-127 范围的音符保持不变,不会循环 |
snap_midi_notes_to_scale(track, item, root, mode, ...) | 将不在调内的音符移至音阶音上(支持命名音阶或自定义音程列表) |
quantize_midi_notes(track, item, grid, strength, swing, ...) | 将起音对齐到项目网格,并可设置力度和摇摆 |
nudge_midi_notes(track, item, amount_beats, ...) | 在时间上移动音符;保持时值不变 |
stretch_midi_notes(track, item, factor, pivot_beat, ...) | 以枢轴拍为基准缩放时值(半速 / 双倍速) |
legato_midi_notes(track, item, mode, voice, ...) | 消除乐句中的间隙,或将所有音符设为相同时值 |
humanize_midi_notes(track, item, timing, velocity, seed, ...) | 通过指定种子生成可复现的时间和力度抖动 |
strum_midi_notes(track, item, spread_beats, direction, ...) | 将和弦展开为扫弦 |
ramp_midi_note_velocities(track, item, start_vel, end_vel, ...) | 在乐句中线性渐变力度(渐强) |
scale_midi_note_velocities(track, item, mode, ratio, ...) | 乘算、设置或压缩力度 |
set_midi_note(track, item, note, ...) | 编辑单个音符的音高、力度、时间和通道 |
get_selected_midi_notes(track, item) | 读取 REAPER 编辑器中选中的音符 |
select_midi_notes(track, item, ...) | 选择符合音高 / 拍数 / 通道筛选条件的音符 |
remove_overlapping_midi_notes(track, item, mode, ...) | 修剪或删除音高相同且重叠的音符 |
remove_overlapping_midi_notes 是这里唯一可以移除音符的工具;其余工具只会移动现有音符。它带有 destructive 标记,因此客户端可以先提示用户。
音频片段(17 个工具)
| 工具 | 描述 |
|---|---|
insert_audio_file(track, path, pos) | 导入音频文件 |
get_track_items(track) | 列出轨道上的所有片段 |
get_item_info(track, item) | 获取片段详情 |
set_item_position(track, item, pos) | 移动片段 |
set_item_length(track, item, length) | 更改片段长度 |
delete_item(track, item) | 删除片段 |
duplicate_item(track, item) | 复制片段 |
split_item(track, item, pos) | 在指定位置拆分片段 |
set_item_mute(track, item, mute) | 静音/取消片段静音 |
set_item_volume(track, item, db) | 设置片段音量 |
set_item_fade_in(track, item, length) | 设置淡入 |
set_item_fade_out(track, item, length) | 设置淡出 |
select_all_items() | 选择所有片段 |
unselect_all_items() | 取消选择所有片段 |
get_selected_items() | 获取已选片段 |
copy_selected_items() | 复制到剪贴板 |
paste_items() | 从剪贴板粘贴 |
标记与区域(8 个工具)
| 工具 | 描述 |
|---|---|
add_marker(pos, name, color) | 添加标记 |
add_region(start, end, name, color) | 添加区域 |
get_markers() | 获取所有标记 |
get_regions() | 获取所有区域 |
delete_marker(index) | 删除标记 |
delete_region(index) | 删除区域 |
go_to_marker(index) | 跳转到标记 |
go_to_region(index) | 跳转到区域起点 |
自动化(8 个工具)
| 工具 | 描述 |
|---|---|
get_track_envelope(track, name) | 按名称获取包络 |
get_envelope_point_count(track, name) | 获取包络点数量 |
add_envelope_point(track, name, time, value, shape, value_db) | 添加自动化点;如果轨道尚无包络,则创建包络(value_db:以 dB 为单位的音量级别) |
get_envelope_points(track, name) | 获取所有点 |
delete_envelope_point(track, name, index) | 删除点 |
clear_envelope(track, name) | 清除所有点 |
set_track_automation_mode(track, mode) | 设置自动化模式 |
arm_track_envelope(track, name, arm) | 启用包络录制 |
FX 参数自动化(5 个工具)
| 工具 | 描述 |
|---|---|
get_fx_envelope(track, fx, param) | 获取或创建任意 FX 参数的包络 |
add_fx_envelope_point(track, fx, param, time, value, shape) | 为 FX 参数添加自动化点 |
get_fx_envelope_points(track, fx, param) | 获取 FX 包络中的所有点 |
delete_fx_envelope_point(track, fx, param, point) | 删除 FX 包络中的点 |
clear_fx_envelope(track, fx, param) | 清除 FX 包络中的所有点 |
选择与编辑(11 个工具)
| 工具 | 描述 |
|---|---|
undo() | 撤销上一步操作 |
redo() | 重做上一步撤销的操作 |
get_undo_state() | 获取撤销/重做状态 |
select_track(index, exclusive) | 选择轨道 |
select_all_tracks() | 选择所有轨道 |
unselect_all_tracks() | 取消选择所有轨道 |
get_selected_tracks() | 获取已选轨道索引 |
set_time_selection(start, end) | 设置时间选区 |
get_time_selection() | 获取时间选区 |
clear_time_selection() | 清除时间选区 |
delete_selected_items() | 删除已选片段 |
测量(2 个工具)
| 工具 | 描述 |
|---|---|
measure_loudness(track, item, start, end) | 综合响度、短时最大响度和瞬时最大响度(LUFS)、响度范围、采样峰值、真峰值 |
measure_spectrum(track, item, start, end) | 倍频程频带电平、频谱质心、倾斜度、立体声相关性、侧声道与中声道比值、平衡 |
如果未指定轨道或片段,这两项测量都会针对主混音进行。响度数据由 REAPER 自带的响度测量功能提供。真峰值、频谱和立体声数据由 TwelveTake MCP Analyzer 提供;--install-bridge 会安装该分析器,ReaPack 软件包也包含它。
混音辅助工具(6 个工具)
| 工具 | 描述 |
|---|---|
add_mastering_chain() | 为主控轨添加 EQ→Comp→EQ→Limiter |
add_parallel_compression(track, db) | 设置纽约压缩 |
create_bus(name, tracks) | 创建子混音总线 |
add_eq(track) | 添加 ReaEQ |
add_compressor(track) | 添加 ReaComp |
add_limiter(track) | 添加 ReaLimit |
高级工具(4 个)
| 工具 | 描述 |
|---|---|
run_action(action_id) | 按 ID 运行 REAPER 操作 |
run_action_by_name(name) | 按名称运行操作 |
get_track_fx_chunk(track, fx) | 获取原始 FX 状态数据 |
cut_selected_items() | 将选中的素材剪切到剪贴板 |
轨道索引
- 常规轨道: 从 0 开始的索引(第一条轨道 = 0)
- 主控轨道: 使用索引
-1
"Set the master track volume to -3dB" → track_index = -1
"Mute track 1" → track_index = 1 (second track)
常见插件名称
在 track_fx_add_by_name() 中使用以下名称:
| 插件 | 名称 |
|---|---|
| 均衡器 | ReaEQ |
| 压缩器 | ReaComp |
| 限幅器 | ReaLimit |
| 门限器 | ReaGate |
| 延迟 | ReaDelay |
| 混响 | ReaVerbate 或 ReaVerb |
第三方插件使用其在 REAPER FX 浏览器中显示的完整名称。
故障排除
“无法连接到 REAPER”
- 确保 REAPER 正在运行
- 确保桥接脚本正在运行:在操作列表中启动它(在筛选框中输入
mcp bridge) - 确认桥接目录存在
“找不到轨道”
- 轨道索引从 0 开始
- 主控轨道使用
-1 - 使用
get_track_count()检查轨道数量
桥接脚本无法加载
- 使用
twelvetake-reaper-mcp --install-bridge部署脚本,然后从 REAPER 的操作列表中加载并运行。REAPER 运行的是已部署的副本,而不是克隆目录中的版本。
响应缓慢
- 基于文件的模式每次调用延迟约为 50 ms
- 尽可能批量执行操作(例如
add_midi_notes_batch)
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
REAPER_BRIDGE_DIR | REAPER 的 Scripts/mcp_bridge_data,按平台解析 | 文件桥接目录 |
REAPER_FILE_TIMEOUT | 5.0 | 等待桥接响应调用的秒数,但不包括下方的渲染和测量工具。桥接会在工作完成后才响应,因此冻结轨道或打开项目等耗时操作可能会报告超时,但 REAPER 仍会正常完成操作。值越高,桥接未运行时等待报告的时间也越长。 |
REAPER_RENDER_TIMEOUT | 600 | 等待 render_project、measure_loudness 和 measure_spectrum 的秒数;这些操作以近乎实时的速度运行。渲染时间超过 10 分钟时,请调高此值。 |
REAPER_MCP_DEBUG | 未设置 | 启动 REAPER 前将其设为 1,即可查看桥接启动消息以及每次调用对应的控制台行 |
贡献
请参阅 CONTRIBUTING.md。编写补丁前请先阅读第一节:此仓库通过明确的允许列表从私有工作仓库发布,因此 PR 会手动移植,而不是合并。最好提前了解这一点。经过充分诊断的问题在这里和补丁同样有价值,而且能为你省下不少功夫。
贡献者
CONTRIBUTORS.md 中列出了参与此软件开发的项目外人员,其中有几位的诊断成果早已发布,而当时这里还没人想到去查找。
许可证
MIT 许可证 - 请参阅 LICENSE
TwelveTake Studios LLC 网站:twelvetake.com 联系邮箱:[email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。