lilypond-user
[Top][All Lists]
Advanced

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

Re: Typesetting renaissance music


From: Thomas Morley
Subject: Re: Typesetting renaissance music
Date: Sat, 16 May 2015 00:01:48 +0200



2015-05-15 8:49 GMT+02:00 Murray-Luke Peard <address@hidden>:
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

Yep. The \bar "whatever" - command is applied to the whole score. To get a different bar-line in only one Staff of Score you have to set the whichBar-property accordingly.

Like the code below (using a second Voice for controlling, as Simon suggested already):

m = {
  \time 3/2 \repeat unfold 3 { c''1 }
}

ctrl = {
  \repeat unfold 2 { s1. \bar "b" }
}

ctrl¹ = {
  s1. \once \set Staff.whichBar = "S" s \once \set Staff.whichBar = "|"
}

<<
\new Staff << \m \ctrl >>
\new Staff << \m \ctrl¹ >>
\new Staff \m
\new Staff \m
>>


 
(and what's going on with the bottom line, I don't know). 

No idea what's causing it.
Could you provide a tiny example?
 
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!

Btw, I'd prefer you'd attach images. Per default, I always filter in-line images, maybe others as well.
Or give a hint that inline-images are present, then I'll look up your mail in the archives.
Thanks.

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

Cheers,
  Harm


reply via email to

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