[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Key signature and key cancellation need to be aligned
From: |
David Sumbler |
Subject: |
Re: Key signature and key cancellation need to be aligned |
Date: |
Fri, 30 Jan 2015 19:45:41 +0000 |
> From: Thomas Morley <address@hidden>
> To: David Sumbler <address@hidden>
> Cc: lilypond-user <address@hidden>
> Subject: Re: Key signature and key cancellation need to be aligned
> Date: Thu, 29 Jan 2015 11:21:15 +0100
>
> 2015-01-28 19:00 GMT+01:00 David Sumbler <address@hidden>:
> >> 2015-01-27 12:56 GMT+01:00 David Sumbler <address@hidden>:
> >> > I use Staff.printKeyCancellation = ##f in my score.
> >> >
> >> > At one point the key changes from C major (concert) to C minor. As the
> >> > piece is for a standard saxophone quartet, this means that 2 of the
> >> > instruments change from D major (notated) to D minor, and the other 2
> >> > change from A major to A minor.
> >> >
> >> > A minor, of course, is the "open" key with no sharps or flats, and,
> >> > notwithstanding the negation of printKeyCancellation, Lilypond correctly
> >> > prints a key cancellation at this point on the 2 staves that require it.
> >> >
> >> > The other 2 parts, in which the key changes from 2 sharps to 1 flat,
> >> > correctly do not get a key cancellation.
> >> >
> >> > So far, so good.
> >> >
> >> > The problem is that the actual key signatures on the 2 staves that have
> >> > them are not vertically aligned with the key cancellations on the other
> >> > 2 staves. Instead, they are printed after the key cancellations. In
> >> > other words, each of the 2 key signatures is printed as if there were an
> >> > invisible key cancellation preceding it on the stave. This looks wrong,
> >> > and I should like them to appear above and below the actual key
> >> > cancellations on the other 2 staves.
> >> >
> >> > I have experimented with changing KeySignature.X-offset (which had no
> >> > effect) and KeySignature.extra-offset. The latter works, but
> >> > unfortunately the position of the time signature and music which follow
> >> > remain unchanged, so that there is now an unnecessary gap after the key
> >> > signatures/cancellations.
> >> >
> >> > How can I get the effect I want, and get Lilypond to take account of the
> >> > change in the position of the key signatures?
> >> >
> >> > David
> >>
> >>
> >> Hi David,
> >>
> >> how about a minimal example?
> >>
> >> -Harm
> >
> > Here we are, then: the following illustrates the problem.
> >
> > \version "2.18.0"
> > \language "english"
> >
> > \new StaffGroup <<
> > \new Staff \relative c'' {
> > \transposition bf
> > \time 3/4
> > \key d \major
> > a2 r4 |
> > \key d \minor
> > \time 2/4
> > R2 |
> > }
> > \new Staff \relative c'' {
> > \transposition ef
> > \time 3/4
> > \key a \major
> > gs2 r4 |
> > \key a \minor
> > \time 2/4
> > R2 |
> > }
> >>>
> >
> > \layout {
> > \context {
> > \Staff printKeyCancellation = ##f
> > }
> > }
> >
> > I have had 2 very interesting responses to my query, one from Thomas
> > Morley and one (off-list) from Kevin Barry. Both had slight problems
> > with them, and experimenting with them has once again helped
> > considerably in improving my understanding of the workings of Lilypond.
> >
> > Thomas suggested adding
> >
> > \once \override Score.KeyCancellation.space-alist.key-signature =
> > #'(extra-space . -2.4)
> > \once \override Score.KeySignature.space-alist.time-signature =
> > #'(extra-space . 2.6)
> >
> > The only problem was this was that, although it solved the problem in the
> > score,
> > it introduced a problem in the parts for the instruments with an actual
> > key signature. I could get around this by using tags, of course.
> >
> > Kevin's suggestion, which, after modification, was the one I ultimately
> > used, was to omit '\key a \minor' and to add:
> >
> > \override Staff.KeyCancellation.stencil = ##f
> > \set Staff.keySignature = #`((10 . ,NATURAL) (7 . ,NATURAL) (11 .
> > ,NATURAL))
> >
> > This worked well, except that the dummy key signature with natural
> > signs then appeared on every subsequent line. My final solution is:
> >
> > \override Staff.KeyCancellation.stencil = ##f
> > \override Staff.KeySignature.break-visibility = #all-invisible
> > \set Staff.keySignature = #`((10 . ,NATURAL) (7 . ,NATURAL) (11 .
> > ,NATURAL))
> >
> > Then, immediately before the next key change:
> >
> > \revert Staff.KeySignature.break-visibility
> >
> > Thank you both for your help.
> >
> > David
> >
>
> Did you notice Keith reply?
> The mentioned workaround is in comment #2
> http://code.google.com/p/lilypond/issues/detail?id=448#c2
>
> Cheers,
> Harm
I confess that I failed to spot the workaround when I looked at the page
before: it is so concise that it's easy to miss (that's my feeble
excuse, anyway).
The workaround adversely affects the parts (the problem only exists in
the score), but was easily solved with a tag, of course. So I now have
\tag #'forScore { \once \override Staff.KeyCancellation #'X-extent = #'(0 . 0) }
Neat!
Thanks to all
David