[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re:_Introduction_à_la_personnal isation_de_LilyPond
From: |
j-f.lucarelli |
Subject: |
Re: Re:_Introduction_à_la_personnal isation_de_LilyPond |
Date: |
Thu, 1 Apr 2010 04:25:50 +0200 |
>> 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
Merci pour ces éclaircissements, car le passage du Lilypond "classique" au
Lilypond "intelligent" se faisait jusqu'à présent par essais aléatoires, et
souvent échecs et abandon.
Mais à la réflexion, c'est vrai, il y a là un fossé difficile à franchir.
Comment aborder Scheme ? Où trouver un tutoriel basique, puis le minimum pour
l'utiliser avec Lilypond.
Pour celui qui a abandonné la programmation depuis plusieurs années, et resté
au stade des langages rigoureux tels le C, la difficulté est grande.
En tout cas, il y a des promesses de belles réalisations après le B-A-BA du
tutoriel de base Lilypond.
Bonne fin de nuit à tous,
Jean-François