lilypond-user
[Top][All Lists]
Advanced

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

Re: bar lines at the beginning of staves


From: Thomas Morley
Subject: Re: bar lines at the beginning of staves
Date: Mon, 19 Dec 2011 00:04:09 +0100

Hi,

how about:

\version "2.14.1"

#(define my-bar-glyph-alist
  '(("|" . ("|" . "|"))))

#(define (my-bar-line::calc-glyph-name grob)
 (let* ((index-cell (lambda (cell dir)
                      (if (equal? dir 1)
                          (cdr cell)
                          (car cell))))
        (glyph (ly:grob-property grob 'glyph))
        (dir (ly:item-break-dir grob))
        (result (assoc glyph  my-bar-glyph-alist))
        (glyph-name (if (= dir CENTER)
                        glyph
                        (if (and result (string? (index-cell (cdr result) dir)))
                            (index-cell (cdr result) dir)
                            #f))))
  glyph-name))

#(define-public (my-bar-line::calc-break-visibility grob)
  (let* ((glyph (ly:grob-property grob 'glyph))
         (result (assoc-get glyph my-bar-glyph-alist)))

    (if result
        (vector (string? (car result)) #t (string? (cdr result)))
        all-invisible)))

rochade = \once\override Score.BreakAlignment #'break-align-orders =
       #(make-vector 3
         '(left-edge
          staff-bar
          ambitus
          breathing-sign
          clef
          key-cancellation
          key-signature
          time-signature
          custos))

bars = {
    \once \override Staff.BarLine #'glyph-name =
                #my-bar-line::calc-glyph-name
    \once \override Staff.BarLine #'break-visibility =
                #my-bar-line::calc-break-visibility
    \rochade
    \bar "|"
}



one = \relative c' {

          %\once
          \override Score.SpanBar #'transparent = ##t
          \override Score.SystemStartBar #'transparent = ##t

          % \key, \break and \time inserted only for testing
          \bars \key d\major d1 e \break
          \bars \time 2/2 d
}


\score {
       \new StaffGroup <<
        \new Staff \one
        \new Staff \one
        \new Staff \one
        \new Staff \one
       >>

       \layout {
               \context {
                       \StaffGroup
                       \remove "System_start_delimiter_engraver"
               }
       }
}

perhaps it could be done more elegant, but it seems to work. Or did I
misunderstand you again?

Cheers,
  Harm



reply via email to

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