Das ist beabsichtigt/bekannt. Wenn ich recht erinnere, wird auch in
diesem Thread auf der englischen Mailingliste irgendwo gesagt, warum das so ist. Ich glaub, dass diese Lösung die einfachste/am besten nachvollziehbare ist.
Was ich beim Komponieren mache: Ich nutze octave checks/Oktavüberprüfungen. Dabei gibt man nach dem Ton (inkl. Oktavlage) ein = und dahinter die gewünschte Oktavlage ein. Damit wird diese Oktavlage erzwungen; falls in „normalem“ \relative-input eine andere Oktave herauskäme, gibts eine Warnung. Ich ignoriere diese Warnungen bzw. passe dann am Ende die Oktavlagen an, wenn alle Noten feststehen.
So könnte eine warnungsfreie Eingabe aussehen:
\version "2.19.38"
\language "deutsch"
\relative {
<<
{
c'=' e g
} \\ {
c,=' c c
}
>>
}
Die gleiche Ausgabe ergibt sich, wenn man sich auf die Oktavüberprüfungen verlässt, es gibt aber zwei Warnungen:
\version "2.19.38"
\language "deutsch"
\relative {
<<
{
c=' e g
} \\ {
c=' c c
}
>>
}
Edit: Man kann LilyPond anweisen, eine Warnung zu erwarten und zu ignorieren. Allerdings nur einzelne Vorkommen; mit einer Schleife kann ich aber folgendermaßen für die nächsten 1000 Vorkommen dieser Warnung vorsorgen:
\version "2.19.38"
\language "deutsch"
#(let loop ((c 1000))
(if (> c 0)
(begin
(ly:expect-warning "octave check failed")
(loop (1- c)))))
\relative {
<<
{
c=' e g
} \\ {
c=' c=, c=''
}
>>
}
Dann gibts am Ende eine Warnung, dass die Warnung nur 4 Mal aufgetaucht wäre und nicht 1000 Mal bzw. dass 996 Mal fehlen, aber eben nicht über die komplette Ausgabe verstreut und ohne den genauen Code auszugeben, wo die Warnung auftritt
