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

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

Re: polymétries et mise en page


From: Valentin Villenave
Subject: Re: polymétries et mise en page
Date: Tue, 21 Apr 2020 21:20:37 +0000

On 4/21/20, Christian Lalune <address@hidden> wrote:
> Merci pour cette nouvelle solution qui fonctionne parfaitement.
> J’ai encore quelques heures d’études du scheme avant de comprendre
> votre fonction lambda (ctx).

Quelques commentaires :

\consists

%% C’est en fait un engraver en Scheme, même s’il est très minimal.

 #(lambda (ctx)

;; Et comme c’est un engraver, il va intervenir à un stade où les
contextes existent déjà (alors que les music-functions ne traitent que
la musique en amont). Je nomme "ctx" le contexte dans lequel il va
intervenir, quel qu’il soit.

    `((process-music .

;; Je souhaite intervenir au stade "process-music" ; il existe
différents stades dans le traitement (start-translation-timestep,
process-music, finalize etc.) donc ici c’est juste le nom du stade
souhaité. (Notez la syntaxe de type "alist".) Vous pouvez voir un
exemple dans le regression-test "scheme-engraver.ly".

   . ,(lambda (trans)

;; J’ouvre ici une deuxième procédure, sous forme d‘une fonction
lambda, qui devrait s’appliquer à un translator (mais en fait de toute
façon je n’en aurai pas besoin).

    (or (not (null?

;; Ceci pourrait aussi s’écrire (if (null? (ly:context-property etc.

    (ly:context-property ctx 'whichBar)))

;; Et c’est là tout le problème (et la raison pour laquelle la seule
solution était de passer par un engraver) : 'whichBar est une
context-property (et non une music-property). Elle n’existe qu’au
moment où la gravure de la partition est déjà bien entamée ; en ne
regardant _que_ l’expression musicale (comme avec une music-function)
il aurait été beaucoup plus difficile de savoir pour chaque temps à
quel stade on en est dans la mesure, à plus forte raison si les
chiffres de mesure changent en cours de route, s’il y a des situations
polyphoniques etc.

   (ly:context-set-property! ctx 'whichBar "")))

;; Et donc ça tombe bien, puisque c’est précisément dans ce même
contexte que je vais donner une définition à la propriété whichBar, ce
qui correspond exactement à ce que fait la commande \bar d’ordinaire
(vous pouvez voir sa définition dans music-functions-init.ly).

 )))

Cordialement,
V. V.



reply via email to

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