%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
+%% generated from LSR http://lsr.di.unimi.it
%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
%% and then run scripts/auxiliar/makelsr.py
%%
%% This file is in the public domain.
-\version "2.15.2"
+\version "2.18.0"
\header {
- lsrtags = "staff-notation, vocal-music"
+ lsrtags = "staff-notation, symbols-and-glyphs, vocal-music"
texidoc = "
-This snippet defines the @code{\\splitStaffBarLine} command, which adds
-arrows in north-east and south-east directions at a bar line, to denote
-that several voices sharing a staff will each continue on a staff of
-their own in the next system.
+This snippet defines the @code{\\splitStaffBarLine},
+@code{convUpStaffBarLine} and @code{convDownStaffBarLine} commands.
+These add arrows at a bar line, to denote that several voices sharing a
+staff will each continue on a staff of their own in the next system, or
+that voices split in this way recombine.
"
doctitle = "Adding indicators to staves which get split after a break"
#(define-markup-command (arrow-at-angle layout props angle-deg length fill)
(number? number? boolean?)
(let* (
- ;; PI-OVER-180 and degrees->radians are taken from flag-styles.scm
- (PI-OVER-180 (/ (atan 1 1) 45))
- (degrees->radians (lambda (degrees) (* degrees PI-OVER-180)))
- (angle-rad (degrees->radians angle-deg))
- (target-x (* length (cos angle-rad)))
- (target-y (* length (sin angle-rad))))
+ (PI-OVER-180 (/ (atan 1 1) 34))
+ (degrees->radians (lambda (degrees) (* degrees PI-OVER-180)))
+ (angle-rad (degrees->radians angle-deg))
+ (target-x (* length (cos angle-rad)))
+ (target-y (* length (sin angle-rad))))
(interpret-markup layout props
- (markup
- #:translate (cons (/ target-x 2) (/ target-y 2))
- #:rotate angle-deg
- #:translate (cons (/ length -2) 0)
- #:concat (#:draw-line (cons length 0)
- #:arrow-head X RIGHT fill)))))
+ (markup
+ #:translate (cons (/ target-x 2) (/ target-y 2))
+ #:rotate angle-deg
+ #:translate (cons (/ length -2) 0)
+ #:concat (#:draw-line (cons length 0)
+ #:arrow-head X RIGHT fill)))))
+
splitStaffBarLineMarkup = \markup \with-dimensions #'(0 . 0) #'(0 . 0) {
\combine
- \arrow-at-angle #45 #(sqrt 8) ##f
- \arrow-at-angle #-45 #(sqrt 8) ##f
+ \arrow-at-angle #45 #(sqrt 8) ##t
+ \arrow-at-angle #-45 #(sqrt 8) ##t
}
splitStaffBarLine = {
- \once \override Staff.BarLine #'stencil =
- #(lambda (grob)
- (ly:stencil-combine-at-edge
- (ly:bar-line::print grob)
- X RIGHT
- (grob-interpret-markup grob splitStaffBarLineMarkup)
- 0 0))
+ \once \override Staff.BarLine.stencil =
+ #(lambda (grob)
+ (ly:stencil-combine-at-edge
+ (ly:bar-line::print grob)
+ X RIGHT
+ (grob-interpret-markup grob splitStaffBarLineMarkup)
+ 0))
+ \break
+}
+
+convDownStaffBarLine = {
+ \once \override Staff.BarLine.stencil =
+ #(lambda (grob)
+ (ly:stencil-combine-at-edge
+ (ly:bar-line::print grob)
+ X RIGHT
+ (grob-interpret-markup grob #{
+ \markup\with-dimensions #'(0 . 0) #'(0 . 0) {
+ \translate #'(0 . -.13)\arrow-at-angle #-45 #(sqrt 8) ##t
+ }#})
+ 0))
+ \break
+}
+
+convUpStaffBarLine = {
+ \once \override Staff.BarLine.stencil =
+ #(lambda (grob)
+ (ly:stencil-combine-at-edge
+ (ly:bar-line::print grob)
+ X RIGHT
+ (grob-interpret-markup grob #{
+ \markup\with-dimensions #'(0 . 0) #'(0 . 0) {
+ \translate #'(0 . .14)\arrow-at-angle #45 #(sqrt 8) ##t
+ }#})
+ 0))
\break
}
+
\paper {
ragged-right = ##t
- short-indent = 5\mm
+ short-indent = 10\mm
+}
+
+separateSopranos = {
+ \set Staff.instrumentName = "AI AII"
+ \set Staff.shortInstrumentName = "AI AII"
+ \splitStaffBarLine
+ \change Staff = "up"
+}
+convSopranos = {
+ \convDownStaffBarLine
+ \change Staff = "shared"
+ \set Staff.instrumentName = "S A"
+ \set Staff.shortInstrumentName = "S A"
+}
+
+sI = {
+ \voiceOne
+ \repeat unfold 4 f''2
+ \separateSopranos
+ \repeat unfold 4 g''2
+ \convSopranos
+ \repeat unfold 4 c''2
+}
+sII = {
+ s1*2
+ \voiceTwo
+ \change Staff = "up"
+ \repeat unfold 4 d''2
+}
+aI = {
+ \voiceTwo
+ \repeat unfold 4 a'2
+ \voiceOne
+ \repeat unfold 4 b'2
+ \convUpStaffBarLine
+ \voiceTwo
+ \repeat unfold 4 g'2
+}
+aII = {
+ s1*2
+ \voiceTwo
+ \repeat unfold 4 g'2
+}
+ten = {
+ \voiceOne
+ \repeat unfold 4 c'2
+ \repeat unfold 4 d'2
+ \repeat unfold 4 c'2
+}
+bas = {
+ \voiceTwo
+ \repeat unfold 4 f2
+ \repeat unfold 4 g2
+ \repeat unfold 4 c2
}
\score {
<<
\new ChoirStaff <<
- \new Staff \with { instrumentName = #"High I + II" } {
- <<
- \repeat unfold 4 f''1
- \\
- \repeat unfold 4 d''1
- >>
- \splitStaffBarLine
- }
- \new Staff \with { instrumentName = #"Low" } {
- <<
- \repeat unfold 4 b'1
- \\
- \repeat unfold 4 g'1
- >>
+ \new Staff = up \with {
+ instrumentName = "SI SII"
+ shortInstrumentName = "SI SII"
+ } {
+ s1*4
}
- \new Staff \with { shortInstrumentName = #"H I" } {
- R1*4
- \repeat unfold 2 { r4 f''2 r4 } \repeat unfold 2 e''1
- }
- \new Staff \with { shortInstrumentName = #"H II" } {
- R1*4
- \repeat unfold 4 b'2 \repeat unfold 2 c''1
- }
- \new Staff \with { shortInstrumentName = #"L" } {
- R1*4
- <<
- \repeat unfold 4 g'1
- \\
- \repeat unfold 4 c'1
- >>
+ \new Staff = shared \with {
+ instrumentName = "S A"
+ shortInstrumentName = "S A"
+ } <<
+ \new Voice = sopI \sI
+ \new Voice = sopII \sII
+ \new Voice = altI \aI
+ \new Voice = altII \aII
+ >>
+ \new Lyrics \with {
+ alignBelowContext = up
}
+ \lyricsto sopII { e f g h }
+ \new Lyrics \lyricsto altI { a b c d e f g h i j k l }
+
+ \new Staff = men \with {
+ instrumentName = "T B"
+ shortInstrumentName = "T B"
+ } <<
+ \clef F
+ \new Voice = ten \ten
+ \new Voice = bas \bas
+ >>
+ \new Lyrics \lyricsto bas { a b c d e f g h i j k l }
>>
>>
\layout {
\context {
\Staff \RemoveEmptyStaves
- \override VerticalAxisGroup #'remove-first = ##t
+ \override VerticalAxisGroup.remove-first = ##t
}
}
}
-