ableton-lom について
Remote Scripts で使う Ableton Live Python API のリファレンススキルで、Live Set のオブジェクトと制御パターンを扱います。スクリプトやリアクティブな UI の開発者向けに API 領域別に構成され、Live 12.3 を対象としています。
主な機能
- 01Live Set のオブジェクト階層
- 02Song、トラック、Clip、デバイスの API
- 03ブラウザーとコントロールサーフェスの資料
- 04プロパティアクセスとリスナー
- 05メインスレッドでの変更指針
- 06Live 12.3 のバージョン情報
活用シーン
- 01Ableton Remote Scripts の開発
- 02トラックや Clip 状態の読み取り・変更
- 03デバイスパラメーターへのアクセス
- 04リスナーを使ったリアクティブ UI の構築
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mikecfisher/ ableton-lom-skill --skill ableton-lomインストール後、Claude Code で/ableton-lomを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreAUDIT_PLAN.mdAGENTS.mdREADME.mdreferences/control-surface.mdbrowser.mdgrooves-tuning.mddevice.mdlom-coverage.mdclip.mdrack.mdtrack.mdsong.mdsession.mdviews.mdspecialized-devices.mdscripts/audit_lom_coverage.py詳細
Ableton Live オブジェクトモデル(LOM)API リファレンス
このスキルでは、Remote Scripts で使用される Ableton Live 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 | トラックの作成・変更、ルーティング、アーム/ソロ/ミュート、メーターの操作 |
| クリップと MIDI | references/clip.md | クリップの作成、MIDI ノートの追加・編集、クリップのプロパティ、ワープの操作 |
| デバイス | references/device.md | デバイスの読み込み、パラメーターへのアクセス、デバイスチェーンの操作 |
| 専用デバイス | references/specialized-devices.md | Simpler、Wavetable、Looper、Compressor、EQ8、Drift などの操作 |
| ラックデバイス | references/rack.md | インストゥルメント/オーディオ/MIDI/ドラムラック、チェーン、マクロ、ドラムパッドの操作 |
| セッションビュー | references/session.md | シーン、クリップスロット、起動、セッションビューの操作 |
| ビューと UI | references/views.md | Application.View、Song.View、Track.View、Clip.View、Device.View の操作 |
| ブラウザー | references/browser.md | インストゥルメント、エフェクト、サンプル、プリセットの閲覧・読み込み |
| コントロールサーフェス | references/control-surface.md | 設定済みサーフェスへのアクセス、コントロール/MIDI の取得、SysEx の操作 |
| グルーヴとチューニング | references/grooves-tuning.md | グルーヴプール、チューニングシステムの操作 |
| カバレッジチェックリスト | references/lom-coverage.md | Cycling '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 機能が追加されました
重要な注意事項
- この API は Ableton によって公式にドキュメント化されていません。このリファレンスは、Cycling '74 の Max for Live LOM リファレンスに関するコミュニティドキュメントに基づいています
- Remote Scripts は必ず Live Set のバックアップを使ってテストしてください
- スレッドを誤って呼び出すと、クラッシュが発生する操作があります
- 監視可能なプロパティを使用すると、リアクティブな UI を構築できます