Hallo
pjheinrich,es ist ja fast alles schon beantwortet … Grundsätzlich solltest Du wirklich pro Frage einen eigenen Thread starten.
Zunächst zum eigentlichen Thema: Nicht alles, was Text ist, ist automatisch ein „Textobjekt“. Lily unterscheidet viele verschiedene
grafische Objekte, die ihren Typ nicht deshalb ändern, nur weil Text darin vorkommt. Hier einmal die für den Anfang wichtigsten:
- TextScript: Ein ganz normales Objekt, das an einer Note oder einer normalen Pause (keine Ganztaktpause!) verankert ist, z.B. c^"Ich bin Text." Auf diese Weise kann jegliches Markup verankert werden, z.B. c8^\markup { \note #"2." #UP }. Ist das jetzt automatisch ein „Notenobjekt“? Wohl kaum. Es bleibt TextScript und muss als solches angesprochen werden.
- Script: Alle (vordefinierten) Artikulationszeichen, z.B. \fermata oder \prall.
- DynamicText: Alle (vordefinierten) Dynamikzeichen, z.B. \ppp oder \mf.
- MultiMeasureRestText: Wie TextScript, aber an Ganztaktpausen verankert.
- RehearsalMark: Objekte, die mittels \mark eingegeben werden, z.B. \mark "Allegro." oder
\mark \markup { \note #"1" #1 " = " \note #"1." #1 } - LyricText: Eine Silbe als Liedtext unterlegt. Bindestriche sind vom Typ LyricHyphen, Fülllinien vom Typ LyricExtender.
Es muss eben immer das richtige Objekt angesprochen werden, bevor man haareraufend versucht, eine Viertelpause per
\override NoteHead #'extra-offset = #'(0 . -2) zu verschieben

Ist es möglich, dieses Textfeld so zu verschieben, dass es z.B. direkt vor dem Text des Soprans, also direkt vor "Scitote ..." steht?
Ja, ist es. Ich rate allerdings davon ab, dieses in eine Zeile mit dem Liedtext zu rücken. Ich würde es immer in Notennähe platzieren (siehe Clip). Im Normalfall (eine Stimme pro Zeile) steht diese Angabe immer
über der Zeile, da gäbe es ohnehin keine Kollision mit Liedtext. Solche Angaben werden also an der Note verankert, z.B. (
g4^"SOLO.") und dann per
\once \override TextScript #'extra-offset = #'(-3 . 0) verschoben. Eleganter geht es, eine eigene Variable nebst eigener Verschiebefunktion zu definieren:
% Variable definieren:
solo = \markup { \bold "SOLO." }
% TextScript verschieben; Benutzung: \tsOffset #'(X . Y)
tsOffset = #(define-music-function (parser location X-Y) (pair?)
#{
\once \override TextScript #'Y-extent = #'(0 . 0)
\once \override TextScript #'extra-offset = #$X-Y
#})
% Variable und Funktion im Einsatz:
\relative c'' { \tsOffset #'(-3 . 0) g4^\solo }
Gibt es eine Möglichkeit die Pause die sich im Takt, wo der Sopran einsetzt, mit dem d1 "reibt" vertikal zu verschieben?
Auch diese Möglichkeit gibt es, deswegen ist die Antwort auf die Frage: ja. Auf alle anderen Fragen lautet die Antwort übrigens auch: ja. Bitte formuliere Fragen künftig entsprechend. Du möchtest sicher wissen,
wie man das macht

Wurde ja bereits gezeigt.
Gibt es eine Möglichkeit, […] dass ich die Ganztaktpause der anderen Stimme vertikal im Notensystem verschieben kann und sie gleichzeitig im Takt zentriert bleibt?
Ja, selbe Vorgehensweise. Wenn Ganztaktpausen überwiegend gemeinsam auftreten und nur punktuell verschoben werden müssen, ist es am besten, die vertikale Position in beiden beteiligten Stimmen per
\override MultiMeasureRest #'staff-position = #0 für alle festzulegen und einzelne gezielt mittels Eigenbaufunktion an die richtige Stelle zu schieben:
% Ganztaktpause verschieben; Benutzung: \mmrOffset #Y
mmrOffset = #(define-music-function (parser location Y) (number?)
#{
\once \override MultiMeasureRest #'staff-position = #$Y
#})
% im Einsatz:
\relative c' { \mmrOffset #-7 R2. }
0 ist dabei die Standardposition für ganze und Ganztaktpausen, in diesem Fall identisch mit dem Wert
+2. Intern hat die mittlere Notenlinie den Wert
0, auf den sich positive und negative Werte beziehen.
-7 bewirkt also einen Versatz von 7 Tonstufen nach unten, gerechnet ab der mittleren Linie.
Hier ist jetzt noch der komplette Code mit allen angesprochenen Funktionen:
\version "2.14.2"
\include "deutsch.ly"
%%% ANFANG "gemeinsame Pausen"-Script (LSR #336) %%%
#(define (rest-score r)
(let ((score 0)
(yoff (ly:grob-property-data r 'Y-offset))
(sp (ly:grob-property-data r 'staff-position)))
(if (number? yoff)
(set! score (+ score 2))
(if (eq? yoff 'calculation-in-progress)
(set! score (- score 3))))
(and (number? sp)
(<= 0 2 sp)
(set! score (+ score 2))
(set! score (- score (abs (- 1 sp)))))
score))
#(define (merge-rests-on-positioning grob)
(let* ((can-merge #f)
(elts (ly:grob-object grob 'elements))
(num-elts (and (ly:grob-array? elts)
(ly:grob-array-length elts)))
(two-voice? (= num-elts 2)))
(if two-voice?
(let* ((v1-grob (ly:grob-array-ref elts 0))
(v2-grob (ly:grob-array-ref elts 1))
(v1-rest (ly:grob-object v1-grob 'rest))
(v2-rest (ly:grob-object v2-grob 'rest)))
(and
(ly:grob? v1-rest)
(ly:grob? v2-rest)
(let* ((v1-duration-log (ly:grob-property v1-rest 'duration-log))
(v2-duration-log (ly:grob-property v2-rest 'duration-log))
(v1-dot (ly:grob-object v1-rest 'dot))
(v2-dot (ly:grob-object v2-rest 'dot))
(v1-dot-count (and (ly:grob? v1-dot)
(ly:grob-property v1-dot 'dot-count -1)))
(v2-dot-count (and (ly:grob? v2-dot)
(ly:grob-property v2-dot 'dot-count -1))))
(set! can-merge
(and
(number? v1-duration-log)
(number? v2-duration-log)
(= v1-duration-log v2-duration-log)
(eq? v1-dot-count v2-dot-count)))
(if can-merge
;; keep the rest that looks best:
(let* ((keep-v1? (>= (rest-score v1-rest)
(rest-score v2-rest)))
(rest-to-keep (if keep-v1? v1-rest v2-rest))
(dot-to-kill (if keep-v1? v2-dot v1-dot)))
;; uncomment if you're curious of which rest was chosen:
;;(ly:grob-set-property! v1-rest 'color green)
;;(ly:grob-set-property! v2-rest 'color blue)
(ly:grob-suicide! (if keep-v1? v2-rest v1-rest))
(if (ly:grob? dot-to-kill)
(ly:grob-suicide! dot-to-kill))
(ly:grob-set-property! rest-to-keep 'direction 0)
(ly:rest::y-offset-callback rest-to-keep)))))))
(if can-merge
#t
(ly:rest-collision::calc-positioning-done grob))))
%%% ENDE "gemeinsame Pausen"-Script %%%
% Ganztaktpause verschieben; Benutzung: \mmrOffset #Y
mmrOffset = #(define-music-function (parser location Y) (number?)
#{
\once \override MultiMeasureRest #'staff-position = #$Y
#})
% TextScript verschieben; Benutzung: \tsOffset #'(X . Y)
tsOffset = #(define-music-function (parser location X-Y) (pair?)
#{
\once \override TextScript #'Y-extent = #'(0 . 0)
\once \override TextScript #'extra-offset = #$X-Y
#})
solo = \markup { \bold "SOLO." }
tutti = \markup { \bold "TUTTI." }
Global = {
\time 3/4
\key b \major
\override MultiMeasureRest #'staff-position = #0
s2.*5
}
SopranNoten = \relative c'' {
R2.*2
\tsOffset #'(-3 . 0) g4^\solo d b' b8 a a4 r
c4 c4. es8
}
SopranText = \lyricmode {
Sci -- to -- te quo -- ni -- am Do -- mi -- nus
}
AltNoten = \relative c'' {
R2.*2
\mmrOffset #-7 R2.
\mmrOffset #-7 R2.
\tsOffset #'(-5 . 0) a4_\tutti a4. c8
}
AltText = \lyricmode {
Do -- mi -- nus
}
\score {
\context Staff = "Frauen"
<<
\context Voice = "Sopran" {
\voiceOne
<< \Global \SopranNoten >>
}
\context Lyrics = "SopranText" \with {
alignAboveContext = "Frauen"
} \lyricsto "Sopran" \SopranText
\context Voice = "Alt" {
\voiceTwo
<< \Global \AltNoten >>
}
\context Lyrics = "AltText" \with {
alignBelowContext = "Frauen"
} \lyricsto "Alt" \AltText
>>
\layout {
\context {
\Score
autoBeaming = ##f
}
\context {
\Staff
\override RestCollision #'positioning-done = #merge-rests-on-positioning
}
\context {
\Lyrics
\override LyricHyphen #'minimum-distance = #1
}
}
}
Grüße, Robert