lilypond-user
[Top][All Lists]
Advanced

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

Re: Volta endings and using \set Score.repeatCommands


From: Stan Mulder
Subject: Re: Volta endings and using \set Score.repeatCommands
Date: Wed, 12 Apr 2017 00:11:09 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0

That worked Thomas. I used your next to last example because I'm not too worried about the midi. Thank you.

Stan


On 04/11/2017 05:22 AM, Thomas Morley wrote:
2017-04-10 3:45 GMT+02:00 Stan Mulder <address@hidden>:
Hi group.

I'm trying to construct a certain volta ending where there is a first and
second ending, but the first ending does a D.S. to the sign, while the the
second ending is a multiple repeat for solos. I seem to have made it render
correctly, but I keep getting this error. Hopefully this is enough code:


warning: already have a volta spanner, ending that one prematurely

[64]


DSalCoda = {
   \once \override Score.RehearsalMark.self-alignment-X = #RIGHT
   \mark \markup "D.S. al Coda"
}

voltaSolos = \markup { "2, 3, 4 . . ." }

   \alternative {
     {
       s1
       \DSalCoda
       \bar "||"
     }
     {
       \set Score.repeatCommands = #(list (list 'volta voltaSolos)
'start-repeat)
       s1
       \bar ":|."
     }
   }


Stan


Hi Stan,

(1) %%%%%%%%%%%%%%%%%%%

In general, the settings accepted in the argument-list for
repeatCommands may manually create repeats with or without alternative
endings.
Drawback: \unfoldRepeats doesn't work on those manual settings. See
the following example where simple repeats are done (manually and via
\repeat volta ...):

\unfoldRepeats
\relative {
   c''1
   \set Score.repeatCommands = #'(start-repeat)
   d4 e f g
   \set Score.repeatCommands = #'(end-repeat)
   c1
   \repeat volta 2 { d,4 e f g }
}

(2) %%%%%%%%%%%%%%%%%%%

If you don't care about midi you could do the following.
Note that 'start-repeat would be used to begin a (new) repeated
section, but _not_ to start an alternative ending. Don't use it here.

\repeat volta 2 { c'1 }
\alternative {
   {
     d'1
   }
   {
     \set Score.repeatCommands =
       #(list
         'end-repeat ;; print the ending repeat-bar
         '(volta #f) ;; finish first volta
         (list 'volta voltaSolos) ;; set text for second volta
         )
     e'
   }
}

Though, in your example you don't want the closing repeat-bar, but \bar "||".
Hence 'end-repeat should be deleted and to ensure a closing first
VoltaBracket use \allowVoltaHook "||" at top-level.

Full example:

\allowVoltaHook "||"

DSalCoda = {
   \once \override Score.RehearsalMark.self-alignment-X = #RIGHT
   \mark \markup "D.S. al Coda"
}

voltaSolos = \markup { "2, 3, 4 . . ." }

\repeat volta 2 {c4 c c c }
\alternative {
   {
     c4 c c c
     \DSalCoda
     \bar "||"
   }
   {
     \set Score.repeatCommands = #(list '(volta #f) (list 'volta voltaSolos) )
     c4 c c c
     \bar ":|."
   }
}

(3) %%%%%%%%%%%%%%%%%%%

If you need unfoldRepeats, an override may fit better:

\allowVoltaHook "||"

DSalCoda = {
   \once \override Score.RehearsalMark.self-alignment-X = #RIGHT
   \mark \markup "D.S. al Coda"
}

voltaSolos = \markup { "2, 3, 4 . . ." }


voltaTxt =
     \once \override Score.VoltaBracket.before-line-breaking =
     #(lambda (grob) (ly:grob-set-property! grob 'text voltaSolos))

%\unfoldRepeats
\repeat volta 2 {c4 c c c }
\alternative {
   {
     c4 c c c
     \DSalCoda
     \bar "||"
   }
   {
       \voltaTxt
     c4 c c c
     \bar ":|."
   }
}



HTH,
   Harm





reply via email to

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