Le compilateur permet d'exécuter séquentiellement une liste d'instructions simples, afin de faciliter la création de Translateur, ou de Partitions liées au Translateur.
La liste des instructions à compiler se trouve dans l'onglet Translateur ou dans l'onglet Partition, à la section Compilation.
Le menu Edition/Compile permet d'exécuter la liste d'instructions.
La syntaxe est relativement simple :
chaque instruction est sur une ligne séquentiellement
Une ligne commence par un mot-clef, suivi de paramètres séquentiellement
Une ligne qui commence par # ou - est ignorée séquentiellement
Liste des mot-clefs :
- newGrid: Permet de saisir très rapidement une Partition d'accords pour le Translateur. La première ligne Grid nom tonalité signature crée une nouvelle Partition. Les lignes suivantes au format nom_système accord|accord...spécifient les accords de chaque système ( cf. syntaxe de setchord ). On termine en spécifiant l'ordre d'enchainement des systèmes avec la ligne order nom_système,... , ou loop nom_système,... pour faire un boucle sans fin. ( cf. syntaxe de order ).
Exemple :
newgrid ma_grille Fa 4/4
A Fa|Do/Sib
B Fa|Sib
loop A,A,B
- setGrid: idem newGrid, mais n'efface pas la Partition existante
- SetNote accord/évènement liste-notes: Spécifie les notes de l'Accord ou de l'Evènement de la Partition. La liste de note est séparée par des virgules. Si l'octave n'est pas spécifiée, la note est prise dans la suite ascendante immédiate ( octave par défaut : 4 ). Exemple : SetNote cell(1)/chord(1) do3,mib,sol met l'accord de Do m à l'ocatve 3 ( do3, mib3, sol3 ) dans le premier accord de la première Cellule.
- addNote : identique à setNote, sauf que les notes existantes de l'objet ne sont pas effacées au préalable.
- changeNote objet nte nouvelleNote : remplace toute les notes sous l'objet par la nouvelle note, indépendamment de l'octave. Exemple pour diminuer une quinte dans une cellule en Do changeNote cell(1) sol fa#
- setchord système grille-accord: rentre une grille d'accord complète d'un système en une instruction, sur la Piste 16. La grille d'accord est une suite de noms de Cellules entre [], ou une suite d'accords, séparées par des / pour les temps, ou des | pour les mesures.
La syntaxe d'une Cellule peut inclure une tonalité, un Style et unProgramme en utilisant ton*Style:Cell,Prog:canal ( exemple Sib*IV fait une modulation en Sib, donc l'accord de Mib. IV,5 selectionne le programme 5, pour sélectionner une gamme ou une autre option
Il est possible de spécifier un numéro de mesure après le caractère = ( e.g. setchord system(1) =4|Sol met l'accord de Sol dans la mesure 4
Exemple : setchord system(1) Do|Fa//Sol|Rem|Do met l'accord Do sur le premier temps de ma mesure 1 et 4, l'accord Fa sur le premier temps de la deuxième mesure, l'accord Sol sur le troisième temps de la deuxième mesure, et l'accord Rém sur le premier temps de la mesure 3.
Il est possible de surcharger les accords par des altérations ( Re6, Re7sus4, ... )
- reverse accord/sequence nombre-renversement : renverse l'accord ou les accords de la Sequence. L'accord est d'abord trié de façon ascendante avant d'être renversé. Un nombre positif augmente la hauteur de l'accord, et inversement pour un nombre négatif. Si la valeur n'est pas précisée, l'accord est renversé "automatiquement". Exemple : reverse chord(1) 1 renverse l'accord do3 mi3 sol3 en mi3 sol3 do4. reverse chord(1) -1 renverse l'accord do3 mi3 sol3 en sol2 do3 mi3.
- rotate objet nombre-rotations : effectue une permutation circulaire de l'objet. Exemple : rotate note(1) 1 transforme l'accord do3 mi3 sol3 en mi3 sol3 do3. rotate note(1) -1 transforme l'accord do3 mi3 sol3 en sol3 do3 mi3.
- trigger évènement accord élément-Translateur : spécifie un élément du Translateur à déclencher dans l'évènement. L' élément Translateur peut contenir les objest suivants, séparés par des espaces : style(x), program(x), chanel(x). Exemple : trigger 1.1 Do modifie ou crée une noire au premier temps de la mesure 1 qui déclenche l'accord Do du style courant.
- new objet nom : crée l'objet avec le nouveau nom. Pour un Système, on peut en plus spécifier la signature, l'armure, et le mode. Pour une Partition, on peut spécifier le signature rythmique. Exemple : new cell(1) I crée la première Cellule avec le nom I. new system(1) A 3+2/4 Re M crée le premier système nommé A à 5 temps ( temps fort sur 1 et 3 ), en Ré majeur.
- rename objet nom : renomme l'objet avec le nouveau nom
- delete objet : supprime l'objet
- signature objet x+y+z/t : règle la signature d'une Partition, Système ou Evenement. La signature peut être de la forme x+y+z/n. Exemple signature system(1) 3/4 pour une valse . signature system(1) 3+2+2/4 pour une mesure à 7 temps avec les temps forts en 1 3 et 5
- tone objet tonalité : règle la tonalité d'un Système. Le mode peut être M ( Majeur ) ou m ( mineur ). Exemple tone system(1) Sib pour Si bémol Majeur.
- transpose objet nombre-demi-ton : transpose l'objet du nombre de demi-tons demandés ( positifs ou négatifs )
- shift objet nombre-degrés : transpose l'objet du nombre de degrés demandés ( positifs ou négatifs ). Exemple : shift chord(1) 1 transforme l'accord Do3 Mi3 Sol3 en Ré3 Fa3 La3 ( en supposant en nommage majeur des tons forts dans le Translateur )
- set Selector k1 k2 colonne ligne : Règle les raccourcis clavier k1 et k2 pour le Sélecteur, ainsi que la position colonne/ligne dans la fenêtre graphique du Translateur. Les raccourcis k1 et k2 suivent la syntaxe affichée lors de l'édition manuelle, plus la valeur null pour spécifier l'abscence de raccourci. Example : set cell(1)/selector Shift-F1 null 3 2 positionne la Cellule en colonne 3, ligne 2, qui peut êtredéclenchée avec Shift-F1.
- copy objet source objet destination : copie l'objet dans la destination. l'objet destination est crée ou remplacé. Exemple : copy sequence(1) sequence(2)
- generalize objet : généralise les paramètres de l'objet aux objets du même type et de même nom trouvés dans le Translateur. Exemple :
generalize sequence(1) recopie les paramètres de la première Séquence ( exceptées les notes ) à toutes les Séquences du Translateur ayant le même nom.
- propagate score|system(x) : écrit dans la Partition, les accords des Cellules du Translateur, en fonction des Cellules déclenchées par les Evènements de la Partition.
- order liste-Systemes : permet de régler l'enchainement des Systèmes de la Partition ( couplets,refrains, .. ). la liste des Systèmes contient une liste de numéros de Systèmes, séparés par des virgules. Le numéro du Système peut être complété par une Transposition et un numéro de Style à déclencher. Exemple : order 1,2,2,1,3 enchaîne le premier Système, deux fois le deuxième, da-capo sur le premier, et coda sur le troisième. order 1:0:1,2,2:12,1:0:2,3 fait la même chose, avec en plus le premier Style déclenché en début de Partition, plus la reprise du deuxième Système à l'octave, et enfin le le deuxième Style déclenché au da-capo .
- loop on/off : boucle l'enchainement des Systèmes par un da-capo en fin de Partition. Exemple : loop on
- with objet : spécifie l'objet à manipuler dans la suite des instructions, afin d'éviter la répétition lourde de cet objet dans les instructions suivante. Les objets suivants qui doivent être concernés ne devront pas commencer par / . Exemple : with /style(1)/cell(1) précise que tous les objets qui suivent, ne commençant par par / seront implicitement de cette cellule.
- skip : n'exécute pas les instructions qui suivent, jusqu'à l'instruction resume
- resume : reprend l'exécution des instructions suspendues par un un précédent skip
- end : termine la compilation
Liste des objets :
- score : la Partition. Exemple : /score
- system(x) : un Système de la Partition, appartenant implicitement à une Partition. Exemple : /system(1)
- translator : le Translateur. Exemple : /translator
- style(x) : un Style du Translateur, appartenant implicitement au Translateur. Exemple : /style(1)
- cell(x) : une Cellule d'un Style. Exemple : /style(1)/cell(1), équivalent à with /style(1) suivi de cell(1),
- sequence(x) : une Séquence d'un Style ou d'une Cellule.
- mapping(x) : un Mapper d'un Style ou d'une Cellule.
- chord(x) : un Accord d'une Cellule, d'une Séquence, d'un Mapper, ou d'un Sélecteur.
- note(x) : une Note d'un Accord.
- selector : un Sélecteur d'un Système, d'un Style, d'une Cellule, d'une Séquence, ou d'un Mapper.
- évènement : pour désigner un évènement dans la commande trigger. Sa syntaxe minimale est la suivante : nrMesure.nrTemps. On peut compléter avec le nrTick ( 0..960 ) pour désigner la position dans le temps. Pour spécifier une durée différente de 1 temps, on complète avec :nbTemps ( suivi de .nbTick pour rajouter de la précision si nécessaire). Exemple : 2.3 désigne une noire en mesure 2, temps 3. 2.3.480 idem, mais un demi-temps plus tard 2.3:2 idem, mais pour une blanche.