[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
MSDL (Music Score Description Language
From: |
Jacques Menu |
Subject: |
MSDL (Music Score Description Language |
Date: |
Mon, 15 Mar 2021 23:06:09 +0100 |
Bonsoir tutti,
MSDL est un langage qui se veut proche des musicien-ne-s, tout en offrant des
possibilités pour les arrangeurs dans l’esprit de ce que font Edition Engraver,
arranger.ily et Abjad.
L’idée est de pouvoir réutiliser un même fragment de musique en différents
endroit en le manipulant, le transposant ou adaptant la dynamique et
l’accentuation pour les besoins de l'orchestration, par exemple.
MSDL est d’un peu plus haut niveau que LilyPond et de franchement plus haut
niveau que MusicXML.
Il peut être converti par un compilateur en du code LilyPond, musique braille,
MusicXML et Guido. La création de fichiers MIDI est à l’agenda, mais pas pour
tout de suite.
La suite de ce message montre les choix de conception et des exemples. La
version 1.001 du compilateur, baptisé msdl au niveau de la ligne de commande,
vient d’être mise à disposition sur le dépôt de la librairie libmusicxml2 de
Grame à Lyon.
Pour installer la librairie sur Linux, Windows ou Mac OS X, il faut avoir un
compilateur C++11 et cmake, et prendre la branche lilypond sur le dépôt de
Grame:
git clone -b lilypond https://github.com/grame-cncm/libmusicxml.git
libmusicxml-git
cd libmusicxml-git/build
make
Les executables se retrouvent dans build/bin.
Les mêmes fonctionalités peuvent être utilisées sans ligne de commande, comme
depuis un site web.
Les mots-clés du langage comme pitches/hauteurs sont réservés, comme dans les
langages de programmation, et ne sont pas introduits par un ‘\’ comme en
LilyPond.
Le langage est multilingue pour ce qui est des mots-clés, et on peut utiliser
le compilateur pour les traduire d’une langue dans une autre. Pour l’instant,
il y a le français et l’anglais, mais il est facile d’en ajouter d’autres si
l’on dispose de quelqu’un pour faire la traduction.
La syntaxe pour fournir les notes et autres éléments est très proche de celle
de LilyPond, avec une différence majeure quant à la barre verticale :
- elle indique non pas la fin d’une mesure, mais le fait que la musique
qui suit va dans la mesure indiquée, comme dans |2 c2.. d’’8, où ces deux notes
vont dans la mesure 2;
- il est ainsi possible de ‘déposer’ de la musique dans la partition,
comme un peintre met de la couleur par touches ou repasse où il en a déjà
déposé;
- cela permet de rentrer la musique non-linéairement, donc pas
strictement de gauche à droite dans des voix.
- c’est pour cette raison que staff/portée et voice/voix sont fondues
en une seule notion music/musique. Il peut y avoir plusieurs couches dedans,
selon les besoins du compositeur.
Cet emploi de ‘|’ est une suggestion de Jean Abou-Samra, que je trouve
excellente.
L’exemple joint UnPetitAir.msdl, qui lui est dû, montre comment on peut créer
une partition de piano avec cette approche.
Suite à des échanges avec Jean, il y aura prochainement :
|3 c1 % mesure 3
|-2 d2 e2 % 2 plus à gauche, donc la 1
|+1 g1 % 1 plus à droite, donc la 2
Je vais aussi ajouter le mode de saisie des octaves :
octaves absolute/absolues % par défaut, le seul actuellement
octaves relative/relatives
octaves fixed/fixees d’
Comme je n’en suis qu’au début, beaucoup de choses sont encore ouvertes dans
MSDL.
Je m’adresse à vous pour connaître vos idées sur ce qu’il serait bien d’avoir à
disposition dans un tel langage.
Je joins les fichiers produits par les commandes suivante, ainsi que des vues
du résultat :
msdl -lilypond HelloWorld.msdl -global-staff-size 40 -jianpu -o
HelloWorld_JIANPU.ly
msdl -musicxml HelloWorld.msdl -auto-output-file-name
Merci de votre aide!
JM
==========================================================================
Vue de HelloWorld.xml dans MuseScore :
==========================================================================
Premier exemple MSDL :
HelloWorld_JIANPU.ly
Description: Binary data
%{
The unavoidable HelloWorld score
%}
% the language used for the pitches
% -----------------------------------------------
pitches english % default is english
% is there an anacrusis?
% -----------------------------------------------
anacrusis % measure numbers start at 0
% the structure
% -----------------------------------------------
% score helloWorld = "Hello World in MSPL" {
music {
|1 c2.. d''8
||| % final bar
}
% } % helloWorld
==========================================================================
Le langage est multilingue pour ce qui est des mots-clés :
%{
Un exemple MSDL en français
%}
% l'identification
% -----------------------------------------------
titre "MSDL en français"
compositeur "A. N. Onyme"
% la langue pour les hauteurs de notes
% -----------------------------------------------
hauteurs francais % par défaut: english
% la partition
% -----------------------------------------------
partition bonjourToutLeMonde = "Bonjour tout le monde en MSDL" {
musique {
|1 do2.. re''8 % à placer dans la mesure 1
||| % double barre finale
}
} % bonjourToutLeMonde
==========================================================================
UnPetitAir.msdl
Description: Binary data