使用说明
AbleOscMcp
一 主控程序 让AI助手完全控制的服务器 Ableton现场 通过 AbletonOSC.
控制传输、创建和编辑MIDI剪辑、操纵曲目和设备以及订阅实时属性更改——所有这些都可以从Claude Desktop、Cursor或任何其他MCP客户端完成。
先决条件
安装
# Install with uv (recommended)
uvx ableosc-mcp
# Or install with pip
pip install ableosc-mcp
AbletonOSC设置
AbletonOSC是一个免费的远程脚本,运行在Ableton Live内部,并通过OSC/UDP公开其Python API。
- 从下载最新版本 视频/AbletonOSC
- 复制
AbletonOSC文件夹到您的Ableton用户库:- macOS:
~/Music/Ableton/User Library/Remote Scripts/ - 窗户:
C:\Users\<name>\Documents\Ableton\User Library\Remote Scripts\
- macOS:
- 完全退出并重新启动Ableton Live
- 在阿布莱顿: 偏好→ 链接、节奏和MIDI→ 控制表面 → 选择
AbletonOSC
AbletonOSC监听UDP端口 11000 并在端口上回复 11001.
Claude桌面配置
将此添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"ableton": {
"command": "uvx",
"args": ["ableosc-mcp"]
}
}
}
或者,如果你已经克隆了repo:
{
"mcpServers": {
"ableton": {
"command": "uv",
"args": ["run", "ableosc-mcp"],
"cwd": "/path/to/AbleOscMcp"
}
}
}
可用工具
歌曲/交通
| 工具 | 说明 |
|---|---|
get_session_info |
节奏、时间特征、播放状态、循环设置、曲目/场景计数 |
set_tempo |
设置BPM(20–999) |
start_playing |
启动全球运输 |
stop_playing |
停止全球运输 |
stop_all_clips |
停止播放所有剪辑 |
tap_tempo |
发送轻击节奏脉冲 |
undo / redo |
撤消/重做上次操作 |
set_loop |
配置循环开始、长度和启用状态 |
get_cue_points |
列出所有提示点 |
jump_to_cue |
按名称或索引跳转到提示点 |
capture_scene |
将播放的剪辑捕获到新场景中 |
trigger_session_record |
切换会话记录模式 |
轨迹
| 工具 | 说明 |
|---|---|
get_tracks |
列出所有曲目(索引、名称) |
get_track |
完整曲目细节:音量、平移、静音、独奏、手臂、设备、剪辑 |
set_track_volume |
0.0=静音,0.85=单位(0 dB),1.0=+6 dB |
set_track_pan |
−1.0=完全向左,0.0=居中,1.0=完全向右 |
set_track_mute / set_track_solo / set_track_arm |
切换轨迹状态 |
set_track_name |
重命名曲目 |
set_track_send |
设置发送级别(0.0–1.0) |
create_midi_track / create_audio_track / create_return_track |
添加曲目 |
delete_track |
删除曲目 |
duplicate_track |
复制曲目 |
stop_track_clips |
停止曲目上的所有剪辑 |
片段
| 工具 | 说明 |
|---|---|
create_clip |
在插槽中创建新的空MIDI剪辑 |
delete_clip |
删除剪辑 |
get_clip_info |
名称、长度、循环设置、播放状态 |
fire_clip / stop_clip |
启动或停止剪辑 |
set_clip_name |
重命名剪辑 |
set_clip_loop |
配置剪辑循环开始/结束 |
get_notes |
获取所有MIDI音符 {pitch, start_time, duration, velocity, mute} |
add_notes |
将MIDI音符添加到剪辑中 |
remove_notes |
按音高/时间范围删除音符,或删除所有音符 |
duplicate_clip_loop |
通过复制内容使循环长度加倍 |
设备
| 工具 | 说明 |
|---|---|
get_devices |
列出轨道上的设备 |
get_device_parameters |
所有参数:名称、值、最小/最大范围 |
get_device_parameter |
单参数值和显示字符串 |
set_device_parameter |
设置参数值 |
场景
| 工具 | 说明 |
|---|---|
get_scenes |
列出所有场景 |
get_scene |
场景细节:名称、节奏覆盖 |
fire_scene / fire_selected_scene |
启动一个场景 |
create_scene / delete_scene / duplicate_scene |
管理场景 |
set_scene_name |
重命名场景 |
set_scene_tempo |
设置每个场景的节奏覆盖 |
查看/选择
| 工具 | 说明 |
|---|---|
get_selected_track / set_selected_track |
Live用户界面中的选定曲目 |
get_selected_scene / set_selected_scene |
Live用户界面中的选定场景 |
get_selected_clip / set_selected_clip |
Live用户界面中的选定剪辑槽 |
get_selected_device / set_selected_device |
Live用户界面中的选定设备 |
实时听众
订阅Live属性更改并轮询更新——不需要轮询循环。
| 工具 | 说明 |
|---|---|
subscribe |
开始听一个属性。退货 sub_id 立即;AbletonOSC立即发送当前值 |
poll |
收集排队的事件。块高达 timeout_seconds 如果队列为空 |
unsubscribe |
让听众停下来,清理一下 |
list_subscriptions |
列出活动订阅及其队列深度 |
示例——观看节奏变化:
subscribe("tempo", level="song")
→ {"sub_id": "sub_3607efaa", "status": "subscribed"}
# AbletonOSC immediately sends current value:
poll("sub_3607efaa", timeout_seconds=0)
→ {"events": [{"value": 120}]}
# Change tempo in Ableton, then:
poll("sub_3607efaa", timeout_seconds=10)
→ {"events": [{"value": 128}]}
unsubscribe("sub_3607efaa")
您可以收听的属性:
| 级别 | level= |
必需的索引参数 | 有用的属性 |
|---|---|---|---|
| 歌曲 | "song" |
没有 | tempo, is_playing, loop, groove_amount |
| 轨道 | "track" |
track_index |
mute, solo, arm, volume, panning, output_meter_level |
| 剪辑 | "clip" |
track_index, clip_index |
is_playing, is_recording, playing_position |
| 夹子插槽 | "clip_slot" |
track_index, clip_index |
has_clip, is_playing, is_triggered |
| 场景 | "scene" |
scene_index |
name |
| 设备 | "device" |
track_index, device_index |
name |
| 查看 | "view" |
没有 | selected_track, selected_scene |
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ABLEOSC_HOST |
127.0.0.1 |
AbletonOSC主机 |
ABLEOSC_SEND_PORT |
11000 |
端口AbletonOSC正在监听 |
ABLEOSC_RECEIVE_PORT |
11001 |
我们监听的端口以获取响应 |
发展
git clone https://github.com/mawaha/AbleOscMcp
cd AbleOscMcp
uv sync --all-extras
# Unit tests (no Ableton needed)
uv run pytest tests/unit/ -v
# Integration tests (requires Ableton Live + AbletonOSC running)
# Kill any running ableosc-mcp server first to free port 11001
lsof -ti :11001 | xargs kill
ABLEOSC_INTEGRATION=1 uv run pytest tests/integration/ -v
# Coverage report
uv run pytest tests/unit/ --cov --cov-report=term-missing
建筑
AI client (Claude Desktop, Cursor, etc.)
│ MCP / stdio
▼
src/ableosc/server.py ← FastMCP server, tool registration
│ asyncio + python-osc / UDP
▼
AbletonOSC Remote Script ← installed in Ableton Live
(inside Ableton Live)
│ Live Python API
▼
Ableton Live
与实现自定义协议的其他Ableton MCP集成不同,该项目包含 AbletonOSC -一个成熟、测试良好的远程脚本,具有全面的API表面,包括实时事件侦听器。
许可证
麻省理工学院——见 许可证.