Comment ça marche ?

Le principe

C’est simple, la musique est tout simplement affichée deux fois, mais sur deux portées différentes :

  • la première est une portée normale, hormis le fait que l’affichage des numéros de cordes et de doigtés ont été désactivés, ces indications étant détournées de leur usage normal pour enregistrer les notes alternatives et autres indications ;

  • la seconde est une portée de percussion (plus adaptée à l’affichage qui nous intéresse) à une seule ligne, où on n’affiche pas les notes mais uniquement un markup généré à la volée par une fonction scheme. Et ce markup contient le numéro de trou et autres indications utiles au jeu.

La fonction scheme harpoTab effectue les tâches suivantes.

  • Transformation de la hauteur de note en nombre de demi-tons à partir du do central. Ceci a pour avantage de permettre de traiter un si♭ et un la♯ de la même façon, car si musicalement ce ne sont pas les mêmes notes, le son en est le même et il faudra donc utiliser le même trou pour les jouer.

  • Récupération et stockage des valeurs des articulations attachées à la note.

  • Transformation de la tonalité dans laquelle est écrite la musique et décalage de chaque note de cette valeur, ce qui revient à faire une transposition en do. Ceci permet de n’avoir qu’un seul dictionnaire d’accordage, quelle que soit la tonalité.

  • Si on saisit la musique en mode tablature, on analyse la note différemment (voir ci-dessous), afin de construire la valeur de demi-ton. Ensuite on la traite comme si c’était une note normale.

  • Récupération des valeurs de trous dans le dictionnaire. Elles peuvent aller jusqu’à trois. Selon qu’une indication de note alternative a été détectée ou non (dans les articulations) on classe les valeurs entre note principale et alternative(s).

  • Extraction des informations à partir des valeurs de trous. Chaque valeur est écrite sous forme de nombre réel signé. Le signe représente le sens de jeu (-1 aspiré et +1 soufflé). La partie entière représente le numéro de trou, et la partie décimale le code de l’altération éventuelle.

  • Génération du markup avec ces informations et toutes les indications de configuration. Probablement la partie du code la plus délicate à mettre au point.

  • Pour finir on attache le markup à la note.

Ce qui peut sembler tout simple expliqué comme ça m’a pris plusieurs semaines de travail assidu, pour la bonne raison que je ne connaissais pas le scheme et qu’on ne peut pas dire que ce soit un langage facile à appréhender.

Le mode tablature

Les pseudo-notes i et o ont les particularités suivantes :

  • elles sont sur la huitième octave, il faudra donc ajuster cette valeur ;

  • elles sont doublement altérées, la valeur de leur altération sera de -1 pour les notes aspirées et +1 pour les notes soufflées, ce qui est bien pratique, c’est la codification retenue.

Ces deux particularités les rend impossibles dans une partition.

Elles sont par ailleurs affectées de plusieurs indications supplémentaires :

  • un numéro de doigté, correspondant au trou ;

  • éventuellement des indications d’altérations sous forme d’articulations ;

  • éventuellement d’une indication de note alternative, qui sera traitée comme dans une partition normale (cette indication permet de modifier a posteriori une tablature pour l’adapter à son style de jeu).

À partir du sens, du numéro de bouton et des articulations d’altération, on peut facilement fabriquer un numéro de trou sous forme de réel signé, puis chercher dans le dictionnaire d’accords à quel demi-ton il correspond.

Il reste à remplacer la hauteur de la note par celle qui correspond au demi-ton, ce qui écrira une partition en do. Elle sera ensuite automatiquement transposée en fonction des valeurs de songTone et harmoTone.

Le mode ignorant

Il est très semblable au mode tablature, à ceci près que les pseudo-notes sont différentes, ainsi que les informations supplémentaires rattachées, mais le principe est identique, elles sont à l’octave 8 mais altérées conformément à leur nom.

Les fichiers

Tout le code a été séparé en trois fichiers, pour plusieurs raisons :

  • il y a des morceaux de code qui ont vocation à être adapté et personnalisé, et d’autres non, il est donc judicieux de les séparer ;

  • les indications de configuration locales (à l’intérieur du fichier de la partition) doivent avoir la préséance sur les indications globales ;

  • le scheme n’aime pas qu’on fasse référence à une variable qui ne serait pas encore déclarée.

Pour en voir le code sans devoir tout télécharger, voir les articles correspondants :

Bookmarquez le permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *