La mathématique du Diatonique

Ou comment transformer son instrument de musique en casse-tête mathématique…

J’ai toujours aimé les casse-têtes mathématiques, donc il était inévitable que j’en arrive à cette question totalement inutile (encore que…) de pouvoir écrire la formule mathématique du clavier de l’accordéon diatonique.

Vous aimez les maths, et vous jouez du diato (ou non d’ailleurs) ? Vous allez vous amuser…

Énoncé du problème

La question est la suivante : j’ai un diato dans une tonalité donnée, mettons Sol/Do. Je veux savoir quel bouton utiliser pour jouer une note donnée, mettons le Do de la quatrième octave, et si je dois tirer ou pousser mon soufflet. Comme cette note peut se jouer sur les deux claviers, il est entendu que j’indique non seulement la note à jouer mais aussi le clavier à utiliser.

Entendons-nous bien : on pourrait tout bêtement écrire un tableau de correspondance et un minuscule programme qui ferait la conversion. Ce serait de la triche… Le but du jeu est de trouver deux formules mathématiques (algorithmes) qui soient de la forme suivante :

Pour ce faire seuls les quatre opérateurs courants (addition, soustraction, multiplication et division) ainsi que celui donnant la partie entière d’un nombre décimal sont autorisés.

Si vous ne connaissez pas la logique de fonctionnement d’un diato mais que vous voulez essayer de trouver la solution malgré tout, rendez-vous page suivante. Sinon à vos claviers, et faites chauffer la matière grise…

Si vous voulez simplement savoir comment j’ai fait continuez votre lecture tranquillement, mais allez peut-être chercher quelques aspirines en prévision.

Fonctionnement d’un accordéon diatonique

On peut comparer un diato à une boite contenant deux harmonicas, avec un soufflet pour alimenter ceux-ci en air au lieu du souffle du musicien. Les deux harmonicas ne peuvent jouer que des gammes majeures, donc aucune altération accidentelle. Si vous ne comprenez pas ces termes, autant décrocher tout de suite…

Comme pour les harmonicas, un même bouton donnera deux sons différents selon que l’on souffle (pousse le soufflet) ou aspire (tire le soufflet).

Dans toutes les recherches que j’ai faites sur le web je n’ai jamais trouvé d’exemple de diato dont les claviers ne soient pas séparés par une quarte. Sol/Do, La/Ré, Ré/Sol, Si bémol/Mi bémol… J’ai l’intuition sans avoir encore pris le temps d’étudier ça en détail qu’il s’agit de la meilleure combinaison pour pouvoir avoir le maximum de notes identiques en poussé et en tiré… En tout état de cause, il est inutile de vouloir faire un algorithme hors de ce contexte, ce serait compliquer inutilement. Si des facteurs ou factrices de diatos ont une opinion différente je suis tout ouïe (de violon :-).

Les boutons sont numérotés du plus grave au plus aigu, et le bouton 3 poussé donne la tonalité du clavier. Les boutons 4 et 5 donnent respectivement la tierce majeure et la quinte. En tirant, les boutons 3, 4, 5 et 6 donnent les intervalles de seconde, quarte, sixte et septième. Ensuite on répète la figure. Le clavier extérieur a 11 boutons, l’intérieur en a seulement 10.

Le premier bouton des claviers ne suit pas toujours la même logique que le reste du clavier, certains modèles comportant à cet endroit des notes altérées, et nos formules ne fonctionneront pas forcément pour ce bouton. Il ne faut pas trop s’en soucier, d’autant que pratiquement personne ne l’utilise. En outre (mais comme tout ce qui concerne l’histoire de cet instrument qui a été inventé par tant d’individus différents, ceci ne peut être prouvé avec certitude) le clavier n’aurait pas comporté (pendant une certaine phase de son évolution permanente) les deux premiers boutons du bas et aurait commencé à l’actuel troisième. Ces boutons supplémentaires du bas, permettant de jouer des notes altérées, augmentaient les possibilités de l’instrument, mais au prix d’une gymnastique assez intense et d’une virtuosité non négligeable, ce qui fait que des versions de clavier affectant à ces deux nouveaux boutons une logique identique aux autres boutons est aussi apparue.

Maintenant vous savez tout.

Première remarque : pourquoi se référer au bouton 3 ? Outre ce qui a été expliqué précédemment, et même si les deux premiers boutons respectent la logique du reste du clavier, la tonalité du clavier serait sur un bouton 0 qui n’existe pas.

Deuxième remarque : il y a plus de notes en tiré qu’en poussé, du fait qu’une octave ne contient en réalité que 7 notes. Il aurait été possible de décider que le quatrième bouton poussé aurait donné la septième au lieu de l’octave, ce qui d’une part aurait permis d’avoir cette note autant en tirant qu’en poussant. Ou mieux de mettre à cet endroit une note altérée permettant de jouer aussi en mineur… Mais non, on est resté dans la logique pure de l’harmonica. Cette remarque est juste ma contribution au débat jamais terminé qui agite le milieu de l’accordéon depuis sa première apparition, voici maintenant plus d’un siècle et demi, et bientôt deux.

Donc de ce fait dès qu’on change d’octave tout le doigté est à revoir, et il faut décaler les boutons d’un rang dans un sens ou l’autre.

Dans la section suivante je décrirai la logique qui a présidé à la conception de mes algorithmes. Si vous avez envie de voler de vos propres ailes, cessez la lecture ici et n’y revenez que si vous buttez sur cette première étape.

La logique du clavier

Comme décrit précédemment, il y a plusieurs considérations à prendre en compte :

  1. seules des gammes majeures sont présentes sur le clavier ;

  2. les deux claviers ont exactement la même structure, mais les notes de l’un ne sont pas au même endroit sur l’autre ;

  3. toutes les notes représentant la tonalité ou l’octave, les tierces et les quintes sont poussées ;

  4. toutes les notes représentant les autres intervalles sont tirées ;

  5. en poussant on change d’octave tous les trois boutons, mais tous les quatre boutons en tirant ;

  6. Une fois ceci bien présent à l’esprit on peut commencer à réfléchir…

Le point 1 nous permet de savoir que tous les intervalles entre notes seront d’une valeur bien précise, ce que nous reprendrons en détail un peu plus loin.

Le point 2 indique qu’une seule formule suffira pour les deux claviers, nonobstant un ajustement d’une quarte.

Les points 3 et 4 montrent que la détermination de la note à jouer avec la tonalité du clavier permettra de connaître non seulement le sens mais aussi le bouton.

Et le point 5 rend évident le fait qu’il n’est possible de calculer le bouton que si on connaît d’abord le sens. En fait le calcul pourrait se faire sans, mais ne serait exact que pour l’octave commençant au bouton 3.

La logique des algorithmes

Bien évidemment pour pouvoir travailler sur des notes de musique il faut les convertir en nombres. J’ai choisi de les numéroter à partir de zéro, ce qui est une convention usuelle en informatique, en commençant par le Do de la première octave. Ensuite on ajoute 1 pour chaque demi-ton. J’ai aussi choisi de numéroter les deux claviers 0 et 1, le 0 étant le clavier extérieur. Enfin le sens sera aussi codifié, 0 pour poussé et 1 pour tiré.

La conversion des notes en nombres peut se faire manuellement ou bien on peut regarder dans le tableau situé en Annexe 1, mais on peut aussi essayer d’automatiser cette opération. Cependant ceci fait appel à une fonction qui n’est pas de la pure mathématique, à savoir convertir une lettre en valeur chiffrée, laquelle est tout simplement le code ASCII utilisé par les ordinateurs. Nous considérerons donc pour l’instant que la valeur des notes est connue.

La méthode

Nous avons vu que les boutons en poussé (toujours en partant du 3) donnent successivement la tonalité du clavier, la tierce majeure et la quinte. Traduit en demi-tons cela donne la séquence suivante : 0 – 4 – 7, le zéro représentant un intervalle nul. Pour les boutons en tiré nous aurons de la même façon la séquence 2 – 5 – 9 – 11. Une fois tout remis ensemble on obtient la séquence 0 – 2 – 4 – 5 – 7 – 9 – 11, qui représente fort logiquement la répartition des tons et demi-tons dans une gamme majeure ; l’octave suivante commençant avec la valeur 12 qui est équivalente à zéro.

On voit bien que si l’on soustrait de la valeur d’une note suffisamment de fois la valeur 12 on retombera forcément sur l’un de ces nombres.

D’autre part, le nombre de fois où l’on aura soustrait 12 donnera le numéro de l’octave de la note. Entendons-nous bien : il s’agit d’une octave relative au clavier, et non de l’octave absolue de la note.

Reste à faire tout ça.

Les bases du calcul

Pour pouvoir calculer le bouton et le sens il nous faut des valeurs intermédiaires qui sont : la valeur relative de la note par rapport au clavier ;

l’octave relative de la note par rapport au clavier ;

l’intervalle entre la note à calculer et la note de base de l’octave relative (la tonique).

Calcul de la valeur relative

La première étape consiste à recaler l’échelle des valeurs de notes sur la tonalité du clavier. En effet quelle que soit la tonalité de celui-ci la note correspondante doit se trouver sur le bouton 3 poussé, donc par exemple pour un clavier en Sol 2 (valeur 19) la note 16 doit donner ce résultat, mais ce doit être la même chose pour la note 56 d’un clavier 56 etc. Donc on va logiquement soustraire la valeur de la tonalité du clavier de celle de la note, ce qui donnera une valeur relative zéro pour le fameux bouton 3 en poussé. On pourrait s’en satisfaire mais bien que les boutons 1 et 2 soient peu fiables en terme de standardisation il existe malgré tout des instruments où la logique globale du clavier s’y retrouve, donc pourquoi se priver de pouvoir aussi les calculer ? Il suffit d’ajouter 12 à la valeur précédemment déterminée pour que ce soit le bouton zéro (vous vous souvenez, celui qui n’existe pas) qui ait la valeur zéro, le bouton 3 poussé ayant maintenant la valeur relative 12.

La valeur relative d’une note s’écrit donc ainsi :

Comme nous avons vu que la tonalité du clavier intérieur est supérieure d’une quarte à celle du clavier intérieur, et que sa structure est la même, si on veut calculer une note du clavier intérieur il faut se recaler sur sa tonalité, à savoir la tonalité du clavier extérieur augmentée de 5 demi-tons. Donc il faudra ajouter 5 si on est sur le clavier intérieur, mais pas si on est sur l’extérieur. Le tout sans utiliser de formule conditionnelle. C’est là que l’on commence à comprendre l’intérêt d’avoir commencé les numérotations à zéro. En effet il suffit d’ajouter à la tonalité du clavier son numéro multiplié par 5 et le tour est joué. On aura bien 0 X 5 = 0 pour le clavier extérieur et 1 X 5 = 5 pour le clavier intérieur. On aurait pu numéroter les claviers 1 et 2 et ensuite soustraire 1 dans la formule, mais pourquoi se compliquer la vie ?

Voici la nouvelle version de la formule, valable pour les deux claviers :

Calcul de l’octave relative

Tout d’abord que cherche-t-on à obtenir comme résultat ? Pour les notes situées sous le bouton 3 (valeurs 0 à 11) on veut avoir zéro, pour celles entre le 3 et le 6 (valeurs 12 à 23) on veut 1, etc.

On voit tout de suite que la simple division de la valeur relative d’une note par 12 donnera ce résultat, pour peu qu’on ne garde que le chiffre avant la virgule, ce qui se nomme la partie entière.

Calcul de l’intervalle

Là c’est facile, si vous avez suivi jusqu’ici vous devez trouver tout seul…

On soustrait 12 de la valeur relative autant de fois que nécessaire, ce qui donnera l’intervalle. On utilise donc tout simplement la valeur de l’octave relative pour ce faire.

Regroupons tout ceci :

Calcul du sens

C’est le passage le plus compliqué…

En effet si la valeur de l’intervalle est de 0, 4 ou 7 on veut avoir comme résultat 0 (poussé) et si la valeur est 2,5,9 ou 11 on veut 1 (tiré).

En remettant tout ensemble on veut avoir ceci :

Intervalle Tonique 2nde 3ce 4te 5te 6te 7me
Valeur 0 2 4 5 7 9 11
Sens 0 1 0 1 0 1 1

Avec un peu d’intuition on devine que cette nouvelle séquence ressemble au reste d’une division par deux de la séquence suivante :

Reste à l’obtenir.

Commençons par diviser les valeurs des intervalles par 2, ce qui donne :

Les 3 premiers sont bons mais pas les suivants. Si on ajoute à tous la valeur 0,5 et qu’on ne garde ensuite que la partie entière on va déjà pas mal améliorer les choses :

Reste juste le dernier qu’il faut augmenter de 1 sans toucher aux autres, donc il nous faut donc trouver la formule qui donnera la séquence 0 – 0 – 0 – 0 – 0 – 0 – 1

Encore une fois la partie entière va nous sauver. Si on divise la séquence par un nombre approprié on doit pouvoir obtenir que les 6 premiers résultats soient inférieurs à 1, seul le dernier étant supérieur ou égal à 1. C’est tout simple et logique, il suffit de diviser par 6 et de prendre la partie entière du résultat.

Ensuite on ajoute cette valeur à la séquence, ce qui donne le résultat recherché :

Ensuite on doit calculer le reste de la division par 2. Comme les divisions effectuées par une machine, quelle qu’elle soit, donnent toujours un résultat décimal (avec une virgule) et non un quotient et un reste, on va devoir bricoler un peu pour n’avoir que le reste.

La division donnera :

Il suffit de retirer la partie entière et il reste :

que l’on multiplie par 2 tout simplement.

Comme ce genre de calculs sera fort probablement effectué sur ordinateur, il faut savoir qu’il existe un opérateur qui fait exactement ce travail, donner le reste d’une division : le modulo . On écrit modulo diviseur (valeur à calculer) . Afin d’alléger notre formule nous allons utiliser cet opérateur même si l’on voit bien qu’on peut y arriver uniquement avec les 5 opérateurs cités en début d’article.

En recollant tous les morceaux on aura :

Variante

On peut arriver au même résultat avec la démarche suivante :

  • prendre la partie entière de l’intervalle divisé par 5 ;
  • prendre la partie entière de cette nouvelle valeur divisée par 2 ;
  • ajouter ces deux valeurs à l’intervalle ;
  • prendre la partie entière de cette nouvelle valeur divisée par 2 ;
  • prendre le modulo 2 de cette dernière valeur.

Je vous laisse écrire vous-même les différentes séquences correspondant à cette méthode, laquelle est peut-être un peu plus complexe que la première.

Il est fort probable qu’on pourrait en trouver d’autres, à vous de jouer !

Calcul du bouton

Comme expliqué précédemment on va diviser ce calcul en deux étapes, le calcul du bouton de base de l’octave relative, puis celui du décalage .

Calcul du bouton de base

Le bouton de base est celui qui correspond à la première note jouée d’une octave donnée, que ce soit en poussant ou en tirant. On ajoutera ensuite au numéro de ce bouton un éventuel décalage en fonction de l’intervalle.

En poussant, le bouton de base de l’octave relative 0 est le bouton 0, pour l’octave 1 le 3, pour l’octave 2 le 6, etc. Donc c’est simple :

En tirant, si on doit multiplier par 4 et non 3 (puisqu’on a 4 notes tirées pour 3 poussées) on doit en outre retrancher 1 puisque c’est là aussi le bouton 3 qui est le bouton de base de l’octave 1 (ce qui tend à accréditer la thèse selon laquelle le clavier a commencé au bouton 3 à une certaine époque) :

Comment unifier la formule pour les deux claviers ? Si le sens est égal à 0 on multiplie par 3 et on retranche 0, s’il est égal à 1 on multiplie par 4 (3 + 1) et on soustrait 1…

La solution est triviale :

On a maintenant la valeur du bouton de base, il nous reste à trouver la valeur du décalage pour arriver à nos fins.

Calcul du décalage

On a vu que le décalage est une valeur à ajouter au bouton de base pour savoir si on utilise ce bouton ou l’un des boutons suivant.

Comme pour le calcul du sens il va falloir bricoler les valeurs des intervalles pour les transformer ainsi :

Intervalle Tonique 2nde 3ce 4te 5te 6te 7me
Valeur 0 2 4 5 7 9 11
Décalage 0 0 1 1 2 2 3

La démarche semble être la même sauf qu’ici on pense à un modulo 4.

Comme pour le calcul du sens on va diviser les valeurs des intervalles, mais cette fois-ci par 4. On obtiendra :

Si l’on pense en partie entière on constate qu’on est déjà pas mal près du but, sauf que les valeurs 1,75 et 2,75 sont trop faibles. Il faut donc ajouter à toutes les valeurs juste ce qu’il faut pour que ces deux valeurs (coup de chance, ce sont les seules à avoir 75 en partie décimale) passent à la partie entière supérieure sans que les autres ne le fassent. Il est clair qu’il suffit d’ajouter 0,25, ce qui donnera :

On prend ensuite la partie entière et le tour est joué.

Voici donc la formule :

Avouez que c’était facile…

Variante 1

  • ajouter 5 à la valeur de l’intervalle ;
  • diviser par 4 ;
  • prendre la partie entière ;
  • soustraire 1.

Variante 2

  • ajouter 3 à la valeur de l’intervalle et diviser par 2 ;
  • prendre la partie entière ;
  • soustraire 0,1 puis diviser par 2 ;
  • prendre la partie entière.

Comme précédemment je vous laisse le soin d’étudier les séquences obtenues et éventuellement en découvrir d’autres, le fin du fin étant de trouver la solution la plus compacte possible. Et pour ceux qui voudraient vraiment se faire chauffer les neurones on pourrait peut-être découvrir des corrélations entre les différentes méthodes.

Calcul du bouton

À ce stade on a quasiment fini, il suffit d’écrire :

et tout est terminé. Ou enfin presque, il reste à écrire les deux formules en un seul morceau (chacune). Pour abréger je prendrai les notations des tableurs, à savoir que :

  • plus, moins et divisé s’écrivent comme vous en avez l’habitude et comme je l’ai écrit jusqu’à maintenant ;
  • multiplié s’écrit * et non X ;
  • la partie entière s’écrit ENT(valeur) ;
  • le modulo s’écrit MOD(valeur ;diviseur)
  • il n’y a pas d’espaces entre les opérateurs et les valeurs qu’ils manipulent ;
  • les noms des valeurs de départ, intermédiaires et finales seront écrites d’un seul tenant avec des _ à la place des espaces et une initiale en majuscule.

Voici le résultat dans tout sa splendeur, en espérant que je ne sois pas trompé dans les parenthèses… Il faudra que je prenne le temps de tester.

Le sens

Le bouton

C’est pas beau un clavier de diato vu comme ça ?

Et encore j’aurais pu remplacer la variable Sens par sa formule dans celle du Bouton, on aurait quadruplé la longueur de la formule…

Conclusion

Vous êtes sûrement en train de vous dire que je suis fou-furieux et que tout ça ne sert à rien. Pas totalement, puisque j’ai envie de pouvoir générer des tablatures automatiquement à partir des partitions que je saisis dans mon logiciel de gravure de partitions préféré : Lilypond.

Je ne sais pas encore si ce sera possible mais une chose est certaine, ce ne le sera que parce que les calculs précédent le sont.

C’est notamment la raison majeure pour laquelle je ne me suis pas tellement attardé sur la transformation des notes en valeurs, car je suppose que le logiciel le fait déjà, et même si je dois transformer un peu les échelles, on a vu que ça ne me posait pas trop de problèmes…

Pour ceux qui voudraient s’amuser et faire des tests voici en annexe comme promis le tableau des notes, ainsi qu’une méthode possible pour les calculer.

Annexes

Annexe 1 : tableau des valeurs de notes

Comme promis voici un tableau de correspondance entre le nom des notes et leur octave réelle, et la valeur chiffrée que j’utilise.

J’aurais surement pu me dispenser de la première octave, et en rajouter une septième à la place en fin de tableau. J’avoue que j’ai fait ça de façon un peu automatique, si jamais il manquait des valeurs je modifierai ça à la demande.

Amusez-vous bien…

Note Valeur Note Valeur Note Valeur
Do 1 0 Do 3 24 Do 5 48
Do dièse 1 1 Do dièse 3 25 Do dièse 5 49
Ré 1 2 Ré 3 26 Ré 5 50
Ré dièse 1 3 Ré dièse 3 27 Ré dièse 5 51
Mi 1 4 Mi 3 28 Mi 5 52
Fa 1 5 Fa 3 29 Fa 5 53
Fa dièse 1 6 Fa dièse 3 30 Fa dièse 5 54
Sol 1 7 Sol 3 31 Sol 5 55
Sol dièse 1 8 Sol dièse 3 32 Sol dièse 5 56
La 1 9 La 3 33 La 5 57
La dièse 1 10 La dièse 3 34 La dièse 5 58
Si 1 11 Si 3 35 Si 5 59
Do 2 12 Do 4 36 Do 6 60
Do dièse 2 13 Do dièse 4 37 Do dièse 6 61
Ré 2 14 Ré 4 38 Ré 6 62
Ré dièse 2 15 Ré dièse 4 39 Ré dièse 6 63
Mi 2 16 Mi 4 40 Mi 6 64
Fa 2 17 Fa 4 41 Fa 6 65
Fa dièse 2 18 Fa dièse 4 42 Fa dièse 6 66
Sol 2 19 Sol 4 43 Sol 6 67
Sol dièse 2 20 Sol dièse 4 44 Sol dièse 6 68
La 2 21 La 4 45 La 6 69
La dièse 2 22 La dièse 4 46 La dièse 6 70
Si 2 23 Si 4 47 Si 6 71

Annexe 2 : calcul de la valeur de la note

C’est un calcul qui ne peut être absolu, tout dépend de la façon dont on décide d’écrire les notes. Pour faire simple, j’ai choisi de les écrire à l’anglo-saxonne, de A à G. J’écris également la valeur de l’octave (absolue cette fois-ci) de la note. Par contre je ne me suis pas soucié, pour les raisons évoquées plus haut, des altérations. Trop de notations possibles rendent toute tentative d’uniformisation impossible. C’est juste histoire de pondre encore un petit algorithme…

Pour récupérer la valeur ASCII de ces lettres, chaque langage utilise sa syntaxe, cela peut être CODE(lettre) ou ASC(lettre). Comme mon tableur (OpenOfice.xyz) utilise l’opérateur CODE je noterai cette opération de cette façon. Le code ASCII est une valeur qui va de 0 à 255 et qui permet de coder les lettres majuscules, minuscules, les chiffres, les ponctuations et autres caractères pseudo-graphiques. Comme les lettres majuscules et minuscules n’ont pas le même code ASCII il va encore falloir ruser…

En majuscules les lettres A à G ont les valeurs 65 à 71, et en minuscules les valeurs 97 à 103. On aimerait bien que quelle que soit la casse (majuscule ou minuscule) on ait une séquence de 1 à 7… Il serait curieux que seul le hasard ait fait qu’un simple modulo 32 fasse tout ça d’un seul coup et pourtant ça marche…

On écrit ça :

On a maintenant notre séquence, à ceci près qu’elle commence sur le A, (le La) alors qu’on voudrait le Do… En d’autres termes, il faut transformer la séquence suivante :

3 – 4 – 5 – 6 – 7 – 1 – 2 en 0 – 1 – 2 – 3 – 4 – 5 – 6 pour garder notre bonne habitude de commencer par le 0. On sait déjà qu’il suffit d’un bon vieux modulo 7, et pour que le 3 devienne 0 on devra lui ajouter 4, tout simplement.

Maintenant que nos notes sont dans le bon ordre, il va falloir leur affecter le bon nombr de demi-tons… Comme on n’écrit qu’une gamme majeure, on doit transformer :

0 – 1 – 2 – 3 – 4 – 5 – 6 en 0 – 2 – 4 – 5 – 7 – 9 – 11 ce qui doit vous rappeler quelque chose.

Si on multiplie basiquement par 2 on se doute bien que les quatrièmes et huitièmes degrés ne seront pas corrects. Comme on est maintenant bien habitué aux parties entières et autres astuces, on essaye de multiplier par 1,75 et on regarde la partie entière . On n’est pas loin, puisqu’on a la suite suivante :

il suffit de rajouter 0,5, de prendre la partie entière, et l’histoire est classée…

Ceci c’est pour la première octave, donc pour les suivantes on rajoutera 12, mais uniquement à partir de la deuxième, donc on devra soustraire 1 du numéro de l’octave, puisqu’en musique la première octave se numérote 1 et non 0.

Si la note est affectée d’un dièse ou d’un bémol on ajoute ou on retranche 1 mais ça c’est une autre histoire…

Bonne nuit les petits.

Bookmarquez le permalien.

Les commentaires sont clos.