§ Guide · Pour les développeurs

Control Logic Pro avec Python : ce qui fonctionne réellement

Publié en août 2026

La réponse directe d'abord : Logic Pro ne possède pas d'API Python. Aucune interface de script, aucune automatisation au niveau du projet, aucun kit de développement logiciel (SDK) de plugin compatible. Si « contrôler Logic avec Python » signifie manipuler l'application en cours d'exécution comme on piloterait un navigateur avec Selenium, cette option n'existe pas, quel que soit le fournisseur.

Mais la plupart des personnes qui saisissent cette requête n'ont pas besoin de déplacer la tête de lecture de Logic par le biais du code. Elles ont besoin de l'une des trois actions suivantes, par programmation : lire Que contient un projet Logic ? créer un projet Logic à partir de code, ou transformer l'un — et les trois fonctionnent aujourd'hui, car ils opèrent sur le projet déposer au lieu de l'application en cours d'exécution.

Ce Apple vous offre (et pourquoi ce n'est pas ceci)

Logic ne propose qu'une seule interface de script : ScripteurLogic Pro est un plugin MIDI FX qui exécute du JavaScript au sein d'une tranche de console. Il détecte en temps réel les événements MIDI transitant par cette tranche, et rien d'autre : il ne peut ni lire l'arrangement, ni ajouter de piste, ni interagir avec une autre région. C'est un processeur MIDI créatif, et non une API d'automatisation. Par ailleurs, le dictionnaire AppleScript de Logic est quasiment vide, et la gestion de l'interface utilisateur macOS (simulation des clics de menu) est sujette à des dysfonctionnements à chaque nouvelle version. Ces deux aspects ne constituent pas une base solide pour le développement d'outils.

La surface qui existe : le fichier projet

A .logicx est un paquet macOS — un dossier — dont les données de projet sont dans un format binaire non documenté (les détails se trouvent dans à l'intérieur du format de fichier .logicxDoseedo propose un analyseur et un générateur natifs, accessibles via une API HTTP simple, qui transforment la « Logic de contrôle avec Python » en code ordinaire. requests code:

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)

Cet exemple convertit intentionnellement Logic → REAPER : un .rpp est texte brutAinsi, une fois la conversion effectuée, votre Python (ou votre agent IA) peut analyser et modifier la session sous forme de texte (noms des pistes, positions des régions, MIDI, tempo), puis exécuter le processus inverse. reaper2logic, pour obtenir un natif .logicx retour. Les modifications structurelles survivent à cette boucle ; l’automatisation, les envois et l’état du plugin ne circulent en pleine fidélité que dans les directions directes Logic ↔ Ableton, il faut donc conserver le texte dans les deux sens pour le travail d’arrangement.

Création d'un projet Logic à partir de code

L'autre direction ne nécessite aucun projet source. POST /api/audio-to-session prend un mix téléchargé et renvoie un mix natif .logicx: stems séparées sur des pistes nommées, une carte de tempo détectée, MIDI optionnel par piste et une piste de guide d'accords. Un appel, environ quatre minutes, et l'artefact s'ouvre dans Logic. page audio-session montre ce qui revient.

Vous préférez un agent au HTTP brut ?

Les mêmes outils sont exposés en tant que serveur MCP hébergé — Claude Code, Claude Desktop ou Cursor se connectent avec une seule commande, et l'agent gère lui-même le chargement, l'interrogation et le téléchargement.

Le serveur Doseedo MCP →

La table de décision honnête

FAQ

Logic Pro possède-t-il une API Python ?

Non. Logic Pro n'expose aucune API Python, aucun système de script au niveau du projet, ni aucune interface d'automatisation. Le plugin Scripter intégré est en JavaScript, s'exécute uniquement dans Logic et ne peut traiter que les événements MIDI transitant par une seule tranche de console ; il ne peut ni lire ni modifier le projet.

Python peut-il lire ou écrire un projet .logicx ?

Pas avec une bibliothèque prête à l'emploi — les données du projet à l'intérieur d'un .logicx Il s'agit d'un format binaire non documenté. La solution actuelle consiste à utiliser un analyseur syntaxique via HTTP : téléchargez le projet compressé pour le reconstruire au format d'une autre station de travail audio numérique (DAW), l'ouvrir dans une session de navigateur compatible, ou le modifier au format texte brut de REAPER puis le reconvertir.

Puis-je créer un projet Logic à partir de code ?

Oui, par programmation, à partir de l'audio : un seul appel API transforme un mix en un fichier natif. .logicx avec stems séparées sur des pistes nommées, une carte de tempo, des MIDI optionnels par piste et un guide d'accords. Conversion d'un .als, .flp ou .rpp à .logicx est également un appel.

Qu’en est-il d’AppleScript ou des scripts d’interface utilisateur ?

Le dictionnaire AppleScript de Logic est minimal et la programmation d'interfaces utilisateur se limite à la simulation de clics de menu ; elle présente des problèmes de compatibilité entre les versions et ne permet pas d'accéder de manière fiable aux éléments internes du projet. Ce n'est pas une plateforme sur laquelle développer.

En rapport