Le langage abc et l'application abc2midi.exe

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.

Fichier moduleabc.txt

Description des fonctions de base

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

L'application abc(tabla)

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

Code du fichier abctabla.txt

from moduleabc import oterrythme from moduleabc import motifmelodie from moduleabc import abc from moduleabc import tablarythme from moduleabc import abcpara print("La fonction motifmelodie(motif,trans,tabla) transforme la tablature avec un motif de notes") print("Entrez une tablature") tabla=input() print("Entrez un motif sous la forme 3 1 32 par exemple") print("Entrez un motif") motif=input() print("Entrez une translation comme 2 par exemple") trans=input() tabla1=motifmelodie(motif,trans,tabla) print("Tablature avec motif",tabla1) print("Entrez un rythme ou return") rythme=input() if rythme != "" : tabla1=tablarythme(tabla1,rythme) print("Tablature avec rythme",tabla1) abctabla1=abc(tabla1) print("La fonction abc(tabla) transforme la tablature tabla en langage abc") print("voix1 ",abctabla1) abcparam=abcpara() fichier = open("test.abc", "w") fichier.write(abcparam) fichier.close() fichier = open("test.abc", "a") fichier.write("V:1\n") fichier.write(abctabla1) fichier.close()

Exemple abctablapoly.txt pour une tablature test.abc à quatre voix

Code du fichier abctablapoly.txt

from moduleabc import gamme from moduleabc import motifmelodie from moduleabc import abc from moduleabc import normaliser from moduleabc import tablarythme from moduleabc import abcpara print("Entrez la voix 1 ou return") tab1=input() if tab1=="" : tab1=gamme("C","maj") else : print("Entrez un motif de tablature pour la voix 1") motif=input() print("Entrez une translation") trans=input() tab1=motifmelodie(motif,trans,tab1) print("Tablature avec motif",tab1) print("Entrez un rythme ou return") rythme=input() if rythme != "" : tab1=tablarythme(tab1,rythme) print("Tablature avec rythme",tab1) print("Entrez la voix 2 ou return") tab2=input() if tab2 != "" : print("Entrez un motif de tablature pour la voix 2") motif=input() print("Entrez une translation") trans=input() tab2=motifmelodie(motif,trans,tab2) print("Tablature avec motif",tab2) print("Entrez un rythme ou return") rythme=input() if rythme != "" : tab2=tablarythme(tab2,rythme) print("Tablature avec rythme",tab2) print("Entrez la voix 3 ou return") tab3=input() if tab3 != "" : print("Entrez un motif de tablature pour la voix 3") motif=input() print("Entrez une translation") trans=input() tab3=motifmelodie(motif,trans,tab3) print("Tablature avec motif",tab3) print("Entrez un rythme ou return") rythme=input() if rythme != "" : tab3=tablarythme(tab3,rythme) print("Tablature avec rythme",tab3) print("Entrez la voix 4 ou return") tab4=input() if tab4 != "" : print("Entrez un motif de tablature pour la voix 4") motif=input() print("Entrez une translation") trans=input() tab4=motifmelodie(motif,trans,tab4) print("Tablature avec motif",tab4) print("Entrez un rythme ou return") rythme=input() if rythme != "" : tab4=tablarythme(tab4,rythme) print("Tablature avec rythme",tab4) abcparam=abcpara() fichier = open("test.abc", "w") fichier.write(abcparam) fichier.close() abctab1=abc(tab1) fichier = open("test.abc", "a") fichier.write("V:1\n") fichier.write(abctab1) fichier.close() abctab2=abc(tab2) fichier = open("test.abc", "a") fichier.write("\nV:2\n") fichier.write(abctab2) fichier.close() abctab3=abc(tab3) fichier = open("test.abc", "a") fichier.write("\nV:3\n") fichier.write(abctab3) fichier.close() abctab4=abc(tab4) fichier = open("test.abc", "a") fichier.write("\nV:4\n") fichier.write(abctab4) fichier.close()

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

Code du fichier abcpara.txt

from moduleabc import abcpara from moduleabc import abcparadefaut from moduleabc import abc from moduleabc import abctablanuance print("La fonction abcparam=abcpara(tab) définit les paramètres de la tablature abc") print("Vous pouvez les choisir ou les entrer par défaut") print("Entrez para ou return") para=input() if para=="" : abcparam=abcparadefaut() else : abcparam=abcpara() print("les paramètres choisis sont contenus dans la chaîne abcparam") print("abcparam",abcparam) print("L'application construit le fichier test.abc qui contient les paramètres choisis") fichier = open("test.abc", "w") fichier.write(abcparam) fichier.close() print("Entrez une tablature qui sera placée dans le fichier test.abc") tabla1=input() abctabla1=abc(tabla1) print("La fonction abc(tabla) transforme la tablature tabla en langage abc") print("voix1 ",abctabla1) fichier = open("test.abc", "a") fichier.write("V:1\n") fichier.write(abctabla1) fichier.close()

La fonction gamme

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.

Fichier de l'exemple gamme

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")

La fonction tablarythme

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)

La fonction mesuretabla

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)

La fonction abcrythme

On peut oter ou ajouter un rythme à une tablature

Fichier de l'exemple rythme

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)

La fonction tablanuance

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

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

La fonction intertab transforme une tablature en une suite d'intervalles.

Fichier de l'exemple inter

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 abcaccord

La fonction internomacc renvoie la suite d'intervalles qui correspond à un nom d'accord sans sa tonique, comme dim, sus4...par exemple

Fichier de l'exemple accord

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(inter)

La fonction mouve permet d'effectuer des mouvements des notes d'une suite d'intervalles.

Fichier abcmouve.txt

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(abctabla)

La fonction tablaabc transforme la tablature abc en une tablature plus accessible aux lecteurs d'écran

Fichier tablaabc.txt

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(abctabla)

La fonction tablapolyabc transforme la tablature abc de plusieurs voix en une tablature plus accessible aux lecteurs d'écran

Fichier tablapolyabc.txt

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)

Le module moduleabc.txt

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 choix

Si vous connaissez le langage abc, vous pouvez entrer votre tablature abc directement dans le fichier test.abc

Exemple d'un 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.

:

Fichier helpmoduleabc.txt

Retour dans la page index du site studyvoxmusi