Ableton Live控制服务器

通过AbletonOSC协议提供对Ableton Live软件的全面控制服务,支持实时操作和订阅功能更改。

  • by mawaha
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mawaha/AbleOscMcp

使用说明

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。

  1. 从下载最新版本 视频/AbletonOSC
  2. 复制 AbletonOSC 文件夹到您的Ableton用户库:
    • macOS: ~/Music/Ableton/User Library/Remote Scripts/
    • 窗户: C:\Users\<name>\Documents\Ableton\User Library\Remote Scripts\
  3. 完全退出并重新启动Ableton Live
  4. 在阿布莱顿: 偏好→ 链接、节奏和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表面,包括实时事件侦听器。

许可证

麻省理工学院——见 许可证.