lilypond-user
[Top][All Lists]
Advanced

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

Re: Typesetting renaissance music


From: Thomas Morley
Subject: Re: Typesetting renaissance music
Date: Thu, 14 May 2015 12:41:00 +0200

2015-05-14 8:51 GMT+02:00 Alexander Kobel <address@hidden>:
> On 2015-05-14 05:09, Murray-Luke Peard wrote:
>>
>> [...]
>> One is to use the Mensurstriche layout, which has bar lines between
>> staves but not through them. My preferred option is to move the barline
>> up or down if the note is low or high, and split it if the note is in
>> the middle.
>>
>> I've been able to move the barline up and down with the following
>> commands:
>>
>> upBar = { \override Staff.BarLine #'bar-extent = #'(0.5 . 3) }
>> downBar = { \override Staff.BarLine #'bar-extent = #'(-3 . -0.5) }
>>
>> And reset it to normal with
>>
>> fullBar = { \override Staff.BarLine #'bar-extent = #'(-2 . 2) }
>>
>> But I can't figure out how to get the split bar line. Ideally, it would
>> look something like :
>>
>> topPart = { \override Staff.BarLine #'bar-extent = #'(2 . 3) }
>> bottomPart = [ \override Staff.BarLine #'bar-extent = #'(-3 . -2) }
>>
>> but both at the same time!
>>
>> Can anyone suggest how I might achieve this?
>
>
>
> Hi Murray-Luke,
>
> I had the exact same problem a few days ago, in a different context (read
> the thread "TimeSignatures over BarLines" from May 07 here:
> <http://lists.gnu.org/archive/html/lilypond-user/2015-05/msg00276.html>).
> The problem is that the BarLine is drawn only once, and the most recent
> extent is taken. There is a solution however: to draw the short BarLine
> twice, and move one of the instances as necessary. The code is as follows:
>
> \once \override Staff.BarLine #'stencil =
> #(lambda (grob)
>    (ly:grob-set-property! grob 'bar-extent '(-3 . -2))
>    (ly:stencil-add
>     (ly:bar-line::print grob)
>     (ly:stencil-translate-axis (ly:bar-line::print grob) 5 Y)))
>
> If you want two stubs of different length, you have to work a little bit
> harder, but this should get you started.
>
>
> HTH,
> Alexander


Hi Murray-Luke,

alternatively you could define your own bar-lines, leading to:

\version "2.19.18"

#(define (make-up-tick-bar-line grob extent)
  (let* ((line-thickness (layout-line-thickness grob))
         (thickness (* (ly:grob-property grob 'hair-thickness 1)
                       line-thickness))
         (staff-space (ly:staff-symbol-staff-space grob))
         (height (interval-end extent)))

    (ly:round-filled-box (cons 0 thickness)
                         (cons height (+ height staff-space))
                         0)))

#(define (make-down-tick-bar-line grob extent)
  (let* ((line-thickness (layout-line-thickness grob))
         (thickness (* (ly:grob-property grob 'hair-thickness 1)
                       line-thickness))
         (staff-space (ly:staff-symbol-staff-space grob))
         (bottom (interval-start extent)))

    (ly:round-filled-box (cons 0 thickness)
                         (ordered-cons bottom (- bottom staff-space))
                         0)))

#(define (make-both-tick-bar-line grob extent)
  (ly:stencil-add
    (make-up-tick-bar-line grob extent)
    (make-down-tick-bar-line grob extent)))



#(add-bar-glyph-print-procedure "u" make-up-tick-bar-line)
#(define-bar-line "u" "u" #f #f)

#(add-bar-glyph-print-procedure "d" make-down-tick-bar-line)
#(define-bar-line "d" "d" #f #f)


#(add-bar-glyph-print-procedure "b" make-both-tick-bar-line)
#(define-bar-line "b" "b" #f #f)

%%%%%%%%%%%%%%%%%%
%% EXAMPLE
%%%%%%%%%%%%%%%%%%

{
  r1 \bar "u" r \bar "u" \break
  r \bar "d" r \bar "d" \break
  r \bar "b" r \bar "b" \break
}




HTH,
  Harm



reply via email to

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