1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*-
4 Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes.
14 @chapter Ladění výstupu
15 @translationof Tweaking output
17 In diesem Kapitel wird erklärt, wie man die Notenausgabe verändern
18 kann. In LilyPond kann man sehr viel konfigurieren, fast jedes
19 Notenfragment kann geändert werden.
23 * Základy pro ladění::
24 * Vnitřní referenční příručka::
32 @node Základy pro ladění
33 @section Základy pro ladění
34 @translationof Tweaking basics
38 * Předměty a rozhraní::
39 * Pravidla pro pojmenovávání předmětů a vlastností::
40 * Postupy při ladění::
44 @subsection Úvod do ladění
45 @translationof Introduction to tweaks
47 @qq{Optimierung} (engl. tweaking) ist ein LilyPond-Begriff für die
48 verschiedenen Methoden, die Aktionen zu beeinflussen, die während
49 der Kompilation einer Notationsdatei vorgenommen werden sowie auf
50 das Notenbild einzuwirken. Einige dieser Optimierungen sind sehr
51 einfach, andere dagegen recht komplex. Aber insgesamt erlaubt das
52 System an Optimierungen so gut wie alle möglichen Erscheinungsformen
55 In diesem Abschnitt werden die grundlegenden Konzepte vorgestellt,
56 um die Optimierung zu verstehen. Später soll eine Anzahl von fertigen
57 Befehlen bereitgestellt werden, die einfach in die Quelldatei
58 kopiert werden können um den selben Effekt wie im Beispiel
59 zu erhalten. Gleichzeitig zeigen diese Beispiele, wie die Befehle
60 konstruiert werden, so dass Sie in der Lage sein werden, eigene
61 Befehle auf dieser Grundlage zu entwickeln.
63 Bevor Sie mit diesem Kapitel beginnen, könnte Sie ein Blick in den
64 Abschnitt @ref{Prostředí a rytci} interessieren, dann
65 prostředí a rytci sowie die Eigenschaften, die mit ihnen
66 verknüpft sind, sind die Voraussetzung, um die Funktionsweise
67 von Optimierungen verstehen zu können.
70 @node Předměty a rozhraní
71 @subsection Předměty a rozhraní
72 @translationof Objects and interfaces
79 @cindex Schnittstellen
80 @cindex graphische Objekte (Grob)
81 @cindex Objekteigenschaften
83 @cindex Objekt, Layout-
84 @cindex Eigenschaften von Objekten
86 Optimierung bedeutet, die internen Operationen und Strukturen
87 des LilyPond-Programmes zu verändern, darum sollen hier
88 zunächst die wichtigsten Begriffe erklärt werden, die zur
89 Beschreibung dieser Operationen und Strukturen benutzt werden.
91 Der Begriff @qq{Objekt} ist ein allgemeiner Begriff, mit dem
92 die Vielzahl an internen Strukturen bezeichnet wird, die LilyPond
93 während der Bearbeitung des Quelltextes erstellt. Wenn etwa
94 ein Befehl wie @code{\new Staff} auftritt, wird ein neues Objekt
95 vom Typ @code{Staff} erstellt. Dieses Objekt @code{Staff} enthält
96 dann alle Eigenschaften, die mit diesem speziellen Notensystem
97 verknüpft sind, wie beispielsweise seine Bezeichnung, Tonart und
98 spezifische Angaben über die Engraver, die innerhalb dieses Systems
99 eingesetzt werden. Für alle anderen Kontexte gibt es genauso
100 Objekte, die deren Eigenschaften beinhalten, beispielsweise für
101 @code{Voice}-Objekte, @code{Score}-Objekte, @code{Lyrics}-Objekte,
102 aber auch für Objekte, die Notationselemente wie die Taktlinien,
103 Notenköpfe, Bögen und Dynamikbezeichnung enthalten. Jedes
104 Objekt hat eine eigene Gruppe an Eigenschaftswerten.
106 Bestimmte Objekttypen tragen besondere Bezeichnungen. Objekte, die
107 Notationselemente der gesetzten Ausgabe repräsentieren, also
108 Notenköpfe, Hälse, Bögen, Fingersatz, Schlüssel usw., werden
109 @qq{Layout-Objekte}, oft auch @qq{Graphische Objekte} genannt.
110 Daraus resultiert die künstliche Abkürzung @qq{Grob}.
111 Diese sind auch Objekte im allgemeinen Sinn und haben genauso
112 Eigenschaften, die mit ihnen verknüpft sind, wie etwa Größe, Position,
115 Einige Layout-Objekte sind etwas spezieller. Phrasierungsbögen,
116 Crescendo-Klammern, Oktavierungszeichen und viele andere
117 Grobs sind nicht an einer Stelle plaziert -- sie haben vielmehr
118 einen Anfangspunkt, einen Endpunkt und eventuell noch andere
119 Eigenschaften, die ihre Form bestimmen. Objekte mit solch
120 einer erweiterten Gestalt werden als @qq{Strecker} (engl. Spanners)
123 Es bleibt uns noch übrig zu erklären, was @qq{Schnittstellen}
124 (engl. interface) sind. Wenn auch viele Objekte sehr unterschiedlich
125 sind, haben sie doch oft gemeinsame Eigenschaften, die auf
126 die gleiche Weise verarbeitet werden. Alle Grobs beispielsweise
127 haben eine Farbe, eine Größe, eine Position usw. und alle
128 diese Eigenschaften werden von LilyPond auf die gleiche Weise
129 verarbeitet, während der Quelltext in Notensatz umgesetzt wird.
130 Um die internen Operationen zu vereinfachen, sind alle diese
131 gemeinsamen Prozesse und Eigenschaften in einem Objekt
132 mit der Bezeichnung @code{grob-interface} (Schnittstelle eines
133 graphischen Objektes) zusammengefasst. Es gibt viele andere
134 Gruppen gemeinsamer Eigenschaften, die jede eine Bezeichnung
135 besitzen, welche auf @code{-interface} endet. Insgesamt
136 gibt es über 100 dieser Schnittstellen. Wir werden später sehen,
137 was es damit auf sich hat.
139 Dies waren die Hauptbegriffe, die in diesem Kapitel zur Anwendung
143 @node Pravidla pro pojmenovávání předmětů a vlastností
144 @subsection Pravidla pro pojmenovávání předmětů a vlastností
145 @translationof Naming conventions of objects and properties
147 @cindex Benennungskonventionen für Objekte
148 @cindex Benennungskonventionen für Eigenschaften
149 @cindex Objekte, Benennungskonventionen
150 @cindex Eigenschaften, Benennungskonventionen
151 @cindex Regeln zur Benennung von Objekten/Eigenschaften
153 Es wurden schon früher einige Regeln zur Benennung von
154 Objekten vorgestellt, siehe
155 @ref{Prostředí a rytci}. Hier eine Referenzliste der
156 häufigsten Objekt- und Eigenschaftsbezeichnungen mit
157 den Regeln für ihre Bezeichnung und
158 illustrierenden echten Bezeichnungen. Es wurde @qq{A}
159 für einen beliebigen Großbuchstaben und @qq{aaa} für eine
160 beliebige Anzahl an Kleinbuchstaben eingesetzt. Andere
161 Zeichen werden explizit angegeben.
163 @multitable @columnfractions .33 .33 .33
164 @headitem Objekt-/Eigenschaftstyp
165 @tab Naming convention
168 @tab Aaaa oder AaaaAaaaAaaa
169 @tab Staff, GrandStaff
171 @tab Aaaa oder AaaaAaaaAaaa
174 @tab Aaaa_aaa_engraver
175 @tab Clef_engraver, Note_heads_engraver
177 @tab aaa-aaa-interface
178 @tab grob-interface, break-aligned-interface
179 @item Kontext-Eigenschaften
180 @tab aaa oder aaaAaaaAaaa
181 @tab alignAboveContext, skipBars
182 @item Layout-Objekt-Eigenschaften
183 @tab aaa oder aaa-aaa-aaa
184 @tab direction, beam-thickness
187 Es wird bald ersichtlich werden, dass die Eigenschaften von
188 unterschiedlichen Objekttypen mit unterschiedlichen Befehlen
189 geändert werden. Deshalb ist es nützlich, aus der
190 Schreibweise zu erkennen, um was
191 für ein Objekt es sich handelt, um den entsprechenden
192 Befehl einsetzen zu können.
195 @node Postupy při ladění
196 @subsection Postupy při ladění
197 @translationof Tweaking methods
199 @cindex override-Befehl
203 @strong{Der \override-Befehl}
205 Wir haben uns schon mit den Befehlen @code{\set}
206 und @code{\with} bekannt gemacht, mit welchen
207 Eigenschaften von @strong{Kontexten} verändert
208 und @strong{Engraver} entfernt oder hinzugefügt
209 werden können. Siehe dazu
210 @ref{Změna vlastností prostředí} und @ref{Přidání a odstranění rytců}. Jetzt wollen wir uns weitere
211 wichtige Befehle anschauen.
213 Der Befehl, um die Eigenschaften von @strong{Layout-Objekten}
214 zu ändern, ist @code{\override}. Weil dieser Befehl interne
215 Eigenschaften tief in der Programmstruktur von LilyPond
216 verändern muss, ist seine Syntax nicht so einfach wie die der
217 bisherigen Befehle. Man muss genau wissen, welche Eigenschaft
218 welches Objektes in welchem Kontext geändert werden soll,
219 und welches der neu zu setzende Wert dann ist. Schauen wir
220 uns an, wie das vor sich geht.
222 Die allgemeine Syntax dieses Befehles ist:
225 \override @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft} =
230 Damit wir die Eigenschaft mit der Bezeichnung @var{layout-property}
231 das Layout-Objektes mit der Bezeichnung@var{LayoutObject},
232 welches ein Mitglied des @var{Kontext}-Kontextes ist, auf den
235 Der @var{Kontext} kann (und wird auch normalerweise) ausgelassen
236 werden, wenn der benötigte Kontext eindeutig impliziert ist und einer
237 der untersten Kontexte ist, also etwa @code{Voice}, @code{ChordNames}
238 oder @code{Lyrics}. Auch in diesem Text wird der Kontext oft ausgelassen
239 werden. Später soll gezeigt werden, in welchen Fällen er ausdrücklich
240 definiert werden muss.
242 Spätere Abschnitte behandeln umfassend Eigenschaften und ihre
243 Werte, aber um ihre Funktion und ihr Format zu demonstrieren,
244 werden wir hier nur einige einfache Eigenschaften und Werte einsetzen,
245 die einfach zu verstehen sind.
247 Für den Moment könne Sie die @code{#'}-Zeichen ignorieren, die vor jeder
248 Layout-Eigenschaft, und die @code{#}-Zeichen, die vor jedem Wert
249 stehen. Sie müssen immer in genau dieser Form geschrieben werden.
250 Das ist der am häufigsten gebrauchte Befehl für die Optimierung,
251 und der größte Teil dieses Abschnittes wird dazu benutzt, seine Benutzung
252 zu erläutern. Hier ein einfaches Beispiel, um die Farbe des Notenkopfes
255 @cindex color-Eigenschaft, Beispiel
256 @cindex Farb-Eigenschaft, Beispiel
257 @cindex NoteHead, Beispiel für override
258 @cindex Notenkopf, Beispiel für Veränderung
260 @lilypond[quote,ragged-right,verbatim]
263 \override NoteHead.color = #red
265 \override NoteHead.color = #green
271 @strong{Der \revert-Befehl}
273 @cindex revert-Befehl
277 Wenn eine Eigenschaft einmal überschrieben wurde, wird ihr
278 neuer Wert so lange bewahrt, bis er noch einmal überschrieben
279 wird oder ein @code{\revert}-Befehl vorkommt. Der
280 @code{\revert}-Befehl hat die folgende Syntax und setzt den
281 Wert der Eigenschaft zurück auf den Standardwert, nicht
282 jedoch auf den vorigen Wert, wenn mehrere
283 @code{\override}-Befehle benutzt wurden.
286 \revert @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft}
289 Wiederum, genauso wie der @var{Kontext} bei dem @code{\override}-Befehl,
290 wird @var{Kontext} oft nicht benötigt. Er wird in vielen der folgenden
291 Beispiele ausgelassen. Im nächsten Beispiel wird die Farbe des Notenkopfes
292 wieder auf den Standardwert für die letzten zwei Noten gesetzt.
294 @cindex color-Eigenschaft, Beispiel
295 @cindex Farb-Eigenschaft, Beispiel
296 @cindex NoteHead, Beispiel für override
297 @cindex Notenkopf, Beispiel für Veränderung
299 @lilypond[quote,ragged-right,verbatim]
302 \override NoteHead.color = #red
304 \override NoteHead.color = #green
306 \revert NoteHead.color
311 @strong{\once-Präfix}
316 Sowohl der @code{\override}-Befehl als auch der @code{\set}-Befehl können mit
317 dem Präfix @code{\once} (@emph{einmal}) versehen werden. Dadurch wird
318 der folgende @code{\override}- oder @code{\set}-Befehl nur für den aktuellen
319 Musik-Moment wirksam, bevor sich wieder der Standard einstellt. Am gleichen
320 Beispiel demonstriert, kann damit die Farbe eines einzelnen Notenkopfes
323 @cindex color-Eigenschaft, Beispiel
324 @cindex Farb-Eigenschaft, Beispiel
325 @cindex NoteHead, Beispiel für override
326 @cindex Notenkopf, Beispiel für Veränderung
328 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
330 \once \override NoteHead.color = #red
332 \once \override NoteHead.color = #green
337 @strong{Der \overrideProperty-Befehl}
339 @cindex overrideProperty-Befehl
341 @funindex \overrideProperty
342 @funindex overrideProperty
344 Es gibt eine andere Form des @code{override}-Befehls,
345 @code{\overrideProperty} (überschreibe Eigenschaft),
346 welcher ab und zu benötigt wird. Es wird hier nur der
347 Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert
348 in @rextend{Schwierige Korrekturen}.
349 @c Maybe explain in a later iteration -td
352 @strong{Der \tweak-Befehl}
358 Der letzte Optimierungsbefehl in LilyPond ist @code{\tweak}
359 (engl. optimieren). Er wird eingesetzt um Eigenschaften
360 von Objekten zu verändern, die zum selben Musik-Moment
361 auftreten, wie etwa die Noten eines Akkordes. Ein
362 @code{\override} würde alle Noten des Akkords beeinflussen,
363 während mit @code{\tweak} nur das nächste Objekt der
364 Eingabe geändert wird.
366 Hier ein Beispiel. Angenommen, die Größe des mittleren
367 Notenkopfes (ein E) in einem C-Dur-Akkord soll geändert
368 werden. Schauen wir zuerst, was wir mit
369 @code{\once \override} erhalten:
371 @cindex Schriftgröße, Beispiel
372 @cindex NoteHead, Beispiel für override
373 @cindex Notenkopf, Beispiel für Veränderung
375 @lilypond[quote,ragged-right,verbatim]
378 \once \override NoteHead.font-size = #-3
384 Wie man sehen kann, beeinflusst @code{override} @emph{alle}
385 Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten
386 eines Akkordes zum selben Musik-Moment auftreten und
387 die Funktion von @code{\once} ist es, die Optimierung auf
388 an allen Objekten auszuführen, die zum selben Musik-Moment
389 auftreten wie der @code{\override}-Befehl.
391 Der @code{\tweak}-Befehl funktioniert anders. Er bezieht sich
392 auf das direkt folgende Element in der Eingabe-Datei. Es wirkt
393 aber auch nur mit Objekten, die direkt von der Eingabe kreiert
394 werden, insbesondere Notenköpfe und Artikulationszeichen.
395 Objekte wie etwa Hälse oder Versetzungszeichen werden erst
396 später erstellt und lassen sich nicht auf diese Weise ändern.
397 Zusätzlich @emph{müssen} sich etwa Notenköpfe innerhalb
398 eines Akkordes befinden, d. h. sie müssen von einfachen spitzen
399 Klammern umschlossen sein. Um also eine einzelne Note
400 mit @code{\tweak} zu verändern, muss der Befehl innerhalb
401 der spitzen Klammern zusammen mit der Note eingegeben werden.
403 Um also zu unserem Beispiel zurückzukommen, könnte man die
404 mittlere Note eines Akkordes auf diese Weise ändern:
406 @cindex font-size-Eigenschaft, Beispiel
407 @cindex Schriftgröße, Beispiel
408 @cindex @code{\tweak}-Beispiel
410 @lilypond[quote,ragged-right,verbatim]
413 <c \tweak font-size #-3 e g>4
417 Beachten Sie, dass die Syntax des @code{\tweak}-Befehls sich
418 von der des @code{\override}-Befehls unterscheidet. Weder
419 Kontext noch Layout-Objekt können angegeben werden, denn
420 das würde zu einem Fehler führen. Beide Angaben sind
421 durch das folgende Element impliziert. Hier sollte auch
422 kein Gleichheitszeichen vorhanden sein. Die verallgemeinerte
423 Syntax des @code{\tweak}-Befehls ist also einfach
426 \tweak #'@var{layout-eigenschaft} #@var{Wert}
429 Ein @code{\tweak}-Befehl kann auch benutzt werden, um nur
430 eine von mehreren Artikulationen zu ändern, wie im nächsten
431 Beispiel zu sehen ist.
433 @cindex Farb-Eigenschaft, Beispiel
434 @cindex @code{\tweak}-Beispiel
436 @lilypond[quote,fragment,ragged-right,verbatim]
438 -\tweak color #red ^"Red"
439 -\tweak color #green _"Green"
443 Beachten Sie, dass dem @code{\tweak}-Befehl ein Artikulationsmodifikator
444 vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen
447 @cindex Triolen, geschachtelt
448 @cindex N-tolen, geschachtelt
449 @cindex Klammer, Triole
450 @cindex Triolenklammer
451 @cindex N-tolenklammer
452 @cindex Komplizierte Rhythmen, Schachtelung von
453 @funindex TupletBracket
455 Der @code{\tweak}-Befehl muss auch benutzt werden, wenn das
456 Aussehen einer vor mehreren geschachtelten Triolenklammern
457 geändert werden soll, die zum selben Zeitpunkt beginnen.
458 Im folgenden Beispiel beginnen die lange Klammer und die
459 erste Triolenklammer zum selben Zeitpunkt, sodass ein
460 @code{\override}-Befehl sich auf beide beziehen würde.
461 In dem Beispiel wird @code{\tweak} benutzt, um zwischen
462 ihnen zu unterscheiden. Der erste @code{\tweak}Befehl
463 gibt an, dass die lange Klammer über den Noten gesetzt
464 werden soll, und der zweite, dass die Zahl der rhythmischen
465 Aufteilung für die erste der kurzen Klammern in rot
468 @cindex Farb-Eigenschaft, Beispiel
469 @cindex @code{\tweak}-Beispiel
470 @cindex Richtungs-Eigenschaft, Beispiel
471 @cindex color-Eigenschaft, Beispiel
472 @cindex direction-Eigenschaft, Beispiel
474 @lilypond[quote,ragged-right,verbatim]
479 \tuplet 3/2 { c8[ c c] }
480 \tuplet 3/2 { c8[ c c] }
481 \tuplet 3/2 { c8[ c c] }
486 Wenn geschachtelte N-tolen nicht zum gleichen Zeitpunkt
487 beginnen, kann ihr Aussehen auf die übliche Art mit dem
488 @code{\override}-Befehl geändert werden:
490 @cindex text-Eigenschaft, Beispiel
491 @cindex tuplet-number-Funktion, Beispiel
492 @cindex transparent-Eigenschaft, Beispiel
493 @cindex TupletNumber, Beispiel zur Veränderung
494 @cindex Triolennummer, Beispiel zur Veränderung
495 @cindex Triolen-Nummer-Funktion, Beispiel
497 @c NOTE Tuplet brackets collide if notes are high on staff
499 @lilypond[quote,ragged-right,verbatim]
501 \tuplet 3/2 { c'8[ c c] }
502 \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
506 \once \override TupletNumber.transparent = ##t
507 \tuplet 3/2 { c8[ c c] }
508 \tuplet 3/2 { c8[ c c] }
516 @ruser{Der tweak-Befehl}.
519 @node Vnitřní referenční příručka
520 @section Vnitřní referenční příručka
521 @translationof The Internals Reference manual
524 * Vlastnosti předmětů v rozvržení::
525 * Vlastnosti nacházející se v rozhraních::
529 @node Vlastnosti předmětů v rozvržení
530 @subsection Vlastnosti předmětů v rozvržení
531 @translationof Properties of layout objects
533 @cindex Eigenschaften von Layout-Objekten
534 @cindex Eigenschaften von Grobs
535 @cindex Grobs, Eigenschaften von
536 @cindex Layout-Objekte, Eigenschaften von
537 @cindex Property (Layout-Objekte, Grobs)
538 @cindex Regerenz der Interna
540 Angenommen, in Ihrer Partitur tritt ein Legatobogen
541 auf, der Ihrer Meinung nach zu dünn ausgefallen ist.
542 Sie würden ihn gerne etwas schwerer gezeichnet
543 sehen. Wie gehen Sie vor? Von den Anmerkungen in
544 früheren Abschnitten wissen Sie schon, dass LilyPond
545 sehr flexibel ist und eine derartige Modifikation
546 möglich sein sollte, und Sie erraten vielleicht,
547 dass ein @code{\override}-Befehl angebracht ist.
548 Aber gibt es eine Eigenschaft für die Dicke eines
549 Legatobogens (engl. slur), und wenn es sie gibt,
550 auf welche Weise lässt sie sich verändern? Hier
551 kommt die Referenz der Interna zur Geltung. Dort
552 finden sich alle Informationen, um den beschriebenen
553 und alle anderen @code{\override}-Befehle zu
556 Bevor Sie jetzt in die Referenz der Interna wechseln, ist
557 eine Warnung angebracht. Es handelt sich um ein
558 @strong{Referenz}dokument, was heißt, dass es sehr
559 wenig oder gar keine Erklärungen enthält: seine Aufgabe
560 ist es, Information klar und genau darzustellen. Das
561 bedeutet, dass es auf den ersten Blick entmutigend
562 wirkt. Die Einführung und Erklärung in diesem Abschnitt
563 wird Ihnen aber schnell ermöglichen, genau die Information
564 aus der Referenz zu entnehmen, die Sie benötigen.
566 Beachten Sie, dass die Referenz der Interna nur auf Englisch
567 existiert. Um die Eigenschaftsbezeichnung eines bestimmten
568 Objektes zu finden, können Sie das Glossar (siehe
569 @rglosnamed{Top,Musikglossar})
571 die englischen Begriffe in viele andere Sprachen übersetzt sind.
573 @cindex Override-Beispiel
574 @cindex Referenz der Interna, Benutzung
575 @cindex IR (Referenz der Interna), Benutzung
576 @cindex @code{\addlyrics}-Beispiel
578 Das Vorgehen soll an einem konkreten Beispiel einer echten
579 Komposition demonstriert werden. Hier das Beispiel:
581 @c Mozart, Die Zauberflöte Nr. 7 Duett
583 @lilypond[quote,verbatim]
588 r4 bes'8 bes[( g]) g |
589 g8[( es]) es d[( f]) as |
593 The man who | feels love's sweet e -- | mo -- tion
598 Angenommen also, wir wollen die Legatobögen etwas
599 dicker setzten. Ist das möglich? Die Legatobögen sind mit
600 Sicherheit ein Layout-Objekt, die Frage muss also lauten:
601 @qq{Gibt es eine Eigenschaft von Legatobögen, die die
602 Dicke bestimmt?} Um diese Frage zu beantworten, müssen
603 wir in der Referenz der Interna ( kurz IR) nachschauen.
605 Die IR für die LilyPond-Version, die Sie benutzen, findet sich
606 auf der LilyPond-Webseite unter der Adresse
607 @uref{http://lilypond.org}. Gehen Sie zur Dokumentationsseite
608 und klicken Sie auf den Link zur Referenz der Interna.
609 @c Addition for German users
610 Die Sprache ändert sich ab hier nach englisch. Für diese Übung
611 sollten Sie die HTML-Version benutzen, nicht die
612 @qq{auf einer großen Seite} oder die PDF-Version.
613 Damit Sie die nächsten Absätze verstehen können, müssen Sie
614 genauso vorgehen, während Sie weiterlesen.
616 Unter der Überschrift @strong{Top} befinden sich fünf Links.
617 Wählen Sie den Link zum @emph{Backend}, wo sich die Information
618 über Layout-Objekte befindet. Hier, unter der Überschrift
619 @strong{Backend}, wählen Sie den Link @emph{All layout objects}.
620 Die Seite, die sich öffnet, enthält ein Liste aller Layout-Objekte,
621 die in Ihrerer LilyPond-Version benutzt werden, in alphabetischer
622 Ordnung. Wählen Sie den Link @emph{Slur} und die Eigenschaften
623 der Legatobögen (engl. slur) werden aufgelistet.
625 Eine alternative Methode, auf diese Seite zu gelangen, ist von
626 der Notationsreferenz aus. Auf einer der Seiten zu Legatobögen
627 findet sich ein Link zur Referenz der Interna. Dieser Link führt
628 Sie direkt auf diese Seite. Wenn Sie aber eine Ahnung haben,
629 wie die Bezeichnung des Layout-Objektes lauten könnte, das sie
630 ändern wollen, ist es oft schneller, direkt zur IR zu gehen und
633 Aus der Slur-Seite in der IR könne wir entnehmen, dass
634 Legatobögen (Slur-Objekte) durch den Slur_engraver erstellt
635 werden. Dann werden die Standardeinstellungen aufgelistet.
636 Beachten Sie, dass diese @strong{nicht} in alphabetischer Reihenfolge
637 geordnet sind. Schauen Sie sich die Liste an, ob sie eine Eigenschaft
638 enthält, mit der die Dicke von Legatobögen kontrolliert werden kann.
639 Sie sollten folgendes finden:
642 @code{thickness} (number)
644 Line thickness, generally measured in @code{line-thickness}
647 Das sieht ganz danach aus, als ob damit die Dicke geändert
648 werden kann. Es bedeutet, dass der Wert von
649 @code{thickness} einfach eine Zahl (@emph{number}) ist,
650 dass der Standardwert 1.2 ist, und dass die Einheit
651 für die Dicke eine andere Eigenschaft mit der
652 Bezeichnung @code{line-thickness} ist.
654 Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen
655 in der IR, aber wir haben schon genug Informationen, um
656 zu versuchen, die Dicke eines Legatobogens zu ändern. Die
657 Bezeichnung des Layout-Objekts ist offensichtlich
658 @code{Slur} und die Bezeichnung der Eigenschaft, die geändert
660 @code{thickness}. Der neue Wert sollte etwas mehr als 1.2 sein,
661 denn der Bogen soll ja dicker werden.
663 Den benötigten @code{\override}-Befehl können wir jetzt einfach
664 konstruieren, indem wir die Werte für die Bezeichnungen in den
665 Modellbefehl einfügen und den Kontext auslassen. Setzen wir
666 einmal einen sehr großen Wert für die Dicke um zu sehen, ob der
667 Befehl auch funktioniert. Also:
670 \override Slur.thickness = #5.0
673 Vergessen Sie nicht das Rautenzeichen und Apostroph
674 (@code{#'}) vor der Eigenschaftsbezeichnung und das
675 Rautenzeichen vor dem neuen Wert!
677 Die nächste Frage ist nun: @qq{Wohin soll dieser Befehl geschrieben
678 werden?} Solange wir uns noch im Lernstadium befinden, ist
679 die beste Antwort: @qq{Innerhalb der Noten, vor den ersten
680 Legatobogen und nahe bei ihm.} Also etwa so:
682 @cindex Legatobogen, Beispiel für Veränderung
683 @cindex thickness-Eigenschaft, Beispiel
684 @cindex Dicke-Eigenschaft, Beispiel
686 @lilypond[quote,verbatim]
691 % Increase thickness of all following slurs from 1.2 to 5.0
692 \override Slur.thickness = #5.0
693 r4 bes'8 bes[( g]) g |
694 g8[( es]) es d[( f]) as |
698 The man who | feels love's sweet e -- | mo -- tion
704 und wirklich wird der Legatobogen dicker.
706 Das ist also die grundlegende Herangehensweise,
707 @code{\override}-Befehl zu formulieren. Es gibt einige
708 zusätzliche Komplikationen, denen wir uns später widmen
709 werden, aber Sie haben jetzt das Handwerkszeug, um Ihre
710 eigenen Befehle zu konstruieren -- wenn Sie auch noch etwas
711 Übung benötigen. Die sollen Sie durch die folgenden Übungen
715 @subheading Den Kontext finden
717 @cindex Kontext, Finden und identifizieren
719 Manchmal muss dennoch der Kontext spezifiziert werden.
720 Welcher aber ist der richtige Kontext? Wir könnten raten,
721 dass Legatobögen sich im @code{Voice}-Kontext befinden,
722 denn sie sind immer einzelnen Melodielinien zugewiesen.
723 Aber wir können uns dessen nicht sicher sein. Um unsere
724 Annahme zu überprüfen, gehen wir wieder zu der Seite im
725 IR, die die Legatobögen beschreibt und die Überschrift
726 @emph{Slur} hat. Dort steht: @qq{Slur objects are created
727 by: Slur engraver}. Legatobögen werden also in dem Kontext
728 erstellt, in dem sich der @code{Slur_engraver} befindet.
729 Folgen Sie dem Link zu der @code{Slur_engraver}-Seite.
730 Unten auf der Seite steht, dass der @code{Slur_engraver}
731 sich in fünf Stimmen-Kontexten befindet, unter anderem
732 auch im normalen @code{Voice}-Kontext. Unsere Annahme
733 war also richtig. Und weil @code{Voice} einer der Kontexte
734 der untersten Ebene ist, welcher eindeutig schon dadurch
735 definiert ist, dass wir Noten eingeben, kann er an dieser Stelle
736 auch weggelassen werden.
739 @subheading Nur einmal mit \override verändern
741 @cindex Override nur einmal
742 @cindex once override
746 Im Beispiel oben wurden @emph{alle} Legatobögen dicker
747 gesetzt. Vielleicht wollen Sie aber nur den ersten Bogen
748 dicker haben. Das können Sie mit dem @code{\once}-Befehl
749 erreichen. Er wird direkt vor den @code{\override}-Befehl
750 gesetzt und bewirkt, dass nur der Bogen geändert wird, der
751 @strong{unmittelbar an der nächsten Note beginnt.} Wenn
752 die nächste Note keinen Bogenbeginn hat, dann passiert
753 gar nichts -- der Befehl wird nicht gespeichert, sondern einfach
754 vergessen. Der Befehl, mit @code{\once} zusammen benutzt,
755 muss also wie folgt positioniert werden:
757 @cindex Legatobogen, Beispiel zur Veränderung
758 @cindex thickness-Eigenschaft, Beispiel
760 @lilypond[quote,verbatim,relative=2]
766 % Increase thickness of immediately following slur only
767 \once \override Slur.thickness = #5.0
769 g8[( es]) es d[( f]) as |
773 The man who | feels love's sweet e -- | mo -- tion
779 Jetzt bezieht er sich nur noch auf den ersten Legatobogen.
781 Der @code{\once}-Befehl kann übrigens auch vor einem @code{\set}-Befehl
785 @subheading Rückgängig machen
788 @cindex Rückgängig machen
789 @cindex Wiederherstellen von Standardeinstellungen
790 @cindex Standardeinstellungen, Wiederherstellen
794 Eine weitere Möglichkeit: nur die beiden ersten Legatobögen sollen
795 dicker gesetzt werden. Gut, wir könnten jetzt zwei Befehle benutzen,
796 jeden mit dem @code{\once}-Präfix und direkt vor die entsprechende
797 Note gestellt, an welcher der Bogen beginnt:
799 @cindex Legatobogen, Beispiel zur Veränderung
800 @cindex thickness-Eigenschaft, Beispiel
802 @lilypond[quote,verbatim]
808 % Increase thickness of immediately following slur only
809 \once \override Slur.thickness = #5.0
811 % Increase thickness of immediately following slur only
812 \once \override Slur.thickness = #5.0
813 g8[( es]) es d[( f]) as |
817 The man who | feels love's sweet e -- | mo -- tion
823 Wir könnten aber auch den @code{\once}-Befehl weglassen und anstelle
824 dessen später den @code{\revert}-Befehl einsetzen, um die
825 @code{thickness}-Eigenschaft wieder auf ihren Standardwert zurückzusetzen:
827 @cindex Legatobogen, Beispiel zur Veränderung
828 @cindex thickness-Eigenschaft, Beispiel
830 @lilypond[quote,verbatim]
836 % Increase thickness of all following slurs from 1.2 to 5.0
837 \override Slur.thickness = #5.0
840 % Revert thickness of all following slurs to default of 1.2
841 \revert Slur.thickness
846 The man who | feels love's sweet e -- | mo -- tion
852 Der @code{\revert}-Befehl kann benutzt werden, um eine beliebige
853 Eigenschaft, die mit @code{\override} geändert worden ist, wieder in
854 ihre Standardeinstellungen zurückzuversetzen. In unserem Beispiel können
855 Sie die Methode benutzen, die Ihnen lieber ist, beide haben das gleiche
858 Damit endet die Einleitung in die Referenz der Interna (IR) und die
859 grundlegenden postupy při ladění. Einige Beispiele folgen in späteren
860 Abschnitten dieses Kapitel, einerseits um Sie mit weiteren Möglichkeiten
861 der IR bekanntzumachen, andererseits um Ihnen mehr Übungsmöglichkeiten
862 zu geben, die relevante Information dort zu finden. Die Beispiele werden
863 Schritt für Schritt immer weniger Erklärungen beinhalten.
866 @node Vlastnosti nacházející se v rozhraních
867 @subsection Vlastnosti nacházející se v rozhraních
868 @translationof Properties found in interfaces
870 @cindex Interface-Eigenschaften
871 @cindex Eigenschaften von Interfaces
872 @cindex Schnittstellen, Eigenschaften von
873 @cindex Eigenschaften von Schnittstellen
875 Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für
876 ein @code{\override}-Befehl wird dazu benötigt? Schauen wir
877 uns zunächst das Inhaltsverzeichnis in der IR an: @qq{All layout objects},
878 wie auch schon zuvor. Welches Objekt könnte die Darstellung des
879 Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag @code{LyricText},
880 das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften
881 an, die verändert werden können. Dazu gehört
882 @code{font-series} und @code{font-size}, aber nichts, womit man kursiven
883 Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen
884 Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzelnen
885 Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften
886 zusammen in einem @strong{Interface} -- einer Schnittstelle -- verortet;
888 @code{font-interface}.
890 Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden
891 und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften
894 Schauen Sie sich noch einmal die Seite in der IR an, die @code{LyricText}
895 beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version
896 der IR) an Eigenschaften, die von @code{LyricText} unterstützt
897 werden. Diese Liste enthält sieben Einträge, darunter auch
898 @code{font-interface}. Ein Klick hierauf bringt uns zu den Eigenschaften,
899 die mit dieser Schnittstelle verbunden sind, also auch @code{LyricText}.
901 Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann,
902 um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch
903 @code{font-shape(symbol)}, wobei @code{symbol} auf die Werte
904 @code{upright} (gerade), @code{italics} (kursiv) oder @code{caps}
905 (Kapitälchen) gesetzt werden kann.
907 Sie werden gemerkt haben, dass @code{font-series} und @code{font-size}
908 hier auch aufgelistet sind. Es stellt sich die Frage, warum diese
909 allgemeinen Schriftarteigenschaften @code{font-series} und
910 @code{font-size} sowohl unter der Überschrift
911 @code{LyricText} als unter dem @code{font-interface} aufgelistet
912 sind, aber @code{font-shape} befindet sich nur im
913 @code{font-interface}? Die Antwort ist: Die globalen Einstellungen
914 von @code{font-series} und @code{font-size} werden geändert, wenn
915 ein @code{LyricText}-Objekt erstellt wird, aber @code{font-shape}
916 wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der
917 Überschrift @code{LyricText} beinhalten dann die Werte der
918 Standardeinstellungen dieser zwei Eigenschaften, wenn es sich
919 um ein @code{LyricText}-Objekt handelt. Andere Objekte,
920 die auch das @code{font-interface} unterstützen, setzen diese
921 Eigenschaften anders, wenn sie erstellt werden.
923 Versuchen wir nun einen @code{\override}-Befehl zu konstruieren,
924 der den Gesangstext kursiv setzt. Das Objekt hat die Bezeichnung
925 @code{LyricText}, die Eigenschaft ist @code{font-shape}
926 und der Wert @code{italic}. Wie vorher schon lassen wir den
929 Am Rande sei angemerkt, dass die Werte der @code{font-shape}-Eigenschaft
930 mit einem Apostroph (@code{'}) gekennzeichnet werden
931 müssen, weil es sich um Symbole handelt. Aus dem gleichen
932 Grund mussten auch für @code{thickness} weiter oben im
933 Text ein Apostroph gesetzt werden. Symbole sind besondere
934 Bezeichnungen, die LilyPond intern bekannt sind. Einige
935 sind Bezeichnungen von Eigenschaften, wie eben @code{thickness}
936 oder @code{font-shape}. Andere sind besondere Werte,
937 die an Eigenschaften übergeben werden können, wie
938 @code{italic}. Im Unterschied hierzu gibt es auch beliebige
939 Zeichenketten, die immer mit Anführungszeichen, also
940 als @code{"Zeichenkette"} auftreten. Für weitere
941 Einzelheiten zu Zeichenketten und Werten, siehe
942 @rextend{Scheme-Übung}.
944 Gut, der @code{\override}-Befehl, mit dem der Gesangstext
945 kursiv gesetzt wird, lautet:
948 \override LyricText.font-shape = #'italic
952 und er muss direkt vor den Text gesetzt werden, auf den er sich
955 @cindex font-shape-Eigenschaft, Beispiel
956 @cindex LyricText, Beispiel zur Veränderung
957 @cindex kursiv, Beispiel
958 @cindex @code{\addlyrics}, Beispiel
960 @lilypond[quote,ragged-right,verbatim]
965 r4 bes'8 bes[( g]) g |
966 g8[( es]) es d[( f]) as |
970 \override LyricText.font-shape = #'italic
971 The man who | feels love's sweet e -- | mo -- tion
977 Jetzt wird der Text kursiv gesetzt.
980 @subheading Den Kontext im Liedtextmodus bestimmen
983 @cindex Kontext im Gesangstextmodus angeben
984 @cindex Gesangstextmodus, Kontext angeben
986 Bei Gesangstexten funktioniert der @code{\override}-Befehl
987 nicht mehr, wenn Sie den Kontext im oben dargestellten
988 Format angeben. Eine Silbe wird im Gesangtextmodus
989 (lyricmode) entweder von einem Leerzeichen, einer
990 neuen Zeile oder einer Zahl beendet. Alle anderen
991 Zeichen werden als Teil der Silbe integriert. Aus diesem
992 Grund muss auch vor der schließenden Klammer
993 @code{@}} ein Leerzeichen gesetzt oder eine neue
994 Zeile begonnen werden. Genauso müssen Leerzeichen
995 vor und nach einem Punkt benutzt werden, um die
996 Kontext-Bezeichnung von der Objekt-Bezeichnung zu
997 trennen, denn sonst würden beide Bezeichnungen als
998 ein Begriff interpretiert und von LilyPond nicht verstanden
999 werden. Der Befehl muss also lauten:
1002 \override Lyrics.LyricText.font-shape = #'italic
1005 @warning{Innerhalb von Gesangstext muss immer ein
1006 Leerzeichen zwischen der letzten Silbe und der schließenden
1007 Klammer gesetzt werden.}
1009 @warning{Innerhalb von @code{\override}-Befehlen in
1010 Gesangstexten müssen Leerzeichen um Punkte zwischen
1011 Kontext- und Objektbezeichnungen gesetzt werden.}
1014 Erweitern: @rextend{Scheme-Übung}.
1017 @node Typy vlastností
1018 @subsection Typy vlastností
1019 @translationof Types of properties
1021 @cindex Eigenschaftsarten
1023 Bis jetzt hatten wir es mit zwei Arten von Eigenschaften zu
1024 tun: @code{number} (Zahl) und @code{symbol}. Damit
1025 ein Befehl funktioniert, muss der Wert einer Eigenschaft
1026 vom richtigen Typ sein und die Regeln befolgen, die
1027 für diesen Typ gelten. Der Eigenschaftstyp ist in der
1028 IR in Klammern hinter der Eigenschaftsbezeichnung
1029 angegeben. Hier eine Liste der Typen, die Sie vielleicht
1030 benötigen werden, mit den Regeln, die für den jeweiligen
1031 Typ gelten und einigen Beispielen. Sie müssen immer
1032 ein Rautenzeichen (@code{#}) vor den Typeintrag setzen,
1033 wenn sie in einem @code{\override}-Befehl benutzt werden.
1035 @multitable @columnfractions .2 .45 .35
1036 @headitem Eigenschaftstyp
1040 @tab Entweder wahr oder falsch, dargestellt als #t oder #f
1041 @tab @code{#t}, @code{#f}
1042 @item Dimension (in Notenlinienabständen)
1043 @tab Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten)
1044 @tab @code{2.5}, @code{0.34}
1046 @tab Eine gültige Richtungskonstante oder das numerische Äquivalent
1047 @tab @code{LEFT}, @code{CENTER}, @code{UP},
1050 @tab Eine positive ganze Zahl
1051 @tab @code{3}, @code{1}
1053 @tab Eine eingeklammerte Anzahl von Einträgen, mit Klammern getrennt
1054 und angeführt von einem Apostroph
1055 @tab @code{'(left-edge staff-bar)}, @code{'(1)},
1056 @code{'(1.0 0.25 0.5)}
1057 @item Textbeschriftung (markup)
1058 @tab Beliebige gültige Beschriftung
1059 @tab @code{\markup @{ \italic "cresc." @}}
1061 @tab Ein Bruch einer ganzen Note, mit der make-moment-Funktion
1063 @tab @code{(ly:make-moment 1/4)},
1064 @code{(ly:make-moment 3/8)}
1066 @tab Eine beliebige positive oder negative Dezimalzahl
1067 @tab @code{3.5}, @code{-2.45}
1068 @item Paar (Zahlenpaar)
1069 @tab Zwei Zahlen getrennt von @qq{Leerzeichen . Leerzeichen}, eingeklammert
1070 und angeführt von einem Apostroph
1071 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1073 @tab Eine beliebige Anzahl von Symbolen, die für die Eigenschaft
1074 gültig sind, angeführt von einem Apostroph
1075 @tab @code{'italic}, @code{'inside}
1077 @tab Eine Prozedur oder @code{#f} (um keine Aktion hervorzurufen)
1078 @tab @code{bend::print}, @code{ly:text-interface::print},
1081 @tab Eine Liste mit drei Einträgen, eingeklammert und mit
1082 Apostroph-Raute ( @code{'#}) angeführt.
1083 @tab @code{'#(#t #t #f)}
1088 Erweitern: @rextend{Scheme-Übung}.
1091 @node Vzhled předmětů
1092 @section Vzhled předmětů
1093 @translationof Appearance of objects
1095 In diesem Abschnitt wollen wir zeigen, wie die Kenntnisse der
1096 vorigen Abschnitte in der Praxis angewandt werden können,
1097 um das Aussehen des Musiksatzes zu beeinflussen.
1100 * Viditelnost a barva předmětů::
1101 * Velikost předmětů::
1102 * Délka a tloušťka předmětů::
1106 @node Viditelnost a barva předmětů
1107 @subsection Viditelnost a barva předmětů
1108 @translationof Visibility and color of objects
1110 In Unterrichtsmaterial für den Musikunterricht wird oft
1111 eine Partitur dargestellt, in der bestimmte Notationselemente
1112 fehlen, so dass der Schüler die Aufgabe bekommt, die
1113 nachzutragen. Ein einfaches Beispiel ist etwa, die
1114 Taktlinien zu entfernen, damit der Schüler sie selber zeichnen
1115 kann. Aber die Tatklinien werden normalerweise automatisch
1116 eingefügt. Wie verhindern wir, dass sie ausgegeben werden?
1118 Bevor wir uns hieran machen, sei daran erinnert, dass
1119 Objekteigenschaften in sogenannten @emph{Schnittstellen}
1120 -- engl. interface -- gruppiert sind, siehe auch
1121 @ref{Vlastnosti nacházející se v rozhraních,,vlastnosti nacházející se v rozhraních}. Das dient ganz einfach
1122 dazu, die Eigenschaften zusammenzufassen, die üblicherweise
1123 zusammen benötigt werden -- wenn eine davon für ein Objekt
1124 gilt, dann auch die anderen. Manche Objekte brauchen die
1125 Eigenschaften von der einen Schnittstelle, andere von einer
1126 anderen. Die Schnittstellen, die die Eigenschaften von einem
1127 bestimmten Grob beinhalten, sind in der IR unten auf der
1128 Seite aufgelistet, die dieses Grob beschreibt. Die Eigenschaften
1129 können betrachtet werden, indem die Seite der entsprechenden
1130 Schnittstelle geöffnet wird.
1132 Zu Information, wie man Eigenschaften von Grobs findet, siehe
1133 @ref{Vlastnosti předmětů v rozvržení,,vlastnosti předmětů v rozvržení}. Wir benutzen also jetzt
1134 die selbe Methode um in der IR das Layout-Objekt zu finden,
1135 dass für die Tatklinien zuständig ist. Über die Überschriften
1136 @emph{Backend} und @emph{All layout objects} kommen
1137 wir zu einem Layout-Objekt mit der Bezeichnung
1138 @code{BarLine} (engl. TaktLinie). Seine Eigenschaften
1139 beinhalten zwei, die über die Sichtbarkeit entscheiden:
1140 @code{break-visibility} und @code{stencil}.
1141 @code{BarLine} unterstützt auch einige Schnittstellen,
1142 unter anderem @code{grob-interface}, wo wir eine
1143 @code{transparent} und eine @code{color}-Eigenschaft
1144 finden. Alle können die Sichtbarkeit von Taktlinien (und
1145 natürlich auch die Sichtbarkeit von vielen anderen Objekten)
1146 beeinflussen. Schauen wir uns diese Eigenschaften eine
1147 nach der anderen an.
1149 @subheading stencil (Matrize)
1151 @cindex Stencil-Eigenschaft
1152 @cindex Matrizen-Eigenschaft
1154 Diese Eigenschaft kontrolliert die Erscheinung der Taktlinien,
1155 indem sie das Symbol bestimmt, das ausgegeben werden soll.
1156 Wie bei vielen anderen Eigenschaften auch, kann sie so
1157 eingestellt werden, dass sie nichts ausgibt, indem ihr Wert
1158 auf @code{#f} (falsch) gesetzt wird. Ein Versuch also,
1159 wie vorher, indem wir den impliziten Kontext (@code{Voice})
1162 @cindex Taktlinie, Beispiel zur Veränderung
1163 @cindex stencil-Eigenschaft, Beispiel
1165 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1168 \override BarLine.stencil = ##f
1170 g,8 a16 b8 c d4 e16 |
1175 Die Taktlinien werden aber immer noch angezeigt. Was ist da
1176 falsch gelaufen? Gehen Sie zurück zur IR und schauen Sie auf
1177 die Seite, die die Eigenschaften für @code{BarLine} angibt.
1178 Oben auf der Seite steht: @qq{Barline objects are created
1179 by: Bar_engraver}. Schauen Sie sich die
1180 @code{Bar_engraver}-Seite an. Unten auf der Seite steht
1181 eine Liste der Kontexte, in denen der Takt-Engraver
1182 funktioniert. Alle Kontexte sind @code{Staff}-Typen (also
1183 Notensystem-Typen). Der Grund, warum der
1184 @code{\override}-Befehl nicht funktioniert hat, liegt
1185 also darin, dass das Taktlinie-Objekt (@code{BarLine}) sich nicht
1186 im @code{Voice}-Kontext befindet. Wenn der Kontext
1187 falsch angegeben wird, bewirkt der Befehl einfach gar
1188 nichts. Keine Fehlermeldung wird ausgegeben und auch
1189 nichts in die Log-Datei geschrieben. Versuchen wir also,
1190 den richtigen Kontext mit anzugeben:
1192 @cindex Taktlinie, Beispiel zur Veränderung
1193 @cindex stencil-Eigenschaft, Beispiel
1195 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1198 \override Staff.BarLine.stencil = ##f
1206 Jetzt sind die Taktlinien wirklich verschwunden.
1208 Es sollte jedoch beachtet werden, dass das Setzen der
1209 @code{stencil}-Eigenschaft auf @code{#f} zu Fehlerhinweisen führen
1210 kann, wenn die Dimensionen des Objekts für die richtige Behandlung
1211 benötigt werden. Zum Beispiel werden Fehler ausgegeben, wenn
1212 die @code{stencil}-Eigenschaft des @code{NoteHead}-Objekts auf
1213 @code{#f} gesetzt wird. Wenn dieser Fall auftritt, kann anstatt
1214 dessen die @code{point-stencil}-Funktion benutzt werden, welche
1215 den Stencil auf ein Objekt mit der Größe Null setzt:
1217 @lilypond[quote,verbatim]
1220 \once \override NoteHead.stencil = #point-stencil
1226 @subheading break-visibility (unsichtbar machen)
1228 @cindex break-visibility-Eigenschaft
1229 @cindex Unsichtbar machen (break-visibility)
1231 Aus der Beschreibung der Eigenschaften für @code{BarLine}
1232 in der IR geht hervor, dass die @code{break-visibility}-Eigenschaft
1233 einen Vektor mit drei Booleschen Werten benötigt. Diese
1234 kontrollieren jeweils, ob die Taktlinien am Ende einer Zeile,
1235 in der Mitte einer Zeile und am Anfang einer Zeile ausgegeben
1236 werden. Wenn also alle Taktlinien unsichtbar sein sollen, wie in
1237 unserem Beispiel, brauchen wir den Wert @code{'#(#f #f #f)}.
1238 Versuchen wir es also, und berücksichtigen wir auch den
1239 @code{Staff}-Kontext. Beachten Sie auch, dass Sie @code{#'#}
1240 vor der öffnenden Klammer schreiben müssen:
1241 @code{'#} wird benötigt als Teil des Wertes, um einen Vektor zu
1242 signalisieren, und das erste @code{#} wird benötigt, um
1243 den Wert in einem @code{\override}-Befehl anzuführen.
1245 @cindex Taktlinie, Beispiel zur Veränderung
1246 @cindex break-visibility-Eigenschaft, Beispiel
1248 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1251 \override Staff.BarLine.break-visibility = #'#(#f #f #f)
1253 g,8 a16 b8 c d4 e16 |
1259 Auch auf diesem Weg gelingt es, die Taktlinien unsichtbar zu machen.
1262 @subheading transparent (durchsichtig)
1264 @cindex transparent-Eigenschaft
1265 @cindex Durchsichtig machen (transparent)
1267 Aus den Eigenschaftsdefinitionen auf der @code{grob-interface}-Seite
1268 in der IR geht hervor, dass die @code{transparent}-Eigenschaft
1269 boolesch ist. Mit @code{#t} (wahr) wird also ein Grob durchsichtig
1270 gemacht. Im unserem Beispiel soll jetzt die Taktart durchsichtig
1271 gemacht werden, anstatt die Taktlinien durchsichtig zu machen.
1272 Wir brauchen also wieder die Grob-Bezeichnung für die Taktart.
1273 Auf der @qq{All layout objects}-Seite in der IR müssen wir die
1274 Eigenschaften des @code{TimeSignature}-Layout-Objekts suchen
1275 Das Objekt wird vom @code{Time_signature_engraver} erstellt,
1276 der sich auch im @code{Staff}-Kontext befindet und genauso das
1277 @code{grob-interface} unterstützt, wie Sie sich
1278 überzeugen können. Der Befehl, um die Taktangabe unsichtbar zu
1281 @cindex Taktart, Beispiel zur Veränderung
1282 @cindex transparent-Eigenschaft, Beispiel
1284 @lilypond[quote,ragged-right,verbatim]
1287 \override Staff.TimeSignature.transparent = ##t
1288 c''4 b8 c d16 c d8 |
1289 g,8 a16 b8 c d4 e16 |
1295 Die Taktangabe ist verschwunden, aber mit diesem Befehl wird ein
1296 freier Platz gelassen, wo sich die Taktangabe eigentlich befinden
1297 würde. Das braucht man vielleicht für eine Schulaufgabe, in der
1298 die richtige Taktangabe eingefügt werden soll, aber in anderen
1299 Fällen ist diese Lücke nicht schön. Um auch die Lücke zu entfernen,
1300 muss die Matrize (stencil) der Taktangabe auf @code{#f} (falsch)
1303 @cindex Taktart, Beispiel zur Veränderung
1304 @cindex stencil-Eigenschaft, Beispiel
1306 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1309 \override Staff.TimeSignature.stencil = ##f
1311 g,8 a16 b8 c d4 e16 |
1317 Und der Unterschied wird deutlich: hiermit wird das gesamte Objekt
1318 entfernt, während man mit @code{transparent} ein Objekt
1319 unsichtbar machen kann, es aber an seinem Platz gelassen wird.
1322 @subheading color (Farbe)
1324 @cindex color-Eigenschaft
1325 @cindex Farb-Eigenschaft
1327 Abschließend wollen wir die Taktlinien unsichtbar machen, indem
1328 wir sie weiß einfärben. (Es gibt hier eine Schwierigkeit: die weiße
1329 Taktlinie übermalt manchmal die Taktlinien, wo sie sie kreuzt,
1330 manchmal aber auch nicht. Sie können in den Beispielen unten
1331 sehen, dass das nicht vorhersagbar ist. Die Einzelheiten dazu, warum
1332 das passiert und wie sie es kontrollieren können, werden dargestellt
1333 in @ruser{Objekte weiß malen}. Im Moment wollen wir lernen, wie
1334 man mit Farbe arbeitet, akzeptieren Sie bitte an dieser Stelle die
1337 Das @code{grob-interface} bestimmt, dass der Wert der Farb-Eigenschaft
1338 eine Liste ist, aber es gibt keine Erklärung, was für eine Liste das
1339 sein soll. Die Liste, die benötigt wird, ist eine Liste mit Werten in
1340 internen Einheiten, aber damit Sie nicht wissen müssen, wie diese
1341 aussehen, gibt es mehrere Wege, Farben anzugeben. Der erste
1342 Weg ist es, @qq{normale} Farben zu benutzen, wie sie in der
1343 Tabelle in @ruser{Liste der Farben} aufgelistet sind. Beachten Sie,
1344 dass die Bezeichnungen auf Englisch sind. Um die Taktlinien auf
1345 weiß zu setzen, können Sie schreiben:
1347 @cindex Taktlinie, Beispiel zur Veränderung
1348 @cindex color-Eigenschaft, Beispiel
1350 @lilypond[quote,ragged-right,verbatim]
1353 \override Staff.BarLine.color = #white
1354 c''4 b8 c d16 c d8 |
1355 g,8 a16 b8 c d4 e16 |
1361 und die Taktlinien verschwinden in der Tat. Beachten Sie,
1362 dass @emph{white} nicht mit einem Apostroph angeführt
1363 wird -- es ist kein Symbol, sondern eine @emph{Funktion}.
1364 Wenn sie aufgerufen wird, stellt sie eine Liste mit internen
1365 Werten zu Verfügung, mit welcher die Farbe auf weiß
1366 gestellt wird. Die anderen Farben in der Liste sind auch
1367 Funktionen. Um sich zu überzeugen, dass der Befehl auch
1368 wirklich funktioniert, können Sie die Farbe auf eine der
1369 anderen Funktionen dieser Liste abändern.
1375 Die zweite Art die Farbe zu ändern geschieht, indem die Liste
1376 der X11-Farbbezeichnungen einzusetzen, siehe die zweite Liste
1377 in @ruser{Liste der Farben}. Diesen Farben muss jedoch eine
1378 andere Funktion vorangestellt werden, die die X11-Farbbezeichnungen
1379 in interne Werte konvertiert:
1380 @code{x11-color}. Das geschieht wie folgt:
1382 @cindex Taktlinie, Beispiel zur Veränderung
1383 @cindex color-Eigenschaft, Beispiel
1385 @lilypond[quote,ragged-right,verbatim]
1388 \override Staff.BarLine.color = #(x11-color 'white)
1389 c''4 b8 c d16 c d8 |
1390 g,8 a16 b8 c d4 e16 |
1396 In diesem Fall hat die Funktion @code{x11-color} ein Symbol
1397 als Argument, darum muss dem Symbol ein Apostroph vorangestellt
1398 und beide zusammen in Klammern gesetzt werden.
1404 Es gibt noch eine dritte Funktion, die RGB-Werte in die
1405 internen Werte übersetzt -- die @code{rgb-color}-Funktion. Sie
1406 braucht drei Argumente, um die Stärke von Rot, Grün und
1407 Blau darzustellen. Die Werte befinden sich zwischen
1408 0 und 1. Um also die Farbe Rot darzustellen, muss der
1409 Wert der Funktion lauten: @code{(rgb-color 1 0 0)}, weiß
1410 würde sein: @code{(rgb-color 1 1 1)}.
1412 @cindex Taktlinie, Beispiel zur Veränderung
1413 @cindex color-Eigenschaft, Beispiel
1415 @lilypond[quote,ragged-right,verbatim]
1418 \override Staff.BarLine.color = #(rgb-color 1 1 1)
1419 c''4 b8 c d16 c d8 |
1420 g,8 a16 b8 c d4 e16 |
1425 Schließlich gibt es noch eine Grauskala, die zu den X11-Farben
1426 gehört. Sie reicht von schwarz (@code{'grey0'}) bis
1427 weiß (@code{'grey100}), in Einerschritten. Wir wollen das
1428 illustrieren, indem alle Layout-Objekte im Beispiel
1429 verschiede Grauschattierungen erhalten:
1431 @cindex StaffSymbol, Beispiel zur Veränderung
1432 @cindex TimeSignature, Beispiel zur Veränderung
1433 @cindex Schlüssel, Beispiel zur Veränderung
1434 @cindex Notenhals, Beispiel zur Veränderung
1435 @cindex Taktlinie, Beispiel zur Veränderung
1436 @cindex Farbeigenschaft, Beispiel
1437 @cindex x11-Farben, Beispiel
1438 @cindex Taktlinien, Beispiel zur Veränderung
1439 @cindex Taktart, Beispiel zur Veränderung
1440 @cindex Clef, Beispiel zur Veränderung
1441 @cindex Stem, Beispiel zur Veränderung
1442 @cindex NoteHead, Beispiel zur Veränderung
1443 @cindex Notenkopf, Beispiel zur Veränderung
1445 @lilypond[quote,ragged-right,verbatim]
1448 \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1449 \override Staff.TimeSignature.color = #(x11-color 'grey60)
1450 \override Staff.Clef.color = #(x11-color 'grey60)
1451 \override Voice.NoteHead.color = #(x11-color 'grey85)
1452 \override Voice.Stem.color = #(x11-color 'grey85)
1453 \override Staff.BarLine.color = #(x11-color 'grey10)
1454 c''4 b8 c d16 c d8 |
1455 g,8 a16 b8 c d4 e16 |
1461 Beachten Sie die Kontexte, die mit jedem einzelnen Layout-Objekt
1462 verbunden sind. Es ist wichtig, den richtigen Kontext einzusetzen,
1463 damit die Befehle funktionieren. Denken Sie daran, dass der
1464 Kontext sich daran orientiert, wo sich der entsprechende
1465 Engraver befindet. Den Standardkontext für Engraver finden
1466 Sie, indem Sie beim Layout-Objekt beginnen, zum Engraver
1467 gehen, der es produziert und auf der Seite des Engravers in der
1468 IR finden Sie Information, in welchem Kontext sich der
1469 Engraver normalerweise befindet.
1472 @node Velikost předmětů
1473 @subsection Velikost předmětů
1474 @translationof Size of objects
1476 @cindex Veränderung von Objektgrößen
1477 @cindex Objektgrößen, verändern
1478 @cindex Größen von Objekten verändern
1480 Als Startpunkt wollen wir wieder ein früheres Beispiel
1481 wählen, siehe @ref{Naskládání hudebních výrazů do sebe}. Hier wurde
1482 ein neues Notensystem erstellt, wie man es für ein @rglos{ossia}
1485 @cindex alignAboveContext-Eigenschaft, Beispiel
1486 @cindex über dem System anordnen, Beispiel
1487 @cindex @code{\with}-Beispiel
1489 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1490 \new Staff ="main" {
1497 alignAboveContext = #"main" }
1505 Ossia-Systeme werden normalerweise ohne Schlüssel und Taktangabe
1506 geschrieben, und sie werden etwas kleiner als das Hauptsystem gesetzt.
1507 Wie man Schlüssel und Taktangabe entfernt, wissen wir schon:
1508 wir setzen den Stencil von beiden auf @code{#f}:
1510 @cindex alignAboveContext-Eigenschaft, Beispiel
1511 @cindex über dem System anordnen, Beispiel
1512 @cindex @code{\with}-Beispiel
1513 @cindex stencil-Eigenschaft, Beispiel
1514 @cindex Schlüssel, Beispiel zur Veränderung
1515 @cindex Taktart, Beispiel zur Veränderung
1517 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1518 \new Staff ="main" {
1525 alignAboveContext = #"main"
1528 \override Staff.Clef.stencil = ##f
1529 \override Staff.TimeSignature.stencil = ##f
1539 wobei ein zusätzliches Klammerpaar nach der @code{\with}-Konstruktion
1540 erforderlich ist um sicherzugehen, dass die Modifikation und
1541 die Noten sich auch auf das Ossia-System beziehen.
1543 Was für einen Unterschied macht es, ob man den @code{Staff}-Kontext
1544 mit @code{\with} verändert, oder ob man die Stencils mit
1545 @code{\override} beeinflusst? Der größte Unterschied liegt
1546 darin, dass Änderungen, die mit @code{\with} eingeführt werden,
1547 während der Erstellung des Kontextes miterzeugt werden und
1548 als @strong{Standardeinstellungen} für diesen Kontext während seiner
1549 gesamten Dauer gelten, während @code{\set}- oder @code{\override}-Befehle
1550 dynamisch in die Noten eingebettet werden -- sie führen die
1551 Änderungen synchron mit einem bestimmten Zeitpunkt in
1552 der Musik aus. Wenn die Änderungen mit @code{\unset}
1553 oder @code{\revert} rückgängig gemacht werden, werden
1554 wieder die Standardwerte eingesetzt, die also die sind, die
1555 mit einer @code{\with}-Konstruktion definiert wurden, oder
1556 wenn hier keine definiert worden sind, die normalen
1559 Manche Kontexteigenschaften können nur ein einer
1560 @code{\with}-Konstruktion verändert werden. Das sind
1561 Eigenschaften, die nicht sinnvoll mitten im System geändert
1562 werden können. @code{alignAboveContext} (Orientierung
1563 über dem Kontext) und die Parallele,
1564 @code{alignBelowContext} (Orientierung unter dem Kontext)
1565 sind zwei derartige Eigenschaften -- wenn das Notensystem
1566 einmal erstellt wurde, ist die Orientierung schon bestimmt
1567 und es wäre nicht sinnvoll, sie später zu ändern.
1569 Die Standardwerte für Layout-Objekt-Eigenschaften können
1570 auch in der @code{\with}-Konstruktion gesetzt werden.
1571 Benutzen Sie einfach den normalen @code{\override}-Befehl
1572 ohne den Kontext, denn der Kontext ist eindeutig definiert
1573 durch die Stelle, an welcher sich @code{\with} befindet.
1574 Wenn an dieser Stelle ein Kontext angegeben wird, produziert LilyPond
1577 Das obige Beispiel könnte also auch so aussehen:
1579 @cindex alignAboveContext-Eigenschaft, Beispiel
1580 @cindex über dem System anordnen, Beispiel
1581 @cindex @code{\with}-Beispiel
1582 @cindex stencil-Eigenschaft, Beispiel
1583 @cindex Schlüssel, Beispiel zur Veränderung
1584 @cindex Taktart, Beispiel zur Veränderung
1586 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1587 \new Staff ="main" {
1594 alignAboveContext = #"main"
1595 % Don't print clefs in this staff
1596 \override Clef.stencil = ##f
1597 % Don't print time signatures in this staff
1598 \override TimeSignature.stencil = ##f
1607 Nun können wir daran gehen, auch wirklich die
1608 Größe der Objekte zu ändern.
1610 Manche Layout-Objekte werden aus Glyphen erstellt,
1611 die sich in einer Schriftartdatei befinden. Dazu gehören
1612 die Notenköpfe, Versetzungszeichen, Text, Schlüssel,
1613 Taktbezeichnung, Dynamik und Gesangstext. Ihre
1614 Größe wird verändert, indem die
1615 @code{font-size}- (Schriftgröße)-Eigenschaft geändert wird, wie
1616 wir bald sehen werden. Andere Layout-Objekte, wie
1617 Bögen -- oder allgemein Strecker-Objekte -- werden
1618 individuell gezeichnet, es gibt dazu also keine
1619 @code{font-size}, die mit ihnen verknüpft wäre.
1620 Weitere Eigenschaften wie die Länge von Hälsen und
1621 Taktlinien, Dicke von Balken und anderen Linien und
1622 der Abstand der Notenlinien voneinander müssen auf
1623 spezielle Weise verändert werden.
1625 In unserem Ossia-Beispiel wollen wir zuerst die
1626 Schriftgröße verändern. Das ist auf zwei Arten möglich.
1627 Entweder wir ändern die Schriftgröße für jede Objektart
1628 mit einem eigenen Befehl, etwa:
1631 \override NoteHead.font-size = #-2
1635 oder wir ändern die Größe aller Schriftobjekte, indem wir
1636 den Wert einer besonderen Eigenschaft, @code{fontSize},
1637 mit dem @code{\set}-Befehl bestimmen oder sie in
1638 eine @code{\with}-Konstruktion (ohne @code{\set} einschließen.
1644 Beide Beispiele reduzieren die Schriftgröße um zwei Schritte
1645 im Vergleich zum vorigen Wert, wobei jeder Schritt die
1646 Schriftgröße um etwa 12% verändert.
1648 Setzen wir das also in unserem Ossia-Beispiel ein:
1650 @cindex alignAboveContext-Eigenschaft, Beispiel
1651 @cindex über dem System anordnen, Beispiel
1652 @cindex @code{\with}-Beispiel
1653 @cindex stencil-Eigenschaft, Beispiel
1654 @cindex Schlüssel, Beispiel zur Veränderung
1655 @cindex Taktart, Beispiel zur Veränderung
1657 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1658 \new Staff ="main" {
1665 alignAboveContext = #"main"
1666 \override Clef.stencil = ##f
1667 \override TimeSignature.stencil = ##f
1668 % Reduce all font sizes by ~24%
1678 Das sieht aber immer noch nicht richtig aus. Die Notenköpfe
1679 und Fähnchen sind kleiner, aber die Hälse im Vergleich
1680 dazu zu lang und die Notenlinien zu weit auseinander.
1681 Sie müssen auch proportional zur Schriftart verkleinert
1682 werden. Der nächste Abschnitt behandelt diese Anpassung.
1685 @node Délka a tloušťka předmětů
1686 @subsection Délka a tloušťka předmětů
1687 @translationof Length and thickness of objects
1689 @cindex Entfernungen
1693 @cindex Größe, verändern
1694 @cindex Notenhalslänge, verändern
1695 @cindex Hälse, Länge verändern
1696 @cindex Notenlinien, Länge verändern
1698 Abstände und Längen werden in LilyPond üblicherweise
1699 in Notenlinienabständen (engl. staff-spaces) gemessen.
1700 Das ist der Abstand zwischen zwei Notenlinien im System.
1701 Die meisten Dicken (engl. thickness) dagegen werden in
1702 einer internen Einheit Linien-Dicke (engl. line-thickness)
1703 gemessen. Die Linien von Dynamikklammern zum Beispiel
1704 haben standardmäßig eine Dicke von einer Einheit
1705 @code{line-thickness}, während die Dicke eines
1706 Notenhalses 1,3 ist. Beachten Sie jedoch, dass sich
1707 manche Dicken anders verhalten: die Dicke von
1708 Balken etwa wird in Notenlinienabständen gemessen.
1710 Wie also werden Längen skaliert um der Schriftgröße
1711 zu entsprechen? Das kann mit einer besonderen Funktion
1712 @code{magstep} vorgenommen werden, die genau für
1713 diesen Zweck vorhanden ist. Sie nimmt ein Argument auf,
1714 die Änderung der Schriftgröße (#-2 im obigen Beispiel)
1715 und gibt einen Skalierungsfaktor aus, der dazu dient,
1716 Objekte proportionell zueinander zu verändern. So wird
1719 @cindex alignAboveContext-Eigenschaft, Beispiel
1720 @cindex über dem System anordnen, Beispiel
1721 @cindex @code{\with}-Beispiel
1722 @cindex stencil-Eigenschaft, Beispiel
1723 @cindex Schlüssel, Beispiel zur Veränderung
1724 @cindex Taktart, Beispiel zur Veränderung
1725 @cindex Notenlinienabstände verändern
1726 @cindex staff-space-Eigenschaft verändern
1727 @cindex magstep-Funktion, Beispiel
1728 @cindex Schriftart-Eigenschaft, Beispiel
1730 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1731 \new Staff ="main" {
1738 alignAboveContext = #"main"
1739 \override Clef.stencil = ##f
1740 \override TimeSignature.stencil = ##f
1742 % Reduce stem length and line spacing to match
1743 \override StaffSymbol.staff-space = #(magstep -2)
1753 Da die Länge eines Halses und viele andere Längeneigenschaften
1754 relativ zum Wert des Notenlinienabstands (@code{staff-space})
1755 errechnet werden, werden sie auch automatisch verkleinert.
1756 Das wirkt sich jedoch nur auf die vertikale Skalierung des Ossias
1757 aus -- die horizontale Skala ist durch das Layout des Haupsystems
1758 bestimmt und wird also von diesen Größenänderungen nicht
1759 betroffen. Wenn natürlich die Größe der gesamten Noten reduziert
1760 würde, würde sich auch die horizontalen Abstände ändern. Dass
1761 wird später im Layout-Abschnitt betrachtet.
1763 Mit dieser Änderung ist unser Ossia fertig. Die Größen und Längen
1764 aller anderen Objekte können auf analoge Weise geändert
1767 Für kleine Größenänderungen, wie in dem obigen Beispiel,
1768 braucht die Dicke der verschiedenen Linien, wie Taktlinien,
1769 Notenlinien, Balken, Dynamikklammern usw. normalerweise
1770 keine spezielle Anpassung. Wenn die Dicke eines bestimmten
1771 Layout-Objektes angepasst werden muss, kann man das erreichen,
1772 indem die entsprechende @code{thickness}-Eigenschaft des
1773 Objekts mit @code{\override} verändert wird. Ein Beispiel,
1774 wie man die Dicke von Bögen ändert, wurde schon gezeigt,
1775 siehe @ref{Vlastnosti předmětů v rozvržení,,vlastnosti předmětů v rozvržení}. Die Dicke aller
1776 gezeichneten Objekte (die also nicht aus einer Schriftart
1777 stammen) können auf gleiche Weise geändert werden.
1780 @node Umístění předmětů
1781 @section Umístění předmětů
1782 @translationof Placement of objects
1785 * Automatické chování::
1786 * Předměty uvnitř notové osnovy::
1787 * Předměty vně notové osnovy::
1791 @node Automatické chování
1792 @subsection Automatické chování
1793 @translationof Automatic behavior
1795 @cindex within-staff-předměty
1796 @cindex outside-staff-předměty
1797 @cindex Předměty uvnitř notové osnovy
1798 @cindex Předměty vně notové osnovy
1800 Es gibt Objekte der Notation, die zum Notensystem gehören, und
1801 andere, die außerhalb des Systems gesetzt werden müssen. Sie
1802 werden @code{within-staff}-Objekte bzw.
1803 @code{outside-staff}-Objekte genannt.
1805 @code{within-staff}-Objekte werden innerhalb des Notensystems
1806 (engl. staff) gesetzt: Notenköpfe, Hälse, Versetzungszeichen
1807 usw. Ihre Position ist üblicherweise durch die notierte Musik
1808 bestimmt -- sie werden vertikal auf bestimmten Linien notiert
1809 oder sind an andere Objekte gebunden, die vertikal festgelegt
1810 sind. Kollisionen von Notenköpfen, Hälsen und Versetzungszeichen
1811 werden normalerweise automatisch vermieden. Es gibt
1812 Befehle, um dieses automatische Verhalten zu verändern, wie
1813 unten gezeigt werden soll.
1815 Objekte, die außerhalb des Notensystems gesetzt werden, sind
1816 unter Anderem Übungsmarkierungen, Text und Dynamikzeichen.
1817 LilyPonds Regel für ihre vertikale Positionierung lautet, sie so nah wie
1818 möglich am Notensystem zu setzen, aber nicht so nah, dass
1819 sie mit anderen Objekten kollidieren. Dabei wird die
1820 @code{outside-staff-priority}-(Priorität außerhalb des Notensystems)-Eigenschaft
1821 eingesetzt, um die Reihenfolge zu bestimmen, in denen Objekte gesetzt werden
1824 Zuerst werden alle Innersystemobjekte von LilyPond gesetzt.
1825 Dann werden die Objekte außerhalb des Systems nach
1827 @code{outside-staff-priority} geordnet. Die @code{outside-staff}-Objekte
1828 werden dann nacheinander gesetzt, mit der niedrigsten
1829 Priorität beginnend, und so gesetzt, dass sie nicht mit anderen
1830 Objekten kollidieren, die schon gesetzt wurden. Wenn also zwei
1831 @code{outside-staff}-Objekte um den selben Platz streiten,
1832 wird das mit der geringeren @code{outside-staff-priority} näher
1833 am System gesetzt werden. Wenn zwei Objekte die selbe Priorität
1834 haben, wird das näher am System gesetzt, welches zuerst
1837 Im folgenden Beispiel haben alle Textbeschriftungen die gleiche
1838 Priorität (weil sie nicht explizit gesetzt worden ist). Beachten Sie,
1839 dass @qq{Text3} wieder dicht am System gesetzt wurde, weil
1840 er unter @qq{Text2} passt.
1842 @cindex Textbeschriftungsbeispiel
1844 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1851 Notensysteme werden in den Standardeinstellungen auch so dicht
1852 beieinander gesetzt wie es möglich ist (mit einem minimalen Abstand).
1853 Wenn Noten sehr weit aus einem System herausragen, zwingen sie
1854 das nächste System weiter weg, wenn eine Kollision drohen würde.
1855 Im nächsten Beispiel sehen Sie, wie Noten auf zwei Systemen
1856 @qq{ineinander greifen}.
1858 @lilypond[quote,ragged-right,verbatim]
1861 \relative { c'4 a, }
1864 \relative { c''''4 a, }
1870 @node Předměty uvnitř notové osnovy
1871 @subsection Předměty uvnitř notové osnovy
1872 @translationof Within-staff objects
1874 Es wurde schon gezeigt, wie die Befehle @code{\voiceXXX} die Richtung
1875 von Bögen, Fingersatz und allen anderen Objekten beeinflusst,
1876 die von der Richtung der Notenhälsen abhängen. Diese Befehle
1877 sind nötig, wenn polyphone Musik geschrieben wird, damit sich
1878 die einzelnen Melodielinien klar abzeichnen. Es kann aber von Zeit
1879 zu Zeit nötig sein, dieses automatische Verhalten zu verändern. Das
1880 kann entweder für ganze Abschnitte, aber genauso auch nur für eine
1881 einzelne Note vorgenommen werden. Die Eigenschaft, die die Richtung
1882 bestimmt, ist die @code{direction}-Eigenschaft jedes Layout-Objekts.
1883 Es soll erst erklärt werden, was sie bewirkt und dann eine Anzahl
1884 an fertigen Befehlen für die üblicheren Situationen präsentiert werden,
1885 mit denen Sie gleich loslegen können.
1887 Manche Layout-Objekte, wie Legato- und Bindebögen, biegen sich
1888 oder zeigen entweder nach oben oder nach unten, andere, wie
1889 Hälse und Fähnchen, verändern auch die Position rechts oder links,
1890 je nach der Richtung, in die sie zeigen. Das wird automatisch
1891 berücksichtigt, wenn die @code{direction}-Eigenschaft verändert
1898 @cindex hoch-Eigenschaft
1899 @cindex runter-Eigenschaft
1900 @cindex zentriert-Eigenschaft
1901 @cindex neutral-Eigenschaft
1903 Das folgende Beispiel zeigt im ersten Takt die Standardeinstellung
1904 für Hälse, die bei hohen Noten nach unten zeigen und bei tiefen
1905 noten nach oben. Im nächsten Takt werden alle Hälse nach unten
1906 gezwungen, im dritten Takt nach oben, und im vierten wird wieder
1907 der Standard eingestellt.
1909 @cindex Notenhals, Beispiel zur Veränderung
1910 @cindex Richtungseigenschaft, Beispiel
1912 @lilypond[quote,verbatim,relative=2]
1914 \override Stem.direction = #DOWN
1916 \override Stem.direction = #UP
1918 \revert Stem.direction
1922 Hier werden die Konstanten @code{DOWN} und @code{UP}
1923 eingesetzt. Sie haben die Werte @code{-1} bzw. @code{+1}, und
1924 diese numerischen Werte können ebenso benutzt werden. Auch
1925 der Wert @code{0} kann in manchen Fällen benutzt werden. Er
1926 bedeutet für die Hälse das gleiche wie @code{UP}, für einige
1927 andere Objekte jedoch @qq{zentriert}. Es gibt hierzu die Konstante
1928 @code{CENTER}, die den Wert @code{0} hat.
1930 Es gibt aber einfachere Befehle, die normalerweise benutzt werden.
1931 Hier eine Tabelle der häufigsten. Die Bedeutung des Befehls wird
1932 erklärt, wenn sie nicht selbstverständlich ist.
1934 @multitable @columnfractions .2 .2 .25 .35
1935 @headitem Runter/Links
1939 @item @code{\arpeggioArrowDown}
1940 @tab @code{\arpeggioArrowUp}
1941 @tab @code{\arpeggioNormal}
1942 @tab Arpeggio mit Pfeil nach unten, oben oder ohne Pfeil
1943 @item @code{\dotsDown}
1945 @tab @code{\dotsNeutral}
1946 @tab Richtung der Verschiebung eines Punktes, um Notenlinien zu vermeiden
1947 @item @code{\dynamicDown}
1948 @tab @code{\dynamicUp}
1949 @tab @code{\dynamicNeutral}
1950 @tab Position der Dynamik-Bezeichnung relativ zum System
1951 @item @code{\phrasingSlurDown}
1952 @tab @code{\phrasingSlurUp}
1953 @tab @code{\phrasingSlurNeutral}
1954 @tab Befehl für Richtung von Phrasierungsbögen
1955 @item @code{\slurDown}
1957 @tab @code{\slurNeutral}
1958 @tab Befehl für Richtung von Legatobögen
1959 @item @code{\stemDown}
1961 @tab @code{\stemNeutral}
1962 @tab Befehl für Richtung von Hälsen
1963 @item @code{\textSpannerDown}
1964 @tab @code{\textSpannerUp}
1965 @tab @code{\textSpannerNeutral}
1966 @tab Position von Textbeschriftungen, die als Strecker eingegeben werden
1967 @item @code{\tieDown}
1969 @tab @code{\tieNeutral}
1970 @tab Befehl für Richtung von Bindebögen
1971 @item @code{\tupletDown}
1972 @tab @code{\tupletUp}
1973 @tab @code{\tupletNeutral}
1974 @tab Befehl für Richtung von Klammern/Zahlen der N-tolen
1977 Diese vordefinierten Befehl können allerdings @strong{nicht}
1978 zusammen mit @code{\once} benutzt werden. Wenn Sie die
1979 Wirkung eines Befehl auf eine einzige Noten begrenzen wollen,
1980 müssen Sie den entsprechenden
1981 @code{\once \override}-Befehl benutzen oder den definierten
1982 Befehl, gefolgt von dem entsprechenden neutralisierenden
1983 @code{xxxNeutral}-Befehl nach der Note.
1986 @subheading Fingersatz
1988 @cindex Fingersatz, Positionierung
1989 @cindex Fingersatz, Akkorde
1991 Die Positionierung von Fingersatz kann auch durch den Wert
1992 seiner @code{direction}-Eigenschaft beeinflusst werden, aber
1993 eine Veränderung von @code{direction} hat keinen Einfluss auf
1994 Akkorde. es gibt auch hier
1995 besondere Befehle, mit denen der Fingersatz von einzelnen
1996 Noten in Akkorden kontrolliert werden kann, wobei mögliche
1997 Positionen über, unter der Note und rechts bzw. links von
2000 Zunächst die Wirkungsweise von @code{direction} auf
2001 den Fingersatz: im ersten Takt der Standard, dann
2002 die Wirkung von @code{DOWN} (runter) und @code{UP}
2005 @cindex Fingersatz, Beispiel zur Veränderung
2006 @cindex direction-Eigenschaft, Beispiel
2008 @lilypond[quote,verbatim,relative=2]
2010 \override Fingering.direction = #DOWN
2012 \override Fingering.direction = #UP
2016 Eine Beeinflussung der @code{direction}-Eigenschaft ist jedoch
2017 nicht die einfachste Art, Fingersatzbezeichnungen manuell über oder
2018 unter das System zu setzen. Normalerweise bietet es sich an,
2019 @code{_} oder @code{^} anstelle von @code{-} vor der Fingersatz-Zahl
2020 zu benutzen. Hier das vorherigen Beispiel mit dieser Methode:
2022 @cindex Fingersatz-Beispiel
2024 @lilypond[quote,verbatim,relative=2]
2030 Die @code{direction}-Eigenschaft wirkt sich nicht auf
2031 Akkorde aus, während die Präfixe @code{_} und @code{^} funktionieren.
2032 Standardmäßig wird der Fingersatz automatisch entweder
2033 über oder unter dem Akkord gesetzt:
2035 @cindex Fingersatz-Beispiel
2037 @lilypond[quote,verbatim]
2046 aber das kann manuell geändert werden, um einzelne Fingersatzanweisungen
2047 nach oben oder unten zu zwingen:
2049 @cindex Fingersatz-Beispiel
2051 @lilypond[quote,verbatim]
2053 <c''-5 g-3 e-2 c-1>4
2059 Noch bessere Kontrolle über die Positionierung von Fingersatz für
2060 einzelne Noten in einem Akkord ist mit dem
2061 @code{\set fingeringOrientations}-Befehl möglich. Die Syntax
2065 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2069 @code{\set}wird benutzt, weil @code{fingeringOrientations} eine
2070 Eigenschaft des @code{Voice}-Kontextes ist, erstellt und eingesetzt
2071 vom @code{New_fingering_engraver}.
2073 Die Eigenschaft kann als Wert eine Liste mit einem bis drei Einträgen
2074 haben. Damit wird bestimmt, ob Fingersatz oberhalb gesetzt
2075 werden kann (wenn @code{up} in der Liste auftaucht), darunter
2076 (wenn@code{down} auftaucht), links (wenn @code{left} auftaucht)
2077 oder rechts (wenn @code{right} auftaucht). Wenn andererseits
2078 ein Wert nicht auftaucht, wir auch kein Fingersatz in dieser Richtung
2079 gesetzt. LilyPond nimmt diese Beschränkung als Bedingung und
2080 errechnet die besten Positionen für die Noten des nächsten Akkordes.
2081 Die seitliche Positionierung kann nur auf einer Seite des Akkordes
2082 geschehen, nicht auf beiden gleichzeitig, es kann also nur entweder
2083 @code{left} oder @code{right} auftreten, nicht beide gleichzeitig.
2085 @warning{Damit eine einzelne Note mit diesem Befehl beeinflusst werden
2086 kann, muss sie als ein @qq{Ein-Noten-Akkord} geschrieben
2087 werden, indem einfache spitze Klammern um die Note positioniert
2090 Hier ein paar Beispiele:
2092 @cindex Fingersatz-Beispiel
2093 @cindex @code{\set}, Benutzungsbeispiel
2094 @cindex fingerOrientations-Eigenschaft, Beispiel
2096 @lilypond[quote,verbatim,relative=1]
2097 \set fingeringOrientations = #'(left)
2100 \set fingeringOrientations = #'(left)
2103 \set fingeringOrientations = #'(up left down)
2106 \set fingeringOrientations = #'(up left)
2109 \set fingeringOrientations = #'(right)
2115 Wenn die Fingersatzbezeichnung zu gedrungen aussieht,
2116 kann auch die Schriftgröße (@code{font-size}) verringert
2117 werden. Der Standardwert kann aus dem
2118 @code{Fingering}-Objekt in der IR entnommen werden,
2119 er ist @code{-5}, versuchen wir es also mit @code{-7}.
2121 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2122 \override Fingering.font-size = #-7
2123 \set fingeringOrientations = #'(left)
2126 \set fingeringOrientations = #'(left)
2129 \set fingeringOrientations = #'(up left down)
2132 \set fingeringOrientations = #'(up left)
2135 \set fingeringOrientations = #'(right)
2142 @node Předměty vně notové osnovy
2143 @subsection Předměty vně notové osnovy
2144 @translationof Outside-staff objects
2146 Předměty vně notové osnovy werden automatisch gesetzt,
2147 um Kollisionen zu vermeiden. Objekten mit einem geringeren
2148 Prioritätswert der Eigenschaft @code{outside-staff-priority}
2149 werden näher an das System gesetzt, und andere Objekte außerhalb
2150 des Systems werden dann soweit vom System entfernt gesetzt, dass
2151 Zusammenstöße vermieden werden. Die
2152 @code{outside-staff-priority}-Eigenschaft ist im
2153 @code{grob-interface} definiert und ist also eine Eigenschaft
2154 von allen Layout-Objekten. Standardmäßig ist sie für alle Objekte
2155 auf falsch (@code{#f}) gesetzt; dieser Wert wird in einen numerischen
2156 Wert dem Objekt entsprechend geändert, wenn das Objekt für die
2157 Notenausgabe erstellt wird. Die Tabelle unten zeigt die
2158 Standardwerte für die meistbenutzten @code{outside-staff}-Objekte,
2159 die den Voreinstellungen nach im @code{Staff}- oder
2160 @code{Voice}-Kontext gesetzt werden.
2165 Achtung bei einigen ungewöhnlichen Objektbezeichnungen: Strecker-Objekte
2166 werden automatisch erstellt, um die vertikale Position von Grobs
2167 zu kontrollieren, die an unterschiedlichen musikalischen Momenten
2168 beginnen und enden (könnten). Wenn also @code{outside-staff-priority}
2169 des darunterliegenden Grobs geändert wird, hat das keine Auswirkung.
2170 Zum Beispiel bringt das Ändern von @code{outside-staff-priority}
2171 des @code{Hairpin}-(Dynamikklammer)-Objekts keine Änderung in der
2172 vertikalen Position von Crescendo-Klammern -- anstatt dessen muss
2173 @code{outside-staff-priority} des hiermit assoziierten
2174 @code{DynamicLineSpanne}-Objekts geändert werden. Dieser
2175 @code{\override}-Befehl muss zu Beginn des Streckers gesetzt werden,
2176 welcher womöglich mehrere verbundene Dynamikklammern und Dynamikbezeichnung
2179 @multitable @columnfractions .3 .3 .3
2180 @headitem Layout-Objekt
2182 @tab Kontrolliert Position von:
2183 @item @code{MultiMeasureRestText}
2185 @tab Text über Ganztaktpausen
2186 @item @code{TextScript}
2188 @tab Textbeschriftung
2189 @item @code{OttavaBracket}
2191 @tab Ottava (Oktavierungsklammern)
2192 @item @code{TextSpanner}
2195 @item @code{DynamicLineSpanner}
2197 @tab Alle Dynamik-Bezeichnungen
2198 @item @code{VoltaBracketSpanner}
2201 @item @code{TrillSpanner}
2203 @tab Triller-Strecker
2206 Hier ein Beispiel, das die Standardpositionierung von einigen
2209 @cindex Text-Strecker
2210 @cindex Text-Spanner
2211 @funindex \startTextSpan
2212 @funindex \stopTextSpan
2213 @funindex startTextSpan
2214 @funindex stopTextSpan
2215 @cindex Ottava-Klammer
2216 @cindex Oktavierungsklammer
2218 @cindex TextSpanner, Beispiel zur Veränderung
2219 @cindex bound-details-Eigenschaft, Beispiel
2221 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2222 % Set details for later Text Spanner
2223 \override TextSpanner.bound-details.left.text
2224 = \markup { \small \bold Slower }
2225 % Place dynamics above staff
2227 % Start Ottava Bracket
2230 % Add Dynamic Text and hairpin
2236 % Add Dynamic Text and terminate hairpin
2237 c4\ff c \stopTextSpan
2238 % Stop Ottava Bracket
2243 Dieses Beispiel zeigt auch, wie man Text-Strecker erstellt, d.h.
2244 Text mit Bindestrichen, der sich über eine bestimmte Länge
2245 erstreckt. Der Strecker beginnt mit dem
2246 @code{\startTextSpan}-Befehl und endet mit dem
2247 @code{\stopTextSpan}-Befehl, und das Format des Textes
2248 wird mit dem @code{\override TextSpanner}-Befehl bestimmt.
2249 Mehr Einzelheiten siehe @ruser{Text mit Verbindungslinien}.
2251 Im Beispiel wird auch gezeigt, wie Oktavierungsklammern
2252 (Ottava) erstellt werden.
2254 @cindex Taktzahlposition verändern
2255 @cindex Verändern der Taktzahlposition
2256 @cindex Position der Taktzahl, verändern
2257 @cindex Metronom-Bezeichnungsposition verändern
2258 @cindex Verändern der Metronom-Bezeichnungsposition
2259 @cindex Übungszeichenposition verändern
2260 @cindex Verändern der Übungszeichenposition
2262 Beachten Sie, dass Taktnummern, Metronombezeichnungen
2263 und Übungszeichen nicht gezeigt werden. Sie werden
2264 standardmäßig im @code{Score}-(Partitur)-Kontext
2265 erstellt und ihre @code{outside-staff-priority} wird
2266 in Bezug auf die Layout-Objekte, die im @code{Staff}-Kontext
2267 erstellt werden, ignoriert. Wenn Sie Taktnummern,
2268 Metronombezeichnungen oder Übungszeichen entsprechend
2269 ihrer Außersystem-Priorität setzen wollen, müssen Sie
2270 die entsprechenden Engraver (@code{Bar_number_engraver},
2271 @code{Metronome_mark_engraver} oder @code{Mark_engraver})
2272 vom @code{Score}-Kontext entfernen und dem
2273 @code{Staff}-Kontext hinzufügen. Wenn die Engraver so
2274 geändert werden, erhalten sie folgenden Werte für
2275 @code{outside-staff-priority}:
2277 @multitable @columnfractions .3 .3
2278 @headitem Layout-Objekt @tab Priorität
2279 @item @code{RehearsalMark} @tab @code{1500}
2280 @item @code{MetronomeMark} @tab @code{1000}
2281 @item @code{BarNumber} @tab @code{ 100}
2284 Wenn die Standardwerte der @code{outside-staff-priority} nicht
2285 die Positionierung hervorrufen, die Sie wünschen, kann die
2286 Priorität eines jeden Objektes geändert werden. Als Beispiel
2287 wollen wir zeigen, wie sich die Oktavierungsklammer unter
2288 den Textstrecker des vorigen Beispiels setzen lässt. Wir müssen
2289 nur die Priorität des
2290 @code{OttavaBracket}-Objektes in der IR oder der Tabelle oben
2291 herausfinden und einen kleineren Wert angeben als der Wert, den
2292 das @code{TextSpanner}-(Strecker)-Objekt bekommt, wobei noch daran
2293 zu denken ist, dass @code{OttavaBracket} im @code{Staff}-Kontext
2296 @cindex TextSpanner, Beispiel zur Veränderung
2297 @cindex bound-details-Eigenschaft, Beispiel
2299 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2300 % Set details for later Text Spanner
2301 \override TextSpanner.bound-details.left.text
2302 = \markup { \small \bold Slower }
2303 % Place dynamics above staff
2305 % Place following Ottava Bracket below Text Spanners
2306 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2307 % Start Ottava Bracket
2312 % Add Dynamic Line Spanner
2318 c4\ff c \stopTextSpan
2319 % Stop Ottava Bracket
2324 @cindex Legatobögen und outside-staff-priority
2325 @cindex Legatobögen und Artikulationszeichen
2326 @cindex Artikulationszeichen und Legatobögen
2328 Legatobögen werden als Innersystem-Objekte klassifiziert, aber
2329 sie erscheinen oft auch über dem System, wenn die Noten, an die
2330 sie verbunden sind, sehr hoch im System notiert sind. Dadurch
2331 können Außersystem-Objekte, wie Artikulationszeichen, zu hoch
2332 gerückt werden. Die @code{avoid-slur}-Eigenschaft hat nur
2333 eine Auswirkung, wenn auch die @code{outside-staff-priority}
2334 auf @code{#f} gesetzt ist. Alternativ kann die
2335 @code{outside-staff-priority} des Legatobogens auf einen
2336 numerischen Wert gesetzt werden, sodass er mit anderen
2337 Außersystem-Objekten anhand dieses Wertes gesetzt wird.
2338 Hier ein Beispiel, das die beiden Möglichkeiten veranschaulicht:
2340 @lilypond[quote,verbatim,relative=2]
2341 c4( c^\markup { \tiny \sharp } d4.) c8
2343 \once \override TextScript.avoid-slur = #'inside
2344 \once \override TextScript.outside-staff-priority = ##f
2345 c4^\markup { \tiny \sharp } d4.) c8
2346 \once \override Slur.outside-staff-priority = #500
2347 c4( c^\markup { \tiny \sharp } d4.) c8
2350 Eine Änderung der @code{outside-staff-priority} kann auch dazu
2351 benutzt werden, die vertikale Plazierung von individuellen Objekten
2352 zu kontrollieren, auch wenn das Ergebnis nicht immer optimal
2353 ist. Im nächsten Beispiel soll @qq{Text3} oberhalb von @qq{Text4}
2354 gesetzt werden, das Beispiel wurde behandelt in
2355 @ref{Automatické chování,,automatickém chování}. Der Wert der Priorität muss also für
2356 die Eigenschaft @code{TextScript} entweder in der IR oder in der
2357 Tabelle oben festgestellt werden und dann die Priorität für
2358 @qq{Text3} höher eingestellt werden:
2360 @cindex TextScript, Beispiel zur Veränderung
2361 @cindex outside-staff-priority-Eigenschaft, Beispiel
2363 @lilypond[quote,fragment,ragged-right,verbatim]
2366 \once \override TextScript.outside-staff-priority = #500
2371 Damit wird zwar @qq{Text3} ganz richtig über @qq{Text4}
2372 platziert, aber auch über @qq{Text2}, und @qq{Text4}
2373 wird jetzt weiter unten gesetzt. Eigentlich sollten ja alle
2374 diese Anmerkungen gleichweit vom System entfernt sein.
2375 Dazu muss offensichtlich horizontal etwas Platz gemacht
2376 werden. Das kann erreicht werden mit dem
2377 @code{textLengthOn}-(Textlänge an)-Befehl.
2379 @subheading \textLengthOn (Textlänge berücksichtigen)
2381 @cindex Noten, durch Text gespreizt
2382 @funindex \textLengthOn
2383 @funindex textLengthOn
2384 @funindex \textLengthOff
2385 @funindex textLengthOff
2387 Standardmäßig wird Text, der mit dem Beschriftungsbefehl
2388 @code{\markup} bzw. Äquivalenten erstellt wird, kein
2389 zusätzlicher Platz in Bezug auf die Positionierung der Noten
2390 zugestanden. Der @code{\textLengthOn}-Befehl ändert
2391 dieses Verhalten, so dass die Noten gespreizt werden, wenn
2392 die Breite des Textes es erfordert:
2394 @lilypond[quote,fragment,ragged-right,verbatim]
2395 \textLengthOn % Cause notes to space out to accommodate text
2402 Dieses Verhalten wird mit dem @code{\textLengthOff}-Befehl
2403 rückgängig gemacht. Erinnern Sie sich, dass @code{\once} nur mit
2404 @code{\override}, @code{\set}, @code{\revert} oder @code{unset}
2405 funktioniert, der Befehl kann also nicht zusammen mit
2406 @code{\textLengthOn} benutzt werden.
2408 @cindex Textbeschriftung, Vermeidung von Zusammenstößen
2409 @cindex Zusammenstöße vermeiden mit Textbeschriftung
2411 Textbeschriftung vermeidet auch Noten, die über das System hinausstehen.
2412 Wenn das nicht gewünscht ist, kann die automatische Verschiebung
2413 nach oben hin auch vollständig ausgeschaltet werden, indem die
2414 Priorität auf @code{#f} gesetzt wird. Hier ein Beispiel, wie
2415 eine Textbeschriftung mit diesen Noten reagiert:
2417 @cindex Textbeschriftung, Beispiel zur Veränderung
2418 @cindex outside-staff-priority-Eigenschaft, Beispiel
2420 @lilypond[quote,ragged-right,verbatim]
2422 % This markup is short enough to fit without collision
2426 % This is too long to fit, so it is displaced upwards
2430 % Turn off collision avoidance
2431 \once \override TextScript.outside-staff-priority = ##f
2432 c,,2^"Long Text " c'' |
2435 % Turn off collision avoidance
2436 \once \override TextScript.outside-staff-priority = ##f
2437 \textLengthOn % and turn on textLengthOn
2438 c,,2^"Long Text " % Spaces at end are honored
2446 @cindex Verändern der Positionierung von Dynamikzeichen
2447 @cindex Dynamikzeichen: Positionierung verändern
2449 Dynamikbezeichnung wird üblicherweise unter dem System
2450 gesetzt, kann aber auch nach oben mit dem Befehl
2451 @code{dynamicUp} gezwungen werden. Die Bezeichnung
2452 wird vertikal relativ zu der Note positioniert, an die sie angefügt
2453 wurde. Sie wird vertikal variabel gesetzt in Bezug zu
2454 Innersystemobjekten wie Bögen oder Taktnummern. Damit
2455 können oft recht gute Resultate erreicht werden, wie im
2458 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2463 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\!
2464 ees,2.~\)\mf ees4 r8
2467 Wenn aber Noten und Dynamikzeichen sehr dicht beieinander
2468 stehen, positioniert die automatische Kollisionsvermeidung
2469 später kommende Dynamikzeichen weiter weg, was allerdings
2470 nicht immer die beste Möglichkeit ist, wie in dem folgenden,
2471 etwas gewollten Beispiel zu sehen ist:
2473 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2475 a4\f b\mf c\mp b\p |
2479 Wenn eine ähnliche Situation in @qq{echter} Musik auftaucht,
2480 kann es nötig sein, die Noten etwas zu spreizen, damit die
2481 Dynamikzeichen alle auf der selben vertikalen Position
2482 gesetzt werden können. Dieses Verhalten war im Falle von
2483 Textbeschriftungen möglich mit dem @code{\textLengthOn}-Befehl,
2484 aber es gibt keinen entsprechenden Befehl für Dynamik. Wir
2485 müssen also unsere eigenen Befehle mit @code{\override}
2489 @subheading Verändern der Größe von grobs
2491 @cindex Grob, Größenveränderung
2492 @cindex Größenveränderung von grobs
2494 Zuallererst müssen wir lernen, wie die Größe von Grobs verändert
2495 wird. Alle Grobs besitzen einen Referenzpunkt, der
2496 benutzt wird, um ihre Position in Relation zu ihnen übergeordneten
2497 Objekten zu bestimmen. Dieser Punkt innerhalb des Grobs wird dann
2498 auf einer horizontalen Position (@code{X-offset}) und einer
2499 vertikalen Position (@code{Y-offset}) ausgerichtet, immer bezüglich
2500 des übergeordneten Objektes. Eine horizontale Strecke wird
2501 durch ein Zahlenpaar angegeben (@code{X-extent}), welche
2502 die linke und rechte Grenze relativ zum übergeordneten Objekt
2503 bezeichnen. Die vertikale Strecke wir genauso durch ein
2504 Zahlenpaar (@code{Y-extent}) definiert. Diese Eigenschaften
2505 gehören zu allen Grobs, die das
2506 @code{grob-interface} unterstützen.
2508 @cindex @code{extra-spacing-width}
2510 Standardmäßig haben Außersystemobjekte eine Länge von Null,
2511 so dass sie sich in horizontaler Richtung überlappen können. Das
2512 geschieht, indem dem linken Rand Unendlich zugewiesen wird
2513 und dem rechten Rand minus Unendlich (der Code der
2514 @code{extra-spacing-width}-(zusätzliche Positionierungslänge)-Eigenschaft
2515 lautet: @code{'(+inf.0 . -inf.0)}).
2516 Damit sich diese Objekte also horizontal nicht überschneiden, muss
2517 der Wert von @code{extra-spacing-width} auf
2518 @code{'(0 . 0)} gesetzt werden, sodass die wirkliche Länge eines
2519 Objektes zur Geltung kommt. Mit diesem Befehl wird das für
2520 Dynamik-Zeichen erledigt:
2523 \override DynamicText.extra-spacing-width = #'(0 . 0)
2527 Schauen wir uns an, wie es mit dem vorigen Beispiel funktioniert:
2529 @cindex DynamicText, Beispiel zur Veränderung
2530 @cindex extra-spacing-width-Eigenschaft, Beispiel
2532 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2534 \override DynamicText.extra-spacing-width = #'(0 . 0)
2539 Damit werden die Dynamik-Zeichen also wirklich nebeneinander
2540 gesetzt, aber es gibt noch zwei Probleme. Die Zeichen sollten
2541 etwas weiter außeinander stehen und es wäre gut, wenn sie alle
2542 den gleichen Abstand zum System hätte. Das erste Problem ist
2543 einfach behoben. Anstatt der @code{extra-spacing-width}-Eigenschaft
2544 Null zuzuweisen, können wir auch einen etwas größeren Wert
2545 wählen. Die Einheit wird gemessen in dem Abstand zwischen zwei
2546 Notenlinien, es scheint also gut, den rechten und linken
2547 Rand eine halbe Einheit zu vergrößern:
2549 @cindex DynamicText, Beispiel zur Veränderung
2550 @cindex extra-spacing-width-Eigenschaft, Beispiel
2552 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2554 % Extend width by 1 staff space
2555 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2560 Das sieht schon besser aus, aber es wäre noch besser, wenn die
2561 Dynamik-Zeichen alle an einer Linie ausgerichtet wären, anstatt
2562 höher und tiefer zu sitzen. Das kann mit der
2563 @code{staff-padding}-Eigenschaft erreicht werden,
2564 die wir uns im folgenden Abschnitt genauer anschauen werden.
2568 @node Střety předmětů
2569 @section Střety předmětů
2570 @translationof Collisions of objects
2573 * Přesouvání předmětů::
2574 * Oprava překrývajících se not::
2575 * Příklady ze života::
2578 @node Přesouvání předmětů
2579 @subsection Přesouvání předmětů
2580 @translationof Moving objects
2582 @cindex Verschieben von überschneidenden Objekten
2583 @cindex Verschieben von Zusammenstößen
2584 @cindex Zusammenstöße vermeiden
2585 @cindex Objekte, verschieben von Zusammestößen
2586 @cindex Vermeiden von Zusammenstößen
2588 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht
2589 perfekt. Einige Notationselemente können sich überschneiden. Das
2590 ist nicht schön, aber zum Glück sehr selten. Normalerweise müssen
2591 die Objekte zur Klarheit oder aus ästhetischen Gründen verschoben
2592 werden -- sie könnten besser aussehen, wenn sie etwas zusätzlichen
2595 Es gibt im Grunde drei Herangehensweisen, überlappende Notation
2596 zu verbessern. Man sollte sie in der folgenden Reihenfolge
2601 Die @strong{Richtung} eines der überlappenden Objekte kann
2602 geändert werden, indem die vordefinierten Befehle für
2603 Innersystemobjekte verwendet werden, wie beschrieben in
2604 @ref{Předměty uvnitř notové osnovy,,předmětech uvnitř notové osnovy)}. Hälse, Bögen, Balken, Dynamik-Zeichen
2605 und Triolen können auf diese Weise einfach umgeordnet
2606 werden. Beschränkt ist diese Methode insofern, als es nur
2607 zwei Möglichkeiten zur Veränderung gibt: oben oder unten.
2610 Die @strong{Objekteigenschaft}, die LilyPond benutzt um die
2611 Layout-Objekte zu platzieren, können mit dem
2612 @code{\override}-Befehl positioniert werden. Die Vorteile
2613 von Änderungen dieser Art sind a) dass einige Objekte
2614 automatisch verschoben werden, wenn es nötig ist Platz zu
2615 schaffen und b) ein einziges @code{\override} sich auf
2616 alle Fälle eines Objekttyps bezieht. Zu diesen Eigenschaften
2622 @code{direction} (Richtung)
2624 Das wurde schon detailliert behandelt, siehe
2625 @ref{Předměty uvnitř notové osnovy,,předměty uvnitř notové osnovy}.
2628 @code{padding}, @code{right-padding}, @code{staff-padding} (Verschiebung)
2630 @cindex Padding-Eigenschaft
2631 @cindex right-padding-Eigenschaft
2632 @cindex staff-padding-Eigenschaft
2633 @cindex Verschieben (padding)
2634 @cindex Füllung (padding)
2635 @cindex padding (Füllung)
2637 Wenn ein Objekt platziert wird, bestimmt der Wert seiner
2638 @code{padding}-(Füllungs)-Eigenschaft die Größe des
2639 Abstandes, der zwischen dem Objekt selber und dem
2640 Objekt, relativ zu welchem es positioniert wird, gelassen
2641 werden muss. Dabei zählt der @code{padding}-Wert
2642 des Objektes, das platziert werden soll, der @code{padding}-Wert
2643 des Objektes, das schon gesetzt wurde, wird hingegen
2644 ignoriert. Abstände mit @code{padding} können zu
2645 allen Objekten hinzugefügt werden, die das
2646 @code{side-position-interface} unterstützen.
2648 Anstelle von @code{padding} wird die Position von
2649 Versetzungszeichengruppen durch die Eigenschaften
2650 @code{right-padding} bestimmt. Diese Eigenschaft wird im
2651 @code{AccidentalPlacement}-(Versetzungszeichen-Positionierungs)-Objekt
2652 gefunden, das sich innerhalb des @strong{Staff}-Kontexts
2653 befindet. Während des Notensatzes werden die Notenköpfe
2654 zuerst gesetzt und dann die Versetzungszeichen, wenn denn
2655 welche gesetzt werden, durch die @code{right-padding}-Eigenschaft
2656 auf die linke Seite der Notenköpfe positioniert, um die Entfernung
2657 von den Notenköpfen und zwischen den einzelnen Versetzungszeichen zu
2658 bestimmen. Also nur die @code{right-padding}-(Verschiebung nach rechts)-Eigenschaft
2659 des @code{AccidentalPlacement}-Objekts hat Einfluss auf die
2660 Positionierung der Versetzungszeichen.
2662 Die @code{staff-padding}-(Verschiebung zum System)-Eigenschaft
2663 ist sehr ähnlich wie die @code{padding}-Eigenschaft:
2664 @code{padding} bestimmt den Minimalabstand zwischen
2665 einem Objekt, das das @code{side-position-interface}
2666 unterstützt, und dem nächsten anderen Objekt (normalerweise
2667 die Note oder Notenlinie); @code{staff-padding} dagegen
2668 wirkt nur auf Objekte die immer außerhalb des Notensystems
2669 sind -- damit wird der minimale Abstand bestimmt, der
2670 zwischen dem Objekt und dem Notensystem gelassen werden
2671 soll. @code{staff-padding} hat also @strong{keinen Einfluss}
2672 auf Objekte, die relativ zu einer Note positioniert werden, sondern
2673 nur auf solche, die zum System relativ stehen. Wenn es mit einem
2674 anderen Objekt eingesetzt wird, erhält man keine Fehlermeldung, aber
2675 der Befehl hat auch keine Auswirkungen.
2677 Um herauszufinden, welche @code{padding}-Eigenschaft für
2678 das bestimmte Objekt nötig, ist, das Sie verschieben wollen,
2679 müssen Sie in der IR nach den Objekt-Eigenschaften schauen.
2680 Dabei sollten Sie bedenken, dass sich die @code{padding}-Eigenschaften
2681 nicht unbedingt in dem Objekt selber befinden, schauen Sie
2682 also auch in Objekten nach, die offensichtlich Ähnlichkeiten
2685 Alle @code{padding}-Werte werden in Notenlinienabständen
2686 gemessen. Für die meisten Objekte ist der Wert ungefähr auf
2687 1.0 oder weniger gesetzt (das variiert von Objekt zu Objekt).
2688 Der Wert kann geändert werden, wenn ein größerer (oder
2689 kleinerer) Abstand gewünscht wird.
2692 @code{self-alignment-X} (Selbstpositionierung)
2694 @cindex self-alignment-X-Eigenschaft
2695 @cindex Samoumístění předmětů
2696 @cindex Ausrichtung von Objekten
2698 Diese Eigenschaft kann benutzt werden, um ein Objekt
2699 nach links, rechts oder zentriert an dem Referenzpunkt des Objekts
2700 auszurichten, an das es verknüpft ist. Es kann bei allen
2701 Objekten benutzt werden, die das @code{self-alignment-interface}
2702 unterstützen. Das sind üblicherweise Objekte, die Text
2703 enthalten. Die möglichen Werte der Eigenschaft sind @code{LEFT},
2704 @code{RIGHT} oder @code{CENTER}. Alternativ kann ein
2705 numerischer Wert zwischen @code{-1} und @code{+1}
2706 bestimmt werden: @code{-1} heißt linksbündig, @code{+1}
2707 rechtsbündig und Zahlen dazwischen bewegen den Text
2708 schrittweise von links nach rechts. Zahlen größer als
2709 @code{1} können angegeben werden, um den Text
2710 noch weiter nach links zu bewegen, oder weniger als @code{-1},
2711 um ihn weiter nach rechts zu schieben. Eine Änderung
2712 um @code{1} des Wertes entspricht einer Bewegung um
2713 die halbe Textbreite.
2716 @code{extra-spacing-width} (zusätzliche Breite)
2718 @cindex extra-spacing-width-Eigenschaft
2720 Diese Eigenschaft steht für alle Objekte zur Verfügung, die
2721 das @code{item-interface} unterstützen. Es braucht zwei
2722 Zahlen als Argument, die erste wird zur rechten Ausdehnung,
2723 die zweite zur linken Ausdehnung hinzugerechnet. Negative
2724 Zahlen verschieben die Ausdehnung nach rechts, positive nach
2725 links, um also ein Objekt zu verbreitern, muss die erste
2726 Zahl negativ und die zweite positiv sein. Allerdings beachten
2727 nicht alle Objekte beide Zahlen. Das
2728 @code{accidental}-(Versetzungszeichen)-Objekt etwa beachtet
2729 nur erste Zahl für die linke Ausdehnung.
2732 @code{staff-position} (Notensystempositionierung)
2734 @cindex staff-position-Eigenschaft
2736 @code{staff-position} ist eine Eigenschaft des
2737 @code{staff-symbol-referencer-interface}, die von Objekten unterstützt
2738 wird, die relativ zum Notensystem (engl. staff) positioniert werden.
2739 Hiermit wird die vertikale Position eines Objekts relativ zur
2740 Mittellinie des Systems in halben Notenlinienabständen angegeben.
2741 Das ist sehr nützlich, um Zusammenstöße zwischen Layout-Objekten
2742 wie Ganztaktpausen, Bögen und Noten in verschiedenen Stimmen
2746 @code{force-hshift} (vertikale Verschiebung erzwingen)
2748 @cindex force-hshift-Eigenschaft
2750 Eng beieinander stehende Noten in einem Akkord oder Noten, die zum
2751 gleichen Zeitpunkt in unterschiedlichen Stimmen stehen, werden
2752 in zwei oder manchmal auch mehr Kolumnen gesetzt, um Kollisionen
2753 zu umgehen. Diese Kolumnen werden Notenkolumnen genannt;
2754 ein @code{NoteColumn}-Objekt wird erstellt um die Noten in den
2757 Die @code{force-hshift}-(erzwinge horizontale Verschiebung)-Eigenschaft
2758 ist eine Eigenschaft von @code{NoteColumn} (bzw. vom
2759 @code{note-column-interface}). Eine Veränderung dieser Eigenschaft
2760 macht es möglich, eine Notenkolumne zu verschieben, dabei gilt als
2761 Einheit die Breite einer Kolumne, also die Breite des Notenkopfes der
2762 ersten Stimme. Diese Eigenschaft kann in Situationen benutzt werden,
2763 in denen die normalen @code{\shiftOn}-Befehle (siehe auch
2764 @ref{Přesně vyjádřené začátky hlasů}) das Problem nicht beseitigen.
2765 Diese Eigenschaft ist besser in solchen Fällen zu verwenden als die
2766 @code{extra-offset}-Eigenschaft, weil man die richtige Entfernung nicht
2767 in Notenlinienabständen ausrechnen muss. Wenn eine Note in eine
2768 Notenkolumne oder aus ihr heraus geschoben wird, werden auch andere
2769 Funktionen beeinflusst, wie etwa die Verschmelzung von Notenköpfen.
2774 Zu guter Letzt, wenn alles andere nicht funktioniert, können Objekte auch
2775 manuell positioniert werden, entweder vertikal in Bezug auf die
2776 Mittellinie des Systems, oder indem sie einen beliebigen Abstand weit
2777 auf eine neue Position verschoben werden. Der Nachteil ist, dass die
2778 richtigen Werte für eine gute Position manuell ausprobiert werden müssen,
2779 meistens durch Herantasten an den richtigen Wert, und das für jedes
2780 einzelne Objekt extra. Und weil diese Verschiebungen erst vorgenommen
2781 werden, wenn LilyPond alle anderen Objekte gesetzt hat, ist man als
2782 Notensetzer selber dafür verantwortlich, ob es Zusammenstöße gibt.
2783 Am schwerwiegendsten ist aber die Tatsache, dass die
2784 Verschiebungskoordinaten wahrscheinlich neu errechnet oder
2785 ausprobiert werden müssen, wenn sich an den Noten und deren
2786 Layout später irgend etwas ändert. Die Eigenschaften, die für diese
2787 Arte der manuellen Verschiebung verwendet werden können, sind:
2790 @item extra-offset (zusätzlicher Abstand)
2792 @cindex extra-offset-Eigenschaft
2794 Diese Eigenschaft gehört zu jedem Layout-Objekt, das das
2795 @code{grob-interface} unterstützt. Sie braucht ein Zahlenpaar,
2796 das die exakte Verschiebung in horizontaler und vertikaler Richtung
2797 bezeichnet. Negative Zahlen verschieben das Objekt nach links oder
2798 unten. Die Einheit sind Notenlinienabstände. Die zusätzliche
2799 Positionierung wird vorgenommen, nachdem alle anderen Objekte
2800 platziert sind, weshalb ein Objekt irgendwohin verschoben werden
2801 kann, ohne den restlichen Satz zu beeinflussen.
2803 @item positions (Position)
2805 @cindex positions-Eigenschaft
2807 Diese Eigenschaft ist am sinnvollsten, um die Steigung und die
2808 Höhe von Balken, Bögen und Triolenklammern anzupassen.
2809 Sie braucht ein Zahlenpaar, das die Position des rechten und linken
2810 Endes relativ zur Mittellinie des Notensystems bestimmt. Die
2811 Einheit sind Notenlinienabstände. Bögen allerdings können nicht
2812 beliebig weit weg positioniert werden. LilyPond erstellt zunächst eine
2813 Liste an möglichen Positionen für den Bogen und findet normalerweise
2814 die Version, die @qq{am besten aussieht}. Wenn die
2815 @code{positions}-Eigenschaft verändert worden ist, wird der
2816 Bogen aus der Liste gewählt, der der gewünschten Position am
2822 Ein bestimmtes Objekt hat vielleicht nicht alle dieser Eigenschaften.
2823 Darum ist es nötig, in der IR nachzuschlagen, welche Eigenschaften
2824 ein bestimmtes Objekt unterstützt.
2826 Hier ist eine Liste an Objekten, die am wahrscheinlichsten an einer
2827 Kollision beteiligt sind, daneben findet sich die Bezeichnung des
2828 Objektes, mit der Sie es in der IR finden, um zu bestimmen,
2829 welche Eigenschaften benutzt werden können, um es zu verschieben.
2831 @multitable @columnfractions .5 .5
2832 @headitem Objekttyp @tab Objektbezeichnung
2833 @item Articulationszeichen @tab @code{Script}
2834 @item Balken @tab @code{Beam}
2835 @item Dynamikzeichen (vertikal) @tab @code{DynamicLineSpanner}
2836 @item Dynamikzeichen (horizontal) @tab @code{DynamicText}
2837 @item Fingersatz @tab @code{Fingering}
2838 @item Übungs-/Textmarken @tab @code{RehearsalMark}
2839 @item Legatobögen @tab @code{Slur}
2840 @item Text z. B. @code{^"text"} @tab @code{TextScript}
2841 @item Bindebögen @tab @code{Tie}
2842 @item N-tolen @tab @code{TupletBracket}
2846 @node Oprava překrývajících se not
2847 @subsection Oprava překrývajících se not
2848 @translationof Fixing overlapping notation
2850 Hier soll nun gezeigt werden, wie die Eigenschaften, die im
2851 vorigen Abschnitt vorgestellt wurden, bei der Problemlösung
2852 mit sich überschneidenden Notationselementen eingesetzt
2855 @subheading padding (Fülleigenschafte)
2857 @cindex padding (Verschiebungs-Eigenschaft)
2858 @cindex Überschneidende Notation korrigieren
2859 @cindex Korrigieren von überschneidender Notation
2861 Die @code{padding}-(Verschiebungs-)Eigenschaft kann benutzt
2862 werden, um den Abstand zwischen Symbolen zu vergößern (oder
2863 zu verkleinern), die über oder unter den Noten gesetzt werden.
2865 @cindex Script, Beispiel zur Veränderung
2866 @cindex Verschiebungs-Eigenschaft, Beispiel
2867 @cindex padding (Verschiebuns-Eigenschaft), Beispiel
2869 @lilypond[quote,fragment,verbatim]
2871 \override Script.padding = #3
2875 @cindex MetronomMark, Beispiel zur Veränderung
2876 @cindex Verschiebungs-Eigenschaft, Beispiel
2877 @cindex padding (Verschiebuns-Eigenschaft), Beispiel
2879 @lilypond[quote,fragment,verbatim]
2880 % This will not work, see below
2881 \override MetronomeMark.padding = #3
2885 \override Score.MetronomeMark.padding = #3
2890 Im zweiten Beispiel können Sie sehen, wie wichtig es ist den richtigen
2891 Kontext anzugeben. Weil das @code{MetronomeMark}-Objekt
2892 sich im @code{Score}-Kontext befindet, werden Eigenschaftsänderungen
2893 im @code{Voice}-Kontext einfach ignoriert. Für mehr Einzelheiten siehe
2894 @ruser{Eigenschaften verändern}.
2896 Wenn die @code{padding}-Eigenschaft eines Objektes erhöht wird, das
2897 sich in einem Stapel von Objekten befindet, die nach ihrer
2898 Außersystempriorität (@code{outside-staff-priority}) positioniert werden,
2899 werden das Objekt und alle, die sich außerhalb davon befinden,
2900 entsprechend verschoben.
2902 @subheading right-padding (Verschieben nach links)
2904 @cindex Verschiebung nach rechts
2905 @cindex right-padding-Eigenschaft (Verschiebung nach rechts)
2907 Die @code{right-padding}-Eigenschaft wirkt sich auf den Abstand
2908 zwischen einem Versetzungszeichen und der Note, auf das sie sich
2909 bezieht, aus. Sie wird nicht sehr oft benötigt, aber die
2910 Standardanordnung kann für einige spezielle Versetzungszeichen-Glyphen
2911 oder Kombinationsglyphen,
2912 wie sie für Mikrotonale Musik benutzt werden, falsch sein. Derartige
2913 Glyphen müssen notiert werden, indem man den Stencil des
2914 Versetzungszeichens mit einer Textbeschriftung (Markup) ersetzt,
2915 wie im folgenden Beispiel:
2917 @cindex Versetzungszeichen, Beispiel zur Veränderung
2918 @cindex Accidental, Beispiel zur Veränderung
2919 @cindex Text-Eigenschaft, Beispiel
2920 @cindex stencil-Eigenschaft, Beispiel
2921 @cindex AccidentalPlacement, Beispiel zur Veränderung
2922 @cindex right-padding-Eigenschaft, Beispiel
2923 @cindex Verschiebung nach rechts (rigth-padding), Beispiel
2925 @lilypond[quote,ragged-right,verbatim]
2926 sesquisharp = \markup { \sesquisharp }
2929 % This prints a sesquisharp but the spacing is too small
2930 \once \override Accidental.stencil = #ly:text-interface::print
2931 \once \override Accidental.text = #sesquisharp
2933 % This improves the spacing
2934 \once \override Score.AccidentalPlacement.right-padding = #0.6
2935 \once \override Accidental.stencil = #ly:text-interface::print
2936 \once \override Accidental.text = #sesquisharp
2942 Dazu ist aber ein @code{\override}-Befehl für den Stencil des
2943 Versetzungszeichens nötig, der bisher nicht behandelt wurde.
2944 Der Typ des Stencils muss eine Prozedur sein, die hier geändert
2945 wurde, um den Inhalt der @code{text}-Eigenschaft des
2946 @code{Accidental} (Versetzungszeichen)-Objekts zu setzen. Die
2947 @code{text}-Eigenschaft wiederum wird als @code{sesquisharp}-Glyph
2948 definiert. Dieser Glyph wird dann weiter vom Notenkopf entfernt
2949 durch die Veränderung von @code{right-padding} mit einem
2950 @code{\override}-Befehl.
2952 @subheading staff-padding (Systemfüllungseigenschaft)
2954 @cindex staff-padding-Eigenschaft
2955 @cindex Objekte an der Grundlinie ausrichten
2956 @cindex Ausrichten von Objekten an der Grundlinie
2958 @code{staff-padding} (Verschiebung zum Notensystem) kann
2959 verwendet werden um Objekte wie Dynamikzeichen an einer
2960 Grundlinie auf einer bestimmten Höhe über dem System
2961 auszurichten, sodass sie nicht von der Position der Note abhängen,
2962 an die sie angehängt sind. Diese Verschiebung ist keine Eigenschaft
2963 von @code{DynamicText}, sondern von @code{DynamicLineSpanner}.
2964 Das liegt daran, dass die Grundlinie sich gleicherweise auf
2965 @strong{alle} Dynamikzeichen beziehen soll, also auch auf die,
2966 die als Strecker erstellt wurden. Hier also die Lösung, die Dynamikzeichen
2967 aus dem Beispiel des vorigen Abschnitts auszurichten:
2969 @cindex DynamikText, Beispiel zur Veränderung
2970 @cindex extra-spacing-width-Eigenschaft, Beispiel
2971 @cindex DynamicLineSpanner, Beispiel zur Veränderung
2972 @cindex staff-padding-Eigenschaft, Beispiel
2974 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2976 % Extend width by 1 unit
2977 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2978 % Align dynamics to a base line 2 units above staff
2979 \override DynamicLineSpanner.staff-padding = #2
2984 @subheading self-alignment-X (Selbstausrichtung-X-Eigenschaft)
2986 @cindex self-alignment-X-Eigenschaft
2988 Das nächste Beispiel zeigt, wie man den Zusammenstoß
2989 einer Fingersatzbezeichnung mit einem Notenhals
2990 verhindern kann, indem die rechte Ecke an dem
2991 Referenzpunkt der abhängigen Note angeordnet wird:
2993 @cindex StringNumber, Beispiel zur Veränderung
2995 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2998 \once \override StringNumber.self-alignment-X = #RIGHT
3003 @subheading staff-position (Position innerhalb des Systems)
3005 @cindex staff-position-Eigenschaft
3006 @cindex Notensystem-Position-Eigenschaft
3007 @cindex Střety předmětů v osnově
3008 @cindex Zusammenstöße von Objekten im System
3010 Vieltaktpausen in einer Stimmen können mit Noten in anderen
3011 Stimmen kollidieren. Da diese Pausen zentriert zwischen den
3012 Taktlinien gesetzt werden, würde es für LilyPond eine recht große
3013 Anstrengung bedeuten herauszufinden, welche Noten mit ihnen
3014 zusammenstoßen könnten, denn alle Kollisionsvermeidung
3015 für Noten und Pausen funktioniert nur für Noten bzw. Pausen, die
3016 zur selben Zeit auftreten. Hier ein typisches Beispiel für eine
3017 Kollision dieser Art:
3019 @lilypond[quote,verbatim,ragged-right]
3020 << \relative { c'4 c c c } \\ { R1 } >>
3023 Die beste Lösung ist es, die Ganztaktpause nach unten zu
3024 schieben, denn die Pause ist in der zweiten Stimme. Per
3025 Standardeinstellung für die zweite Stimme (@code{\voiceTwo},
3026 also die zweite Stimme in der
3027 @code{<<@{...@} \\ @{...@}>>}-Konstruktion) wird die
3028 Position auf dem System (@code{staff-position}) auf -4
3029 für @code{MultiMeasureRest}, in unserem Beispiel muss
3030 es also bspw. auf die Position @code{-8} gesetzt werden,
3031 d.h. vier halbe Notenlinienabstände weiter nach unten:
3033 @cindex MultiMeasureRest, Beispiel zur Veränderung
3034 @cindex Ganztaktpausen, Beispiel zur Veränderung
3035 @cindex staff-position-Eigenschaft, Beispiel
3037 @lilypond[quote,verbatim,ragged-right]
3039 \relative { c'4 c c c }
3041 \override MultiMeasureRest.staff-position = #-8
3046 Das ist besser, als etwa @code{extra-offset} zu benutzen, denn
3047 in unserem Fall wird die Hilfslinie der Pause automatisch gesetzt.
3050 @subheading extra-offset (Genaues Positionieren)
3052 @cindex extra-offset-Eigenschaft
3053 @cindex Zusätzlicher Abstand, Positionierung
3054 @cindex Umístění předmětů
3055 @cindex Objekte, Positionierung
3057 Die @code{extra-offset}-Eigenschaft bietet vollständige Kontrolle
3058 über die umístění předmětů in horizontaler und vertikaler
3061 Im Beispiel unten ist das zweite Fingersatzzeichen (@code{Fingering}) etwas nach
3062 links und 1,8 Notenlinienabstände nach unten verschoben:
3064 @cindex Fingersatz, Beispiel zur Veränderung
3065 @cindex extra-offset-Eigenschaft, Beispiel
3067 @lilypond[quote,fragment,relative=1,verbatim]
3070 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3075 @subheading Ausrichtungseigenschaft
3077 @cindex positions-Eigenschaft
3078 @cindex Kontrolle über Triolen, Bögen und Balken manuell
3079 @cindex manuelle Kontrolle über Triolen, Bögen, Balken
3080 @cindex Balken, manuelle Kontrolle
3081 @cindex Bögen, manuelle Kontrolle
3082 @cindex Legatobögen, manuelle Kontrolle
3083 @cindex Phrasierungsbögen, manuelle Kontrolle
3084 @cindex Triollen-Klammer, manuelle Kontrolle
3086 Die @code{positions}-Eigenschaft erlaubt die Kontrolle von Position und
3087 Steigung von Balken, Legato- und Phrasierungsbögen sowie Triolenklammern.
3088 Hier ein Beispiel, in der ein unschöner Phrasierungsbogen auftritt, weil
3089 er den Bogen des Vorschlags vermeidet:
3091 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3092 r4 \acciaccatura e8\( d8 c~ c d c d\)
3096 Man könnte einfach den Phrasierungsbogen oberhalb der Noten setzen, und
3097 das wäre auch die beste Lösung:
3099 @cindex Phrasierungsbogen, Beispiel zur Veränderung
3100 @cindex positions-Eigenschaft, Beispiel
3101 @cindex Positionierung, Beispiel
3103 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3106 \acciaccatura e8\( d8 c~ c d c d\)
3110 aber wenn es einen Grund geben sollte, warum das nicht geht, könnte
3111 man das linke Ende des Phrasierungsbogens etwas nach unten verschieben,
3112 indem man die @code{positions}-Eigenschaft einsetzt. Damit
3113 verschwindet auch die etwas unschöne Form:
3115 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3117 \once \override PhrasingSlur.positions = #'(-4 . -3)
3118 \acciaccatura e8\( d8 c~ c d c d\)
3121 Hier noch ein weiteres Beispiel aus der Einleitung von Chopins
3122 Prelude Op. 28 Nr. 2, das untere System. Wie zu sehen ist,
3123 stößt der Balken mit den oberen Noten zusammen:
3125 @lilypond[quote,verbatim,fragment,ragged-right]
3128 << { b,8 ais, b, g, } \\ { e, g e, g } >>
3129 << { b,8 ais, b, g, } \\ { e, g e, g } >>
3134 Das kann manuell gelöst werden, indem beide Enden des Balkens
3135 von ihrer Position 2 Notenlinienabstände über der Mittellinie
3136 hochgeschoben werden, etwa auf 3:
3138 @cindex Balken, Beispiel zur Veränderung
3139 @cindex positions-Eigenschaft, Beispiel
3140 @cindex Positionierung, Beispiel
3142 @lilypond[quote,verbatim,fragment,ragged-right]
3146 \override Beam.positions = #'(3 . 3)
3151 << { b,8 ais, b, g, } \\ { e, g e, g } >>
3156 Hier ist zu beobachten, dass die Veränderung sich auch auf die
3157 weiteren Achtelbalken der ersten Stimme auswirkt, während sie keine
3158 Auswirkung auf die Balken der zweiten Stimme hat.
3160 @subheading force-hshift (vertikale Verschiebunseigenschaft)
3162 @cindex force-hshift-Eigenschaft
3163 @cindex Vertikale Verschiebung erzwingen
3165 An diesem Punkt können wir den letzten Feinschliff an unserem
3166 Chopin-Beispiel vornehmen, das wir behandelt haben in
3167 @ref{Slyším hlasy}. Wir hatten es in folgende Form
3170 @lilypond[quote,verbatim,fragment,ragged-right]
3171 \new Staff \relative {
3188 Die unteren zwei Noten des ersten Akkords (also die in der
3189 dritten Stimme) sollten nicht aus der Notenkolumne der
3190 oberen zwei Noten weggeschoben werden. Um das zu
3191 korrigieren, setzen wir @code{force-hshift}, das eine
3193 @code{NoteColumn} ist, für diese Noten auf Null.
3194 Die untere Note des zweiten Akkordes wird am besten
3195 direkt rechts von den oberen Noten gesetzt. Das erreichen
3196 wir, indem wir @code{force-hshift} für diese Note auf
3197 0.5 setzen, also eine halbe Notenkopfbreite nach rechts von
3198 der Kolumne der oberen Noten aus.
3200 Hier das Endergebnis:
3202 @cindex Notenkolumne, Beispiel zur Veränderung
3203 @cindex force-hshift-Eigenschaft, Beispiel
3204 @cindex vertikale Verschiebung, Beispiel
3206 @lilypond[quote,verbatim,fragment,ragged-right]
3207 \new Staff \relative {
3216 \once \override NoteColumn.force-hshift = #0
3218 \once \override NoteColumn.force-hshift = #0.5
3227 @node Příklady ze života
3228 @subsection Příklady ze života
3229 @translationof Real music example
3231 Das Kapitel zu Optimierungen soll mit einem komplizierten Beispiel
3232 beendet werden, in dem verschiedene Optimierungen vorgenommen
3233 werden müssen, bis das Ergebnis gut aussieht. Das Beispiel wurde
3234 ganz bewusst gewählt um die Benutzung der Notationsreferenz
3235 zu zeigen, wenn ungewöhnliche Notationsprobleme gelöst werden
3236 müssen. Es ist nicht repräsentativ für normale Notationsprojekte,
3237 lassen Sie sich also nicht durch dieses Beispiel entmutigen! Zum
3238 Glück sind Probleme wie die hier gezeigten nicht sehr häufig.
3240 Das Beispiel stammt aus Chopins Premiére Ballade, Op. 23, Takte
3241 6--9, der Übergang vom Lento der Einleitung zum Moderato.
3242 Hier zunächst der Satz, wie er aussehen soll, allerdings ohne
3243 Dynamik, Fingersatz und Pedalbezeichnung, um das Beispiel nicht
3244 zu kompliziert zu machen.
3246 @c This example should not be indexed
3247 @lilypond[quote,ragged-right,line-width=6\in]
3248 rhMusic = \relative {
3251 \once \override Tie.staff-position = #3.5
3255 \mergeDifferentlyHeadedOn
3256 \mergeDifferentlyDottedOn
3257 bes2.^\markup { \bold "Moderato" } r8
3263 % Reposition the c2 to the right of the merged note
3264 \once \override NoteColumn.force-hshift = #1.0
3265 % Move the c2 out of the main note column so the merge will work
3272 % Stem on the d2 must be down to permit merging
3274 % Stem on the d2 should be invisible
3275 \once \override Stem.transparent = ##t
3283 \mergeDifferentlyHeadedOff
3284 \mergeDifferentlyDottedOff
3289 lhMusic = \relative {
3291 <d g, d>1)\arpeggio |
3298 \new Staff = "RH" <<
3302 \new Staff = "LH" <<
3311 Die erste Überlegung ist, dass das System für die rechte Hand
3312 im dritten Takt vier Stimmen braucht. Das sind die fünf
3313 Achtelnoten mit Balken, das übergebundene C, die Halbe D, die
3314 mit der Achtel D verschmolzen ist, und die punktierte Viertel
3315 Fis, die auch mit einer Achtelnote verschmolzen ist. Alles
3316 andere ist eine einzige Stimme, es ist also am einfachsten, die
3317 zusätzlichen drei Stimmen nur zeitweise zu erstellen, wenn sie
3318 auftreten. Wenn Sie vergessen haben, wie man das anstellt,
3319 schauen Sie sich nochmal den Abschnitt @ref{Slyším hlasy}
3320 und @ref{Přesně vyjádřené začátky hlasů} an. Hier wollen wir explizit
3321 begonnene Stimmen für die polyphone Stelle benutzen, weil LilyPond
3322 Kollisionen besser vermeidet, wenn alle Stimmen auf diese Weise
3323 explizit begonnen werden.
3326 Wir wollen anfange, indem wir die Noten in zwei Variablen
3327 notieren und dann die Systemstruktur in einer
3328 @code{\score}-Umgebung erstellen. Das ist, was LilyPond
3331 @c line-width ensures no break
3332 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3333 rhMusic = \relative {
3334 \new Voice { r2 c''4. g8 |
3338 % Start polyphonic section of four voices
3340 { c,8 d fis bes a } % continuation of main voice
3354 g2. % continuation of main voice
3358 lhMusic = \relative {
3367 \new Staff = "RH" <<
3371 \new Staff = "LH" <<
3380 Alle Noten sind richtig, aber die Positionierung sehr
3381 verbesserungsbedürftig. Der Bindebogen kollidiert mit
3382 der veränderten Taktart zusammen, einige Noten werden nicht
3383 verschmolzen und einige Notationselemente fehlen ganz.
3384 Behandeln wir zunächst die einfacheren Dinge. Der
3385 Balken kann durch eine manuelle Begrenzung einfach
3386 korrigiert werden, und auch der Legatobogen der linken
3387 Hand und der Phrasierungsbogen der rechten Hand
3388 sind schnell gesetzt, denn sie wurden schon in der
3389 Übung erklärt. Damit haben wir folgendes Notenbild:
3391 @c line-width ensures no break
3392 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3393 rhMusic = \relative {
3399 % Start polyphonic section of four voices
3401 { c,8 d fis bes a } % continuation of main voice
3415 g2.\) % continuation of main voice
3419 lhMusic = \relative {
3428 \new Staff = "RH" <<
3432 \new Staff = "LH" <<
3441 Der erste Takt stimmt jetzt schon. Der zweite Takt enthält ein
3442 Arpeggio und wird mit einer doppelten Taktlinie beschlossen.
3443 Wie können wir diese notieren, denn sie sind im Handbuch zum
3444 Lernen nicht vorgekommen? Hier brauchen wir jetzt die
3445 Notationsreferenz. Ein Blick in den Index zeigt uns die
3446 Einträge für @qq{Arpeggio} und @qq{Taktlinien}: ein
3447 Arpeggio also erstellt man mit dem Befehl @code{\arpeggio}
3448 hinter einem Akkord und eine doppelte Taktlinie wird mit dem
3449 Befehl @code{\bar "||"} erstellt. Das ist einfach. Als nächstes
3450 muss der Zusammenstoß des Bindebogens mit der Taktartbezeichnung
3451 gelöst werden. Das geht am besten, indem wir den Bogen nach
3452 oben verschieben. Wie man Objekte verschiebt wurde schon
3453 behandelt in @ref{Přesouvání předmětů,,přesouvání předmětů}, wo stand, dass Objekte
3454 die relativ zum System positioniert werden, vertikal verschoben werden
3455 können, indem ihre @code{staff-position}-Eigenschaft
3456 geändert wird, die in halben Notenlinienabständen relativ
3457 zur Mittellinie angegeben wird. Dieser @code{\override}-Befehl
3458 also, direkt vor die erste übergebundene Note gestellt, verschiebt
3459 den Bindebogen (@code{tie}) 3,5 halbe Notenlinienabstände
3460 über die Mittellinie:
3462 @code{\once \override Tie.staff-position = #3.5}
3464 Damit ist auch der zweite Takt vollständig:
3466 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3467 rhMusic = \relative {
3470 \once \override Tie.staff-position = #3.5
3475 % Start polyphonic section of four voices
3477 { c,8 d fis bes a } % continuation of main voice
3491 g2.\) % continuation of main voice
3495 lhMusic = \relative {
3497 <d g, d>1)\arpeggio |
3504 \new Staff = "RH" <<
3508 \new Staff = "LH" <<
3517 In Takt drei beginnt der Moderato-Abschnitt. In der
3518 Übung wurde behandelt, wie man fetten Text mit dem
3519 @code{\markup}-Befehl eingibt, es ist also einfach, das
3520 @qq{Moderato} in fetter Schrift hinzuzufügen. Wie aber werden Noten
3521 verschmolzen? Hier nehmen wir wieder die Notationsreferenz
3522 zu Hilfe. Die Suche nach @qq{Verschmelzen} (engl. merge)
3523 im Index führt uns zu den Befehlen, um Noten mit
3524 unterschiedlichen Köpfen und unterschiedlichen Punkten
3525 zu verschmelzen, in @ruser{Auflösung von Zusammenstößen}. In unserem
3526 Beispiel müssen sowohl unterschiedliche Köpfe also auch
3527 unterschiedliche Punktierung verschmolzen werden, wir
3528 brauchen also die Befehle
3531 \mergeDifferentlyHeadedOn
3532 \mergeDifferentlyDottedOn
3536 aus der Notationsreferenz, die wir an den Beginn unseres
3537 Abschnittes stellen und
3540 \mergeDifferentlyHeadedOff
3541 \mergeDifferentlyDottedOff
3545 um das Verhalten wieder auszuschalten. Das sieht so aus:
3547 @cindex Bindebogen, Beispiel zur Veränderung
3548 @cindex staff-position-Eigenschaft, Beispiel
3550 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3551 rhMusic = \relative {
3554 \once \override Tie.staff-position = #3.5
3558 bes2.^\markup { \bold "Moderato" } r8
3559 \mergeDifferentlyHeadedOn
3560 \mergeDifferentlyDottedOn
3561 % Start polyphonic section of four voices
3563 { c,8 d fis bes a } % continuation of main voice
3577 \mergeDifferentlyHeadedOff
3578 \mergeDifferentlyDottedOff
3579 g2.\) % continuation of main voice
3583 lhMusic = \relative {
3585 <d g, d>1)\arpeggio |
3592 \new Staff = "RH" <<
3596 \new Staff = "LH" <<
3605 Mit diesen Veränderungen wurden die beiden Fis-Noten
3606 verschmolzen, aber nicht die zwei Ds. Warum nicht? Die
3607 Antwort befindet sich im gleicher Abschnitt der Notationsreferenz:
3608 Noten, die verschmolzen werden, müssen Hälse in entgegengesetzte
3609 Richtungen aufweisen und zwei Noten können nicht verschmolzen
3610 werden, wenn eine dritte Noten in der gleichen Kolumne
3611 stört. In unserem Fall weisen beide Hälse nach oben und es
3612 befindet sich zur gleichen Zeit auch noch eine dritte Note, das C.
3613 Wie die Richtung von Hälsen geändert wird, wissen wir schon:
3614 mit @code{\stemDown}, und in der Notationsreferenz findet
3615 sich auch Information, wie das C verschoben werden kann: mit
3616 dem @code{\shift}-Befehl. Aber welcher von ihnen? Das C
3617 befindet sich in der zweiten Stimme, die @qq{shift off} hat,
3618 die zwei Ds sind in den Stimmen eins und drei, die @qq{shift
3619 off} bzw. @qq{shift on} haben. Das C muss also noch eine
3620 Stufe weiter verschoben werden mit @code{\shiftOnn}, damit
3621 es die Verschmelzung der Ds nicht stört. Das sieht jetzt so
3624 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3625 rhMusic = \relative {
3628 \once \override Tie.staff-position = #3.5
3632 bes2.^\markup { \bold "Moderato" } r8
3633 \mergeDifferentlyHeadedOn
3634 \mergeDifferentlyDottedOn
3635 % Start polyphonic section of four voices
3637 { c,8 d fis bes a } % continuation of main voice
3640 % Move the c2 out of the main note column so the merge will work
3645 % Stem on the d2 must be down to permit merging
3653 \mergeDifferentlyHeadedOff
3654 \mergeDifferentlyDottedOff
3655 g2.\) % continuation of main voice
3659 lhMusic = \relative {
3661 <d g, d>1)\arpeggio |
3668 \new Staff = "RH" <<
3672 \new Staff = "LH" <<
3681 Fast schon geschafft. Nur noch ein Problem ist übrig: Der Hals nach
3682 unten des verschmolzenen sollte nicht da sein, und das C sähe
3683 besser auf der rechten Seite des Ds aus. Beides können wir mit den
3684 gelernten postupy při ladění erreichen. Den Hals machen
3685 wir durchsichtig und das C verschieben wir mit der
3686 @code{force-hshift}-Eigenschaft. Hier ist das Endergebnis:
3688 @cindex Notenkolumne, Beispiel zur Veränderung
3689 @cindex force-hshift-Eigenschaft, Beispiel
3690 @cindex Hals, Beispiel zur Veränderung
3691 @cindex Notenhals, Beispiel zur Veränderung
3692 @cindex transparent-Eigenschaft, Beispiel
3694 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3695 rhMusic = \relative {
3698 \once \override Tie.staff-position = #3.5
3702 bes2.^\markup { \bold "Moderato" } r8
3703 \mergeDifferentlyHeadedOn
3704 \mergeDifferentlyDottedOn
3705 % Start polyphonic section of four voices
3707 { c,8 d fis bes a } % continuation of main voice
3711 % Reposition the c2 to the right of the merged note
3712 \once \override NoteColumn.force-hshift = #1.0
3713 % Move the c2 out of the main note column so the merge will work
3720 % Stem on the d2 must be down to permit merging
3722 % Stem on the d2 should be invisible
3723 \once \override Stem.transparent = ##t
3731 \mergeDifferentlyHeadedOff
3732 \mergeDifferentlyDottedOff
3733 g2.\) % continuation of main voice
3737 lhMusic = \relative {
3739 <d g, d>1)\arpeggio |
3746 \new Staff = "RH" <<
3750 \new Staff = "LH" <<
3761 @section Další ladění
3762 @translationof Further tweaking
3765 * Jiné využití ladění::
3766 * Použití proměnných pro ladění::
3767 * Celkové formátování::
3769 * Vyhnutí se ladění s pomalejším překladem::
3770 * Pokročilá ladění se Scheme::
3773 @node Jiné využití ladění
3774 @subsection Jiné využití ladění
3775 @translationof Other uses for tweaks
3777 @cindex Transparente Objekte
3778 @cindex Entfernen von Objekten
3779 @cindex Verstecken von Objekten
3780 @cindex Unsichtbare Objekte
3781 @cindex transparent-Eigenschaft, Benutzung
3782 @cindex Objekte unsichtbar machen
3783 @cindex Objekte entfernen
3784 @cindex Objekte verstecken
3785 @cindex Noten zwischen Stimmen überbinden
3786 @cindex Überbinden von Noten zwischen Stimmen
3788 @subheading Noten zwischen unterschiedlichen Stimmen überbinden
3790 Das nächste Beispiel zeigt, wie man Noten von verschiedenen
3791 Stimmen miteinander verknüpfen kann, indem man Bindebögen
3792 für Überbindungen benutzt. Normalerweise können nur zwei
3793 Noten der gleichen Stimme übergebunden werden. Wenn
3794 man zwei Stimmen benutzt, wobei die überbundenen Noten
3795 sich in der selben befinden,
3797 @lilypond[quote,fragment,relative=2]
3798 << { b8~ 8\noBeam } \\ { b[ g8] } >>
3802 und dann den ersten Hals nach oben unsichtbar macht,
3803 sieht es so aus, als ob die Überbindung zwischen
3804 den Stimmen stattfindet:
3806 @cindex Hals, Beispiel zur Veränderung
3807 @cindex Notenhals, Beispiel zur Veränderung
3808 @cindex transparent-Eigenschaft, Beispiel
3810 @lilypond[quote,fragment,relative=2,verbatim]
3813 \once \override Stem.transparent = ##t
3821 Um sicherzugehen, dass der unsichtbare Hals den Bindebogen
3822 nicht zu sehr verkleinert, kann er verlängert werden, indem
3823 seine Länge (@code{length}) auf den Wert @code{8}
3826 @lilypond[quote,fragment,relative=2,verbatim]
3829 \once \override Stem.transparent = ##t
3830 \once \override Stem.length = #8
3839 @subheading Eine Fermate in MIDI simulieren
3841 @cindex stencil-Eigenschaft, Benutzung
3842 @cindex Fermate, Benutzung in MIDI
3843 @cindex MIDI: Fermate erstellen
3845 Pro předměty vně notové osnovy ist es normalerweise
3846 besser, die @code{stencil}-Eigenschaft anstelle der
3847 @code{transparent}-Eigenschaft zu verändern, wenn man
3848 sie vom fertigen Notensatz entfernen will. Indem die
3849 @code{stencil}-Eigenschaft auf falsch (@code{#f}) gesetzt
3850 wird, wird das entsprechende Objekt vollständig entfernt.
3851 Das bedeutet, dass es die Positionierung der anderen Objekte
3854 Auf diese Art kann etwa das Tempo geändert werden, damit
3855 in der MIDI-Ausgabe eine Fermate zu hören ist, ohne dass
3856 im Notensatz etwas von diesen Tempoänderungen zu sehen
3857 ist. Die Metronombezeichnung soll auch nicht die Position
3858 von Text an der gleichen Stelle oder die Abstände zwischen
3859 zwei Systemen beeinflussen. Darum ist es am besten,
3860 @code{stencil} auf @code{#f} zu setzen. Im Beispiel wird
3861 der Unterschied zwischen einem unsichtbaren Objekt und
3862 einem entfernten Objekt gezeigt:
3864 @cindex Metronom-Bezeichnung, Beispiel zur Veränderung
3865 @cindex transparent-Eigenschaft, Beispiel
3867 @lilypond[quote,verbatim,ragged-right]
3870 % Visible tempo marking
3873 \once \override Score.MetronomeMark.transparent = ##t
3874 % Invisible tempo marking to lengthen fermata in MIDI
3877 % New tempo for next section
3886 @lilypond[quote,verbatim,ragged-right]
3889 % Visible tempo marking
3892 \once \override Score.MetronomeMark.stencil = ##f
3893 % Invisible tempo marking to lengthen fermata in MIDI
3896 % New tempo for next section
3906 Mit beiden Methoden wird die Tempobezeichnung entfernt, mit
3907 der die Fermate verlängert wird, und beide beeinflussen die
3908 MIDI-Ausgabe wie gewünscht. Die unsichtbare Metronombezeichnung
3909 schiebt aber die folgende Bezeichnung in die Höhe, während
3910 das im zweiten Beispiel, in dem der @code{stencil} entfernt
3911 wurde, nicht passiert.
3918 @node Použití proměnných pro ladění
3919 @subsection Použití proměnných pro ladění
3920 @translationof Using variables for tweaks
3922 @cindex Variablen, Benutzung zur Optimierung
3923 @cindex Optimierung mit Variablen
3925 @code{\override}-Befehle sind oft lang und mühsam zu
3926 tippen, und sie müssen immer absolut richtig sein. Wenn
3927 derselbe Befehl mehrere Male benutzt werden muss, lohnt
3928 es sich oft schon, eine Variable zu definieren, in der er
3931 Als Beispiel sollen einige Worte im
3932 Gesangstext fett und kursiv hervorgehoben werden.
3933 Die Befehle @code{\italic} und @code{\bold} funktionieren
3934 im Gesangstext-Kontext nur, wenn sie gleichzeitig mit den Wörtern,
3935 auf die sie angewendet werden sollen, zusätzlich
3936 in eine @code{\markup}-Umgebung eingeschlossen
3937 werden. Durch diese Einbettung können einzelne Wörter nicht
3938 einfach zu einer Variable umgeformt werden. Als
3939 Alternative versuchen wir, einen Befehl mit
3940 @code{\override} und @code{\revert} zu konstruieren.
3943 @code{\override Lyrics.LyricText.font-shape = #'italic}
3944 @code{\override Lyrics.LyricText.font-series = #'bold}
3946 @code{\revert Lyrics.LyricText.font-shape}
3947 @code{\revert Lyrics.LyricText.font-series}
3950 Das wäre natürlich noch viel mühsamer, wenn viele Wörter eine
3951 Hervorhebung benötigen. Anstelle dieser Befehlsketten @emph{können}
3952 wir jedoch zwei Variablen definieren. Mit ihnen und dem entsprechenden
3953 Wort in geschweiften Klammern erreichen wir den gewünschten Effekt.
3954 Ein weiterer Vorteil ist, dass in diesem Fall die Leerzeichen um die
3955 Punkte herum nicht benötigt werden, weil sie nicht innerhalb des
3956 @code{lyricmode}-Kontextes interpretiert werden. Hier ein Beispiel;
3957 die Bezeichnungen können natürlich auch kürzer sein,
3958 um noch weniger schreiben zu müssen:
3960 @cindex LyricText, Beispiel zur Veränderung
3961 @cindex Gesangstext, Beispiel zur Veränderung
3962 @cindex font-shape-Eigenschaft, Beispiel
3963 @cindex font-series-Eigenschaft, Beispiel
3965 @lilypond[quote,verbatim]
3967 \override Lyrics.LyricText.font-shape = #'italic
3968 \override Lyrics.LyricText.font-series = #'bold
3971 \revert Lyrics.LyricText.font-shape
3972 \revert Lyrics.LyricText.font-series
3975 global = { \key c \major \time 4/4 \partial 4 }
3977 SopranoMusic = \relative { c'4 | e4. e8 g4 g | a4 a g }
3978 AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e }
3979 TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3980 BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 }
3982 VerseOne = \lyrics {
3983 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
3986 VerseTwo = \lyricmode {
3987 O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
3990 VerseThree = \lyricmode {
3991 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
3994 VerseFour = \lyricmode {
3995 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4002 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
4003 \new Voice = "Alto" { \voiceTwo \AltoMusic }
4004 \new Lyrics \lyricsto "Soprano" { \VerseOne }
4005 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4006 \new Lyrics \lyricsto "Soprano" { \VerseThree }
4007 \new Lyrics \lyricsto "Soprano" { \VerseFour }
4011 \new Voice = "Tenor" { \voiceOne \TenorMusic }
4012 \new Voice = "Bass" { \voiceTwo \BassMusic }
4019 @node Celkové formátování
4020 @subsection Celkové formátování
4021 @translationof Style sheets
4023 Die Ausgabe von LilyPond kann sehr stark verändert werden, siehe
4024 zu Einzelheiten @ref{Ladění výstupu,,ladění výstupu}. Aber was ist,
4025 wenn man mehrere Eingabedateien hat, die die gleichen Anpassungen
4026 erfahren sollen? Oder wenn Sie einfach nur die Anpassungen von
4027 der eigentlichen Musik trennen wollen? Das lässt sich recht einfach
4030 Schauen wir uns ein Beispiel an. Sorgen Sie sich nicht, wenn Sie
4031 den Abschnitt mit den vielen @code{#()} nicht verstehen. Das wird
4032 erklärt in @ref{Pokročilá ladění se Scheme,,pokročilých laděních se Scheme}.
4034 @lilypond[quote,verbatim,ragged-right]
4036 #(make-dynamic-script
4037 #{ \markup { \hspace #0
4038 \translate #'(5 . 0)
4039 \line { \dynamic "mp"
4040 \text \italic "dolce" } }
4044 #(define-music-function
4047 #{ <>^\markup \bold \box #string #})
4051 a'4.\mpdolce d8 cis4--\glissando a |
4055 g8(\! fis)-. e( d)-. cis2 |
4059 Es gibt einige Probleme mit sich überschneidender Ausgabe, die wird
4060 zurechtgerückt mit den Techniken von @ref{Přesouvání předmětů,,přesouvání předmětů}.
4061 Aber jetzt zu den Definitionen von @code{mpdolce} und @code{inst}.
4062 Sie erstellen die gewünschte Ausgabe, aber wir wollen sie vielleicht
4063 auch in einem anderen Stück verwenden. Wir könnten sie immer wieder
4064 kopieren und oben in jedes Stück einfügen, aber das ist sehr aufwändig.
4065 Dadurch werden die Definitionen auch in der Eingabedatei belassen,
4066 und ich finde diese @code{#()} irgendwie hässlich. Verstecken
4070 %%% in Datei "definitions.ily" speichern
4072 #(make-dynamic-script
4073 #@{ \markup @{ \hspace #0
4074 \translate #'(5 . 0)
4075 \line @{ \dynamic "mp"
4076 \text \italic "dolce" @} @}
4080 #(define-music-function
4083 #@{ <>^\markup \bold \box #string #@})
4086 Diese Datei wir mit dem @code{\include}-Befehl ziemlich weit oben
4087 in der Datei eingefügt. (Die Erweiterung @file{.ily} wird benutzt,
4088 um diese Datei als eine eingefügte, inkludierte zu kennzeichnen, die
4089 man nicht alleinstehend kompilieren kann.) Jetzt ändern wir die
4090 Noten (in der Datei @file{music.ly}).
4092 @c We have to do this awkward example/lilypond-non-verbatim
4093 @c because we can't do the \include stuff in the manual.
4096 \include "definitions.ily"
4100 a'4.\mpdolce d8 cis4--\glissando a |
4104 g8(\! fis)-. e( d)-. cis2 |
4108 @lilypond[quote,ragged-right]
4110 #(make-dynamic-script
4111 #{ \markup { \hspace #0
4112 \translate #'(5 . 0)
4113 \line { \dynamic "mp"
4114 \text \italic "dolce" } }
4118 #(define-music-function
4121 #{ <>^\markup \bold \box #string #})
4125 a'4.\mpdolce d8 cis4--\glissando a |
4129 g8(\! fis)-. e( d)-. cis2 |
4133 Das sieht schon besser aus, aber einige Änderungen könnten wir noch vornehmen.
4134 Das Glissando ist kaum sichtbar, machen wir es also etwas dicker und
4135 näher an den Notenkopf. Die Metronombezeichnung soll über dem
4136 Schlüssel stehen, anstatt über der ersten Note. Und schließlich
4137 mag mein Kompositionsprofessor keine @qq{C}-Taktangaben, das ändern
4138 wir also in @qq{4/4}.
4140 Ändern Sie jetzt jedoch nicht @file{music.ly}. Ändern Sie die
4141 @file{definitions.ily} mit dem Folgenden:
4146 #(make-dynamic-script
4147 #@{ \markup @{ \hspace #0
4148 \translate #'(5 . 0)
4149 \line @{ \dynamic "mp"
4150 \text \italic "dolce" @} @}
4154 #(define-music-function
4157 #@{ <>^\markup \bold \box #string #@})
4162 \override MetronomeMark.extra-offset = #'(-9 . 0)
4163 \override MetronomeMark.padding = #'3
4167 \override TimeSignature.style = #'numbered
4171 \override Glissando.thickness = #3
4172 \override Glissando.gap = #0.1
4177 @lilypond[quote,ragged-right]
4179 #(make-dynamic-script
4180 #{ \markup { \hspace #0
4181 \translate #'(5 . 0)
4182 \line { \dynamic "mp"
4183 \text \italic "dolce" } }
4187 #(define-music-function
4190 #{ <>^\markup \bold \box #string #})
4195 \override MetronomeMark.extra-offset = #'(-9 . 0)
4196 \override MetronomeMark.padding = #'3
4200 \override TimeSignature.style = #'numbered
4204 \override Glissando.thickness = #3
4205 \override Glissando.gap = #0.1
4211 a'4.\mpdolce d8 cis4--\glissando a |
4215 g8(\! fis)-. e( d)-. cis2 |
4219 Das sieht besser aus! Aber nehmen wir an, Ich will dieses Stück publizieren.
4220 Mein Professor mag die @qq{C}-Taktangabe nicht, mir gefällt sie aber sehr
4221 gut. Kopieren wir also die Datei @file{definitions.ily} nach
4222 @file{web-publish.ily} und verändern diese. Weil die Noten als PDF
4223 auf dem Monitor dargestellt werden sollen, wird auch die Notengröße
4229 #(make-dynamic-script
4230 #@{ \markup @{ \hspace #0
4231 \translate #'(5 . 0)
4232 \line @{ \dynamic "mp"
4233 \text \italic "dolce" @} @}
4237 #(define-music-function
4240 #@{ <>^\markup \bold \box #string #@})
4242 #(set-global-staff-size 23)
4247 \override MetronomeMark.extra-offset = #'(-9 . 0)
4248 \override MetronomeMark.padding = #'3
4255 \override Glissando.thickness = #3
4256 \override Glissando.gap = #0.1
4261 @lilypond[quote,ragged-right]
4263 #(make-dynamic-script
4264 #{ \markup { \hspace #0
4265 \translate #'(5 . 0)
4266 \line { \dynamic "mp"
4267 \text \italic "dolce" } }
4271 #(define-music-function
4274 #{ <>^\markup \bold \box #string #})
4276 #(set-global-staff-size 23)
4280 \override MetronomeMark.extra-offset = #'(-9 . 0)
4281 \override MetronomeMark.padding = #'3
4284 \override Glissando.thickness = #3
4285 \override Glissando.gap = #0.1
4291 a'4.\mpdolce d8 cis4--\glissando a |
4295 g8(\! fis)-. e( d)-. cis2 |
4299 In der Eingabedatei muss jetzt nur noch die Zeile
4300 @code{\include "definitions.ily"} mit
4301 @code{\include "web-publish.ily"} ersetzt werden. Das könnte
4302 man natürlich noch besser machen. Es könnte eine Datei
4303 @file{definitions.ily} mit allen Definitionen (also
4304 @code{mpdolce} und @code{inst}) geben, eine Datei
4305 @file{web-publish.ily}, die nur die @code{\layout}-Veränderung
4306 enthält und eine Datei @file{university.ily}, die nur die
4307 Prozedur enthält, die Ausgabe meinem Professor angenehm zu machen.
4308 Der Anfang von @file{music.ly} würde dann folgendermaßen aussehen:
4311 \include "definitions.ily"
4313 %%% nur eine der zwei Zeilen auskommentieren!
4314 \include "web-publish.ily"
4315 %\include "university.ily"
4318 Diese Herangehensweise kann auch schon nützlich sein, wenn man
4319 nur ein paar Stimmen schreiben will. Ich habe eine ganze Anzahl
4320 an @qq{Stylesheets} für meine Projekte. Ich fange jede Datei mit
4321 der Zeile @code{\include "../global.ily"} an, die etwa folgendes
4326 \version @w{"@version{}"}
4328 #(ly:set-option 'point-and-click #f)
4330 \include "../init/init-defs.ly"
4331 \include "../init/init-layout.ly"
4332 \include "../init/init-headers.ly"
4333 \include "../init/init-paper.ly"
4338 @node Více informací
4339 @subsection Více informací
4340 @translationof Other sources of information
4342 Die Programmreferenz enthält sehr viel Information über LilyPond, aber
4343 noch více informací findet sich in den internen
4344 LilyPond-Dateien. Um sie erforschen zu können, müssen Sie erst
4345 das richtige Verzeichnis auf Ihrem System finden. Die Position
4346 hängt a) davon ab, ob Ihre LilyPond-Installation mit der vorkompilierten
4347 Version von der LilyPond-Internetseite vorgenommen wurde oder Sie
4348 die Version durch Ihren Paketmanager installiert haben (also
4349 z. B. in einer Linux-Distribution oder unter fink oder cygwin
4350 installiert), und b) auf welchem Betriebssystem Sie das Programm
4353 @strong{Von lilypond.org heruntergeladen}
4358 Wechseln Sie in das Verzeichnis
4359 @file{@var{INSTALL_VERZ}/lilypond/usr/@/share/lilypond/current/}
4363 Wechseln Sie in das Verzeichnis
4364 @file{@var{INSTALL_VERZ}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4365 indem Sie entweder mit dem Befehl @code{cd} vom Terminal aus
4366 in das Verzeichnis wechseln, oder mit Control-Klick auf das
4367 LilyPond-Programmsymbol gehen und @qq{Show Package Contents}
4372 Wechseln Sie mit dem Windows Explorer ins Verzeichnis
4373 @file{@var{INSTALL_VERZ}/LilyPond/usr/@/share/lilypond/current/}
4377 @strong{Mit einem Paket-Manager installiert oder selber aus
4378 den Quellen kompiliert}
4380 Wechseln Sie in das Verzeichnis
4381 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, wobei
4382 @var{PREFIX} bei Ihrem Paket-Manager oder dem
4383 @code{configure}-Skript gesetzt wird, und @var{X.Y.Z}
4384 die LilyPond-Versionsnummer.
4388 In diesem Ordner sind die zwei interessanten Unterordner:
4391 @item @file{ly/} - beinhaltet Dateien im LilyPond-Format
4392 @item @file{scm/} - beinhaltet Dateien im Scheme-Format
4395 Schauen wir uns zuerst einige Dateien in @file{ly/} an.
4396 Öffnen Sie @file{ly/property-init.ly} in einem Texteditor.
4397 Der, den Sie normalerweise für @file{.ly}-Dateien benutzen,
4398 genügt. Diese Datei enthält die Definitionen aller vordefinierten
4399 Befehle für LilyPond, wie etwa @code{\stemUp} und
4400 @code{\slurDotted}. Sie können sehen, dass es sich um
4401 nichts mehr handelt als Definitionen von Variablen, die eine
4402 oder mehrere @code{\override}-Befehle enthalten. Der
4403 Befehl @code{/tieDotted} etwa wird folgendermaßen definiert:
4407 \override Tie.dash-period = #0.75
4408 \override Tie.dash-fraction = #0.1
4412 Wenn Sie diese Voreinstellungen der vordefinierten Befehl nicht
4413 mögen, können Sie sie ganz einfach umdefinieren, genauso wie
4414 jede andere Variable auch, indem Sie sie an den Anfang Ihrer
4415 Quelldatei schreiben.
4417 Hier sind die wichtigsten Dateien, die sich im Ordner
4418 @file{ly/} befinden:
4420 @multitable @columnfractions .4 .6
4423 @item @file{ly/engraver-init.ly}
4424 @tab Definitionen von Engraver-Kontexten
4425 @item @file{ly/paper-defaults-init.ly}
4426 @tab Spezifikationen von Voreinstellungen für Papiermaße
4427 @item @file{ly/performer-init.ly}
4428 @tab Definitionen von Performer-Kontexten
4429 @item @file{ly/property-init.ly}
4430 @tab Definitionen aller vordefinierten Befehle
4431 @item @file{ly/spanner-init.ly}
4432 @tab Definitionen aller vordefinierten Strecker-Befehle
4435 Andere Einstellungen (wie die Definitionen von Beschriftungsbefehlen)
4436 sind in @file{.scm}-(Scheme)-Dateien gespeichert. Die
4437 Scheme-Programmiersprache wird benutzt, um eine
4438 programmierbare Schnittstelle zu den internen Operationen von
4439 LilyPond zu haben. Eine weitere Erklärung dieser Dateien ist
4440 im Moment außerhalb des Rahmens dieses Handbuchs, denn
4441 sie erfordern einige Kenntnis der Scheme-Sprache. Die Warnung
4442 ist hier angebracht, dass des ein gutes technisches Verständnis
4443 oder sehr viel Zeit braucht, um Scheme und diese
4444 Dateien zu verstehen (siehe auch @rextend{Scheme-Übung}).
4446 Wenn Sie sich mit Scheme auskennen, sind hier mögliche
4447 interessante Dateien:
4449 @multitable @columnfractions .4 .6
4452 @item @file{scm/auto-beam.scm}
4453 @tab Sub-Balken-Voreinstellungen
4454 @item @file{scm/define-grobs.scm}
4455 @tab Voreinstellungen für Grob-Eigenschaften
4456 @item @file{scm/define-markup-commands.scm}
4457 @tab Definition aller Markup-Beschriftungsbefehle
4458 @item @file{scm/midi.scm}
4459 @tab Voreinstellung für die MIDI-Ausgabe
4460 @item @file{scm/output-lib.scm}
4461 @tab Einstellungen mit Einfluss auf die Darstellung von Bunddiagrammen, Farben, Versetzungszeichen, Taktlinien usw.
4462 @item @file{scm/parser-clef.scm}
4463 @tab Definitionen der unterstützten Schlüssel
4464 @item @file{scm/script.scm}
4465 @tab Voreinstellungen für Artikulationszeichen
4469 @node Vyhnutí se ladění s pomalejším překladem
4470 @subsection Vyhnutí se ladění s pomalejším překladem
4471 @translationof Avoiding tweaks with slower processing
4475 LilyPond kann einige zusätzliche Tests durchführen, während
4476 die Noten gesetzt werden. Dadurch braucht das Programm länger,
4477 um den Notensatz zu produzieren, aber üblicherweise werden
4478 weniger nachträgliche Anpassungen nötig sein. Wenn eine
4479 Textsilbe oder eine Beschriftung aus dem Rand der Partitur
4480 ragt, wird durch diese Tests die Zeile gerade so weit komprimiert,
4481 dass sie sich innerhalb der Ränder befindet.
4483 Damit diese Tests immer funktionieren, müssen sie aktiviert werden,
4484 indem die @bs{}@code{override}-Befehle in einer @code{context}-Umgebung
4485 innerhalb der @code{layout}-Umgebung notiert werden und nicht innerhalb
4490 @{ @dots{}Noten@dots{} @}
4494 % Um sicher zu gehen, dass Texte und Liedtext
4495 % innerhalb der Papierränder bleiben
4496 \override PaperColumn.keep-inside-line = ##t
4497 \override NonMusicalPaperColumn.keep-inside-line = ##t
4503 @code{keep-inside-line} braucht jedoch sehr viel Berechnungen,
4504 sodass es sich anbietet, diese Funktion zunächst nicht zu aktivieren
4505 und erst einzufügen, wenn man die endgültige Version erstellt.
4506 Auf diese Weise muss man nicht mit der Hand @code{\break}-Befehle
4507 hinzufügen, um zu vermeiden, dass Text über den rechten Rand der
4511 @node Pokročilá ladění se Scheme
4512 @subsection Pokročilá ladění se Scheme
4513 @translationof Advanced tweaks with Scheme
4515 Auch wenn viele Sachen mit @code{\override} und @code{\tweak}
4516 möglich sind, gibt es eine sehr viel mächtigere Möglichkeit, die
4517 Arbeitsweise von LilyPond mit Hilfe der programmierbaren Schnittstelle
4518 zu beeinflussen. Code, der in der Scheme-Programmiersprache
4519 geschrieben ist, kann direkt in die interne Satzmaschine von LilyPond
4520 eingefügt werden. Natürlich brauchen Sie dazu wenigstens ein
4521 grundlegendes Verständnis von Scheme. Eine Einleitung finden
4522 Sie in der @rextend{Scheme-Übung}.
4524 Zur Illustration der vielen Möglichkeiten soll gezeigt werden, dass eine
4525 Eigenschaft nicht nur auf eine Konstante, sondern auch auf eine
4526 Scheme-Prozedur gesetzt werden kann, die dann jedes Mal
4527 aufgerufen wird, wenn die Eigenschaft von LilyPond benutzt
4528 wird. Die Eigenschaft kann damit dynamisch auf einen Wert
4529 gesetzt werden, der durch die Prozedur jedes Mal neu bestimmt
4530 wird. In diesem Beispiel wird die Farbe der Notenköpfe entsprechend
4531 zu ihrer Position innerhalb der Tonleiter gesetzt.
4533 @cindex x11-Farben, Beispiel zur Benutzung
4534 @cindex Notenkopf, Beispiel zur Veränderung
4535 @cindex Farb-Eigenschaft, in Scheme-Prozedur gesetzt
4537 @lilypond[quote,verbatim,ragged-right]
4538 #(define (color-notehead grob)
4539 "Color the notehead according to its position on the staff."
4540 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4543 ;; Return rainbow colors
4544 ((1) (x11-color 'red )) ; for C
4545 ((2) (x11-color 'orange )) ; for D
4546 ((3) (x11-color 'yellow )) ; for E
4547 ((4) (x11-color 'green )) ; for F
4548 ((5) (x11-color 'blue )) ; for G
4549 ((6) (x11-color 'purple )) ; for A
4550 ((0) (x11-color 'violet )) ; for B
4554 % Arrange to obtain color from color-notehead procedure
4555 \override NoteHead.color = #color-notehead
4556 a2 b | c2 d | e2 f | g2 a |
4560 Weiter Beispiele, die die Benutzung dieser programmierbaren
4561 Schnittstelle zeigen, finden sich in @rextend{Optimierungen mit Scheme}.