[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Fingersatz ] | [ Nach oben : Positionierung von Objekten ] | [ Die outside-staff-priority-Eigenschaft > ] |
5.4.3 Objekte außerhalb des Notensystems
Objekte außerhalb des Notensystems werden automatisch gesetzt, um Kollisionen zu vermeiden. Es gibt eine ganze Reihe von Möglichkeiten die Platzierung zu beeinflussen, sollte die Automatik kein optimales Resultat produzieren.
Die outside-staff-priority -Eigenschaft | ||
Der \textLengthOn -Befehl (Textlänge berücksichtigen) | ||
Positionierung von Dynamikzeichen | ||
Verändern der Größe von grobs |
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Objekte außerhalb des Notensystems ] | [ Nach oben : Objekte außerhalb des Notensystems ] | [ Der textLengthOn-Befehl > ] |
Die outside-staff-priority
-Eigenschaft
Objekten mit einem geringeren
Prioritätswert der Eigenschaft outside-staff-priority
werden näher an das System gesetzt, und andere Objekte außerhalb
des Systems werden dann soweit vom System entfernt gesetzt, dass
Zusammenstöße vermieden werden. Die
outside-staff-priority
-Eigenschaft ist im
grob-interface
definiert und ist also eine Eigenschaft
von allen Layout-Objekten. Standardmäßig ist sie für alle Objekte
auf falsch (#f
) gesetzt; dieser Wert wird in einen numerischen
Wert dem Objekt entsprechend geändert, wenn das Objekt für die
Notenausgabe erstellt wird. Die Tabelle unten zeigt die
Standardwerte für die meistbenutzten outside-staff
-Objekte.
Achtung bei einigen ungewöhnlichen Objektbezeichnungen: Strecker-Objekte
werden automatisch erstellt, um die vertikale Position von Grobs
zu kontrollieren, die an unterschiedlichen musikalischen Momenten
beginnen und enden (könnten). Wenn also outside-staff-priority
des darunterliegenden Grobs geändert wird, hat das keine Auswirkung.
Zum Beispiel bringt das Ändern von outside-staff-priority
des Hairpin
-(Dynamikklammer)-Objekts keine Änderung in der
vertikalen Position von Crescendo-Klammern – anstatt dessen muss
outside-staff-priority
des hiermit assoziierten
DynamicLineSpanner
-Objekts geändert werden. Dieser
\override
-Befehl muss zu Beginn des Streckers gesetzt werden,
welcher womöglich mehrere verbundene Dynamikklammern und Dynamikbezeichnung
beinhaltet.
Layout-Objekt | Priorität | Kontrolliert Position von: |
---|---|---|
RehearsalMark | 1500 | Übungszeichen |
MetronomeMark | 1000 | Metronomzeichen |
VoltaBracketSpanner | 600 | Volta-Wiederholungsklammern |
TextScript | 450 | Textbeschriftung |
MultiMeasureRestText | 450 | Text über Ganztaktpausen |
OttavaBracket | 400 | Ottava (Oktavierungsklammern) |
TextSpanner | 350 | Text-Strecker |
DynamicLineSpanner | 250 | Alle Dynamik-Bezeichnungen |
BarNumber | 100 | Taktzahlen |
TrillSpanner | 50 | Triller-Strecker |
Hier ein Beispiel, das die Standardpositionierung von einigen Objekten zeigt.
% Set details for later Text Spanner \override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } % Place dynamics above staff \dynamicUp % Start Ottava Bracket \ottava #1 c''4 \startTextSpan % Add Dynamic Text and hairpin c''4\pp\< c''4 % Add Text Script c''4^Text | c''4 c'' % Add Dynamic Text and terminate hairpin c''4\ff c'' \stopTextSpan | % Stop Ottava Bracket \ottava #0 c'4 c' c' c' |
Dieses Beispiel zeigt auch, wie man Text-Strecker erstellt, d.h.
Text mit Bindestrichen, der sich über eine bestimmte Länge
erstreckt. Der Strecker beginnt mit dem
\startTextSpan
-Befehl und endet mit dem
\stopTextSpan
-Befehl, und das Format des Textes
wird mit dem \override TextSpanner
-Befehl bestimmt.
Mehr Einzelheiten siehe
Text mit Verbindungslinien.
Im Beispiel wird auch gezeigt, wie Oktavierungsklammern (Ottava) erstellt werden.
Wenn die Standardwerte der outside-staff-priority
nicht
die Positionierung hervorrufen, die Sie wünschen, kann die
Priorität eines jeden Objektes geändert werden. Als Beispiel
wollen wir zeigen, wie sich die Oktavierungsklammer unter
den Textstrecker des vorigen Beispiels setzen lässt. Wir müssen
nur die Priorität des
OttavaBracket
-Objektes in der IR oder der Tabelle oben
herausfinden und einen kleineren Wert angeben als der Wert, den
das TextSpanner
-(Strecker)-Objekt bekommt, wobei noch daran
zu denken ist, dass OttavaBracket
im Staff
-Kontext
erstellt wird:
% Set details for later Text Spanner \override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } % Place dynamics above staff \dynamicUp % Place following Ottava Bracket below Text Spanners \once \override Staff.OttavaBracket.outside-staff-priority = #340 % Start Ottava Bracket \ottava #1 c''4 \startTextSpan % Add Dynamic Text c''4\pp % Add Dynamic Line Spanner c''4\< % Add Text Script c''4^Text | c''4 c'' % Add Dynamic Text c''4\ff c'' \stopTextSpan | % Stop Ottava Bracket \ottava #0 c'4 c' c' c' |
Beachten Sie, dass einige dieser Objekte, insbesondere Taktzahlen,
Metronomzeichen und Übungszeichen standardmäßig im Score
-Kontext
zu Hause sind; benutzen Sie also den richtigen Kontext, wenn sie
deren Einstellungen verändern wollen.
Legatobögen werden als Innersystem-Objekte klassifiziert, aber
sie erscheinen oft auch über dem System, wenn die Noten, an die
sie verbunden sind, sehr hoch im System notiert sind. Dadurch
können Außersystem-Objekte, wie Artikulationszeichen, zu hoch
gerückt werden. Die avoid-slur
-Eigenschaft hat nur
eine Auswirkung, wenn auch die outside-staff-priority
auf #f
gesetzt ist. Alternativ kann die
outside-staff-priority
des Legatobogens auf einen
numerischen Wert gesetzt werden, sodass er mit anderen
Außersystem-Objekten anhand dieses Wertes gesetzt wird.
Hier ein Beispiel, das die beiden Möglichkeiten veranschaulicht:
\relative c'' { c4( c^\markup { \tiny \sharp } d4.) c8 | c4( \once \override TextScript.avoid-slur = #'inside \once \override TextScript.outside-staff-priority = ##f c4^\markup { \tiny \sharp } d4.) c8 | \once \override Slur.outside-staff-priority = #500 c4( c^\markup { \tiny \sharp } d4.) c8 | }
Eine Änderung der outside-staff-priority
kann auch dazu
benutzt werden, die vertikale Platzierung von individuellen Objekten
zu kontrollieren, auch wenn das Ergebnis nicht immer optimal
ist. Im nächsten Beispiel soll „Text3“ oberhalb von „Text4“
gesetzt werden, das Beispiel wurde behandelt in
Automatisches Verhalten. Der Wert der Priorität muss also für
die Eigenschaft TextScript
entweder in der IR oder in der
Tabelle oben festgestellt werden und dann die Priorität für
„Text3“ höher eingestellt werden:
c''2^"Text1" c''2^"Text2" | \once \override TextScript.outside-staff-priority = #500 c''2^"Text3" c''2^"Text4" |
Damit wird zwar „Text3“ ganz richtig über „Text4“
platziert, aber auch über „Text2“, und „Text4“
wird jetzt weiter unten gesetzt. Eigentlich sollten ja alle
diese Anmerkungen gleich weit vom System entfernt sein.
Dazu muss offensichtlich horizontal etwas Platz gemacht
werden. Das kann erreicht werden mit dem
textLengthOn
-(Textlänge an)-Befehl.
Der \textLengthOn
-Befehl (Textlänge berücksichtigen)
Standardmäßig wird Text, der mit dem Beschriftungsbefehl
\markup
bzw. Äquivalenten erstellt wird, kein
zusätzlicher Platz in Bezug auf die Positionierung der Noten
zugestanden. Der \textLengthOn
-Befehl ändert
dieses Verhalten, so dass die Noten gespreizt werden, wenn
die Breite des Textes es erfordert:
\textLengthOn % Cause notes to space out to accommodate text c''2^"Text1" c''2^"Text2" | c''2^"Text3" c''2^"Text4" |
Dieses Verhalten wird mit dem \textLengthOff
-Befehl
rückgängig gemacht. Alternativ kann auch \once
zusammen mit
\textLengthOn
benutzt werden, um die Auswirkung auf einen
einzigen musikalisches Zeitpunkt zu begrenzen. Das entsprechende
Verhalten bzgl. des horizontalen Platzes für Übungzeichen und
Tempomarkierungen kann hiervon unabhängig durch die Befehle
\markLengthOn
und \markLengthOff
analog gesteuert werden.
Textbeschriftung vermeidet auch Noten, die über das System hinausstehen.
Wenn das nicht gewünscht ist, kann die automatische Verschiebung
nach oben hin auch vollständig ausgeschaltet werden, indem die
Priorität auf #f
gesetzt wird. Hier ein Beispiel, wie
eine Textbeschriftung mit diesen Noten reagiert:
\relative { % This markup is short enough to fit without collision c''2^"Tex" c'' | R1 | % This is too long to fit, so it is displaced upwards c,,2^"Text" c'' | R1 | % Turn off collision avoidance \once \override TextScript.outside-staff-priority = ##f c,,2^"Long Text " c'' | R1 | % Turn off collision avoidance \once \override TextScript.outside-staff-priority = ##f \textLengthOn % and turn on textLengthOn c,,2^"Long Text " % Spaces at end are honored c''2 | }
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Der textLengthOn-Befehl ] | [ Nach oben : Objekte außerhalb des Notensystems ] | [ Verändern der Größe von grobs > ] |
Positionierung von Dynamikzeichen
Dynamikbezeichnung wird üblicherweise unter dem System
gesetzt, kann aber auch nach oben mit dem Befehl
\dynamicUp
gezwungen werden. Die Bezeichnung
wird vertikal relativ zu der Note positioniert, an die sie angefügt
wurde. Sie wird vertikal variabel gesetzt in Bezug zu
Innersystemobjekten wie Bögen oder Taktnummern. Damit
können oft recht gute Resultate erreicht werden, wie im
folgenden Beispiel:
\relative { \clef "bass" \key aes \major \time 9/8 \dynamicUp bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! | ees,2.~\)\mf ees4 r8 | }
Wenn aber Noten und Dynamikzeichen sehr dicht beieinander stehen, positioniert die automatische Kollisionsvermeidung später kommende Dynamikzeichen weiter weg, was allerdings nicht immer die beste Möglichkeit ist, wie in dem folgenden, etwas gewollten Beispiel zu sehen ist:
\dynamicUp \relative { a'4\f b\mf a\mp b\p }
Wenn eine ähnliche Situation in „echter“ Musik auftaucht,
kann es nötig sein, die Noten etwas zu spreizen, damit die
Dynamikzeichen alle auf der selben vertikalen Position
gesetzt werden können. Dieses Verhalten war im Falle von
Textbeschriftungen möglich mit dem \textLengthOn
-Befehl,
aber es gibt keinen entsprechenden Befehl für Dynamik. Wir
müssen also unsere eigenen Befehle mit \override
konstruieren.
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Positionierung von Dynamikzeichen ] | [ Nach oben : Objekte außerhalb des Notensystems ] | [ Vertikale Abstände > ] |
Verändern der Größe von grobs
Zuallererst müssen wir lernen, wie die Größe von Grobs verändert
wird. Alle Grobs besitzen einen Referenzpunkt, der
benutzt wird, um ihre Position in Relation zu ihnen übergeordneten
Objekten zu bestimmen. Dieser Punkt innerhalb des Grobs wird dann
auf einer horizontalen Position (X-offset
) und einer
vertikalen Position (Y-offset
) ausgerichtet, immer bezüglich
des übergeordneten Objektes. Eine horizontale Strecke wird
durch ein Zahlenpaar angegeben (X-extent
), welche
die linke und rechte Grenze relativ zum übergeordneten Objekt
bezeichnen. Die vertikale Strecke wir genauso durch ein
Zahlenpaar (Y-extent
) definiert. Diese Eigenschaften
gehören zu allen Grobs, die das
grob-interface
unterstützen.
Standardmäßig haben Außersystemobjekte eine Länge von Null,
so dass sie sich in horizontaler Richtung überlappen können. Das
geschieht, indem dem linken Rand Unendlich zugewiesen wird
und dem rechten Rand minus Unendlich, d.h. die
extra-spacing-width
-(zusätzliche Positionierungslänge)-Eigenschaft
wird auf den Wert '(+inf.0 . -inf.0)
gesetzt.
Damit sich diese Objekte also horizontal nicht überschneiden, muss
der Wert von extra-spacing-width
überschrieben werden um den
Objekten ein wenig zusätzlich Platz zuzuweisen. Die Einheit ist der
Abstand zwischen zwei Notenlinien, also sollte es reichen die linke
und rechte Kante je eine halbe Einheit nach links bzw. rechts zu verschieben:
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
Schauen wir uns an, wie es mit dem vorigen Beispiel funktioniert:
\dynamicUp % Extend width by 1 staff space \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5) \relative { a'4\f b\mf a\mp b\p }
Das sieht schon besser aus, aber es wäre noch besser, wenn die
Dynamik-Zeichen alle an einer Linie ausgerichtet wären, anstatt
höher und tiefer zu sitzen. Das kann mit der
staff-padding
-Eigenschaft erreicht werden,
die wir uns im folgenden Abschnitt genauer anschauen werden.
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Positionierung von Dynamikzeichen ] | [ Nach oben : Objekte außerhalb des Notensystems ] | [ Vertikale Abstände > ] |