| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
@translationof The Internals Reference manual
| 4.2.1 Vlastnosti předmětů v rozvržení | ||
| 4.2.2 Vlastnosti nacházející se v rozhraních | ||
| 4.2.3 Typy vlastností |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
@translationof Properties of layout objects
Angenommen, in Ihrer Partitur tritt ein Legatobogen
auf, der Ihrer Meinung nach zu dünn ausgefallen ist.
Sie würden ihn gerne etwas schwerer gezeichnet
sehen. Wie gehen Sie vor? Von den Anmerkungen in
früheren Abschnitten wissen Sie schon, dass LilyPond
sehr flexibel ist und eine derartige Modifikation
möglich sein sollte, und Sie erraten vielleicht,
dass ein \override-Befehl angebracht ist.
Aber gibt es eine Eigenschaft für die Dicke eines
Legatobogens (engl. slur), und wenn es sie gibt,
auf welche Weise lässt sie sich verändern? Hier
kommt die Referenz der Interna zur Geltung. Dort
finden sich alle Informationen, um den beschriebenen
und alle anderen \override-Befehle zu
konstruieren.
Bevor Sie jetzt in die Referenz der Interna wechseln, ist eine Warnung angebracht. Es handelt sich um ein Referenzdokument, was heißt, dass es sehr wenig oder gar keine Erklärungen enthält: seine Aufgabe ist es, Information klar und genau darzustellen. Das bedeutet, dass es auf den ersten Blick entmutigend wirkt. Die Einführung und Erklärung in diesem Abschnitt wird Ihnen aber schnell ermöglichen, genau die Information aus der Referenz zu entnehmen, die Sie benötigen. Beachten Sie, dass die Referenz der Interna nur auf Englisch existiert. Um die Eigenschaftsbezeichnung eines bestimmten Objektes zu finden, können Sie das Glossar (siehe (music-glossary)Top section ‘Musikglossar’ in Slovníček) verwenden, in dem die englischen Begriffe in viele andere Sprachen übersetzt sind.
Das Vorgehen soll an einem konkreten Beispiel einer echten Komposition demonstriert werden. Hier das Beispiel:
{ \key es \major \time 6/8 \relative { r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
Angenommen also, wir wollen die Legatobögen etwas dicker setzten. Ist das möglich? Die Legatobögen sind mit Sicherheit ein Layout-Objekt, die Frage muss also lauten: „Gibt es eine Eigenschaft von Legatobögen, die die Dicke bestimmt?“ Um diese Frage zu beantworten, müssen wir in der Referenz der Interna ( kurz IR) nachschauen.
Die IR für die LilyPond-Version, die Sie benutzen, findet sich auf der LilyPond-Webseite unter der Adresse https://lilypond.org. Gehen Sie zur Dokumentationsseite und klicken Sie auf den Link zur Referenz der Interna. Die Sprache ändert sich ab hier nach englisch. Für diese Übung sollten Sie die HTML-Version benutzen, nicht die „auf einer großen Seite“ oder die PDF-Version. Damit Sie die nächsten Absätze verstehen können, müssen Sie genauso vorgehen, während Sie weiterlesen.
Unter der Überschrift Top befinden sich fünf Links. Wählen Sie den Link zum Backend, wo sich die Information über Layout-Objekte befindet. Hier, unter der Überschrift Backend, wählen Sie den Link All layout objects. Die Seite, die sich öffnet, enthält ein Liste aller Layout-Objekte, die in Ihrerer LilyPond-Version benutzt werden, in alphabetischer Ordnung. Wählen Sie den Link Slur und die Eigenschaften der Legatobögen (engl. slur) werden aufgelistet.
Eine alternative Methode, auf diese Seite zu gelangen, ist von der Notationsreferenz aus. Auf einer der Seiten zu Legatobögen findet sich ein Link zur Referenz der Interna. Dieser Link führt Sie direkt auf diese Seite. Wenn Sie aber eine Ahnung haben, wie die Bezeichnung des Layout-Objektes lauten könnte, das sie ändern wollen, ist es oft schneller, direkt zur IR zu gehen und dort nachzuschlagen.
Aus der Slur-Seite in der IR könne wir entnehmen, dass Legatobögen (Slur-Objekte) durch den Slur_engraver erstellt werden. Dann werden die Standardeinstellungen aufgelistet. Beachten Sie, dass diese nicht in alphabetischer Reihenfolge geordnet sind. Schauen Sie sich die Liste an, ob sie eine Eigenschaft enthält, mit der die Dicke von Legatobögen kontrolliert werden kann. Sie sollten folgendes finden:
thickness (number)
1.2
Line thickness, generally measured in line-thickness
|
Das sieht ganz danach aus, als ob damit die Dicke geändert
werden kann. Es bedeutet, dass der Wert von
thickness einfach eine Zahl (number) ist,
dass der Standardwert 1.2 ist, und dass die Einheit
für die Dicke eine andere Eigenschaft mit der
Bezeichnung line-thickness ist.
Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen
in der IR, aber wir haben schon genug Informationen, um
zu versuchen, die Dicke eines Legatobogens zu ändern. Die
Bezeichnung des Layout-Objekts ist offensichtlich
Slur und die Bezeichnung der Eigenschaft, die geändert
werden soll
thickness. Der neue Wert sollte etwas mehr als 1.2 sein,
denn der Bogen soll ja dicker werden.
Den benötigten \override-Befehl können wir jetzt einfach
konstruieren, indem wir die Werte für die Bezeichnungen in den
Modellbefehl einfügen und den Kontext auslassen. Setzen wir
einmal einen sehr großen Wert für die Dicke um zu sehen, ob der
Befehl auch funktioniert. Also:
\override Slur.thickness = #5.0 |
Vergessen Sie nicht das Rautenzeichen und Apostroph
(#') vor der Eigenschaftsbezeichnung und das
Rautenzeichen vor dem neuen Wert!
Die nächste Frage ist nun: „Wohin soll dieser Befehl geschrieben werden?“ Solange wir uns noch im Lernstadium befinden, ist die beste Antwort: „Innerhalb der Noten, vor den ersten Legatobogen und nahe bei ihm.“ Also etwa so:
{ \key es \major \time 6/8 \relative { % Increase thickness of all following slurs from 1.2 to 5.0 \override Slur.thickness = #5.0 r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
und wirklich wird der Legatobogen dicker.
Das ist also die grundlegende Herangehensweise,
\override-Befehl zu formulieren. Es gibt einige
zusätzliche Komplikationen, denen wir uns später widmen
werden, aber Sie haben jetzt das Handwerkszeug, um Ihre
eigenen Befehle zu konstruieren – wenn Sie auch noch etwas
Übung benötigen. Die sollen Sie durch die folgenden Übungen
erhalten.
Manchmal muss dennoch der Kontext spezifiziert werden.
Welcher aber ist der richtige Kontext? Wir könnten raten,
dass Legatobögen sich im Voice-Kontext befinden,
denn sie sind immer einzelnen Melodielinien zugewiesen.
Aber wir können uns dessen nicht sicher sein. Um unsere
Annahme zu überprüfen, gehen wir wieder zu der Seite im
IR, die die Legatobögen beschreibt und die Überschrift
Slur hat. Dort steht: „Slur objects are created
by: Slur engraver“. Legatobögen werden also in dem Kontext
erstellt, in dem sich der Slur_engraver befindet.
Folgen Sie dem Link zu der Slur_engraver-Seite.
Unten auf der Seite steht, dass der Slur_engraver
sich in fünf Stimmen-Kontexten befindet, unter anderem
auch im normalen Voice-Kontext. Unsere Annahme
war also richtig. Und weil Voice einer der Kontexte
der untersten Ebene ist, welcher eindeutig schon dadurch
definiert ist, dass wir Noten eingeben, kann er an dieser Stelle
auch weggelassen werden.
Im Beispiel oben wurden alle Legatobögen dicker
gesetzt. Vielleicht wollen Sie aber nur den ersten Bogen
dicker haben. Das können Sie mit dem \once-Befehl
erreichen. Er wird direkt vor den \override-Befehl
gesetzt und bewirkt, dass nur der Bogen geändert wird, der
unmittelbar an der nächsten Note beginnt. Wenn
die nächste Note keinen Bogenbeginn hat, dann passiert
gar nichts – der Befehl wird nicht gespeichert, sondern einfach
vergessen. Der Befehl, mit \once zusammen benutzt,
muss also wie folgt positioniert werden:
{ \time 6/8 { \key es \major r4 bes8 % Increase thickness of immediately following slur only \once \override Slur.thickness = #5.0 bes8[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
Jetzt bezieht er sich nur noch auf den ersten Legatobogen.
Der \once-Befehl kann übrigens auch vor einem \set-Befehl
eingesetzt werden.
Eine weitere Möglichkeit: nur die beiden ersten Legatobögen sollen
dicker gesetzt werden. Gut, wir könnten jetzt zwei Befehle benutzen,
jeden mit dem \once-Präfix und direkt vor die entsprechende
Note gestellt, an welcher der Bogen beginnt:
{ \key es \major \time 6/8 \relative { r4 bes'8 % Increase thickness of immediately following slur only \once \override Slur.thickness = #5.0 bes[( g]) g | % Increase thickness of immediately following slur only \once \override Slur.thickness = #5.0 g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
Wir könnten aber auch den \once-Befehl weglassen und anstelle
dessen später den \revert-Befehl einsetzen, um die
thickness-Eigenschaft wieder auf ihren Standardwert zurückzusetzen:
{ \key es \major \time 6/8 \relative { r4 bes'8 % Increase thickness of all following slurs from 1.2 to 5.0 \override Slur.thickness = #5.0 bes[( g]) g | g8[( es]) es % Revert thickness of all following slurs to default of 1.2 \revert Slur.thickness d8[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
Der \revert-Befehl kann benutzt werden, um eine beliebige
Eigenschaft, die mit \override geändert worden ist, wieder in
ihre Standardeinstellungen zurückzuversetzen. In unserem Beispiel können
Sie die Methode benutzen, die Ihnen lieber ist, beide haben das gleiche
Resultat.
Damit endet die Einleitung in die Referenz der Interna (IR) und die grundlegenden postupy při ladění. Einige Beispiele folgen in späteren Abschnitten dieses Kapitel, einerseits um Sie mit weiteren Möglichkeiten der IR bekanntzumachen, andererseits um Ihnen mehr Übungsmöglichkeiten zu geben, die relevante Information dort zu finden. Die Beispiele werden Schritt für Schritt immer weniger Erklärungen beinhalten.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
@translationof Properties found in interfaces
Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für
ein \override-Befehl wird dazu benötigt? Schauen wir
uns zunächst das Inhaltsverzeichnis in der IR an: „All layout objects“,
wie auch schon zuvor. Welches Objekt könnte die Darstellung des
Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag LyricText,
das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften
an, die verändert werden können. Dazu gehört
font-series und font-size, aber nichts, womit man kursiven
Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen
Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzelnen
Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften
zusammen in einem Interface – einer Schnittstelle – verortet;
in diesem Fall das
font-interface.
Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften benutzen.
Schauen Sie sich noch einmal die Seite in der IR an, die LyricText
beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version
der IR) an Eigenschaften, die von LyricText unterstützt
werden. Diese Liste enthält sieben Einträge, darunter auch
font-interface. Ein Klick hierauf bringt uns zu den Eigenschaften,
die mit dieser Schnittstelle verbunden sind, also auch LyricText.
Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann,
um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch
font-shape(symbol), wobei symbol auf die Werte
upright (gerade), italics (kursiv) oder caps
(Kapitälchen) gesetzt werden kann.
Sie werden gemerkt haben, dass font-series und font-size
hier auch aufgelistet sind. Es stellt sich die Frage, warum diese
allgemeinen Schriftarteigenschaften font-series und
font-size sowohl unter der Überschrift
LyricText als unter dem font-interface aufgelistet
sind, aber font-shape befindet sich nur im
font-interface? Die Antwort ist: Die globalen Einstellungen
von font-series und font-size werden geändert, wenn
ein LyricText-Objekt erstellt wird, aber font-shape
wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der
Überschrift LyricText beinhalten dann die Werte der
Standardeinstellungen dieser zwei Eigenschaften, wenn es sich
um ein LyricText-Objekt handelt. Andere Objekte,
die auch das font-interface unterstützen, setzen diese
Eigenschaften anders, wenn sie erstellt werden.
Versuchen wir nun einen \override-Befehl zu konstruieren,
der den Gesangstext kursiv setzt. Das Objekt hat die Bezeichnung
LyricText, die Eigenschaft ist font-shape
und der Wert italic. Wie vorher schon lassen wir den
Kontext aus.
Am Rande sei angemerkt, dass die Werte der font-shape-Eigenschaft
mit einem Apostroph (') gekennzeichnet werden
müssen, weil es sich um Symbole handelt. Aus dem gleichen
Grund mussten auch für thickness weiter oben im
Text ein Apostroph gesetzt werden. Symbole sind besondere
Bezeichnungen, die LilyPond intern bekannt sind. Einige
sind Bezeichnungen von Eigenschaften, wie eben thickness
oder font-shape. Andere sind besondere Werte,
die an Eigenschaften übergeben werden können, wie
italic. Im Unterschied hierzu gibt es auch beliebige
Zeichenketten, die immer mit Anführungszeichen, also
als "Zeichenkette" auftreten. Für weitere
Einzelheiten zu Zeichenketten und Werten, siehe
(extending)Scheme-Übung section ‘Scheme-Übung’ in Extending.
Gut, der \override-Befehl, mit dem der Gesangstext
kursiv gesetzt wird, lautet:
\override LyricText.font-shape = #'italic |
und er muss direkt vor den Text gesetzt werden, auf den er sich bezieht, etwa so:
{ \key es \major \time 6/8 \relative { r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { \override LyricText.font-shape = #'italic The man who | feels love's sweet e -- | mo -- tion } }
Jetzt wird der Text kursiv gesetzt.
Bei Gesangstexten funktioniert der \override-Befehl
nicht mehr, wenn Sie den Kontext im oben dargestellten
Format angeben. Eine Silbe wird im Gesangtextmodus
(lyricmode) entweder von einem Leerzeichen, einer
neuen Zeile oder einer Zahl beendet. Alle anderen
Zeichen werden als Teil der Silbe integriert. Aus diesem
Grund muss auch vor der schließenden Klammer
} ein Leerzeichen gesetzt oder eine neue
Zeile begonnen werden. Genauso müssen Leerzeichen
vor und nach einem Punkt benutzt werden, um die
Kontext-Bezeichnung von der Objekt-Bezeichnung zu
trennen, denn sonst würden beide Bezeichnungen als
ein Begriff interpretiert und von LilyPond nicht verstanden
werden. Der Befehl muss also lauten:
\override Lyrics.LyricText.font-shape = #'italic |
Pozor: Innerhalb von Gesangstext muss immer ein Leerzeichen zwischen der letzten Silbe und der schließenden Klammer gesetzt werden.
Pozor: Innerhalb von override-Befehlen in
Gesangstexten müssen Leerzeichen um Punkte zwischen
Kontext- und Objektbezeichnungen gesetzt werden.
Erweitern: (extending)Scheme-Übung section ‘Scheme-Übung’ in Extending.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
@translationof Types of properties
Bis jetzt hatten wir es mit zwei Arten von Eigenschaften zu
tun: number (Zahl) und symbol. Damit
ein Befehl funktioniert, muss der Wert einer Eigenschaft
vom richtigen Typ sein und die Regeln befolgen, die
für diesen Typ gelten. Der Eigenschaftstyp ist in der
IR in Klammern hinter der Eigenschaftsbezeichnung
angegeben. Hier eine Liste der Typen, die Sie vielleicht
benötigen werden, mit den Regeln, die für den jeweiligen
Typ gelten und einigen Beispielen. Sie müssen immer
ein Rautenzeichen (#) vor den Typeintrag setzen,
wenn sie in einem \override-Befehl benutzt werden.
| Eigenschaftstyp | Regeln | Beispiele |
|---|---|---|
| Boolesch | Entweder wahr oder falsch, dargestellt als #t oder #f | #t, #f |
| Dimension (in Notenlinienabständen) | Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten) | 2.5, 0.34 |
| Richtung | Eine gültige Richtungskonstante oder das numerische Äquivalent | LEFT, CENTER, UP,
1, -1 |
| Integer | Eine positive ganze Zahl | 3, 1 |
| Liste | Eine eingeklammerte Anzahl von Einträgen, mit Klammern getrennt und angeführt von einem Apostroph | '(left-edge staff-bar), '(1),
'(1.0 0.25 0.5) |
| Textbeschriftung (markup) | Beliebige gültige Beschriftung | \markup { \italic "cresc." } |
| Moment | Ein Bruch einer ganzen Note, mit der make-moment-Funktion konstruiert | (ly:make-moment 1/4),
(ly:make-moment 3/8) |
| Zahl | Eine beliebige positive oder negative Dezimalzahl | 3.5, -2.45 |
| Paar (Zahlenpaar) | Zwei Zahlen getrennt von „Leerzeichen . Leerzeichen“, eingeklammert und angeführt von einem Apostroph | '(2 . 3.5), '(0.1 . -3.2) |
| Symbol | Eine beliebige Anzahl von Symbolen, die für die Eigenschaft gültig sind, angeführt von einem Apostroph | 'italic, 'inside |
| Unbekannt | Eine Prozedur oder #f (um keine Aktion hervorzurufen) | bend::print, ly:text-interface::print,
#f |
| Vektor | Eine Liste mit drei Einträgen, eingeklammert und mit
Apostroph-Raute ( '#) angeführt. | '#(#t #t #f) |
Erweitern: (extending)Scheme-Übung section ‘Scheme-Übung’ in Extending.
| [ < ] | [ > ] | [ << ] | [ 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.