lilypond-user
[Top][All Lists]
Advanced

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

Re: Typesetting renaissance music


From: Murray-Luke Peard
Subject: Re: Typesetting renaissance music
Date: Fri, 15 May 2015 16:49:14 +1000

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). 
Inline images 1


M-L

On Fri, 15 May 2015 at 10:57 Murray-Luke Peard <address@hidden> 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 <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

reply via email to

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