Actually, I've found an unintended consequence of this method, in that it
changes the bar for all staves, not just the one in question. See the
circle in the graphic below - all bar lines at this point were changed, not
just the top line (and what's going on with the bottom line, I don't know).
[image: Inline images 1]


M-L

On Fri, 15 May 2015 at 10:57 Murray-Luke Peard <murrayluke.pe...@gmail.com>
wrote:

> 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/2
>   a'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/2
>   a'1 b' \bar "b" c''
> }
>
> % shortcuts
> fullBar = { \set Timing.defaultBarType = "|" }
> splitBar = { \set Timing.defaultBarType = "b" }
>
> {
>   % set default bar line before drawing b', then set it back again
>   \time 3/2
>   a'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-Luke
>
>
> On Thu, 14 May 2015 at 20:41 Thomas Morley <thomasmorle...@gmail.com>
> wrote:
>
>> 2015-05-14 8:51 GMT+02:00 Alexander Kobel <n...@a-kobel.de>:
>> > 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
>>
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to