[ABC 2.0]
Usage :
Le champ m: contient une macro ABC.
L'usage premier des macros ABC est des définir la façon dont les symboles d'ornementations (~ par exemple) doivent être interprétés. A terme, les macros pourront néanmoins être utilisées pour bien d'autres choses, restant à définir.
Type :
Instruction à syntaxe précise (voir plus bas).
Emplacement :
En-tête de morceau (niveau local) et en-tête de fichier (niveau global).
Une macro stockée dans un en-tête de morceau n'est utilisable que dans le morceau concerné, mais les macros stockées dans l'en-tête du fichier ABC forment une librairie disponible pour tous les morceaux du fichier.
Multiple :
Oui
Comportement :
La macro d'un champ m: remplace la macro du champ m: précédent uniquement si la macro concerne la même cible.
Les logiciels capables d'interpréter ces macros devront tout d'abord exécuter les macros puis seulement ensuite traiter les champ U: (redéfinitions de symboles).
Syntaxe :
Il existe deux sortes de macros ABC : les macros statiques et les macros transposables.
Macros statiques :
Une macro statique est défini ainsi dans l'en-tête du morceau (exemple) :
m: ~G3 = G{A}G{F}G
<identifiant de champ : m:> <chaîne cible > = <chaîne de remplacement >
Quand le morceau est joué, le logiciel applicatif remplace chaque occurrence de ~G3 (chaîne cible) par G{A}G{F}G (chaîne de remplacement) et c'est cette séquence qui sera réellement joué ou affichée/imprimée.
Chaîne cible : 31 caractères maxi, ne peut inclure la lettre "n". Les espaces intercalaires sont autorisés mais les espaces de têtes et de queue ne sont pas pris en compte.
Chaîne de remplacement : 200 caractères maxi, espaces autorisés. La séquence doit valoir le même intervalle de temps que la chaîne cible. Les altérations sont autorisées. Les espaces intercalaires sont autorisés mais les espaces de têtes et de queue sont supprimés.
________
Le nombre de macros statiques dans l'en-tête d'un morceau est illimité. Une macro statique ne concernant qu'un type précis de note (hauteur, octave, longueur), il faut donc autant de macros que de types de notes à modifier.
Macros transposables :
Si le morceau contient un grand nombre de types de notes ornementées de façon similaire, il est plus simple de définir une macro transposable.
La syntaxe d'une macro transposable est identique à une macro statique excepté que la valeur de note est remplacée par "n" dans la chaîne cible et que les valeurs de notes dans la chaîne de remplacement sont remplacées par les lettres "h" à "z", qui seront interprétées en fonction de leur position alphabétique relative à "n".
Exemple :
m: ~n3 = n{o}n{m}n.
Cette macro transposable est identique à la macro statique précédente sauf qu'elle ne concerne plus seulement la note G3 mais toutes les notes de longueur 3 et ornementées d'un tilde.
Dans la chaîne cible, la longueur de note doit être explicite : ~n1 et non ~n.
Dans la chaîne de remplacement, les altérations sont interdites (car impossibles à transposer de manière fiable).
Remarques :
Attention aux macros de niveau global dans l'en-tête de fichier dans les fichiers distribués, car l'utilisateur peut extraire un morceau d'un fichier sans prendre conscience de la présence de macros globales.