\begin{lilypond}
\language "english"
#(set-global-staff-size 14)
#(set! paper-alist (cons '("my size" . (cons (* 4.5 in) (* 6.25 in))) paper-alist))
#(define (rest-score r)
(let ((score 0)
(yoff (ly:grob-property-data r 'Y-offset))
(sp (ly:grob-property-data r 'staff-position)))
(if (number? yoff)
(set! score (+ score 2))
(if (eq? yoff 'calculation-in-progress)
(set! score (- score 3))))
(and (number? sp)
(<= 0 2 sp)
(set! score (+ score 2))
(set! score (- score (abs (- 1 sp)))))
score))
#(define (merge-rests-on-positioning grob)
(let* ((can-merge #f)
(elts (ly:grob-object grob 'elements))
(num-elts (and (ly:grob-array? elts)
(ly:grob-array-length elts)))
(two-voice? (= num-elts 2)))
(if two-voice?
(let* ((v1-grob (ly:grob-array-ref elts 0))
(v2-grob (ly:grob-array-ref elts 1))
(v1-rest (ly:grob-object v1-grob 'rest))
(v2-rest (ly:grob-object v2-grob 'rest)))
(and
(ly:grob? v1-rest)
(ly:grob? v2-rest)
(let* ((v1-duration-log (ly:grob-property v1-rest 'duration-log))
(v2-duration-log (ly:grob-property v2-rest 'duration-log))
(v1-dot (ly:grob-object v1-rest 'dot))
(v2-dot (ly:grob-object v2-rest 'dot))
(v1-dot-count (and (ly:grob? v1-dot)
(ly:grob-property v1-dot 'dot-count -1)))
(v2-dot-count (and (ly:grob? v2-dot)
(ly:grob-property v2-dot 'dot-count -1))))
(set! can-merge
(and
(number? v1-duration-log)
(number? v2-duration-log)
(= v1-duration-log v2-duration-log)
(eq? v1-dot-count v2-dot-count)))
(if can-merge
;; keep the rest that looks best:
(let* ((keep-v1? (>= (rest-score v1-rest)
(rest-score v2-rest)))
(rest-to-keep (if keep-v1? v1-rest v2-rest))
(dot-to-kill (if keep-v1? v2-dot v1-dot)))
;; uncomment if you're curious of which rest was chosen:
;;(ly:grob-set-property! v1-rest 'color green)
;;(ly:grob-set-property! v2-rest 'color blue)
(ly:grob-suicide! (if keep-v1? v2-rest v1-rest))
(if (ly:grob? dot-to-kill)
(ly:grob-suicide! dot-to-kill))
(ly:grob-set-property! rest-to-keep 'direction 0)
(ly:rest::y-offset-callback rest-to-keep)))))))
(if can-merge
#t
(ly:rest-collision::calc-positioning-done grob))))
\paper {
#(set-paper-size "my size")
}
\parallelMusic #'(soprano alto tenor bass) {
\partial 4*1 c,4 | \partial 4*1 c4 | \partial 4*1 r4 | \partial 4*1 r4 |
f4 f g8( a) | f4 f g8( a) | r2. | r2. |
f4 f a8( bf) | f4 f f8( g) | r2. | r2. |
c4 c d | a4. g8 f4 | r2. | r2. |
bf2 \bar "||" g8( a) | g2 \bar "||" d4 | r4 r4 \bar "||" bf,8( a) | r4 r4 \bar "||"
\break g8( f) |
bf4 bf c | g4. f8 g4 | g4 g c | e4 e e |
a4 a f8( a) | f4 f4 f4 | c4 c d8( c) | f4. e8 d4 |
g4 d f | d4. c8 d4 | b4 a b4 | g4 g g |
e2 \bar "||"
\break c4 | c2 \bar "||" c4 | c2 \bar "||" r4 | c,2 \bar "||" r4 |
f4 f g8( a) | f4 f g8( a) | r2. | r2. |
f4 f a8( bf) | f4 f f8( g) | r2. | r2. |
c4 c d | a4. g8 f4 | r2. | r2. |
bf2 \bar "||" g8( a) | g2 \bar "||" d4 | r4 r4 \bar "||" bf8( a) | r4 r4 \bar "||"\break g'8 f |
bf4 bf c | g4. f8 g4 | g4 g c | e4. d8 e4 |
a4 a f8( a) | f4 f f8( e) | c4 c c | f4 f a, |
g4 d e | d4 d4 c8( bf) | bf8([d)] c([ bf)]a([ g)] | bf4 g c |
f2 \bar "||" | a2 \bar "||" | f2 \bar "||" | f,2 \bar "||" |
}
\score {
\header{
}
\new ChoirStaff \with {
\override RestCollision.positioning-done = #merge-rests-on-positioning
} <<
\new Staff = "female" {
\time 3/4
\key f \major
\new Voice = "women" <<
\relative c'' {
{\voiceOne \soprano}
}
\new Voice = "altos" {\relative c' { \voiceTwo \alto }}
>>
}
\new Lyrics {
\lyricsto "women" {
\set stanza = #"1. "
A -- way in a man -- ger, No crib for a bed,
The lit -- tle Lord Je -- sus Laid down his sweet head.
The stars in the bright sky Look'd down where he lay,
The little Lord Je -- sus A -- sleep on the hay.
}
}
\new Lyrics {
\lyricsto "women" {
\set stanza = #"2. "
The cat -- tle are low -- ing, The ba -- by a -- wakes,
But lit -- tle Lord Je -- sus No cry -- ing he makes.
I love thee, Lord Je -- sus! Look down from the sky,
And stay by my cra -- dle Till morn -- ing is nigh.
}
}
\new Lyrics {
\lyricsto "women" {
\set stanza = #"3. "
Be near me, Lord Je -- sus; I ask thee to stay
Close by me for -- ev -- er, And love me, I pray.
Bless all the dear chil -- dren In thy ten -- der care,
And fit us for hea -- ven, To live with thee there.
}
}
\new Staff = "male" {
\time 3/4
\clef bass
\key f \major
\new Voice = "men" <<
\relative c'' {
{\voiceOne \tenor}
}
\new Voice = "basses" {\relative c' { \voiceTwo \bass }}
>>
}
>>
\layout {
indent = 0.0\cm
\context {
\Lyrics
\override LyricText #'font-size = #-2
}
}
\midi { }
}
\version "2.18.2" % necessary for upgrading to future LilyPond versions.
\end{lilypond}