music21 est un logiciel de création et d'analyse de partitions.
Version actuelle : 9.9.1 du 2025 10 12.
Licence : GNU LGPL.
Plateforme :
Support : MusicXML, MIDI, Humdrum, ABC, Musedata.
Développeur(s) :
Il importe des fichiers aux formats MusicXML, MIDI, Humdrum, ABC et Musedata.
De nombreuses fonctions permettent retrouver toutes sortes d'informations dans un morceau de musique, comme sa tonalité, faire des statistiques sur les notes utilisées, afficher des graphiques sur l'utilisation des gammes majeures, etc...
Un certain nombre de partitions sont livrées avec, il suffit d'une commande pour les charger et jouer avec.
Malheureusement il faut pour l'instant entrer les notes en anglais même s'il est possible ensuite de les affficher en français.
Avec python il y a deux façons de taper des commandes :
Résultat :
Le programme renvoie F# minor, c'est-à-dire en français fa# mineur.
Normalement il doit répondre /usr/bin/musescore, cette info est à rajouter au début du programme python :
Le partition de Bach doit s'afficher dans MuseScore comme ci-dessous.
Ce qui donne :
En changeant la ligne n.lyric = n.name par n.lyric = pitch.Pitch(n.name).french on affiche les notes en français :
Licence
La licence de cet article est la Creative Commons suivante :
http://creativecommons.org/licenses/by-sa/2.5/deed.fr
Extrait :
voir la version intégrale de la licence
Table des matières
Informations
Site web officiel : https://www.music21.org/.
Version actuelle : 9.9.1 du 2025 10 12.
Licence : GNU LGPL.
Plateforme :
Support : MusicXML, MIDI, Humdrum, ABC, Musedata.
Développeur(s) :
Description
music21 permet de générer des partitions et surtout d'analyser les partitions existantes.Il importe des fichiers aux formats MusicXML, MIDI, Humdrum, ABC et Musedata.
De nombreuses fonctions permettent retrouver toutes sortes d'informations dans un morceau de musique, comme sa tonalité, faire des statistiques sur les notes utilisées, afficher des graphiques sur l'utilisation des gammes majeures, etc...
Utilisation
Pour utiliser music21 il faut savoir taper quelques lignes de python.Un certain nombre de partitions sont livrées avec, il suffit d'une commande pour les charger et jouer avec.
Malheureusement il faut pour l'instant entrer les notes en anglais même s'il est possible ensuite de les affficher en français.
Avec python il y a deux façons de taper des commandes :
- de manière interactive en lançant d'abord la commande python puis en tapant le code dans la console,
- ou avec le code écrit dans un fichier d'extension .py que l'on lance avec python monProgramme.py.
Affichage du nom des accords
Ce petit programme affiche le nom des accords do, mi, sol et do, mi, sol, si :Copy to clipboard
from music21 import chord print chord.Chord(['C','E','G']).pitchedCommonName print chord.Chord(['C','E','G','B']).pitchedCommonName
Résultat :
Copy to clipboard
C-major triad C-major seventh chord
Affichage de la tonalité d'un morceau
Le code suivant charge le morceau de Bach appelé bwv66.6 et affiche sa tonalité :Copy to clipboard
from music21 import * bach = corpus.parse( 'bwv66.6' ) key = bach.analyze('key') print key.tonic.name, key.mode
Le programme renvoie F# minor, c'est-à-dire en français fa# mineur.
Affichage d'une partition dans MuseScore
Pour utiliser MuseScore il faut dire à music21 où il se trouve. D'abord on va le chercher :Où est MuseScore?
Copy to clipboard
type musescore
Normalement il doit répondre /usr/bin/musescore, cette info est à rajouter au début du programme python :
Copy to clipboard
from music21 import * environment.set("musicxmlPath", "/usr/bin/musescore") sBach = corpus.parse('bach/bwv7.7') sBach.show()
Le partition de Bach doit s'afficher dans MuseScore comme ci-dessous.
Affichage avec le nom des notes
Maintenant on va prendre un bout de partition de Beethoven et afficher le nom des notes en anglais (c'est la valeur par défaut) :Copy to clipboard
from music21 import * environment.set("musicxmlPath", "/usr/bin/musescore") aScore = corpus.parseWork('beethoven/opus59no2', 3) print [e.id for e in aScore.parts] vlnPart = aScore.getElementById('Violin I.') mRange = vlnPart.measures(2,5) for n in mRange.flat.notesAndRests: if not n.isRest: n.lyric = n.name mRange.show()
Ce qui donne :
En changeant la ligne n.lyric = n.name par n.lyric = pitch.Pitch(n.name).french on affiche les notes en français :
Installation
[+]Liens et commentaires
Licence
La licence de cet article est la Creative Commons suivante :
http://creativecommons.org/licenses/by-sa/2.5/deed.fr
Extrait :
Paternité - Partage des Conditions Initiales à l'Identique 2.5
Vous êtes libres :
Selon les conditions suivantes :
À notez que :
Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...)
Vous êtes libres :
- de reproduire, distribuer et communiquer cette création au public
- de modifier cette création
- d'utiliser cette création à des fins commerciales
Selon les conditions suivantes :
- by: Paternité. Vous devez citer le nom de l'auteur original.
- sa: Partage des Conditions Initiales à l'identique. Si vous modifiez, transformez ou adaptez cette création, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci.
À notez que :
- À chaque réutilisation ou distribution, vous devez faire apparaître clairement aux autres les conditions contractuelles de mise à disposition de cette création.
- Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des droits.
Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...)
voir la version intégrale de la licence