lilypond-user
[Top][All Lists]
Advanced

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

Re: Repeat volta not at beginning of piece doesn't get initial repeat ba


From: Thomas Morley
Subject: Re: Repeat volta not at beginning of piece doesn't get initial repeat bar line
Date: Fri, 18 Jul 2014 11:26:38 +0200

2014-07-17 19:29 GMT+02:00 John McWilliam <address@hidden>:
> I am deeply grateful for sorting out these problems associated with the
> bagpipe tune format and in particular those associated with repeats. I have
> another irritating glitch in the same grain. A measure can have two
> alternative structures depending on whether it is played the first or second
> time. This is illustrated in the following snippet. My approach to this
> works, however, i get a warning: "already have a volta spanner, ending that
> one prematurely" and the second spanner remains open to the right. Any
> suggestions will be most welcome.
>
> \version "2.18.0"
>
> music = \relative c''' {
>         \key c \major
>         \time 2/4
>         \bar ".|:"

Why not use \repeat volta 2 { ... } here?

>     \set Score.repeatCommands = #'(start-repeat)
>     \partial 8 g8
>     a16. [g32 a16. f32] e8 [c32 a16.]
>     a8 a'16. [e32 f16. e32] c32 a16.
>     a'16. [g32 a16. e32] c32 [e16. a,16. e'32]
>     c8 b b[ g']
>     \break
>
>     \set Score.measureLength = #(ly:make-moment 5 8)
>     a16. g32 a16. f32 e8
>     \set Score.repeatCommands = #'((volta "1.")) c32 [ a16.]

You can't accumulate different repeatCommands at the same point of
time, one will override the other.
Put the settings in one list as shown below.

Or use my setRepeatCommand-function from
http://lists.gnu.org/archive/html/lilypond-user/2014-07/msg00376.html
This custom function was developed for exactly this reason: to
accumulate repeatCommands.

Additionally, because we're mid-measure and no BarLine is present,
there will be no gap between the two VoltaBrackets.
I'd insert 'end-repeat (will print bar-line-type ":|.") and make this
BarLine (and the SpanBar) transparent.
See below.

>     \set Score.repeatCommands = #'((volta #f))
>     \set Score.repeatCommands = #'((volta "2.")) c32 [e16.]
>     \set Score.repeatCommands = #'((volta #f))

The VoltaBracket will not be closed, because the volta-hook isn't
allowed for bar-type "|"
This can be changed, ofcourse.
You might be interested in this recent thread, too:
http://lilypond.1069038.n5.nabble.com/Adding-right-side-to-volta-bracket-spanner-td164571.html

>     \set Score.measureLength = #(ly:make-moment 4/8)
>     a,8 a'16. e32 f16. e32 c32 a16.
>     b16.[ c32 d16. e32] f32 [ a16. e16. b32]
>     c8 [a] a
>     \set Score.repeatCommands = #'(end-repeat)
>     \break
> } % end relative
>
> \score {
>    \new Staff \music
> }


Now the code as I'd do it:

\version "2.18.0"

#(allow-volta-hook "|")

music = \relative c''' {
        \key c \major
        \time 2/4
        \bar ".|:"

        \repeat volta 2 {
          \partial 8 g8
          a16. [g32 a16. f32] e8 [c32 a16.]
          a8 a'16. [e32 f16. e32] c32 a16.
          a'16. [g32 a16. e32] c32 [e16. a,16. e'32]
          c8 b b[ g']
          \break
          \set Score.measureLength = #(ly:make-moment 5 8)
          a16. g32 a16. f32 e8
          \set Score.repeatCommands = #'((volta "1."))
          c32 [ a16.]
          \once \hide Score.BarLine
          \once \hide Score.SpanBar
          \set Score.repeatCommands = #'((volta #f)(volta "2.") end-repeat)
          c32 [e16.]
          \set Score.repeatCommands = #'((volta #f))

          \set Score.measureLength = #(ly:make-moment 4/8)
          a,8 a'16. e32 f16. e32 c32 a16.
          b16.[ c32 d16. e32] f32 [ a16. e16. b32]
          c8 [a] a
        }
        \break
} % end relative

\score {
   \new Staff \music
}

HTH,
  Harm

P.S.
No need to send me a second private mail, with the same content.
I read the list :)
Ofcourse you can cc me.



reply via email to

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