lilypond-user
[Top][All Lists]
Advanced

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

Re: synchronizing other parts w/cadenza


From: Thomas Morley
Subject: Re: synchronizing other parts w/cadenza
Date: Mon, 23 Jan 2012 23:54:39 +0100

Hi Giles,

2012/1/23 Gilles <address@hidden>:
>
>>> It is possible with ly:music-compress , to make a function that fit all
>>> kind of music
>>> cadenzaToMusic = [...]
>
>
> Oops ! Rethinking of the function cadenzaToMusic, I realized that i forgot
> the case of the user entering a 0 length music ( s1*0 for example).
> This version should really work for all musics
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>
> \layout {
>  \context {
>    \Staff
>    \remove "Time_signature_engraver"
>  }
> }
>
> cadenzaToMusic =
> #(define-music-function (parser location cadenzaMusic music)
>                                                  (ly:music? ly:music?)
> "Adjust the length of `music and the measureLength, to fit the length of
> `cadenzaMusic"
> (let* ((clen (ly:music-length cadenzaMusic))
>       (mlen (ly:music-length music))
>       (factor (ly:moment-div clen mlen))
>               ; (return <mom 0> for mlen = <mom 0>)
>       (compressed (if (equal? mlen (ly:make-moment 0 1)) ; 0 length
>          (make-sequential-music (list music (skip-of-length cadenzaMusic)))
>          (ly:music-compress music factor))))
>  ;;(format #t "factor : ~a\n" factor)
>
>  #{
>    \set Timing.measureLength = $clen
>    $compressed
>    \unset Timing.measureLength
>  #}))
>
> cadenzaText = \markup \box "cadenza!"
> cnotes = \relative c'' { c8[ d e f g] }
> snotes = \cadenzaToMusic \cnotes s1_\cadenzaText
> mnotes = \cadenzaToMusic \cnotes R1^\fermataMarkup_\cadenzaText
> nnotes = \cadenzaToMusic \cnotes \relative c''
>                            { c2^\fermata _\cadenzaText d^\fermata }
> zeroLength = \cadenzaToMusic \cnotes s1*0_\cadenzaText
>
>
> \score {
>  <<
>    \new Staff \cnotes
>    \new Staff \mnotes
>    \new Staff \snotes
>    \new Staff \nnotes
>    \new Staff \zeroLength
>  >>
> }
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Thanks a lot,
  Harm



reply via email to

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