On a décrit l'intéret d'utiliser le langage abc pour l'écriture des tablatures musicales.
Sommaire du langage abc du site studyvox.biwi.ca
On peut utiliser le langage python pourconstruire des exemples de tablatures abc, qui peuvent servir d'illustrations sonores pour un cours d'harmonie.
On a construit des fonctions pour le traitement des gammes, des accords, des arpèges...
Elles permettent de créer des exercices sonores pour le travail de la technique d'un instrument, en utilisant des motifs de notes et de rythme.
Leurs codes sont placés dans le fichier moduleabc.txt.
Les exemples ci-dessous décrivent comment utiliser les fonctions du moduleabc.txt, pour des exercices d'harmonie.
Pour chaque exemple, vous pouvez copier le code en langage python, qui vous permettront de créer un fichier test.abc qui pourra construire l'exemple sonore test1.mid par l'application abc2midi test.abc
On a décrit la notation des tablature sous une forme qui est un peu différente de la notation abc, pour la rendre plus accessible aux lecteurs d'écran.
La différence concerne surtout l'écriture des altérations qui sont placées à la suite des notes plutôt que devant celles-ci.
Pour les notes diézées, on utilise le symbole # au lieu du symbole ^
La fonction abc transforme une tablature en notation abc que l'on placera dans le fichier test.abc
L'application abc2midi.exe transformera test.abc en test1.mid
Les exemples abctabla et abctablapoly montrent comment créer des tablatures test.abc d'une voix ou de quatre voix avec des paramètres de votre choix.
Exemple abctabla.txt d'une tablature abc à une seule voix
Exemple abctablapoly.txt pour une tablature test.abc à quatre voix
Les fichiers abc utilisent des paramètres pour définir la tonalité, la mesure, l'instrument midi...
La fonction abcpara permet de choisir ces paramètres qu'elle place au début du fichier test.abc
Exemple abcpara.txt">Exemple abcpara.txt
Elle construit les gammes dans toute les tonalités sur 4 octaves.
On peut alors utiliser des fonctions pour construire leurs accords constitutifs et les jouer avec des motifs de notes de votre choix.
Si vous n'arrivez pas à copier le fichier gamme.txt, copiez son code ci-dessous.
from moduleabc import gamme from moduleabc import gammebemol from moduleabc import gammeaccord from moduleabc import gammemotif print("La fonction gamme(ton,mode) construit une tablature de 4 gammes dans la tonalité d'un ton et d'un mode choisis") print("Les tons peuvent être choisis parmi les 12 tons C C# D D#...") print("Les modes peuvent être choisis parmi maj min mel har pen ton demiton chr") print("tabla=gamme(ton,mode)") ton="G" print("ton",ton) mode="mel" print("mode",mode) tabla=gamme(ton,mode) print("gamme(ton,mode)",tabla) print("Pour une gamme avec des bémols, on utilise la fonction gammebemol(ton,mode)") ton="B-" print("ton",ton) mode="har" print("mode",mode) tabla=gammebemol(ton,mode) print("gammebemol(ton,mode)",tabla) print("Lafonction gammeaccord(ton,mode,echelle) construit les accords constitutifs d'une gamme d'une tonalité situés sur les degrés I II III...") ton="C#" print("ton",ton) mode="maj" print("mode",mode) echelle="V" print("echelle",echelle) accord=gammeaccord(ton,mode,echelle) print("accord=gammeaccord(ton,mode,echelle)") print("accord",accord) print("La fonction gammemotif construit une tablature de tonalité ton mode avec un motif de notes motif") print("tabla=gammemotif(ton,mode,motif)") ton="E" print("ton",ton) mode="mel" print("mode",mode) motif="4 2 3 1" tabla=gammemotif(ton,mode,motif) print("tabla",tabla) print("la variable motif est une chaîne de caractères qui contient les chiffres qui indiquent la position des notes de la gamme")
On peut oter ou ajouter un rythme avec des nuances à une tablature
Fichier de l'exemple tablarythme
Code du fichier tablarythme.txt from moduleabc import tablarythme from moduleabc import normaliser from moduleabc import oterrythme print("Entrez une tablature avec ou sans rythmes sans nuances") tabla=input() print("Entrez un rythme sous la forme !f!2 1/4 1/4 !p!/2 par exemple ou return") rythme=input() if rythme=="" : print("Un rythme contient des indications de nuance comme !ppp! !f! ... ainsi que la durée des notes comme 2 1/4 1/2 par exemple") rythme="!f!2 1/2 1/2 !p!" tabla=tablarythme(tabla,rythme) print("tablature avec rythme et nuances",tabla)
On peut choisir les mesures d'une tablature qui contient des barres de mesures.
Fichier de l'exemple mesuretabla
Code du fichier mesuretabla.txt from moduleabc import tablarythme from moduleabc import normaliser from moduleabc import oterrythme from moduleabc import gamme from moduleabc import mesuretabla print("Entrez une tablature avec ou sans rythmes sans nuances") tabla=input() print("Entrez un rythme sous la forme !f!2 1/4 1/4 !p!/2| par exemple ou return") rythme=input() if rythme=="" : print("Un rythme contient des indications de nuance comme !ppp! !f! ... ainsi que la durée des notes comme 2 1/4 1/2 par exemple") rythme="!f!2 1/2 1/2 !p!" tabla=tablarythme(tabla,rythme) print("tablature avec rythme et nuances",tabla) print("On indique la fin d'une mesure par une barre verticale collée à une durée comme 1 1 1 1| pour une mesure 4/4") print("Le motif de rythme est répété pour toutes les notes de la tablature") tabla=gamme("C","maj") tabla=tablarythme(tabla,"1 1 1 1| 2 1 1|") print("gammes de Do majeur avec des mesures 4/4") print(tabla) tabla=mesuretabla(tabla,3,4) print("mesures de la mesure 3 à la mesure 6",tabla)
On peut oter ou ajouter un rythme à une tablature
Code du fichier abcrythme.txt from moduleabc import oterrythme from moduleabc import ajouter print("On définit le rythme d'une note en la faisant suivre d'un nombre comme 4 2 1/2 1/4 3/2...") print("Entrez une tablature avec rythme") tabla=input() print("La fonction oterrythme(tabla) retire le rythme de la tablature tabla") tabla=oterrythme(tabla) print("Tablature sans rythme",tabla) print("Un rythme est une suite de nombre qui définissent le rythme des notes successives comme 1 1/2 1/2 1 par exemple") print("Entrez un rythme") rythme=input() print("La fonction notes(tabla,rythme) renvoie le tableau des notes de tabla avec leurs rythmes") if rythme !="" : notestablarythme=ajouter(tabla,rythme) tabla1="" for j in range(256) : print(notestablarythme[j]) tabla1=tabla1+notestablarythme[j] else : tabla1=tabla print("Tablature avec le rythme choisi",tabla1)
On peut ajouter des nuances à une tablature
Fichier de l'exemple tablanuance
Code du fichier tablanuance.txt from moduleabc import tablanuance from moduleabc import notes from moduleabc import normaliser print("Entrez une tablature avec rythmes sans nuances") tabla=input() print("Entrez un motif de nuances ou return") nuance=input() if nuance=="" : print("Par exemple 2!ff! 4!ppp! pour jouer la note 2 forte et la note 4 pianissimo") nuance="2!ff! 4!ppp!" tabla=tablanuance(tabla,nuance) print("tabla avec nuances",tabla)
La fonction motifmelodie transforme une tablature avec un motif de notes et avec une translation.
Fichier de l'exemple motifmelodie
Code du fichier motifmelodie.txt
from moduleabc import motifmelodie print("La fonction motifmelodie(motif,trans,melodie) construit une tablature avec une translation de motif de notes à partir de la tablature melodie") notestabla=[] for i in range(256) : notestabla.append(" ") print("Entrez une tablature") tabla=input() print("Entrez un motif") motif=input() print("Entrez une translation") trans=input() tabla=motifmelodie(motif,trans,tabla) print("tabla",tabla)La fonction intertab transforme une tablature en une suite d'intervalles.
Code du fichier abcinter.txt
from moduleabc import intertab from moduleabc import decodetabinter print("Entrez une tablature") tabla=input() print("Lafonction intertab transforme une tablature en une suite d'intervalles") intertabla=intertab(tabla) print("intertabla",intertabla) print("Entrez une suite d'intervalles qui commence par une note") suiteinter=input() print("Lafonction decodetabinter transforme une suite d'intervalles qui commence par une note en une tablature") tabla=decodetabinter(suiteinter) print("suiteinter décodée",tabla)La fonction internomacc renvoie la suite d'intervalles qui correspond à un nom d'accord sans sa tonique, comme dim, sus4...par exemple
Code du fichier abcaccord.txt
from moduleabc import decodetabinter from moduleabc import internomacc print("Entrez un nom d'accord sans sa tonique comme dim7 par exemple") nom=input() print("La fonction internomacc construit la suite d'intervalles qui correspond au nom d'un accord sans sa tonique") tabinter=internomacc(nom) print("tabinter",tabinter) print("Entrez la tonique du nom d'un accord sans tonique") ton=input() tabinter=ton+tabinter print(tabinter) print("La fonction decodetabinter décode une suite d'intervalles qui commence par une note en une tablature") tabla=decodetabinter(tabinter) print("tabinter décodée",tabla)
La fonction mouve permet d'effectuer des mouvements des notes d'une suite d'intervalles.
Code du fichier abcmouve.txt :
from moduleabc import mouve from moduleabc import decodetabinter print("La fonction mouve(inter) permet de déplacer des notes dans une suite d'intervalles") print("Par exemple -ttt donnera la suite Ttt par mouvement d'un demiton descendant de la première note de la suite") print("++ correspond à un déplacement ascendant de deux demi-tons") print("Par exemple t++Q=Qt") print("Entrez une suite d'intervalles avec déplacements") suiteinter=input() mouvetablainter=[] for i in range(256) : mouvetablainter.append(" ") mouvetablainter=mouve(suiteinter) print("Entrez un ton") ton=input() suiteinter=ton for j in range(3) : print(mouvetablainter[j]) suiteinter=suiteinter+mouvetablainter[j] print(suiteinter) tabla=decodetabinter(suiteinter) print("suite inter décodée",tabla)La fonction tablaabc transforme la tablature abc en une tablature plus accessible aux lecteurs d'écran
Code du fichier tablaabc.txt :
from moduleabc import tablapara from moduleabc import tablaabc from moduleabc import abcpara from moduleabc import abc print("la fonction tablapara transforme les paramètres d'un fichier abc en paramètres pour une tablature.") fichier = open("test.abc", "r") abctabla=fichier.read() fichier.close() para=tablapara(abctabla) print("para",para) print("La fonction tablaabc transforme une tablature abc en tablature plus accessible aux lecteurs d'écran.") tabla=tablaabc(abctabla) print("tabla",tabla) print("La fonction abcpara permet de choisir les paramètres d'une tablature abc") abcparam=abcpara() print(abcparam) fichier = open("test.abc", "w") fichier.write(abcparam) fichier.close() print("tablaabc est l'inverse de la fonction abc(tabla) qui transforme une tablature en langage abc.") abctab=abc(tabla) print("abctab",abctab) fichier = open("test.abc", "a") fichier.write("V:1\n") fichier.write(abctab) fichier.close() print("La tablature abc est lue ou écrite dans le fichier test.abc")
La fonction tablapolyabc transforme la tablature abc de plusieurs voix en une tablature plus accessible aux lecteurs d'écran
Code du fichier tablapolyabc.txt :
from moduleabc import tablapolyabc fichier = open("test.abc", "r") abctabla=fichier.read() fichier.close() print("La fonction tablapolyabc transforme une tablature abc de plusieurs voix en une tablature plus accessible aux lecteurs d'ecran") tabla=tablapolyabc(abctabla) print("tabla",tabla)Pour pouvoir utiliser les fonctions du moduleabc.txt, vous devez installer une version de python supérieure ou égale à la version 3.9
Ensuite, copiez le fichier moduleabc.txt dans un fichier moduleabc.py
Exécutez python abctabla.txt ou python abctablapoly.txt pour construire le fichier test.abc d'une voix ou de quatre voix, avec une tablature de votre choixSi vous connaissez le langage abc, vous pouvez entrer votre tablature abc directement dans le fichier test.abc
Téléchargez l'application abc2midi.exe dans le même répertoire que celui du fichier test.abc, puis lancez la commande abc2midi test.abc pour construire l'exemple test1.mid
Exemple d'un fichier test1.mid
Si vous voulez construire par vous- même des exemples musicaux avec le module moduleabc, consultez le fichier d'aide ci-dessous, qui contient les noms des fonctions du projet.
: