lilypond-user
[Top][All Lists]
Advanced

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

Shapenote Repeats and Breaks


From: Leland Kusmer
Subject: Shapenote Repeats and Breaks
Date: Sat, 20 Mar 2010 13:36:01 -0400

Hello!

I'm a (sometimes) composer of shapenote music, in the style of the
Sacred Harp, and have been working on a particular issue.

Sacred Harp music has different glyphs for repeat barlines, and
different conventions for using them. The glyph usually uses only one,
heavy barline (rather than two, unless at the end of the piece), and
four dots instead of two. (See below for the stencils I've been using
for this.) When a repeat occurs at the beginning of a line or
mid-measure, however, only the four dots are used, with no barline at
all.

My issue is this: Traditionally, when a repeat sign coincides with a
line-break, the previous line should end with a normal barline, and
the new line should start with just four dots (following the key
signature). However, when use use \override to replace the repeat sign
with my stencil, Lilypond insists on adding a warning repeat at the
end of the previous line, such that the first line ends in four dots
rather than a barline.

By setting break-visibility to end-of-line-invisible, I can surpress
the end-of-line four dots, leaving the first line entirely without a
closing barline. I can't find a way to force Lilypond to differentiate
between the end-of-line barline and the beginning-of-line one,
however. Is there a way to do this?

Example code including relevant stencils below.

Thanks!
-Leland


%%%%% Start Example %%%%%%%%

\version "2.12.2"

# (define (barDotFn grob)
  (interpret-markup
   (ly:grob-layout grob)
   '(((baseline-skip . 1) (word-space . 0.4) (thickness . 1.9)))
   (markup
     #:right-align
     #:vcenter
     #:line (
     #:vcenter
     #:column (#:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0  )
     #:hspace 0.1
     #:raise 2 #:override '(thickness . 5) #:draw-line '(0 . -4) ) ) ))


# (define (barDotFnD grob)
  (interpret-markup
   (ly:grob-layout grob)
   '(((baseline-skip . 1) (word-space . 0.4) (thickness . 1.9)))
   (markup
     #:right-align
     #:vcenter
     #:line (
     #:vcenter
     #:column (#:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0  )
     #:hspace 0.1
     #:raise 2 #:override '(thickness . 5) #:draw-line '(0 . -4) )
     #:hspace 0.1
     #:raise 2 #:override '(thickness . 5) #:draw-line '(0 . -4) ) ) )


# (define (dotFn grob)
  (interpret-markup
   (ly:grob-layout grob)
   '(((baseline-skip . 1) (word-space . 0.8) (thickness . 3)))
   (markup
     #:right-align
     #:vcenter
     #:line (
     #:vcenter
     #:column (#:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0
                   #:filled-box '(0 . 0.35) '(0 . 0.35) 0  )
     ) ) ))


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


global = {
  \key d \minor
  \time 4/4
  \set shapeNoteStyles = #'#(la mi fa #f la fa #f la)
  \once \override Score.BreakAlignment #'break-align-orders =
        #(make-vector 3 '(left-edge
                          clef
                          key-signature
                          time-signature
                          staff-bar
                          ))
}


tenorMusic = \relative c'' {

    f4 f g2 | a f4 d | d1 | \bar "||"
    \break

        \once \override Score.BarLine #'break-visibility = 
#end-of-line-invisible

    \repeat volta 2 {
        \once \override Staff.BarLine #'stencil = #dotFn
                \bar "|:"
        a4 c d2 | e f4 e | d c2. |
        
        \once \override Staff.BarLine #'stencil = #barDotFnD
    }
    \bar "|."
}


\score {
  \new ChoirStaff <<
    \new Staff = tenor <<
      \new Voice = "tenor" {
        \global \tenorMusic
      }
    >>
>>
}

%%%%%%%%% End Example %%%%%%%%%%




reply via email to

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