Hallo Joei,
wie Harm schon geschrieben hat, macht Lilypond - was die Anordnung, Verschiebungen usw. angeht - keinen Unterschied zwischen dem langen und dem kurzen Instrumentennamen: für beide ist das Grob InstrumentName zuständig.
Eine Lösung habe ich jetzt auf brutale, aber effektive Weise dadurch erreicht, daß ich alle Änderungen an X- und Y-Position und vor allem die immer etwas unglücklichen extra-offsets entfernt habe und stattdessen feste X-Ausdehnungen der Instrumentenbezeichnungen vorgebe.
\incipit-Funktion setzt X-Ausdehnung fix und ändert den Stencil der (langen) Instrumentenbezeichnung:
Der Instrumentenname (egal, ob lang oder kurz) wird erhält links die Ausdehnung 2 und nach rechts die Ausdenung 0 (also keine) um die Verschiebung des Incipit-Notensystems erzwingen zu können, denn normalerweise würden die Instrumentennamen nach links "ausweichen", wenn sie zu lang werden.
\override Staff.InstrumentName #'X-extent = #'(2 . 0)
Innerhalb der Incipit-Score-Definition
Innerhalb des Incipit-Scores dann wiederum eine kleine "Korrektur" der linken Ausdehnung des Instrumentennamens, damit die Instrumentennamen mit und ohne Incipit schön untereinanderstehen.
\override InstrumentName #'X-extent = #'(-0.3 . 0)
Damit die Incipit-Systeme genau auf der selben Höhe sitzen wie die Haupt-Systeme, setzten wir gewaltsam die Y-Ausdehnung nach oben und unten auf jeweils 0, damit Lilypond nicht auf die Idee kommt, sie vertikal verschieben zu müssen:
\override VerticalAxisGroup #'Y-extent = #'(0 . 0)
Kommentiere die Zeile aus, und Du wirst sehen, daß die Notenlinien auf der falschen Höhe sind.
Mit line-width und indent kann man jetzt komfortabel einstellen, wie lang die Incipit-Linien sind und wie groß der Abstand zwischen Namen und Linien ist.
Im "Haupt-Score" habe ich auch indent und short-indent noch ein wenig angepaßt, damit auch die langen und kurzen Instrumentenbezeichnungen untereinanderstehen.
\version "2.16.2"
incipit =
#(define-music-function (parser location incipit-music) (ly:music?)
#{
\override Staff.InstrumentName #'X-extent = #'(2 . 0)
\override Staff.InstrumentName #'stencil = % Hier wird das Gesamtkonstrukt zusammengesetzt
#(lambda (grob)
(let* ((instrument-name (ly:grob-property grob 'long-text)))
(set! (ly:grob-property grob 'long-text)
#{ \markup %\combine "" \translate #'(1 . 0)
\score
{
{ \context Staff \with {
instrumentName = \markup \fill-line { #instrument-name \null }
\override InstrumentName #'X-extent = #'(-0.3 . 0)
\override Clef #'font-size = #-3 %kleinerer Extra-Schlüssel
\override TimeSignature #'stencil = ##f %keine Taktangabe
\override VerticalAxisGroup #'Y-extent = #'(0 . 0) %Incipit-System ohne Y-Ausdehnung wg. Positionierung
} $incipit-music s1 \bar "" %"füllt" den Vortakt
}
\layout { $(ly:grob-layout grob)
line-width = #18
indent = #12
ragged-right = ##f
ragged-last = ##f
}
}
#})
(system-start-text::print grob)))
#})
%%%%%%%%%%%%%%%%%%%%%%%%%
sopranoMusic = \relative c'' {
\clef treble
c1 c1 d1 e1 f1 d1 c1 d1 e1 c1 c1 d1 e1 f1 d1 c1 d1 e1 c1 c1 d1 e1 f1 d1 c1 d1 e1 e1
}
altoMusic = \relative c'' {
\clef treble
c1 c1 c1 d1 e1 f1 d1 c1 d1 e1 c1 c1 d1 e1 f1 d1 c1 d1 e1 c1 c1 d1 e1 f1 d1 c1 d1 e1
}
tenoreMusic = \relative c' {
\clef "treble_8"
c1 c1 c1 d1 e1 f1 d1 c1 d1 e1 c1 c1 d1 e1 f1 d1 c1 d1 e1 c1 c1 d1 e1 f1 d1 c1 d1 e1
}
bassoMusic = \relative c {
\clef bass
c1 c1 c1 d1 e1 f1 d1 c1 d1 e1 c1 c1 d1 e1 f1 d1 c1 d1 e1 c1 c1 d1 e1 f1 d1 c1 d1 e1
}
\score {
\new ChoirStaff <<
\new Staff {
\set Staff.instrumentName = "Soprano II"
\incipit { \clef soprano }
\set Staff.shortInstrumentName = "S II"
\sopranoMusic
}
\new Staff {
\set Staff.instrumentName = "Alto"
\incipit { \clef alto }
\set Staff.shortInstrumentName = "A II"
\altoMusic
}
\new Staff {
\set Staff.instrumentName = "Tenore"
\incipit { \clef tenor }
\tenoreMusic
}
\new Staff {
\set Staff.instrumentName = "Basso I"
\bassoMusic
}
>>
\layout {
indent = #28
short-indent = #10
\context {
\Staff
\override InstrumentName #'self-alignment-X = #LEFT
}
}
}
Ich hoffe, das hilft Dir weiter...
Viele Grüße
Torsten