§ Przewodnik · Dla programistów

Control Logic Pro z Pythonem: co naprawdę działa

Opublikowano w sierpniu 2026 r.

Najpierw odpowiedzmy wprost: Logic Pro nie ma interfejsu API języka Python. Brak powierzchni skryptowej, brak automatyzacji na poziomie projektu, brak zestawu SDK wtyczek, który umożliwiałby realizację projektu. Jeśli „kontrola Logic za pomocą Pythona” oznacza sterowanie działającą aplikacją w taki sam sposób, jak w przypadku przeglądarki za pomocą Selenium – taka opcja nie istnieje, i to u żadnego dostawcy.

Jednak większość osób wpisujących to zapytanie nie musi w rzeczywistości przenosić głowicy Logic z kodu. Potrzebują jednej z trzech rzeczy programistycznych: Czytać co zawiera projekt Logic, tworzyć projekt Logic z kodu lub przekształcać jeden — i wszystkie trzy działają dzisiaj, ponieważ działają w ramach projektu plik zamiast uruchomionej aplikacji.

Co daje Ci Apple (i dlaczego to nie jest to)

Logic dostarcza dokładnie jedną powierzchnię skryptową: Skrypter, wtyczka MIDI -FX, która uruchamia JavaScript wewnątrz paska kanału. Widzi zdarzenia MIDI przepływające przez ten pasek w czasie rzeczywistym i nic więcej — nie może odczytać aranżacji, dodać ścieżki ani dotknąć innego regionu. To kreatywny procesor MIDI, a nie API automatyzacji. Poza tym słownik AppleScript w Logic jest prawie pusty, a skryptowanie interfejsu użytkownika macOS (symulowane kliknięcia menu) to coś, co psuje się przy każdym uruchomieniu. Żaden z tych elementów nie stanowi fundamentu do budowania narzędzi.

Powierzchnia, która istnieje: plik projektu

A .logicx jest pakietem macOS — folderem — którego dane projektu są nieudokumentowanym formatem binarnym (szczegóły znajdują się w w formacie pliku .logicx). Doseedo utrzymuje natywny parser i program do zapisu dla niego, dostępny za pośrednictwem prostego interfejsu API HTTP, który przekształca „ Logic sterowania z Pythonem” w zwykłą requests kod:

import requests, time

API = "https://api.doseedo.com"
H = {"X-API-Key": "dsk_live_..."}  # doseedo.com/settings/api-keys

# 1 — presign, then upload the zipped .logicx project folder
r = requests.post(f"{API}/api/upload/r2/signed-url",
                  params={"filename": "MySong.zip",
                          "content_type": "application/zip"},
                  headers=H).json()
with open("MySong.zip", "rb") as f:
    requests.put(r["upload_url"], data=f,
                 headers={"Content-Type": "application/zip"})

# 2 — convert it (12 directions: logic|ableton|fl|reaper, any pair)
task = requests.post(f"{API}/api/convert", headers=H,
                     json={"source_key": r.get("path") or r.get("key"),
                           "direction": "logic2reaper",
                           "async": True}).json()["task_id"]

# 3 — poll, then download the finished project
while True:
    s = requests.get(f"{API}/api/convert/status",
                     params={"task": task}, headers=H).json()
    if s["status"] in ("done", "error"): break
    time.sleep(5)
out = requests.get(f"{API}/api/convert/result",
                   params={"task": task}, headers=H)
open("MySong_reaper.zip", "wb").write(out.content)

W tym przykładzie Logic → REAPER jest celowo konwertowany: .rpp Jest zwykły tekst, więc gdy konwersja się powiedzie, Twój Python (lub agent AI) może przeanalizować i edytować sesję jako tekst — nazwy ścieżek, pozycje regionów, MIDI, tempo — a następnie uruchomić odwrotny kierunek, reaper2logic, aby uzyskać rodzimego .logicx Powrót. Edycje strukturalne pozostają w tej pętli; automatyzacja, wysyłki i stan wtyczki są przesyłane z pełną wiernością tylko na bezpośrednich komendach Logic ↔ Ableton, więc zachowaj tekstową podróż w obie strony do pracy nad aranżacją.

Tworzenie projektu Logic z kodu

W przeciwnym kierunku nie jest w ogóle potrzebny żaden projekt źródłowy. POST /api/audio-to-session pobiera przesłany miks i zwraca natywny .logicx: oddzielne stems na nazwanych ścieżkach, wykryta mapa tempa, opcjonalny MIDI dla każdej ścieżki dźwiękowej i ścieżka prowadząca akordy. Jedno wywołanie, około czterech minut, i artefakt otwiera się w Logic. strona z dźwiękiem do sesji pokazuje co wraca.

Wolisz agenta od surowego protokołu HTTP?

Te same narzędzia są dostępne na hostowanym serwerze MCP — Claude Code, Claude Desktop lub Cursor łączą się za pomocą jednego polecenia, a agent sam zajmuje się przesyłaniem, sondowaniem i pobieraniem.

Serwer Doseedo MCP →

Uczciwa tabela decyzyjna

Często zadawane pytania

Czy Logic Pro ma API Pythona?

Nie. Logic Pro nie udostępnia API Pythona, skryptów na poziomie projektu ani interfejsu automatyzacji. Wbudowana wtyczka Scripter jest oparta na JavaScript, działa tylko w Logic i może przetwarzać tylko zdarzenia MIDI przepływające przez jeden kanał — nie może odczytywać ani modyfikować projektu.

Czy Python potrafi odczytać lub zapisać projekt .logicx ?

Nie z gotową biblioteką — dane projektu w niej zawarte .logicx to nieudokumentowany format binarny. Obecnie działa to poprzez uruchomienie parsera przez HTTP: wgraj spakowany projekt i zrekonstruuj go w formacie innego programu DAW, otwórz w sesji przeglądarki, aby można było go odtworzyć, lub edytuj w formacie zwykłego tekstu programu REAPER i przekonwertuj z powrotem.

Czy mogę utworzyć projekt Logic z kodu?

Tak — programowo, z poziomu audio: jedno wywołanie API zmienia miks w natywny .logicx z oddzielnymi stems na nazwanych ścieżkach, mapą tempa, opcjonalnym MIDI dla każdej ścieżki i przewodnikiem po akordach. Konwersja .als, .flp Lub .rpp Do .logicx jest również jednym połączeniem.

A co z AppleScript lub skryptami interfejsu użytkownika?

Słownik AppleScript w Logic jest minimalny, a skryptowanie interfejsu użytkownika oznacza symulowanie kliknięć menu — jest ono rozbite na wersje i nie może niezawodnie wpływać na wewnętrzne mechanizmy projektu. To nie jest powierzchnia, na której można budować.

Powiązany