lilypond-user
[Top][All Lists]
Advanced

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

Re: volta repeats with alternatives


From: Mats Bengtsson
Subject: Re: volta repeats with alternatives
Date: Tue, 04 Aug 2009 14:54:55 +0200
User-agent: Thunderbird 2.0.0.5 (X11/20070716)



Felix Krause wrote:
Hi all,

I have two problems with endings of volta repeats:

1) I have a volta repeat with an alternative ending, like this:

\override Score.BarNumber #'break-visibility = #'#(#t #t #t)
\repeat volta 2 { r4 f r f }
\alternative { { r f r f } {  r f r a, } }
d a d a

The two endings should have the same bar (=measure) number. But lilypond increments the bar number of the second ending by 1. This is pretty annoying, as I need to manually set the bar number, like this:

\override Score.BarNumber #'break-visibility = #'#(#t #t #t)
\repeat volta 2 { r4 f r f }
\alternative { { r f r f } {
\set Score.currentBarNumber = #2
r f r a, } }
d a d a

Is there a setting or something to do this automatically? Why isn't it done by default anyway? (btw: the override command is just used to demonstrate the problem, I only need the measure numbers at the beginning of each line.)
One alternative is to (mis)use the \partial command in the following way:
\relative c' {
\override Score.BarNumber #'break-visibility = #'#(#t #t #t)
\repeat volta 2 { r4 f r f }
\alternative { { r f r f } {
 \partial 1
 r f r a, } }
d a d a
}
As you can see from the typeset output, the difference is that it will not write out the bar numbers in the second repeat, but the subsequent bar numbers will be counted as if the first and second endings had the same bar number. At second thought, this method is not preferable if your second ending includes several measures. Even though, you can get the subsequent bar numbers the way you want them by inserting \partial 1*3 (or whatever number of measures), the full second ending will be counted as a single measure when it comes to the typesetting of automatic accidentals.

A perhaps better solution is to use some Scheme code, to add an offset to the current bar number:
\version "2.12.0"
% Inspired by http://lsr.dsi.unimi.it/LSR/Item?id=333
adjustBarNumber = #(define-music-function (parser location offset) (number?)
 (make-music 'ApplyContext
             'origin location
             'procedure (lambda (x)
              (begin
                (ly:context-set-property!
                 (ly:context-property-where-defined x 'internalBarNumber)
                 'internalBarNumber
                 (+ offset (ly:context-property x 'internalBarNumber)))
                (ly:context-set-property!
                 (ly:context-property-where-defined x 'currentBarNumber)
                 'currentBarNumber
                 (+ offset (ly:context-property x 'currentBarNumber)))))))

\relative c' {
\override Score.BarNumber #'break-visibility = #'#(#t #t #t)
\repeat volta 2 { r4 f r f }
\alternative { { r2 f r f } {
 \adjustBarNumber #-2
 r f r a, } }
d a d a
}

You don't have to understand how it works to use it, just copy the definition of adjustBarNumber and use it with \adjustBarNumber #-4 if you want to decrease the bar number by 4 or \adjustBarNumber #5 if you want to increase it by 5, for example.

   /Mats



2) I want to place a mark over the bar right after the second ending:

\repeat volta 2 { r4 f r f }
\alternative { { r f r f } {  r f r a, } }
\bar "||" \mark "A"
d a d a

The "A" is printed above the bar of the second ending - it would be prettier to have it right above the bar. I found this in the language reference to shorten the bars:

\repeat volta 2 { r4 f r f }
\alternative { { r f r f } {
\set Score.voltaSpannerDuration = #(ly:make-moment 3 4)
      r f r a, } }
\bar "||" \mark "A"
d a d a

Unfortunately, this closes the second bar with a vertical line for some reason. How do I make it stay open? (or how do I print the "A" to the same height as the bar without shortening it?)


Cheers,
Felix


_______________________________________________
lilypond-user mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/lilypond-user

--
=============================================
        Mats Bengtsson
        Signal Processing
        School of Electrical Engineering
        Royal Institute of Technology (KTH)
        SE-100 44  STOCKHOLM
        Sweden
        Phone: (+46) 8 790 8463                         
       Fax:   (+46) 8 790 7260
        Email: address@hidden
        WWW: http://www.s3.kth.se/~mabe
=============================================





reply via email to

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