| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
@translationof Appearance of objects
In diesem Abschnitt wollen wir zeigen, wie die Kenntnisse der vorigen Abschnitte in der Praxis angewandt werden können, um das Aussehen des Musiksatzes zu beeinflussen.
| 4.3.1 Viditelnost a barva předmětů | ||
| 4.3.2 Velikost předmětů | ||
| 4.3.3 Délka a tloušťka předmětů |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
@translationof Visibility and color of objects
In Unterrichtsmaterial für den Musikunterricht wird oft eine Partitur dargestellt, in der bestimmte Notationselemente fehlen, so dass der Schüler die Aufgabe bekommt, die nachzutragen. Ein einfaches Beispiel ist etwa, die Taktlinien zu entfernen, damit der Schüler sie selber zeichnen kann. Aber die Tatklinien werden normalerweise automatisch eingefügt. Wie verhindern wir, dass sie ausgegeben werden?
Bevor wir uns hieran machen, sei daran erinnert, dass Objekteigenschaften in sogenannten Schnittstellen – engl. interface – gruppiert sind, siehe auch vlastnosti nacházející se v rozhraních. Das dient ganz einfach dazu, die Eigenschaften zusammenzufassen, die üblicherweise zusammen benötigt werden – wenn eine davon für ein Objekt gilt, dann auch die anderen. Manche Objekte brauchen die Eigenschaften von der einen Schnittstelle, andere von einer anderen. Die Schnittstellen, die die Eigenschaften von einem bestimmten Grob beinhalten, sind in der IR unten auf der Seite aufgelistet, die dieses Grob beschreibt. Die Eigenschaften können betrachtet werden, indem die Seite der entsprechenden Schnittstelle geöffnet wird.
Zu Information, wie man Eigenschaften von Grobs findet, siehe
vlastnosti předmětů v rozvržení. Wir benutzen also jetzt
die selbe Methode um in der IR das Layout-Objekt zu finden,
dass für die Tatklinien zuständig ist. Über die Überschriften
Backend und All layout objects kommen
wir zu einem Layout-Objekt mit der Bezeichnung
BarLine (engl. TaktLinie). Seine Eigenschaften
beinhalten zwei, die über die Sichtbarkeit entscheiden:
break-visibility und stencil.
BarLine unterstützt auch einige Schnittstellen,
unter anderem grob-interface, wo wir eine
transparent und eine color-Eigenschaft
finden. Alle können die Sichtbarkeit von Taktlinien (und
natürlich auch die Sichtbarkeit von vielen anderen Objekten)
beeinflussen. Schauen wir uns diese Eigenschaften eine
nach der anderen an.
Diese Eigenschaft kontrolliert die Erscheinung der Taktlinien,
indem sie das Symbol bestimmt, das ausgegeben werden soll.
Wie bei vielen anderen Eigenschaften auch, kann sie so
eingestellt werden, dass sie nichts ausgibt, indem ihr Wert
auf #f (falsch) gesetzt wird. Ein Versuch also,
wie vorher, indem wir den impliziten Kontext (Voice)
auslassen:
{ \time 12/16 \override BarLine.stencil = ##f c4 b8 c d16 c d8 g,8 a16 b8 c d4 e16 | e8 }
Die Taktlinien werden aber immer noch angezeigt. Was ist da
falsch gelaufen? Gehen Sie zurück zur IR und schauen Sie auf
die Seite, die die Eigenschaften für BarLine angibt.
Oben auf der Seite steht: „Barline objects are created
by: Bar_engraver“. Schauen Sie sich die
Bar_engraver-Seite an. Unten auf der Seite steht
eine Liste der Kontexte, in denen der Takt-Engraver
funktioniert. Alle Kontexte sind Staff-Typen (also
Notensystem-Typen). Der Grund, warum der
\override-Befehl nicht funktioniert hat, liegt
also darin, dass das Taktlinie-Objekt (BarLine) sich nicht
im Voice-Kontext befindet. Wenn der Kontext
falsch angegeben wird, bewirkt der Befehl einfach gar
nichts. Keine Fehlermeldung wird ausgegeben und auch
nichts in die Log-Datei geschrieben. Versuchen wir also,
den richtigen Kontext mit anzugeben:
{ \time 12/16 \override Staff.BarLine.stencil = ##f c4 b8 c d16 c d8 g,8 a16 b8 c d4 e16 e8 }
Jetzt sind die Taktlinien wirklich verschwunden.
Es sollte jedoch beachtet werden, dass das Setzen der
stencil-Eigenschaft auf #f zu Fehlerhinweisen führen
kann, wenn die Dimensionen des Objekts für die richtige Behandlung
benötigt werden. Zum Beispiel werden Fehler ausgegeben, wenn
die stencil-Eigenschaft des NoteHead-Objekts auf
#f gesetzt wird. Wenn dieser Fall auftritt, kann anstatt
dessen die point-stencil-Funktion benutzt werden, welche
den Stencil auf ein Objekt mit der Größe Null setzt:
\relative { c''4 c \once \override NoteHead.stencil = #point-stencil c4 c }
Aus der Beschreibung der Eigenschaften für BarLine
in der IR geht hervor, dass die break-visibility-Eigenschaft
einen Vektor mit drei Booleschen Werten benötigt. Diese
kontrollieren jeweils, ob die Taktlinien am Ende einer Zeile,
in der Mitte einer Zeile und am Anfang einer Zeile ausgegeben
werden. Wenn also alle Taktlinien unsichtbar sein sollen, wie in
unserem Beispiel, brauchen wir den Wert '#(#f #f #f).
Versuchen wir es also, und berücksichtigen wir auch den
Staff-Kontext. Beachten Sie auch, dass Sie ##
vor der öffnenden Klammer schreiben müssen:
# wird benötigt als Teil des Wertes, um einen Vektor zu
signalisieren, und das erste # wird benötigt, um
den Wert in einem \override-Befehl anzuführen.
{ \time 12/16 \override Staff.BarLine.break-visibility = ##(#f #f #f) c4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Auch auf diesem Weg gelingt es, die Taktlinien unsichtbar zu machen.
Aus den Eigenschaftsdefinitionen auf der grob-interface-Seite
in der IR geht hervor, dass die transparent-Eigenschaft
boolesch ist. Mit #t (wahr) wird also ein Grob durchsichtig
gemacht. Im unserem Beispiel soll jetzt die Taktart durchsichtig
gemacht werden, anstatt die Taktlinien durchsichtig zu machen.
Wir brauchen also wieder die Grob-Bezeichnung für die Taktart.
Auf der „All layout objects“-Seite in der IR müssen wir die
Eigenschaften des TimeSignature-Layout-Objekts suchen
Das Objekt wird vom Time_signature_engraver erstellt,
der sich auch im Staff-Kontext befindet und genauso das
grob-interface unterstützt, wie Sie sich
überzeugen können. Der Befehl, um die Taktangabe unsichtbar zu
machen, ist also:
\relative { \time 12/16 \override Staff.TimeSignature.transparent = ##t c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Die Taktangabe ist verschwunden, aber mit diesem Befehl wird ein
freier Platz gelassen, wo sich die Taktangabe eigentlich befinden
würde. Das braucht man vielleicht für eine Schulaufgabe, in der
die richtige Taktangabe eingefügt werden soll, aber in anderen
Fällen ist diese Lücke nicht schön. Um auch die Lücke zu entfernen,
muss die Matrize (stencil) der Taktangabe auf #f (falsch)
gesetzt werden:
{ \time 12/16 \override Staff.TimeSignature.stencil = ##f c4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Und der Unterschied wird deutlich: hiermit wird das gesamte Objekt
entfernt, während man mit transparent ein Objekt
unsichtbar machen kann, es aber an seinem Platz gelassen wird.
Abschließend wollen wir die Taktlinien unsichtbar machen, indem wir sie weiß einfärben. (Es gibt hier eine Schwierigkeit: die weiße Taktlinie übermalt manchmal die Taktlinien, wo sie sie kreuzt, manchmal aber auch nicht. Sie können in den Beispielen unten sehen, dass das nicht vorhersagbar ist. Die Einzelheiten dazu, warum das passiert und wie sie es kontrollieren können, werden dargestellt in (notation)Objekte weiß malen section ‘Objekte weiß malen’ in Doporučení pro notový zápis. Im Moment wollen wir lernen, wie man mit Farbe arbeitet, akzeptieren Sie bitte an dieser Stelle die Beschränkung.)
Das grob-interface bestimmt, dass der Wert der Farb-Eigenschaft
eine Liste ist, aber es gibt keine Erklärung, was für eine Liste das
sein soll. Die Liste, die benötigt wird, ist eine Liste mit Werten in
internen Einheiten, aber damit Sie nicht wissen müssen, wie diese
aussehen, gibt es mehrere Wege, Farben anzugeben. Der erste
Weg ist es, „normale“ Farben zu benutzen, wie sie in der
Tabelle in
(notation)Liste der Farben section ‘Liste der Farben’ in Doporučení pro notový zápis aufgelistet sind. Beachten Sie,
dass die Bezeichnungen auf Englisch sind. Um die Taktlinien auf
weiß zu setzen, können Sie schreiben:
\relative { \time 12/16 \override Staff.BarLine.color = #white c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
und die Taktlinien verschwinden in der Tat. Beachten Sie, dass white nicht mit einem Apostroph angeführt wird – es ist kein Symbol, sondern eine Funktion. Wenn sie aufgerufen wird, stellt sie eine Liste mit internen Werten zu Verfügung, mit welcher die Farbe auf weiß gestellt wird. Die anderen Farben in der Liste sind auch Funktionen. Um sich zu überzeugen, dass der Befehl auch wirklich funktioniert, können Sie die Farbe auf eine der anderen Funktionen dieser Liste abändern.
Die zweite Art die Farbe zu ändern geschieht, indem die Liste
der X11-Farbbezeichnungen einzusetzen, siehe die zweite Liste
in
(notation)Liste der Farben section ‘Liste der Farben’ in Doporučení pro notový zápis. Diesen Farben muss jedoch eine
andere Funktion vorangestellt werden, die die X11-Farbbezeichnungen
in interne Werte konvertiert:
x11-color. Das geschieht wie folgt:
\relative { \time 12/16 \override Staff.BarLine.color = #(x11-color 'white) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
In diesem Fall hat die Funktion x11-color ein Symbol
als Argument, darum muss dem Symbol ein Apostroph vorangestellt
und beide zusammen in Klammern gesetzt werden.
Es gibt noch eine dritte Funktion, die RGB-Werte in die
internen Werte übersetzt – die rgb-color-Funktion. Sie
braucht drei Argumente, um die Stärke von Rot, Grün und
Blau darzustellen. Die Werte befinden sich zwischen
0 und 1. Um also die Farbe Rot darzustellen, muss der
Wert der Funktion lauten: (rgb-color 1 0 0), weiß
würde sein: (rgb-color 1 1 1).
\relative { \time 12/16 \override Staff.BarLine.color = #(rgb-color 1 1 1) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Schließlich gibt es noch eine Grauskala, die zu den X11-Farben
gehört. Sie reicht von schwarz ('grey0') bis
weiß ('grey100), in Einerschritten. Wir wollen das
illustrieren, indem alle Layout-Objekte im Beispiel
verschiede Grauschattierungen erhalten:
\relative { \time 12/16 \override Staff.StaffSymbol.color = #(x11-color 'grey30) \override Staff.TimeSignature.color = #(x11-color 'grey60) \override Staff.Clef.color = #(x11-color 'grey60) \override Voice.NoteHead.color = #(x11-color 'grey85) \override Voice.Stem.color = #(x11-color 'grey85) \override Staff.BarLine.color = #(x11-color 'grey10) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Beachten Sie die Kontexte, die mit jedem einzelnen Layout-Objekt verbunden sind. Es ist wichtig, den richtigen Kontext einzusetzen, damit die Befehle funktionieren. Denken Sie daran, dass der Kontext sich daran orientiert, wo sich der entsprechende Engraver befindet. Den Standardkontext für Engraver finden Sie, indem Sie beim Layout-Objekt beginnen, zum Engraver gehen, der es produziert und auf der Seite des Engravers in der IR finden Sie Information, in welchem Kontext sich der Engraver normalerweise befindet.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
@translationof Size of objects
Als Startpunkt wollen wir wieder ein früheres Beispiel wählen, siehe Naskládání hudebních výrazů do sebe. Hier wurde ein neues Notensystem erstellt, wie man es für ein (music-glossary)ossia section ‘ossia’ in Slovníček braucht.
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f c c } \new Staff \with { alignAboveContext = "main" } { f8 f c } >> r4 | } }
Ossia-Systeme werden normalerweise ohne Schlüssel und Taktangabe
geschrieben, und sie werden etwas kleiner als das Hauptsystem gesetzt.
Wie man Schlüssel und Taktangabe entfernt, wissen wir schon:
wir setzen den Stencil von beiden auf #f:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" } { \override Staff.Clef.stencil = ##f \override Staff.TimeSignature.stencil = ##f { f8 f c } } >> r4 } }
wobei ein zusätzliches Klammerpaar nach der \with-Konstruktion
erforderlich ist um sicherzugehen, dass die Modifikation und
die Noten sich auch auf das Ossia-System beziehen.
Was für einen Unterschied macht es, ob man den Staff-Kontext
mit \with verändert, oder ob man die Stencils mit
\override beeinflusst? Der größte Unterschied liegt
darin, dass Änderungen, die mit \with eingeführt werden,
während der Erstellung des Kontextes miterzeugt werden und
als Standardeinstellungen für diesen Kontext während seiner
gesamten Dauer gelten, während \set- oder \override-Befehle
dynamisch in die Noten eingebettet werden – sie führen die
Änderungen synchron mit einem bestimmten Zeitpunkt in
der Musik aus. Wenn die Änderungen mit \unset
oder \revert rückgängig gemacht werden, werden
wieder die Standardwerte eingesetzt, die also die sind, die
mit einer \with-Konstruktion definiert wurden, oder
wenn hier keine definiert worden sind, die normalen
Standardwerte.
Manche Kontexteigenschaften können nur ein einer
\with-Konstruktion verändert werden. Das sind
Eigenschaften, die nicht sinnvoll mitten im System geändert
werden können. alignAboveContext (Orientierung
über dem Kontext) und die Parallele,
alignBelowContext (Orientierung unter dem Kontext)
sind zwei derartige Eigenschaften – wenn das Notensystem
einmal erstellt wurde, ist die Orientierung schon bestimmt
und es wäre nicht sinnvoll, sie später zu ändern.
Die Standardwerte für Layout-Objekt-Eigenschaften können
auch in der \with-Konstruktion gesetzt werden.
Benutzen Sie einfach den normalen \override-Befehl
ohne den Kontext, denn der Kontext ist eindeutig definiert
durch die Stelle, an welcher sich \with befindet.
Wenn an dieser Stelle ein Kontext angegeben wird, produziert LilyPond
eine Fehlermeldung.
Das obige Beispiel könnte also auch so aussehen:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" % Don't print clefs in this staff \override Clef.stencil = ##f % Don't print time signatures in this staff \override TimeSignature.stencil = ##f } { f8 f c } >> r4 } }
Nun können wir daran gehen, auch wirklich die Größe der Objekte zu ändern.
Manche Layout-Objekte werden aus Glyphen erstellt,
die sich in einer Schriftartdatei befinden. Dazu gehören
die Notenköpfe, Versetzungszeichen, Text, Schlüssel,
Taktbezeichnung, Dynamik und Gesangstext. Ihre
Größe wird verändert, indem die
font-size- (Schriftgröße)-Eigenschaft geändert wird, wie
wir bald sehen werden. Andere Layout-Objekte, wie
Bögen – oder allgemein Strecker-Objekte – werden
individuell gezeichnet, es gibt dazu also keine
font-size, die mit ihnen verknüpft wäre.
Weitere Eigenschaften wie die Länge von Hälsen und
Taktlinien, Dicke von Balken und anderen Linien und
der Abstand der Notenlinien voneinander müssen auf
spezielle Weise verändert werden.
In unserem Ossia-Beispiel wollen wir zuerst die Schriftgröße verändern. Das ist auf zwei Arten möglich. Entweder wir ändern die Schriftgröße für jede Objektart mit einem eigenen Befehl, etwa:
\override NoteHead.font-size = #-2 |
oder wir ändern die Größe aller Schriftobjekte, indem wir
den Wert einer besonderen Eigenschaft, fontSize,
mit dem \set-Befehl bestimmen oder sie in
eine \with-Konstruktion (ohne \set einschließen.
\set fontSize = #-2 |
Beide Beispiele reduzieren die Schriftgröße um zwei Schritte im Vergleich zum vorigen Wert, wobei jeder Schritt die Schriftgröße um etwa 12% verändert.
Setzen wir das also in unserem Ossia-Beispiel ein:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" \override Clef.stencil = ##f \override TimeSignature.stencil = ##f % Reduce all font sizes by ~24% fontSize = #-2 } { f8 f c } >> r4 } }
Das sieht aber immer noch nicht richtig aus. Die Notenköpfe und Fähnchen sind kleiner, aber die Hälse im Vergleich dazu zu lang und die Notenlinien zu weit auseinander. Sie müssen auch proportional zur Schriftart verkleinert werden. Der nächste Abschnitt behandelt diese Anpassung.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
@translationof Length and thickness of objects
Abstände und Längen werden in LilyPond üblicherweise
in Notenlinienabständen (engl. staff-spaces) gemessen.
Das ist der Abstand zwischen zwei Notenlinien im System.
Die meisten Dicken (engl. thickness) dagegen werden in
einer internen Einheit Linien-Dicke (engl. line-thickness)
gemessen. Die Linien von Dynamikklammern zum Beispiel
haben standardmäßig eine Dicke von einer Einheit
line-thickness, während die Dicke eines
Notenhalses 1,3 ist. Beachten Sie jedoch, dass sich
manche Dicken anders verhalten: die Dicke von
Balken etwa wird in Notenlinienabständen gemessen.
Wie also werden Längen skaliert um der Schriftgröße
zu entsprechen? Das kann mit einer besonderen Funktion
magstep vorgenommen werden, die genau für
diesen Zweck vorhanden ist. Sie nimmt ein Argument auf,
die Änderung der Schriftgröße (#-2 im obigen Beispiel)
und gibt einen Skalierungsfaktor aus, der dazu dient,
Objekte proportionell zueinander zu verändern. So wird
sie benutzt:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" \override Clef.stencil = ##f \override TimeSignature.stencil = ##f fontSize = #-2 % Reduce stem length and line spacing to match \override StaffSymbol.staff-space = #(magstep -2) } { f8 f c } >> r4 } }
Da die Länge eines Halses und viele andere Längeneigenschaften
relativ zum Wert des Notenlinienabstands (staff-space)
errechnet werden, werden sie auch automatisch verkleinert.
Das wirkt sich jedoch nur auf die vertikale Skalierung des Ossias
aus – die horizontale Skala ist durch das Layout des Haupsystems
bestimmt und wird also von diesen Größenänderungen nicht
betroffen. Wenn natürlich die Größe der gesamten Noten reduziert
würde, würde sich auch die horizontalen Abstände ändern. Dass
wird später im Layout-Abschnitt betrachtet.
Mit dieser Änderung ist unser Ossia fertig. Die Größen und Längen aller anderen Objekte können auf analoge Weise geändert werden.
Für kleine Größenänderungen, wie in dem obigen Beispiel,
braucht die Dicke der verschiedenen Linien, wie Taktlinien,
Notenlinien, Balken, Dynamikklammern usw. normalerweise
keine spezielle Anpassung. Wenn die Dicke eines bestimmten
Layout-Objektes angepasst werden muss, kann man das erreichen,
indem die entsprechende thickness-Eigenschaft des
Objekts mit \override verändert wird. Ein Beispiel,
wie man die Dicke von Bögen ändert, wurde schon gezeigt,
siehe vlastnosti předmětů v rozvržení. Die Dicke aller
gezeichneten Objekte (die also nicht aus einer Schriftart
stammen) können auf gleiche Weise geändert werden.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by gub on July 13, 2020 using texi2html 1.82.
Jiné jazyky: English, català, deutsch, español, français, italiano, 日本語, nederlands.
O automatickém výběru řeči.