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

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

Re: Ordre d'exécution


From: Cécile Huneau
Subject: Re: Ordre d'exécution
Date: Tue, 07 Dec 2010 01:32:41 +0100
User-agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6



Le 06/12/2010 23:47, Nicolas Sceaux a écrit :
J'ai du mal à comprendre ce qui se passe dans ton exemple, quoiqu'il en soit
voici une version qui fonctionne : en passant par des fonctions musicales on
garde un meilleur contrôle sur l'ordre d'exécution des opérations, et en
l'occurence sur l'ordre d'évaluation de la fonction d'incrément.

%%%     Numérotation des exos
#(let ((i 0))
    (set! lesson-number
          (lambda ()
           (set! i (1+ i))
           (format #f "~a" i))))

#(define-markup-command (exo layout props num) (number?)
    (interpret-markup layout props
                      (markup #:center-column (#:abs-fontsize 18 #:bold num))))

exoNumber =
#(define-music-function (parser location) ()
    (let ((mynum (exo-number)))
    #{ \set Staff.instrumentName = \markup \exo #$mynum #}))

Nicolas

Merci infiniment Maître ! Reconnaissance éternelle (au moins ça)
J'ai même réussi à comprendre le code :-)
Je note précieusement l'info pour les fonctions musicales.

Mais pourquoi étais-je persuadée qu'on ne pouvait pas mettre de \markup dans un bidule define-music-function ? J'avais également trouvé un cache misère écrit dans le plus pur esprit Shadokien. Rien que pour le sport, parce que je sais que certains ici décortiquent les fonctions scheme... voici comment se gratter l'oreille gauche avec la main droite :

%%%    Numérotation des exos
#(let ((j 1))
    (set! exo-number
        (lambda ()
            (set! j (1- j))
            (format #f "~a" j)))
    (set! exo-count
        (lambda ()
            (set! j (1+ j)))))

#(define-markup-command (exo-number-settings layout props) ()
    (interpret-markup layout props
        (let ((mynum (exo-number)))
            (markup #:center-column (#:abs-fontsize 18 #:bold mynum)))))

exoNumber = { \set Staff.instrumentName = \markup \exo-number-settings }
newExo = #(define-music-function (layout props) ()
    (let ((mynum (exo-count)))
        #{ #}))

\newExo \relative do'' {\exoNumber do4 do do re mi2 re do4 mi re re do1}
\newExo \relative do'' {\exoNumber re4 re re re la2 la re4 do si la sol1}

Je vous l'avais dit que c'était tordu !
Cette fois-ci bonne nuit !
Cécile



reply via email to

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