AudioEngine
Un article de XMIX.
L'AudioEngine est le système qui assure la gestion de tout les objets audio du serveur. Nous l'utiliserons au moyen d'une session.
Sommaire |
La Session
Une session est le point d'entrée de l'utilisation du moteur audio. L'ouvertue d'une session, assure :
- Accès au moteur d'exécution des commandes du script
- Accès au données des variables AudioEngine créées
- Instancier les objets définit dans le fichier de config
Le Scipt
La première fonction de la session est de permettre d'exécuter un instruction XMIX. Ces intructions permettent de créer des objets audio et de les manipuler.
Le principe d'un instruction est inspirée de la méthode utilisé dans la programation assembleur. L'idée est d'y aller vite, donc nous avons choisi d'utiliser la méthode d'interprétation la plus simple, à savoir sans structure et chaque instruction est décrite en une ligne.
Il est orienté temps, c'est à dire que chaque instruction est programme pour s'exécuter à un timecode précis, ou immédiatement.
L'instruction est donc composée d'un timecode, d'une variable objet, d'une instruction appliquée à l'objet, et de n paramètres.
Voici un petite exemple
// Création d'un AudioGroupe *:*:CREATEAUDIOGROUP:AG1 // Création d’un cannal audio nommé A *:AG1:CREATECHANNEL:A // Affectation du fichier ID=MON_FICHIER_1 à l’objet A *:AG1/A:SETFILEID:"MON_FICHIER_1" // Début de lecture du fichier après la quatrième seconde depuis le début // de l’exécution du script 4000:AG1/A:PLAY // Création d’un objet stream nommé B *:AG1:CREATECHANNEL:B // Affectation du fichier ID=MON_FICHIER_2 à l’objet B *:AG1/B:SETFILEID:"MON_FICHIER_2" // Libération des canaux A et B *:AG1:FREE:A *:AG1:FREE:B // Fin du script
L'accès aux variables
La session permet également d'accéder aux valeurs des objets créés. Pour cela une fonction permet récupérer une Class TAEVarDump contenant les informations de l'objet. Un mécanisme permet la mise à jour des informations synchrosé un sur un timer externe. La fréquence de mise à jour est divisée en 2 catégories :
- Fast : Mise à jour de données quasi temp réel,
- Std : Mise à jour plus lent pour des contrôle évoluant lentement.
- None : Aucune mise à jour.
Les objets exposés
- Les Sessions (TAudioSession)
- Les AudioGroups (TAudioGroup)
- Les piste (TChannel)
Les objets serveurs (TAE)
- L'arbre des variables (CAEVar)
- Les objets VarDump (CAEVarDump)
- Le gestionaire de session (CAESessionMgr)
Les objets drivers (TAD/TAR)
Les objets drivers assure l'implémentation des librairie audios externe comme Bass et FMod
- Les AudioDriver (TAudioDriver)
- Les AudioReader (TAudioReader)
Les objets techniques (TAE)
- Instanciation d'une DLL (TAEDll)
Le script
Qu'est ? L'idée d'introduire le script dans ce player me tien beacoup à coeur... et cela a pour objectif d'avoir la possibilité de piloter l'ensemble des fonctions du moteur de Xmix via un script.
Comment L'idée est d'y aller vite, donc nous avons choisi d'utiliser la méthode d'interprétation la plus simple, à savoir sans structure et chaque instruction est décrite en une ligne.
Voici un petite exemple
// Création d'un AudioGroupe *:*:CREATEAUDIOGROUP:AG1 // Création d’un cannal audio nommé A *:AG1:CREATECHANNEL:A // Affectation du fichier ID=MON_FICHIER_1 à l’objet A *:AG1/A:SETFILEID:"MON_FICHIER_1" // Début de lecture du fichier après la quatrième seconde depuis le début // de l’exécution du script 4000:AG1/A:PLAY // Création d’un objet stream nommé B *:AG1:CREATECHANNEL:B // Affectation du fichier ID=MON_FICHIER_2 à l’objet B *:AG1/B:SETFILEID:"MON_FICHIER_2" // Libération des canaux A et B *:AG1:FREE:A *:AG1:FREE:B // Fin du script