LilyPond Benutzerhandbuch: 5.4.5 Strecker

### 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

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

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

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\)

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''

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'

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
>     }

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:

- `DynamicTextSpanner`
- `Glissando`
- `TextSpanner`
- `TrillSpanner`
- `VoiceFollower`

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'

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

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 }

`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 }

  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
>     }

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 – Notationsreferenz v2.24.4 (stabiler Zweig).