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: Gilles THIBAULT
Subject: Re: scheme : récupérer la métrique
Date: Mon, 27 Apr 2015 12:12:37 +0200
User-agent: KMail/4.12.5 (Linux/3.14.32-desktop-1.mga4; KDE/4.12.5; x86_64; ; )

 
> getTimeSig = #(define-music-function (parser location music) (ly:music?)
>  ""
> (define beatLen 0)
> (define beatStr 0)
> (define beatNum 0)
Pour des variables "globales, il faut mettre les define en dehors de la 
fonction.

>   (music-map
>     (lambda (evt)
>       (cond (eq? (ly:music-property music 'name) 'TimeSignatureMusic)
Je suppose que c'est (ly:music-property evt 'name) que tu veux.

Un truc comme ça devrait marcher.

%%%%%%%%%%%%%%%%%%%%%%
#(define beatLen 0)
#(define beatStr 0)
#(define beatNum 0)

getTimeSig = #(define-music-function (parser location music) (ly:music?)
 ""
  (music-map
    (lambda (evt)
      (if (eq? (ly:music-property evt 'name) 'TimeSignatureMusic)
        (begin
          (set! beatLen (ly:music-property evt 'denominator #f))
          (set! beatStr (ly:music-property evt 'beat-structure #f))
          (set! beatNum (ly:music-property evt 'numerator #f))))
      evt)
     music))

displayBeatVariables = #(define-music-function (parser location music) 
(ly:music?)
 ""
  (format #t " beatLen : ~a\n beatStr : ~a\n beatNum : ~a\n" beatLen beatStr 
beatNum)
  music)

    %%%%%%%%%%%
music = \relative c' {
  \time 7/4
  a4 b c e d f
}

{ \displayBeatVariables \getTimeSig \music}

-- 
Gilles



reply via email to

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