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

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

Re: scheme : récupérer la métrique


From: Olivier Miakinen
Subject: Re: scheme : récupérer la métrique
Date: Mon, 27 Apr 2015 09:14:02 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.6.0

Bonjour,

Je ne connais pas le scheme, mais j'ai pas mal pratiqué un dialecte du
lisp et ça me semble très proche. Je réponds comme si c'était du lisp,
les spécialistes me corrigeront.

Le 27/04/2015 08:51, Daniel Cartron a écrit :
> 
> getTimeSig = #(define-music-function (parser location music) (ly:music?)
>  ""
> (define beatLen 0)
> (define beatStr 0)
> (define beatNum 0)

Ok, tu définis trois variables globales.

>   (music-map
>     (lambda (evt)
>       (cond (eq? (ly:music-property music 'name) 'TimeSignatureMusic)
>         (let 

Définition et utilisation de variables locales.

>           (
>             (beatLen (ly:music-property evt 'denominator #f))
>             (beatStr (ly:music-property evt 'beat-structure #f))
>             (beatNum (ly:music-property evt 'numerator #f))
>           )

Les variables *locales* beatLen, beatStr et beatNum existent ici.

>         )

Ici elles n'existent plus. Les variables globales du début redeviennent
visibles, avec leur valeur 0.

>       )
>       evt
>      )
>      music
>   )
> )

Pour modifier la valeur des variables globales, en lisp je ferais ceci :

      (when (eq? (ly:music-property music 'name) 'TimeSignatureMusic)
            (setq beatLen (ly:music-property evt 'denominator #f))
            (setq beatStr (ly:music-property evt 'beat-structure #f))
            (setq beatNum (ly:music-property evt 'numerator #f))
      )

Est-ce la même chose en scheme ?



reply via email to

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