Am 15.05.2015 um 02:57 schrieb Murray-Luke Peard:
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''
}
Try
<< { a'1 b' c'' }
{ s1. \bar "b" s } >>
The \bar command needs to be given in parallel to the music, but
within the same voice. (If a new staff is created, you need to use
\new Voice before the _expression_)
HTH, Simon
% 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 < 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
_______________________________________________
lilypond-user mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/lilypond-user
|