Le 27/02/2022 à 08:09, Alasdair McAndrew a écrit :
In my current project, I'm trying as far as possible to replicate the
spirit of the original 18th century publication, in which a key change
has a clef printed, and both after the bar line. In one piece,
there's a segno in the middle of a bar, with such a key change. In
standard Lilypond, this micro-example shows that the printed clef
comes before the bar line (I've left out the segno marker and all
other markers outside the score):
global = {
\language english
\clef treble
\time 4/4
}
\relative c' {\key c \major c4 d e fs | g a \bar "||" \set
Staff.forceClef = ##t \key c \minor bf c | bf af g f | ef d c2 }
But modern practice is to put the clef before the double bar, and the
key change afterwards. I want the clef to come after that double bar.
According to the documentation, this can be changed with
"break-alignment", in particular with:
\override Score.BreakAlignment #'break-align-orders =
#(make-vector 3 '(span-bar
breathing-sign
staff-bar
key
clef
time-signature))
However, in the mini example just given above, adding that override in
the global declaration has no effect. I tried changing the order of
"key" and "clef" in the override, again with no effect. (When I tried
his in a larger piece, the key change was printed on the bar-line!)
Is there any way I can notate a key change, at a segno with an extra
bar line, in order: bar line, clef, key ?
Well, the \global is unused in your example, so it's not
surprising that the override has no effect. With that
oversight corrected, the problem is that the break align symbol
for a KeySignature is not 'key but 'key-signature. You
will find this at
http://lilypond.org/doc/v2.23/Documentation/internals/keysignature
(the break-align-symbol property). So this works:
\version "2.22.1"
\language english
global = {
\clef treble
\time 4/4
\override Score.BreakAlignment.break-align-orders =
#(make-vector 3 '(span-bar
breathing-sign
staff-bar
clef
key-signature
time-signature))
}
\relative c' {
\global
\key c
\majorhttps://lilypond.org/doc/v2.23/Documentation/notation/adjusting-horizontal-spacing-for-specific-layout-objects
c4 d e fs |
g a
\bar "||"
\set Staff.forceClef = ##t
\key c \minor
bf c |
bf af g f |
ef d c2
}
If, like me, you find the space between the clef and the
key signature slightly excessive, you will want to look
at
https://lilypond.org/doc/v2.23/Documentation/notation/adjusting-horizontal-spacing-for-specific-layout-objects
(that documentation was added in 2.23, but it works in
2.22 as well).
Best,
Jean