Hallo Grisu,
willkommen im Forum.
Ein paar allgemeine Sachen:
Bitte setze längeren Code in code-tags:
[ code ] mein-code [ / code ]
Natürlich ohne die Leerzeichen, erreichbar über den #-Button
Füge auf jeden Fall die Version ein.
Du erhöhst Deine Chancen eine schnelle und hilfreiche Antwort zu bekommen, wenn Du Deinen Code minimal gestaltest, z.B. hätten es zwei Staffs getan/midi-Setzungen hättest Du auch weglassen können.
Eine vernünftige Indentation gehört auch dazu.
Allgemeine Ratschläge:
Mit neuer Syntax können viele Angaben weniger aufwendig vorgenommen werden. Siehe meinen Code unten.
Füge nach { und vor } immer ein Leerzeichen ein, ansonsten kann es schon mal seltsame Fehlermeldungen geben:
\new Staff \with { \override NoteHead.color = #red} { b1 }
->
Zitat von: terminal
error: GUILE signaled an error for the expression beginning here
\new Staff \with { \override NoteHead.color = #
red} { b1 }
Unbound variable: red}
atest-105.ly:2107:58: error: Unfinished main input
\new Staff \with { \override NoteHead.color = #red} { b1
}
atest-105.ly:2107:53: warning: Music unsuitable for context-mod
\new Staff \with { \override NoteHead.color = #red}
{ b1 }
atest-105.ly:2107:58: error: syntax error, unexpected end of input
\new Staff \with { \override NoteHead.color = #red} { b1
}
Zur eigentlichen Frage.
Ich glaube \incipit hat einen kleinen bug:
es
muß self-alignment-X auf RIGHT setzen, tut es auch, aber danach kommt man da nie wieder von weg...
Also habe ich \incipit so verändert, daß das (self-alignment-X auf RIGHT) nur für den ersten InstrumentName gilt, also die instrumentName-Setzung aber nicht für die folgenden, die shortInstrumentName-Setzungen. Stattdessen wird dort der vom user gesetzte Wert genommen, mit CENTER als fall-back.
Ansonsten setze indent, short-indent und incipit-width auf vernünftige Werte (unten sind sie der Demonstration wegen sehr gross).
\version "2.22.0"
incipit =
#(define-music-function (incipit-music) (ly:music?)
(_i "Output @var{incipit-music} before the main staff as an indication of
its appearance in the original music.")
#{
\once \override Staff.InstrumentName.stencil =
#(lambda (grob)
(let* ((instrument-name (ly:grob-property grob 'long-text))
(align-x (ly:grob-property grob 'self-alignment-X 0))
(align-y (ly:grob-property grob 'self-alignment-Y 0)))
(set! (ly:grob-property grob 'long-text)
#{ \markup {
\score
{
\new MensuralStaff \with {
\override InstrumentName.self-alignment-X = #align-x
\override InstrumentName.self-alignment-Y = #align-y
instrumentName = #instrument-name
}
{
$incipit-music
}
\layout {
$(ly:grob-layout grob)
indent-incipit-default = 15\mm
line-width = #(primitive-eval
'(or (false-if-exception indent)
indent-incipit-default))
indent = #(primitive-eval
'(or (false-if-exception (- line-width incipit-width))
(* 0.5 line-width)))
ragged-right = ##f
ragged-last = ##f
system-count = 1
\context {
\Score
\remove "Default_bar_line_engraver"
}
}
}
}
#})
(set! (ly:grob-property grob 'self-alignment-Y) #f)
;(set! (ly:grob-property grob 'self-alignment-X) RIGHT)
(let ((parts (ly:spanner-broken-into (ly:grob-original grob))))
(if (and (pair? parts) (not (equal? grob (car parts))))
(ly:grob-set-property! grob 'self-alignment-X align-x)
(ly:grob-set-property! grob 'self-alignment-X RIGHT)))
(system-start-text::print grob)))
#})
\score {
\new ChoirStaff
<<
\new Staff = Soprano
\with {
instrumentName = "Soprano"
shortInstrumentName = "S"
midiInstrument = "violin"
}
{
\incipit { \clef "soprano" \omit Staff.TimeSignature s1 }
\repeat unfold 12 { c''4 c'' c'' c''}
}
\new Staff = Alto
\with {
instrumentName = "Alto"
shortInstrumentName = "A"
midiInstrument = "violin"
}
{
\incipit { \clef "alto" \omit Staff.TimeSignature s1 }
\repeat unfold 12 { c''4 c'' c'' c''}
}
\new Staff = Tenore
\with {
instrumentName = "Tenore"
shortInstrumentName = "T"
midiInstrument = "viola"
}
{
\incipit { \clef "tenor" \omit Staff.TimeSignature s1 }
\clef "treble_8"
\repeat unfold 12 { c'4 c' c' c' }
}
\new Staff = Basso
\with {
instrumentName = "Basso"
shortInstrumentName = "B"
midiInstrument = "cello"
}
{
\repeat unfold 12 { c''4 c'' c'' c'' }
}
>>
\layout {
indent = 5\cm
short-indent = 5\cm
incipit-width = 3\cm
\override Staff.InstrumentName.self-alignment-X = #LEFT
}
}
Gruß,
Harm
EDIT diverse Tippfehler korrigiert, gibt wahrscheinlich noch mehr ...
Zitat von: HarmIch glaube \incipit hat einen kleinen bug
Patch dazu:
https://gitlab.com/lilypond/lilypond/-/merge_requests/707 (https://gitlab.com/lilypond/lilypond/-/merge_requests/707)
EDIT hier auch :(
Ich habe es mit der neuen Version von Lilypond versucht, jetzt funktioniert es - Danke an die Bug-Fixers!
Cheers, Grisu