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