|
From: | Murray-Luke Peard |
Subject: | Re: Typesetting renaissance music |
Date: | Fri, 15 May 2015 16:49:14 +1000 |
This is the solution that worked for me. One problem I had was that if the note goes over a bar line (as in the first example), the bar line is drawn before you specify the bar type, and you get two bar lines (see second example).In the third example, I set the defaultBarType before specifying the note, which causes the right bar line to be drawn. Then I set it back again. It's a bit fiddly, but the result is exactly what I'm looking for.--% setup as before in the previous email{% without any changes to bar lines\time 3/2a'1 b' c''}{% draw bar line with specific type (get two bar lines, as the b' causes a bar line to be drawn as well\time 3/2a'1 b' \bar "b" c''}% shortcutsfullBar = { \set Timing.defaultBarType = "|" }splitBar = { \set Timing.defaultBarType = "b" }{% set default bar line before drawing b', then set it back again\time 3/2a'1 \splitBar b' \fullBar c''}The result looks like this:Where the last one is what I was aiming for.Thanks everyone for your help!Murray-LukeOn Thu, 14 May 2015 at 20:41 Thomas Morley <address@hidden> wrote: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
[Prev in Thread] | Current Thread | [Next in Thread] |