Le 27/10/2022 à 11:17, Peter Mitton a écrit :
Thanks, Harm,
Sorry, I seemed to have missed out the most important part of the
challenge! Apologies. This is a simplified extract of the lower staff
from the start of a two staff piano arrangement that requires 4 voices.
It’s the addition of the second voice that causes the additional
treble clef to appear, with a single voice there is no problem. But
when you add a second…
\version "2.22.2"
\new Staff {
<<
\time 6/8
\clef bass
\new Voice = "a" {
\voiceFour
%\time 6/8 \clef bass
\appoggiatura c,8 c2. \appoggiatura c,8 c2.
}
\new Voice = "b" {
\voiceThree
\grace s8 e2. \grace s8 e2.
}
>>
}
It renders as the attached file.
Which is not what I expect or want. Even an empty second voice with no
notes also displays the extra clef and ledger lines and misplaces the
grace note before the time signature.
The documentation on Grace notes
<https://lilypond.org/doc/v2.22/Documentation/notation/special-rhythmic-concerns#grace-notes> says
"Grace note synchronization can also lead to surprises. Staff
notation, such as key signatures, bar lines, etc., are also
synchronized. “ which I take as developer-speak for “Here be dragons”.
Actually, Harm's answer also applies to this new example, but perhaps
you didn't understand what the precise rule was. Let me try to explain.
LilyPond will get confused if you have parallel music expressions
with different grace timing. The term "parallel music expressions"
here means expression1, expression2, etc. in this construct:
<<
expression1
expression2
...
>>
while these are called "sequential expressions":
{
expression1
expression2
...
}
The golden rule is: if you use parallel expressions and one has graces,
all must have graces of the same length. To balance the graces, you can
use grace skips. This is a famous problem known as issue #34.
You are doing
<<
\time 6/8 % expression 1
\clef bass % expression 2
\new Voice "a" { \voiceFour \appogiatura c,8 ... } % expression 3
\new Voice = "b" { \voiceThree \grace s8 ... } % expression 4
>>
This puts \time 6/8 and \clef bass in parallel with the musical
voices. \time 6/8 is an expression of its own, but it doesn't have
grace timing in it. Thus LilyPond is confused. If you really want
to do it this way, you need to add grace skips to expressions 1
and 2 like this:
\version "2.22.2"
\new Staff {
<<
{
\time 6/8
\grace s8
}
{
\clef bass
\grace s8
}
\new Voice = "a" {
\voiceFour
%\time 6/8 \clef bass
\appoggiatura c,8 c2. \appoggiatura c,8 c2.
}
\new Voice = "b" {
\voiceThree
\grace s8 e2. \grace s8 e2.
}
>>
}
However, as Harm explained, it is probably simpler to move \time 6/8
and \clef bass out of the parallel music expression, into a sequential
music expression. Then you don't need these extra grace skips anymore.
\version "2.22.2"
\new Staff {
\time 6/8
\clef bass
<<
\new Voice = "a" {
\voiceFour
%\time 6/8 \clef bass
\appoggiatura c,8 c2. \appoggiatura c,8 c2.
}
\new Voice = "b" {
\voiceThree
\grace s8 e2. \grace s8 e2.
}
>>
}
Hope that's clear?
Best,
Jean