Script syntaxe

Un article de XMIX.

(Différences entre les versions)
Jump to: navigation, search
Version du 9 octobre 2007 à 08:43
Yoann (Discuter | contribs)
(<instruction> : objet _SYS_)
← Différence précédente
Version du 9 octobre 2007 à 08:51
Yoann (Discuter | contribs)
(<time_code>)
Différence suivante →
Ligne 24: Ligne 24:
'''I''' : Execution immédiate et blocage du processus appelant tant que l'instruction n'a pas été exécuté. '''I''' : Execution immédiate et blocage du processus appelant tant que l'instruction n'a pas été exécuté.
La file des ''instructions immédiates non exécutés'' sera traitée (éxecution de toutes les instructions), La file des ''instructions immédiates non exécutés'' sera traitée (éxecution de toutes les instructions),
- puis l'instruction le sera ensuite. Une fois cette instruction exécuter le processus appelant pourra continuer à + puis l'instruction le sera ensuite. Une fois cette instruction exécutée le processus appelant pourra continuer
- s'exécuter. + son déroulement.
- Cas particulier : '''I''' (tout seul) :+ Cas particulier : '''I''' (tout seul) (pour l'instant ''I:__SYS__:NOP'') :
- éxécute les instructions contenues dans la file des instructions ''immédiates non exécutées'' et rend la main au + Exécute les instructions contenues dans la file des instructions ''immédiates non exécutées''
- processus appelant.+ et rend la main au processus appelant.
== <variable> == == <variable> ==

Version du 9 octobre 2007 à 08:51

Sommaire

Général

Une instruction est une commande permettant d'utiliser les ressources de l'AudioEngine. Elle est exécutée au sein d'une session. Une instruction est composée de la manière suivante:

 <time_code>:<variable>:<instruction>[:<param> [:<parma2> ... :<param n>]]

tous doit tenir sur un ligne (les retours chariots délimité chaque instruction).

Une variante de l'instruction a été ajouté afin de pouvoir insérer un tag pour les retours des codes d'erreur. Ce tag sera ajouter au code d'erreur afin de pouvoir détecter plus facilement si une instruction a provoqué une erreur.

[<tag_erreur>]<time_code>:<variable>:<instruction>[:<param> [:<parma2> ... :<param n>]]

exemple :

  [01FF]*:/main_session/AG1:CREATECHANNEL:A

<time_code>

Il est existe de trois types différents :

       <n>  : Time code absolu, l'instruction sera déclanchée n miliseconde(s) après le démarrage du player. 
                    (Ex: 12000:A:CREATECHANNEL) 
       *<n> : Time code relatif temps réel. L'instruction sera déclanchée n miliseconde(s) après son interprétation.
                    (Ex: *1000:A:CREATESRTEAM) 
                    Petit raccourci : *: -> immédiat et equivalent à *0
       +<n> : Time code relatif incrémental. Cette instruction sera exécutée n miliseconde(s) après la dernière 
                    instruction de type relatif incrémental ou de type relatif temps réel.(Ex: +500:A:CREATECHANNEL)
         I  : Execution immédiate et blocage du processus appelant tant que l'instruction n'a pas été exécuté. 
                    La file des instructions immédiates non exécutés sera traitée (éxecution de toutes les instructions), 
                    puis l'instruction le sera ensuite. Une fois cette instruction exécutée le processus appelant pourra continuer 
                    son déroulement.
                    Cas particulier : I (tout seul) (pour l'instant I:__SYS__:NOP) :
                       Exécute les instructions contenues dans la file des instructions immédiates non exécutées 
                       et rend la main au processus appelant.

<variable>

Chemin pour accéder à l'objet:

      *                 : Self (généralement la session)    
      __SYS__           : Correspondant aux instruction qui porte sur le système (Ex: *:_SYS_:EXIT) 
      <variable_path>   : Correspond à un chemin absolu ou relatif pour accéder à un objet. 
                                exemple: /Session1/AG1/Channel1 ou AG1/Channel1.

<instruction> : Générique

      EXT               : Cette intruction permet d'utiliser des fonctions avancées pour certains objets. Dans ce cas le 
                              premier paramètre correspond à l'instruction étendue 
                              Par exemple lors de la lecture d'une radio de type LastFm, nous pouvons utiliser les commandes
                              SKIP, LOVE ou BAN.
                              exemple *:/main_session/AG1/A:EXT:SKIP

<instruction> : objet __SYS__

      GETFILEID         : Interroge le TAudioFileMgr pour obtenir l'ID correspondant à une source audio définit dans une URL.
                              exemple: *:_SYS_:GETFILEID:@<alias>:"file://C:/MP3_SAMPLE/MyFile1.mp3"
                              ou       *:_SYS_:GETFILEID:@<alias>:"xmix://Le%20%plus%20fou%20des%20MP3"
      DRAWHEAP          : Dessine l'arbre des variables actuellement définit
      DOSTDUPDATE       : Met à jour les informations "standard" des variables
      DOFSTUPDATE       : Met à jour les informations "fast" des variables
      NOP               : No OPeration (ne fait rien)

<instruction> : objet type Session

      CREATEAUDIOGROUP  : Créer un AudioGroup
                                *:<session>:CREATEAUDIOGROUP:<NomAudioGroup>
      FREE:<Obj>        : Suprime un objet et sa décendance
      NOP               : Ne fait rien

<instruction> : objet type AudioGroup

      CREATECHANNEL     : Créer un objet de type stream 
                                *:<NomAudioGroup>:CREATECHANNEL:<NomCanal>
      FREE:<Obj>        : Suprime un objet et sa décendance
      SETVOL:<vol>      : Modifie le volume de l'objet (0-255)
      SETPAN:<pan>      : Modifie la répartition du son entre gauche/droite en stéréo (0 à droite, 255 à gauche)
      SETMUTE:[ON|OFF]  : Active le mode mute

<instruction> : objet type Channel

      SETFILEID:<ID>    : Affecte une source audio représenté par <ID> (un TAudioFile) au canal
                                *:<NomCanal>:SETFILEID:<ID>
      PLAY              : Commence la lecture
                                *:<NomCanal>:PLAY
      PAUSE             : Met en pause la lecture
                                *:<NomCanal>:PAUSE
      STOP              : Arrête la lecture
                                *:<NomCanal>:STOP
      SETPOS:<position> : Deplace le curseur de lecture à la position indiquée.
      SETVOL:<vol>      : Modifie le volume de l'objet (0-255)
      SETPAN:<pan>      : Modifie la répartition du son entre gauche/droite en stéréo (0 à droite, 255 à gauche)
      MONITOR:[OFF|STD|FAST] : Active le monitoring de la variable pour le client puisse accéder rapidement au données semi/temps réel


<instruction> : objet type PlayList

      NEXT              : Sélectionne l'AudioSourcesuivant dans la playlist
                                *:<NomPlayList>:NEXT
      PREV              : Sélectionne l'AudioSourceprécédante dans la playlist
                                *:<NomPlayList>:PREV
      ADD:<URL>         : Ajoute une AudioSource représentée par l'URL
                                *:<NomPlayList>:ADD:"lastfm://globaltags/air"
      REMOVE:<index>    : Supprime l'AudioSourcecorrespondant à l'index (on commence à 0)
                                *:<NomPlayList>:REMOVE:0
      CLEAR             : Vide la playlist
                                *:<NomPlayList>:CLEAR
      EXT:SETFIRST      : Selectionne la première AudioSource
                                *:<NomPlayList>:EXT:SETFIRST
      EXT:SETLAST       : Selectionne la dernière AudioSource
                                *:<NomPlayList>:EXT:SETLAST
      EXT:LOOP:[ON|OFF] : Active ou désactive le mode rebouclage de la playlist
                                *:<NomPlayList>:EXT:LOOP:ON
                                *:<NomPlayList>:EXT:LOOP:OFF


To be continued...