lilypond-user
[Top][All Lists]
Advanced

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

Multi-measure rest with measure numbers


From: Jay Anderson
Subject: Multi-measure rest with measure numbers
Date: Sat, 22 Jan 2011 14:26:00 -0700

Essentially, I want to write R1*10 and have it be equivalent to
writing something like R1*10_"[101-110]". I've never played with
engravers before so this seemed like a good excuse. I have the minimal
start below. Questions:
- How do I create and attach the multi-measure rest text? I can use
make-music to create the text event, but I'm not sure what to do with
it.

Thanks for the help.

-----Jay


\version "2.13.46"

#(define (make-multimeasure-text-event text)
   (make-music
     'MultiMeasureTextEvent
     'direction
     -1
     'text
     text
     'tags
     '()))

#(define mmrest-num-engraver
   (lambda (context)
     `((acknowledgers
         (multi-measure-rest-interface
           .
           ,(lambda (engraver grob source-engraver)
              (let* ((start-num (ly:context-property context 'currentBarNumber))
                     (rest-duration (ly:duration-length
(ly:prob-property (ly:grob-property grob 'cause) 'duration)))
                     (measure-length (ly:context-property context
'measureLength))
                     (measure-count (ly:moment-div rest-duration
measure-length))
                     (end-num (+ (- start-num 1)
(ly:moment-main-numerator measure-count)))
                     (text (string-append "[" (number->string
start-num) "-" (number->string end-num) "]")))
                (display text))))))))

\score
{
  \new Staff
  \with { \consists #mmrest-num-engraver }
  \relative c'
  {
    \time 4/4
    \compressFullBarRests
    R1*10 | % => R1*10_"[1-10]" |
    c1 |
    R1*5 |
    c1 |
    R1 |
    \time 3/4
    c2. |
    R2.*3 |
    R1.*2 |
  }
}



reply via email to

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