mcpField
A
ableton-lom

ableton-lom

github.com/mikecfisher开发23145 次安装23 周前更新
代码仓库

关于 ableton-lom

这是一份面向 Remote Scripts 的 Ableton Live Python API 参考技能,涵盖 Live Set 对象及控制模式。它适用于脚本和响应式界面的开发者,按 API 领域组织文档,并以 Live 12.3 为参考版本。

主要功能

  1. 01Live Set 对象层级
  2. 02Song、音轨、Clip 和设备 API
  3. 03浏览器与控制表面参考
  4. 04属性访问和监听器
  5. 05主线程修改指南
  6. 06Live 12.3 版本说明

适用场景

  1. 01开发 Ableton Remote Scripts
  2. 02读取或修改音轨与 Clip 状态
  3. 03访问设备参数
  4. 04利用监听器构建响应式界面

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mikecfisher/ableton-lom-skill --skill ableton-lom

安装后在 Claude Code 中输入/ableton-lom确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
AUDIT_PLAN.md
AGENTS.md
README.md
references/
control-surface.md
browser.md
grooves-tuning.md
device.md
lom-coverage.md
clip.md
rack.md
track.md
song.md
session.md
views.md
specialized-devices.md
scripts/
audit_lom_coverage.py

详细介绍

Ableton Live 对象模型(LOM)API 参考

本技能提供 Ableton Live Remote Scripts 所用 Python API 的完整文档。该 API 通过 _Framework.ControlSurface 基类访问,可对 Live Set 的各个方面进行编程控制。

快速入门

from _Framework.ControlSurface import ControlSurface

class MyScript(ControlSurface):
    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        self._song = self.song()  # Access the Live Set (Song object)
        app = self.application()  # Access the Application object

核心对象层级

Application
├── browser (instruments, sounds, drums, audio_effects, midi_effects)
├── control_surfaces[] → ControlSurface
└── Song (live_set)
    ├── tempo, is_playing, loop, metronome
    ├── tracks[] → Track
    │   ├── clip_slots[] → ClipSlot → Clip
    │   ├── devices[] → Device → DeviceParameter
    │   ├── mixer_device → MixerDevice
    │   └── view → Track.View
    ├── return_tracks[] → Track
    ├── master_track → Track
    ├── scenes[] → Scene
    ├── cue_points[] → CuePoint
    ├── groove_pool → GroovePool → Groove
    ├── tuning_system → TuningSystem
    └── view → Song.View

按领域分类的参考文件

根据当前的工作内容加载相应的参考文件:

领域文件适用场景
歌曲与传输控制references/song.md处理速度、播放、拍号、循环、提示点
轨道references/track.md创建/修改轨道、路由、录音准备/独奏/静音、音量表
片段与 MIDIreferences/clip.md创建片段、添加/编辑 MIDI 音符、片段属性、变形
设备references/device.md加载设备、访问参数、设备链
专用设备references/specialized-devices.mdSimpler、Wavetable、Looper、Compressor、EQ8、Drift 等
Rack 设备references/rack.md乐器/音频/MIDI/鼓 Rack、链、宏、鼓垫
Session Viewreferences/session.md场景、片段槽、启动、Session View 导航
视图与 UIreferences/views.mdApplication.View、Song.View、Track.View、Clip.View、Device.View
浏览器references/browser.md浏览/加载乐器、效果器、采样、预设
控制表面references/control-surface.md访问已配置的控制表面、接管控件/MIDI、SysEx
Groove 与调音references/grooves-tuning.mdGroove 池、调音系统
覆盖清单references/lom-coverage.mdCycling '74 官方 LOM 对象与文件的审计映射

关键概念

属性访问模式
  • 只读:只能获取值
  • 读写:可以获取和设置值
  • 可观察:可以使用 add_<property>_listener(callback) 添加侦听器
线程

所有状态修改都必须在 Ableton 的主线程上进行:

def modify_state():
    self._song.tempo = 120.0

self.schedule_message(0, modify_state)  # Schedule for main thread
规范路径

通过类似 live_set tracks 0 devices 1 parameters 2 的路径访问对象。可通过这些路径了解对象层级。

特殊根路径包括 live_set(当前 Song)、live_app(Application)、control_surfaces N(已配置的 ControlSurface)和 this_device(包含接收 goto this_device 的 Max for Live live.path 对象的 Device)。

常见模式

遍历轨道和片段:

for track in self._song.tracks:
    for slot in track.clip_slots:
        if slot.has_clip:
            clip = slot.clip
            # Work with clip

添加侦听器:

def on_tempo_changed():
    self.log_message("Tempo: " + str(self._song.tempo))

self._song.add_tempo_listener(on_tempo_changed)

访问设备参数:

device = track.devices[0]
for param in device.parameters:
    self.log_message(param.name + ": " + str(param.value))

版本兼容性

本文档适用于 Live 12.3。版本说明:

  • Live 11 及更高版本:需要 Python 3
  • Live 11.0 及更高版本:新增 GroovePool、Groove 类
  • Live 12.3 及更高版本:新增 insert_device()、insert_chain() 和 AB Compare 功能

重要说明

  1. Ableton 未正式发布此 API 的文档——本参考资料基于 Cycling '74 的 Max for Live LOM 参考文档等社区资料
  2. 使用备份的 Live Set 测试 Remote Scripts
  3. 从错误的线程调用某些操作可能导致崩溃
  4. 可观察属性可用于构建响应式 UI

评论

支持 Markdown