lilypond-user
[Top][All Lists]
Advanced

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

Re: D.C. al fine


From: Noeck
Subject: Re: D.C. al fine
Date: Tue, 2 Feb 2016 15:54:55 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

Dear Graham, David, all,

I never used a real repeat structure for D.C. al Fine pieces. But your
example, Graham, does it very nicely. I put it into a little function
below which makes it easy to reuse. A \repeatsegno follows the same
lines. I would consider these four versions to be standard structures:
- D.C. al Fine: A F| B -> A B A
- D.S. al Fine: A |S B F| D -> A B D B
- D.C. al Coda: A C| B |C D -> A B A D
- D.S. al Coda: A |S B C| D |C E -> A B D B E
(|S = Segno, F| = Fine, C = Coda)

I know this has been discussed before [1] and found too hard to
implement for all cases as a general repeat structure interface.
But wouldn't it make sense to include some syntactic sugar like the
function below for these standard cases? Of course in general you can do
more with Segno, Coda, Fine than just these cases. But I think it would
help quite often.

If so, could it be done with the repeat command like this?
{ \repeat capofine 2 { a } { b } }
{ a \repeat segnofine 2 { b } { d } }
{ \repeat capocoda 2 { a } { b } { d } }
{ a \repeat segnocoda 2 { b } { d } { e } }
(Names are surely debatable.)

… or alternatively have some \fine, \coda, \segno commands (as such
commands or bar lines) that print the marks and the bar lines – lacking
the possibility to unfold.

Cheers,
Joram



And here the function:

\version "2.19.21"

repeatfine =
#(define-music-function (parser location firstpart secondpart)
(ly:music? ly:music?)
   #{
     \repeat volta 2 {
       $firstpart
       \bar "|."
       \once \override Score.RehearsalMark.self-alignment-X = #RIGHT
       \mark \markup { \bold "Fine" }
     }
     \alternative {
       {
         \set Score.repeatCommands = #'((volta #f))
         $secondpart
         \bar "||"
         \once \override Score.RehearsalMark.self-alignment-X = #RIGHT
         \mark "D.C. al Fine"
       }
       { }
     }
   #})


%% example
\relative {
  \repeatfine { a'2 b c d } { d c b c }
}


[1]:
http://lilypond.1069038.n5.nabble.com/Da-Capos-Codas-and-Segnos-td112830.html



reply via email to

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