mcpField
A
ableton-lom

ableton-lom

github.com/mikecfisher開発23145 回インストール23 週間前に更新
リポジトリ

ableton-lom について

Remote Scripts で使う Ableton Live Python API のリファレンススキルで、Live Set のオブジェクトと制御パターンを扱います。スクリプトやリアクティブな UI の開発者向けに API 領域別に構成され、Live 12.3 を対象としています。

主な機能

  1. 01Live Set のオブジェクト階層
  2. 02Song、トラック、Clip、デバイスの API
  3. 03ブラウザーとコントロールサーフェスの資料
  4. 04プロパティアクセスとリスナー
  5. 05メインスレッドでの変更指針
  6. 06Live 12.3 のバージョン情報

活用シーン

  1. 01Ableton Remote Scripts の開発
  2. 02トラックや Clip 状態の読み取り・変更
  3. 03デバイスパラメーターへのアクセス
  4. 04リスナーを使ったリアクティブ UI の構築

インストール

コマンドをコピーしてターミナルで実行します。

$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 リファレンス

このスキルでは、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トラックの作成・変更、ルーティング、アーム/ソロ/ミュート、メーターの操作
クリップと MIDIreferences/clip.mdクリップの作成、MIDI ノートの追加・編集、クリップのプロパティ、ワープの操作
デバイスreferences/device.mdデバイスの読み込み、パラメーターへのアクセス、デバイスチェーンの操作
専用デバイスreferences/specialized-devices.mdSimpler、Wavetable、Looper、Compressor、EQ8、Drift などの操作
ラックデバイスreferences/rack.mdインストゥルメント/オーディオ/MIDI/ドラムラック、チェーン、マクロ、ドラムパッドの操作
セッションビューreferences/session.mdシーン、クリップスロット、起動、セッションビューの操作
ビューと UIreferences/views.mdApplication.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.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. この API は Ableton によって公式にドキュメント化されていません。このリファレンスは、Cycling '74 の Max for Live LOM リファレンスに関するコミュニティドキュメントに基づいています
  2. Remote Scripts は必ず Live Set のバックアップを使ってテストしてください
  3. スレッドを誤って呼び出すと、クラッシュが発生する操作があります
  4. 監視可能なプロパティを使用すると、リアクティブな UI を構築できます

コメント