[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < ] | [ Nach oben : Nützliche Konzepte und Eigenschaften ] | [ Einen stencil entfernen > ] |
5.4.6 Sichtbarkeit von Objekten
Die Sichtbarkeit von Layout-Objekten kann auf vier Arten
kontrolliert werden: Ihre Matrizen (engl stencil) können
entfernt werden, sie können unsichtbar gemacht werden,
sie können weiß eingefärbt werden und ihre
break-visibility
-Eigenschaft kann verändert werden.
Die ersten drei Möglichkeiten beziehen sich auf alle
Layout-Objekte, die letzte nur auf einige wenige, nämlich
die zerteilbaren Objekte. Das Handbuch zum Lernen
führt in alle vier Möglichkeiten ein, siehe
Sichtbarkeit und Farbe von Objekten.
Es gibt auch einige weitere Techniken, die sich nur auf bestimmte Layout-Objekte beziehen. Sie werden im letzten Abschnitt behandelt.
Einen stencil entfernen | ||
Objekten unsichtbar machen | ||
Objekte weiß malen | ||
break-visibility (unsichtbar machen) benutzen | ||
Besonderheiten |
[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < Sichtbarkeit von Objekten ] | [ Nach oben : Sichtbarkeit von Objekten ] | [ Objekten unsichtbar machen > ] |
Einen stencil
entfernen
Jedes Layout-Objekt hat eine Matrizen-(stencil)-Eigenschaft.
Sie ist normalerweise definiert als die Funktion, die das
entsprechende Objekt zeichnet. Wenn die Eigenschaft mit
\override
auf #f
gesetzt wird, wird keine
Funktion aufgerufen und also auch kein Objekt gezeichnet.
Das Standardverhalten kann mit dem Befehl \revert
wieder hergestellt werden.
a1 a \omit Score.BarLine a a \undo \omit Score.BarLine a a a
[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < Einen stencil entfernen ] | [ Nach oben : Sichtbarkeit von Objekten ] | [ Objekte weiß malen > ] |
Objekten unsichtbar machen
Jedes Layout-Objekt hat eine Durchsichtigkeits-Eigenschaft
('transparent
),
die normalerweise auf den Wert #f
gesetzt ist. Wenn
sie auf #t
gesetzt wird, nimmt das Objekt immer noch
den entsprechenden Platz ein, ist aber unsichtbar.
a'4 a' \once \hide NoteHead a' a'
Objekte weiß malen
Alle Layout-Objekte haben eine Farb-(color)-Eigenschaft, die
normalerweise schwarz (black
) definiert ist. Wenn
sie nach weiß (white
) verändert wird, kann man das
Objekt nicht mehr vom weißen Hintergrund unterscheiden.
Wenn das Objekt jedoch andere Objekte überschneidet, wird
die Farbe der Überschneidungen von der Reihenfolge entschieden,
in welcher die Objekte gesetzt werden. Es kann also vorkommen,
dass man die Umrisse des weißen Objektes erahnen kann, wie
in diesem Beispiel:
\override Staff.Clef.color = #white a'1
Das kann man vermeiden, indem man die Satzreihenfolge der Objekte
verändert. Alle Layout-Objekte haben eine layer
-Eigenschaft,
die auf eine ganze Zahl gesetzt sein muss. Objekte mit der
niedrigsten Zahl in der layer
-Eigenschaft werden zuerst
gesetzt, dann die nächsten Objekte in ansteigender Ordnung. Objekte
mit höheren Werten überschneiden also Objekte mit niedrigeren
Werten. Die meisten Objekte bekommen den Wert 1
zugewiesen,
einige wenige Objekte, unter die auch StaffSymbol
(die
Notenlinien) gehört, jedoch den Wert 0
. Die Reihenfolge,
in der Objekte mit demselben Wert gesetzt werden, ist nicht
definiert.
Im oberen Beispiel wird der weiße Schlüssel, der einen Wert von
1
für layer
hat, nach den Notenlinien gesetzt
(die einen Wert von 0
für layer
haben) und
überschneidet sie also. Um das zu ändern, muss dem Clef
-Objekt
(Notenschlüssel) ein niedrigerer Wert, etwa -1
, gegeben
werden, sodass es früher gesetzt wird:
\override Staff.Clef.color = #white \override Staff.Clef.layer = #-1 a'1
[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < Objekte weiß malen ] | [ Nach oben : Sichtbarkeit von Objekten ] | [ Besonderheiten > ] |
break-visibility
(unsichtbar machen) benutzen
Die meisten Layout-Objekte werden nur einmal gesetzt, aber
einige, wie Taktstriche, Schlüssel, Taktartbezeichnung und
Tonartvorzeichen, müssen mehrmals gesetzt werden, wenn
die Zeile gewechselt wird: einmal am Ende des oberen Systems
und ein zweites Mal zu Beginn des nächsten Systems.
Derartige Objekte werden als trennbar bezeichnet
und haben eine Eigenschaft, die break-visibility
-Eigenschaft,
mit der ihre Sichtbarkeit an allen drei Positionen, an denen
sie auftreten können, kontrolliert werden kann: zu Beginn
einer Zeile, innerhalb einer Zeile, wenn sie verändert werden,
und am Ende einer Zeile, wenn die Änderung hier stattfindet.
Die Taktart wird beispielsweise standardmäßig nur zu Beginn des ersten Systems gesetzt, aber an anderen Stellen nur, wenn sie sich ändert. Wenn diese Änderung am Ende eines Systems auftritt, wird die neue Taktart am Ende des aktuellen Systems als auch zu Beginn des nächsten Systems gesetzt.
Dieses Verhalten wird von der break-visibility
-Eigenschaft
kontrolliert, die erklärt wird in
Sichtbarkeit und Farbe von Objekten. Die Eigenschaft
braucht einen Vektor von drei Booleschen Werten, die in ihrer
Reihenfolge bestimmte, ob das Objekt a) zu Ende der Zeile,
b) innerhalb einer Zeile oder c) zu Beginn einer Zeile gesetzt
wird. Oder, genauer gesagt, vor einem Zeilenumbruch, an Stellen,
wo kein Zeilenumbruch auftritt oder nach einem Zeilenumbruch.
Die acht möglichen Kombinationen können auch durch vordefinierte Funktionen bestimmt werden, welche in der Datei ‘scm/output-lib.scm’ definiert sind. Die letzten drei Spalten der folgenden Tabelle zeigen an, ob das Layout-Objekt an einer bestimmten Position sichtbar sein wird oder nicht:
Funktion | Vektor | Vor | kein | Nach |
---|---|---|---|---|
Form | Form | Umbruch | Umbruch | Umbruch |
all-visible | '#(#t #t #t) | ja | ja | ja |
begin-of-line-visible | '#(#f #f #t) | nein | nein | ja |
center-visible | '#(#f #t #f) | nein | ja | nein |
end-of-line-visible | '#(#t #f #f) | ja | nein | nein |
begin-of-line-invisible | '#(#t #t #f) | ja | ja | nein |
center-invisible | '#(#t #f #t) | ja | nein | ja |
end-of-line-invisible | '#(#f #t #t) | nein | ja | ja |
all-invisible | '#(#f #f #f) | nein | nein | nein |
Die Standardeinstellungen von break-visibility
hängen vom
Layout-Objekt ab. Die folgende Tabelle zeigt alle wichtigen Layout-Objekte,
die mit break-visibility
verändert werden können und die
jeweiligen Standardeinstellungen der Eigenschaft:
Layout-Objekt | Normaler Kontext | Standardeinstellung |
---|---|---|
BarLine (Taktstrich) | Score | calculated |
BarNumber (Taktzahl) | Score | begin-of-line-visible |
BreathingSign (Atemzeichen) | Voice | begin-of-line-invisible |
Clef (Schlüssel) | Staff | begin-of-line-visible |
Custos | Staff | end-of-line-visible |
DoublePercentRepeat (Doppel-Prozent-Wiederholung | Voice | begin-of-line-invisible |
KeySignature (Tonart) | Staff | begin-of-line-visible |
ClefModifier (Oktavierungs-Acht) | Staff | begin-of-line-visible |
RehearsalMark (Übungszeichen) | Score | end-of-line-invisible |
TimeSignature (Taktart) | Staff | all-visible |
Das Beispiel unten zeigt die Verwendung der Vektor-Form um die Sichtbarkeit von Taktlinien zu bestimmten:
f4 g a b f4 g a b % Remove bar line at the end of the current line \once \override Score.BarLine.break-visibility = ##(#f #t #t) \break f4 g a b f4 g a b
Obwohl alle drei Bestandteile des Vektors, mit denen
break-visibility
definiert wird, vorhanden sein
müssen, haben nicht alle eine Auswirkung auf jedes
Layout-Objekt, und einige Kombinationen können sogar
Fehler hervorrufen. Es gelten die folgenden Einschränkungen:
- Taktstriche können nicht zu Beginn einer Zeile gesetzt werden.
- Eine Taktzahl kann nicht zu Beginn der ersten Zeile gesetzt werden, außer wenn er nicht 1 ist.
- Schlüssel – siehe unten.
-
Doppel-Prozent-Wiederholungen werden entweder alle ausgegeben
oder alle unterdrückt. Mit
begin-of-line-invisible
werden sie ausgegeben, mitall-invisible
unterdrückt. - Tonart – siehe unten.
- Oktavierungs-Acht – siehe unten.
[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < break-visibility (unsichtbar machen) benutzen ] | [ Nach oben : Sichtbarkeit von Objekten ] | [ Linienstile > ] |
Besonderheiten
Sichtbarkeit nach expliziten Änderungen
Die break-visibility
-Eigenschaft kontrolliert die Sichtbarkeit
von Tonarten und Schlüsseländerungen nur zu Beginn einer Zeile,
d.h. nach einem Zeilenumbruch. Sie hat keinen Einfluss auf die
Sichtbarkeit von Tonarten bzw. Schlüsseln, die nach einer
expliziten Tonart- oder Schlüsseländerung in oder am Ende einer
Zeile angezeigt werden. Im nächsten Beispiel ist die Tonartangabe
nach dem expliziten Wechsel zu B-Dur immer noch sichtbar, obwohl
all-invisible
eingesetzt wurde:
\relative { \key g \major f'4 g a b % Try to remove all key signatures \override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break f4 g a b f4 g a b }
Die Sichtbarkeit derartiger expliziter Tonart- und Schlüsseländerungen
wird von den explicitKeySignatureVisibility
- und
explicitClefVisibility
-Eigenschaften kontrolliert. Sie
entsprechen der break-visibility
-Eigenschaft und beide
brauchen drei Boolesche Werte bzw. die oben aufgelisteten vordefinierten
Funktionen als Argument, genau wie break-visibility
.
Beide sind Eigenschaft des Staff
-Kontextes, nicht der
Layout-Objekte selber, weshalb sie mit dem Befehl \set
eingesetzt werden. Beide sind standardmäßig auf die Funktion
all-visible
gesetzt. Diese Eigenschaften kontrollieren nur
die Sichtbarkeit von Tonarten bzw. Schlüssel, die von expliziten
Änderungen herrühren, und haben keinen Einfluss auf Tonarten und
Schlüssel zu Beginn einer Zeile – um diese zu beeinflussen, muss
break-visibility
benutzt werden.
\relative { \key g \major f'4 g a b \set Staff.explicitKeySignatureVisibility = #all-invisible \override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break f4 g a b f4 g a b }
Sichtbarkeit von erinnernden Versetzungszeichen
Um erinnernde Versetzungszeichen zu entfernen, die nach einer
expliziten Tonartänderung auftreten, muss die Staff
-Eigenschaft
printKeyCancellation
auf #f
gesetzt werden:
\relative { \key g \major f'4 g a b \set Staff.explicitKeySignatureVisibility = #all-invisible \set Staff.printKeyCancellation = ##f \override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break f4 g a b f4 g a b }
Mit diesen Veränderungen bleiben nur noch die Versetzungszeichen vor den Noten übrig um den Wechsel der Tonart anzuzeigen.
Automatische Takte
Ein Sonderfall sind die automatischen Taktstriche, die mit der
Eigenschaft automaticBars
im Score
-Kontext
ausgeschaltet werden können. Wenn sie auf #f
gesetzt
ist, werden Taktstrich nicht automatisch ausgegeben sondern
müssen explizit mit dem \bar
-Befehl eingegeben werden.
Anders als bei dem \cadenzaOn
-Befehl werden die Takte
allerdings immer noch gezählt. Takterstellung wird später
wieder mit diesem Zahl aufgenommen, wenn die Eigenschaft
wieder auf #t
gesetzt wird. Wenn sie den Wert #f
hat, können Zeilenumbrüche nur an expliziten \bar
-Befehlen
auftreten.
Oktavierte Schlüssel
Das kleine Oktavierungssymbol von oktavierten Notenschlüsseln
wird durch das ClefModifier
-Layout-Objekt erstellt.
Seine Sichtbarkeit wird automatisch vom Clef
-Objekt
geerbt, sodass Veränderungen von break-visibility
des ClefModifier
-Layout-Objekts nicht auch noch
für unsichtbare Schlüssel zusätzlich vorgenommen werden müssen.
Bei expliziten Schlüsseländerungn kontrolliert die
explicitClefVisibility
-Eigenschaft wohl das
Schlüsselsymbol als auch das damit verknüpfte Oktavierungssymbol.
Siehe auch
Handbuch zum Lernen: Sichtbarkeit und Farbe von Objekten.
[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < break-visibility (unsichtbar machen) benutzen ] | [ Nach oben : Sichtbarkeit von Objekten ] | [ Linienstile > ] |