lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Introduction à la personnalisation de Lil yPond


From: Nicolas Sceaux
Subject: Re: Introduction à la personnalisation de Lil yPond
Date: Wed, 31 Mar 2010 21:37:02 +0200

Le 31 mars 2010 à 16:06, Loïc CHAHINE a écrit :

> J'ai récupéré dans un fichier la commande "tempoMark" définie comme suit :
> tempoMark = #(define-music-function (parser location markp) (string?)
> #{
>   \once \override Score.RehearsalMark #'self-alignment-X = #left
>   \once \override Score.RehearsalMark #'extra-spacing-width = #'(+inf.0 . 
> -inf.0)
>   \mark \markup { \italic $markp }
> #})

Avec `define-music-function', on définit une fonction qui construit de la 
musique,
ce qu'on appelle plus précisément : une expression musicale.
`define-music-function' est une construction en langage Scheme, en effet on voit
qu'elle est introduite par # : le dièse indique qu'on passe du langage LilyPond
au langage Scheme.  Alors, à l'intérieur de la construction 
`define-music-function',
il faut construire une expression musicale en Scheme.  Sans entrer dans les 
détails,
il y a quelques années c'était très compliqué.  On était obligé de passer par 
les
primitives de fabrication des expression musicales, telles que `make-music', et
c'était très verbeux.  À présent, c'est beaucoup plus simple : on peut utiliser
la syntaxe LilyPond à l'intérieur de la syntaxe Scheme, en utilisant  #{ ... #}.
Tout ce qui se trouve entre #{ et #} sera traité comme une expression en langage
LilyPond habituel.  Mieux : on peut faire référence à des variables scheme, tels
que les paramètres de `define-music-function' par exemple, dans l'expression
LilyPond à l'intérieur des #{ #}, en les précédant du caractère `$'.

Donc, l'expression suivante :

   #{ \mark \markup { \italic $markp } #}

où `markp' est l'argument de la commande, est interprétée comme si on écrivait 
en
langage LilyPond :

  \mark \markup { \italic \markp }

et c'est cette expression musicale qui est placée là où la function musicale
est appelée.

Voir <http://lilypond.org/doc/v2.13/Documentation/extending/music-functions>

Une note au passage : cette commande \tempoMark est obsolète, depuis que la
commande \tempo accepte un markup en argument.

Nicolas



reply via email to

[Prev in Thread] Current Thread [Next in Thread]