lilypond-user
[Top][All Lists]
Advanced

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

Re: Manual barlines


From: Thomas Morley
Subject: Re: Manual barlines
Date: Tue, 2 Jul 2013 02:26:09 +0200

2013/7/1 Pierre Perol-Schneider <address@hidden>:
> Here's something simpler :
[...]

Hi Andrew,

below you'll find my own approach. Though not wide tested.

There are only a few comments in code, I'm too tired to write or explain more.
If something isn't clear, please shout.
Thanks to Pierre you saved me a lot of work. ;)

One thing isn't clear to me: how should TimeSignature behave at line-break?
If you don't like the way how I did it, again, please shout.

\version "2.17.20"

%#(set-default-paper-size "a4" 'landscape)
#(set-global-staff-size 16)

#(define (make-void-bar-line grob extent) empty-stencil)

#(add-bar-glyph-print-procedure "v" make-void-bar-line)

#(define-bar-line "v" "v" "v"  "|")

#(define-bar-line ".v" "|" "v"  ".|")

myTimeSigPlusBar =
#(define-music-function (parser location corr orig shown)
  ((number? 25) fraction? fraction?)
#{

  \once \override Score.TimeSignature.stencil =
   #(lambda (grob)
     (let* ((new-stencil
              (grob-interpret-markup grob
               #{
                 \markup
                   \override #'(font-family . typewriter)
                   \override #'(baseline-skip . 1.7)
                   \italic
                   \fontsize #2
                     \center-column {
                         \line { #(number->string (car shown)) }
                         \line { #(number->string (cdr shown)) }
                     }
               #})))
      new-stencil))

  % Sometimes you'll have to adjust the value of @var{corr}
  % In this case the function this way: @samp{\\myTimeSigPlusBar #40 1/4 16/4}
  % see below
  \once\override Score.BarLine.kern = #corr
  \bar ".v"
  \time #orig
#})

myLayout =
\layout {
   %ragged-right = ##f
   indent = 0
   \context {
     \Score
      % Perhaps you may want to choose another value (1.6 is default):
     \override SystemStartBar.thickness = #6
   }
   \context {
     \StaffGroup
     \omit SystemStartBracket
     \override StaffGrouper.staff-staff-spacing.basic-distance = #5
   }
   \context {
     \Staff
     \override BarLine.after-line-breaking =
       #(lambda (grob)
         (let* ((glyph-name (ly:grob-property grob 'glyph-name)))
         (if (not (string=? glyph-name ".v"))
               (ly:grob-set-property! grob 'transparent #t))))

     % Perhaps you may want to choose another value (6 is default):
     \override BarLine.thick-thickness = #6
     \override TimeSignature.transparent = ##t
     \override TimeSignature.space-alist.first-note  = #'(fixed-space . 3.3)
   }
   \context {
     \Voice
     \override TupletBracket.bracket-visibility = ##t
   }
}

timeSignatures = {
   \myTimeSigPlusBar 1/4 3/4
   \repeat unfold 3 s4
   \myTimeSigPlusBar #40 1/4 16/4
   \repeat unfold 2 s4
}

melodyOne = {
   \clef F
   \repeat unfold 5 s4
}

melodyTwo = {
   \clef F
   \voiceOne

   \repeat unfold 3 {
      \once\override TupletNumber.text = #tuplet-number::calc-fraction-text
      \tuplet 7/8 { des!32 [des! des! des! des! des! des! ] }
   }
   \tupletDown
   \once \override TupletBracket #'positions = #'(-4 . -4)
   \tuplet 7/8 { des!32 a,! g! f! des! aes! f,! }
   \tuplet 7/8 { ees!32 b! g,! des!-\parenthesize^> a,! a! f! }
}

\score {
    \new StaffGroup
       <<
       \new Staff { \melodyOne \melodyOne }
       % This is quick'n dirty.
       \new Staff
         \with {
            \remove "Staff_symbol_engraver"
            \remove "Clef_engraver"
            \revert TimeSignature.transparent
         }
         { \timeSignatures \timeSignatures }
       \new Staff { \melodyTwo \melodyTwo }
       >>
  \layout { \myLayout }
}


Image and ly-file-attached.

HTH,
  Harm

Attachment: andrew-time-sig-bar.png
Description: PNG image

Attachment: time-sig-bar.ly
Description: Binary data


reply via email to

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