5.4.5 Strecker

Viele Objekte der Musiknotation erstrecken sich über mehrere Objekte oder gar mehrere Takte. Beispiele hierfür sind etwa Bögen, Balken, Triolenklammern, Volta-Klamern in Wiederholungen, Crescendo, Triller und Glissando. Derartige Objekte werden als „Strecker“ bezeichnet. Sie haben spezielle Eigenschaften, mit welchen ihre Eigenschaften und ihr Verhalten beeinflusst werden kann. Einige dieser Eigenschaften gelten für alle Strecker, andere beschränken sich auf eine Untergruppe der Strecker.

Alle Strecker unterstützen das spanner-interface (Strecker-Schnittstelle). Ein paar, insbesondere die, die zwischen zwei Objekten eine gerade Linie ziehen, unterstützen auch das line-spanner-interface (Strecker-Linienschnittstelle).

Das spanner-interface benutzen

Diese Schnittstelle stellt zwei Eigenschaften zur Verfügung, die sich auf mehrere Strecker auswirken:

Die minimum-length-Eigenschaft

Die Mindestlänge eines Streckers wird durch die minimum-length-Eigenschaft definiert. Wenn diese Eigenschaft vergrößert wird, muss in den meisten Fällen auch der Abstand der Noten zwischen den zwei Endpunkten eines Streckers verändert werden. Eine Veränderung dieser Eigenschaft hat jedoch auf die meisten Strecker keine Auswirkung, weil ihre Länge aus anderen Berechnungen hervorgeht. Einige Beispiele, wo die Eigenschaft benutzt wird, sind unten dargestellt.

a~a
a
% increase the length of the tie
-\tweak minimum-length #5
~a

[image of music]

a1
\compressEmptyMeasures
R1*23
% increase the length of the rest bar
\once \override MultiMeasureRest.minimum-length = #20
R1*23
a1

[image of music]

a \< a a a \!
% increase the length of the hairpin
\override Hairpin.minimum-length = #20
a \< a a a \!

[image of music]

Diese Veränderung kann auch eingesetzt werden, um die Länge von Legato- und Phrasierungsbögen zu verändern:

a( a)
a
-\tweak minimum-length #5
( a)

a\( a\)
a
-\tweak minimum-length #5
\( a\)

[image of music]

Im Falle einiger Layoutobjekte wirkt sich die minimum-length-Eigenschaft erst dann aus, wenn die set-spacing-rods-Prozedur explizit aufgerufen wird. Um das zu tun, sollte die springs-and-rods-Eigenschaft auf ly:spanner::set-spacing-rods gesetzt werden. Die Mindestlänge eines Glissandos etwa wird erst aktiv, wenn die springs-and-rods-Eigenschaft gesetzt ist:

% default
e' \glissando c''

% not effective alone
\once \override Glissando.minimum-length = #20
e' \glissando c''

% effective only when both overrides are present
\once \override Glissando.minimum-length = #20
\once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods
e' \glissando c''

[image of music]

Das gilt auch für das Beam-(Balken-)Objekt:

% not effective alone
\once \override Beam.minimum-length = #20
e'8 e' e' e'

% effective only when both overrides are present
\once \override Beam.minimum-length = #20
\once \override Beam.springs-and-rods = #ly:spanner::set-spacing-rods
e'8 e' e' e'

[image of music]

Die to-barline-Eigenschaft

Die zweite nützliche Eigenschaft des spanner-interface ist to-barline (bis zum Taktstrich). In den Standardeinstellungen ist diese Eigenschaft auf „wahr“ gesetzt, was bedeutet, dass ein Strecker, etwa eine Crescendo-Klammer, der an der ersten Noten eines Taktes beendet wird, sich nur bis zum vorhergehenden Taktstrich erstreckt. Wenn die Eigenschaft auf „falsch“ gesetzt wird, erstrecken sich die Strecker entsprechend über die Taktlinie hinüber und enden erst an der entsprechenden Note:

\relative {
  a' \< a a a a \! a a a \break
  \override Hairpin.to-barline = ##f
  a \< a a a a \! a a a
}

[image of music]

Diese Eigenschaft wirkt sich nicht auf alle Strecker aus. Im Falle von Legato- oder Phrasierungsbögen etwa hat diese Eigenschaft keinen Effekt. Das gilt auch für alle anderen Streckern, bei denen es nicht sinnvoll währe, sie an einer Taktlinie abzuschließen.

Das line-spanner-interface benutzen

Objekte, die das line-spanner-interface unterstützen, sind unter Anderem:

Die Routine, die das Setzen der Matrizen dieser Strecker hervorruft, ist ly:line-interface::print. Diese Routine bestimmt die exakte Position der zwei Endpunkte und zeichnet eine Linie zwischen ihnen, in dem erforderlichen Stil. Die Position der zwei Endpunkte des Streckers wird in Echtzeit errechnet, aber es ist möglich, ihre Y-Koordinaten zu verändern. Die Eigenschaften, die angegeben werden müssen, sind zwei Ebenen in der Objekthierarchie tiefer angeordnet, aber die Syntax des \override-Befehls ist ziemlich einfach:

e''2 \glissando b'
\once \override Glissando.bound-details.left.Y = #3
\once \override Glissando.bound-details.right.Y = #-2
e''2 \glissando b'

[image of music]

Die Einheiten für die Y-Eigenschaft werden in Notenlinienabständen angegeben, wobei die Mittellinie des Notensystems die Null darstellt. Für das Glissando ist der Wert von Y am entsprechenden X-Koordinatenpunkt entsprechend dem Mittelpunkt des Notenkopfes, wenn die Linie bis in die Noten hinein weitergeführt werden würde.

Wenn Y nicht gesetzt wird, wird der Wert aus der vertikalen Position des entsprechenden Anknüpfpunkts des Streckers errechnet.

Im Fall eines Zeilenumbruchs werden die Werte der Endpunkte in den Unterlisten left-broken bzw. right-broken von bound-details abgelegt. Zum Beispiel:

\override Glissando.breakable = ##t
\override Glissando.bound-details.right-broken.Y = #-3
c''1 \glissando \break
f''1

[image of music]

Eine Anzahl weitere Eigenschaft der left- und right-Unterlisten der bound-details-Eigenschaft kann auf gleiche Weise wie Y verändert werden:

Y

Hiermit wird der Y-Koordinationspunkt des Endpunktes in Notenlinienabständen vom Mittelpunkt des Notensystems ausgehend angegeben. Der Endpunkt ist normalerweise der Mittelpunkt des Elternobjektes, sodass Glissandos vertikal auf den Mittelpunkt eines Notenkopfes weist.

Für horizontale Strecker, wie Textstrecker und Trillerstrecker ist sein Wert mit 0 definiert.

attach-dir

Das entscheidet, wo die Linie auf der X-Achse beginnt und endet, relativ zum Elternobjekt. Ein Wert -1 (oder LEFT) lässt die Linie an der linken Seite der Noten beginnen/enden, mit der sie verknüpft ist.

X

Das ist der absolute X-Koordinatenpunkt des Endpunktes. Der Wert wird normalerweise in Echtzeit errechnet, und ihn zu verändern ist normalerweise nicht nützlich.

stencil

Linienstrecker können Symbole am Ende oder zu Anfang des Streckers haben, die in dieser Untereigenschaft definiert werden. Die Eigenschaft ist für interne Benutzung, es wird empfohlen, die Eigenschaft text zu benutzen.

text

Das ist eine Textbeschriftung, die ausgewertet wird und die stencil-Eigenschaft überschreibt. Sie wird eingesetzt, um cresc., tr oder andere Texte an horizontale Strecker zu setzen.

\override TextSpanner.bound-details.left.text
   = \markup { \small \bold Slower }
\relative { c''2\startTextSpan b c a\stopTextSpan }

[image of music]

stencil-align-dir-y
stencil-offset

Wenn keine dieser beiden Eigenschaften gesetzt wird, wird die Matrize (engl. stencil) einfach am Endpunkt des Streckers, auf seiner Mittellinie (wie durch X und Y definiert) zentriert, ausgegeben. Wenn entweder stencil-align-dir-y oder stencil-offset gesetzt werden, wird das Symbol am Rand vertikal entsprechend des Endpunktes der Linie verschoben:

\override TextSpanner.bound-details.left.stencil-align-dir-y = #-2
\override TextSpanner.bound-details.right.stencil-align-dir-y = #UP

\override TextSpanner.bound-details.left.text = "ggg"
\override TextSpanner.bound-details.right.text = "hhh"

\relative { c'4^\startTextSpan c c c \stopTextSpan }

[image of music]

Dabei sollte beachtet werden, dass negative Werte das Objekt nach oben verschieben, anders als man erwarten könnte, weil der Wert -1 oder DOWN bedeutet, dass die Unterkante des Textes mit der Streckerlinie ausgerichtet wird. Ein Wert 1 oder UP richtet die Oberkante des Textes mit der Streckerlinie aus.

arrow

Wenn diese Untereigenschaft auf #t gesetzt wird, wird ein Pfeilkopf am Ende der Linie erstellt.

padding

Diese Eigenschaft kontrolliert den Abstand zwischen dem angegebenen Endpunkt der Linie und dem wirklichen Ende. Ohne Füllung (engl. padding) würde ein Glissando in der Mitte eines Notenkopfes beginnen und enden.

Die musikalische Funktion \endSpanners beschließt den Strecker, der an der direkt folgenden Note beginnt, bevor er eigentlich zu ende wäre. Er wird exakt nach einer Note beendet, oder am nächsten Taktstrich, wenn to-barline auf wahr gesetzt ist und eine Taktlinie vor der nächsten Note erscheint.

\relative c'' {
  \endSpanners
  c2 \startTextSpan c2 c2
  \endSpanners
  c2 \< c2 c2
}

[image of music]

Wenn man \endSpanners benutzt, ist es nicht nötig, den Befehl \startTextSpan mit \stopTextSpan zu beenden, und es ist auch nicht nötig, Crescendo-Klammern mit \! zu beenden.

Siehe auch

Referenz der Interna: TextSpanner, Glissando, VoiceFollower, TrillSpanner, line-spanner-interface.


LilyPond Benutzerhandbuch v2.25.22 (development-branch).