L'objet ExtensionContext et le polymorphisme du modèle d'objet
L'objet ExtensionContext : Votre passerelle vers Live
Lorsque votre fonction obligatoire activate() est appelée par l'hôte d'extension d'Ableton Live, elle reçoit un objet activation. En passant cet objet à la fonction initialize() du SDK, vous obtenez l'objet ExtensionContext.
Cet objet est la passerelle unique et centrale vers toutes les capacités du SDK. Il est conçu pour être entièrement typé et sécurisé (type-safe), vous évitant ainsi les erreurs de navigation courantes dans le Live Object Model (LOM).
Le namespace application fournit un accès direct à l'instance de l'Application, qui est la racine absolue du modèle d'objet de Live (LOM).
C'est à partir d'ici que vous pouvez accéder au morceau (song) actuellement ouvert pour lire ou modifier son tempo, ses pistes ou son état de lecture :
const song = context.application.song;
console.log(`Tempo actuel : ${song.tempo} BPM`);
Le service commands est le registre pour toutes les commandes personnalisées de votre extension.
Vous l'utilisez pour lier les identifiants de commandes déclarés dans votre fichier manifest.json à des fonctions de rappel (callbacks) JavaScript/TypeScript qui s'exécuteront lorsque l'utilisateur clique sur une option de menu :
context.commands.registerCommand("my-ext.my-action", () => {
// Logique de la commande
});
Le service ui gère l'ensemble des interactions avec l'interface utilisateur d'Ableton Live.
Il expose des méthodes indispensables pour :
registerContextMenuAction: Ajouter des options personnalisées aux menus contextuels de Live (clic droit).showModalDialog: Ouvrir une boîte de dialogue basée sur une WebView HTML/CSS.withinProgressDialog: Afficher une barre de progression lors de tâches de longue durée pour éviter de bloquer visuellement l'utilisateur.
Le namespace environment vous donne un accès sécurisé à des informations et des répertoires spécifiques à la machine de l'utilisateur :
storageDirectory: Un répertoire persistant où votre extension peut stocker en toute sécurité des données locales, des préréglages (presets) ou des fichiers de configuration.tempDirectory: Un répertoire pour stocker des fichiers temporaires (par exemple, des analyses audio intermédiaires).language: La langue actuelle de l'interface de Live sous forme de code ISO 639-1 en majuscules (ex:"FR","EN","JA").
Le service resources permet d'interagir avec le système de fichiers du projet et de gérer les exports :
- Importation : Importer des fichiers audio ou MIDI directement dans les pistes ou les slots de clips du projet actif.
- Exportation : Déclencher le rendu (render) de l'audio à partir de l'Arrangement de Live par programmation.
L'objet ExtensionContext propose également deux utilitaires fondamentaux pour la robustesse de votre code :
getObjectFromHandle(handle, Class): Résout un identifiant unique (Handle) envoyé par Live en un objet SDK typé et sécurisé (voir section suivante).withinTransaction(name, callback): Regroupe plusieurs opérations de modification d'état en une seule transaction annulable d'un seul coup par l'utilisateur via le menu Édition -> Annuler (Undo) de Live.
Contenu premium
Abonnez-vous ou achetez la formation pour accéder à l'intégralité du contenu.
- Accès illimité à 1700 formations