lilypond-user
[Top][All Lists]
Advanced

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

Re: Spacing lyrics to avoid visible bar lines only


From: Jan-Peter Voigt
Subject: Re: Spacing lyrics to avoid visible bar lines only
Date: Wed, 31 Oct 2018 19:59:00 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1

Hello Joel,

when I typeset choir scores, which I do most often, I use the
self-alignment-X override for long syllables:

words = \lyricmode {
  Breathes | \once \override LyricText.self-alignment-X = #-.5 \markup {
\with-color #red breathes } |
  br | \markup { \with-color #green breathes } |
  \once \override LyricText.self-alignment-X = #-.6 breathes | br |
breathes |
}

That harmonizes spacing. If you read some of my former posts you will
know I do inject those overrides with the edition-engraver because it
would be very tedious to place them alll inside the lyrics.
But with a small command
sax = #(define-music-function (parser location v)(number?) #{ \once
\override LyricText.self-alignment-X = #v #})

(or shorter in the V2.19 form - this doesn't work 2.18.2)
sax = \once \override LyricText.self-alignment-X = \etc

its not that much text, if you place them inside the lyrics:
   Breathes | \sax #-.5 \markup { \with-color #red breathes } |


I hope this small hint helps
Cheers,
Jan-Peter


Am 31.10.18 um 17:58 schrieb joelhamme:
> My fellow singers in choir have been asking me to improve the visual chunking
> of choir staves. They wanted to have closed bar lines on the right edge of
> each choir staff.
> 
> Adding the `Span_bar_engraver` to `ChoirStaff` adds a lot of clutter and
> results in collisions with the lyrics, which is particularly unappealing
> with thick repeat bars. This can be quickly fixed by adding `Bar_engraver`
> to `Lyrics` and hiding them as described in ^[notation lyrics].
> 
> However, for aesthetical reasons I prefer removing all span bars, except
> non-defaults and single bar bars at the end of each line. So this would
> leave all repeats and double bar lines but no single bars unless there's a
> line break, much like ^[semi choir staff snippet]
> 
> I've found a way to do this, except that there's some spacing issue with the
> lyrics at single bars that aren't even shown. In choir staves, lyrics can
> move below a bar line to take up the available space, which leaves a more
> pleasing appearance and saves space on the page. Sadly, I could either make
> the lyrics avoid all bar lines or not at all, but not only the ones that are
> actually shown.
> 
> To the point:
> I would like to make the lyrics avoid some span bars while not avoiding the
> bar lines I've omitted using a call back.
> 
> To illustrate I've compiled a somewhat minimal example using long words to
> trigger some collisions. For convenience I've also uploaded it to
> ^[lilybin].
> 
> <http://lilypond.1069038.n5.nabble.com/file/t5727/lyrics-spacing.png> 
> 
> ```lilypond
> \version "2.18.2"
> 
> link = {
>   \once \override Score.RehearsalMark.self-alignment-X = #LEFT
>   \mark \markup \normalsize {
>       \with-url #"http://lilybin.com/wmw4xx/6"; "http://lilybin.com/wmw4xx/6";
>   }
> }
> 
> redspn = \once \override Score.SpanBar.color = #red
> grnbar = \once \override Score.BarLine.color = #green
> 
> notes = {
>   \link
>   c1 \redspn | \repeat volta 2 { c | c \grnbar | c } | c | c | c \bar "|."
> }
> 
> words = \lyricmode {
>   Breathes | \markup { \with-color #red breathes } |
>   br | \markup { \with-color #green breathes } |
>   breathes | br | breathes |
> }
> 
> \score {
>   \new ChoirStaff <<
>     \new Staff \relative c'' \notes \addlyrics \words
>     \new Staff \relative c'' \notes
>   >>
> 
>   \layout {
>     indent = 0
>     \context { \ChoirStaff
>       \consists "Span_bar_engraver"
>       \override BarLine.after-line-breaking =
>         #(lambda (grob)
>           (if
>             (and (= 0 (ly:item-break-dir grob))
>                  (string=? (ly:grob-property grob 'glyph-name) "|") )
>             (ly:grob-set-property! grob 'allow-span-bar #f)))
>     }
>       
>       % \context { \Lyrics
>     % \consists "Bar_engraver"
>     % \hide BarLine
>     % \override BarLine.after-line-breaking =
>     %   #(lambda (grob)
>     %     (if
>     %       (and (= 0 (ly:item-break-dir grob)))
>     %            (string=? (ly:grob-property grob 'glyph-name) "|")
>     %       (ly:grob-set-property! grob 'stencil #f))
>     %   )
>     % }
>   }
> }
> ```
> 
> The red colour indicates an unacceptable collision, whereas the green colour
> indicates the desired loose spacing under bars that are not spanned across
> staves. The commented-out section removes the relevant bar line stencils
> from the lyrics, but fails to loosen the spacing where there are no longer
> any bars to avoid.
> 
> Can I conditionally add bar lines to lyrics without otherwise affecting
> their spacing?
> 
> Sorry this got so long, any help would be much appreciated.
> 
> Cheers,
> Joel
> 
> [notation lyrics]:
> http://lilypond.org/doc/v2.19/Documentation/notation/techniques-specific-to-lyrics#placing-syllables-horizontally
> [semi choir staff snippet]: http://lsr.di.unimi.it/LSR/Item?id=299
> [lilybin]: http://lilybin.com/wmw4xx/6
> 
> 
> 
> 
> --
> Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html
> 
> _______________________________________________
> lilypond-user mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/lilypond-user
> 




reply via email to

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