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{Kontexte und Engraver} interessieren, dann
65 Kontexte und Engraver 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{Kontexte und Engraver}. 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{Kontexteigenschaften verändern} und @ref{Engraver hinzufügen und entfernen}. 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,fragment,ragged-right,verbatim,relative=1]
262 \override NoteHead #'color = #red
264 \override NoteHead #'color = #green
269 @strong{Der \revert-Befehl}
271 @cindex revert-Befehl
275 Wenn eine Eigenschaft einmal überschrieben wurde, wird ihr
276 neuer Wert so lange bewahrt, bis er noch einmal überschrieben
277 wird oder ein @code{\revert}-Befehl vorkommt. Der
278 @code{\revert}-Befehl hat die folgende Syntax und setzt den
279 Wert der Eigenschaft zurück auf den Standardwert, nicht
280 jedoch auf den vorigen Wert, wenn mehrere
281 @code{\override}-Befehle benutzt wurden.
284 \revert @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft}
287 Wiederum, genauso wie der @var{Kontext} bei dem @code{\override}-Befehl,
288 wird @var{Kontext} oft nicht benötigt. Er wird in vielen der folgenden
289 Beispiele ausgelassen. Im nächsten Beispiel wird die Farbe des Notenkopfes
290 wieder auf den Standardwert für die letzten zwei Noten gesetzt.
292 @cindex color-Eigenschaft, Beispiel
293 @cindex Farb-Eigenschaft, Beispiel
294 @cindex NoteHead, Beispiel für override
295 @cindex Notenkopf, Beispiel für Veränderung
297 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
299 \override NoteHead #'color = #red
301 \override NoteHead #'color = #green
303 \revert NoteHead #'color
307 @strong{\once-Präfix}
312 Sowohl der @code{\override}-Befehl als auch der @code{\set}-Befehl können mit
313 dem Präfix @code{\once} (@emph{einmal}) versehen werden. Dadurch wird
314 der folgende @code{\override}- oder @code{\set}-Befehl nur für den aktuellen
315 Musik-Moment wirksam, bevor sich wieder der Standard einstellt. Am gleichen
316 Beispiel demonstriert, kann damit die Farbe eines einzelnen Notenkopfes
319 @cindex color-Eigenschaft, Beispiel
320 @cindex Farb-Eigenschaft, Beispiel
321 @cindex NoteHead, Beispiel für override
322 @cindex Notenkopf, Beispiel für Veränderung
324 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
326 \once \override NoteHead #'color = #red
328 \once \override NoteHead #'color = #green
333 @strong{Der \overrideProperty-Befehl}
335 @cindex overrideProperty-Befehl
337 @funindex \overrideProperty
338 @funindex overrideProperty
340 Es gibt eine andere Form des @code{override}-Befehls,
341 @code{\overrideProperty} (überschreibe Eigenschaft),
342 welcher ab und zu benötigt wird. Es wird hier nur der
343 Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert
344 in @rextend{Schwierige Korrekturen}.
345 @c Maybe explain in a later iteration -td
348 @strong{Der \tweak-Befehl}
354 Der letzte Optimierungsbefehl in LilyPond ist @code{\tweak}
355 (engl. optimieren). Er wird eingesetzt um Eigenschaften
356 von Objekten zu verändern, die zum selben Musik-Moment
357 auftreten, wie etwa die Noten eines Akkordes. Ein
358 @code{\override} würde alle Noten des Akkords beeinflussen,
359 während mit @code{\tweak} nur das nächste Objekt der
360 Eingabe geändert wird.
362 Hier ein Beispiel. Angenommen, die Größe des mittleren
363 Notenkopfes (ein E) in einem C-Dur-Akkord soll geändert
364 werden. Schauen wir zuerst, was wir mit
365 @code{\once \override} erhalten:
367 @cindex Schriftgröße, Beispiel
368 @cindex NoteHead, Beispiel für override
369 @cindex Notenkopf, Beispiel für Veränderung
371 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
373 \once \override NoteHead #'font-size = #-3
378 Wie man sehen kann, beeinflusst @code{override} @emph{alle}
379 Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten
380 eines Akkordes zum selben Musik-Moment auftreten und
381 die Funktion von @code{\once} ist es, die Optimierung auf
382 an allen Objekten auszuführen, die zum selben Musik-Moment
383 auftreten wie der @code{\override}-Befehl.
385 Der @code{\tweak}-Befehl funktioniert anders. Er bezieht sich
386 auf das direkt folgende Element in der Eingabe-Datei. Es wirkt
387 aber auch nur mit Objekten, die direkt von der Eingabe kreiert
388 werden, insbesondere Notenköpfe und Artikulationszeichen.
389 Objekte wie etwa Hälse oder Versetzungszeichen werden erst
390 später erstellt und lassen sich nicht auf diese Weise ändern.
391 Zusätzlich @emph{müssen} sich etwa Notenköpfe innerhalb
392 eines Akkordes befinden, d. h. sie müssen von einfachen spitzen
393 Klammern umschlossen sein. Um also eine einzelne Note
394 mit @code{\tweak} zu verändern, muss der Befehl innerhalb
395 der spitzen Klammern zusammen mit der Note eingegeben werden.
397 Um also zu unserem Beispiel zurückzukommen, könnte man die
398 mittlere Note eines Akkordes auf diese Weise ändern:
400 @cindex font-size-Eigenschaft, Beispiel
401 @cindex Schriftgröße, Beispiel
402 @cindex @code{\tweak}-Beispiel
404 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
406 <c \tweak #'font-size #-3 e g>4
409 Beachten Sie, dass die Syntax des @code{\tweak}-Befehls sich
410 von der des @code{\override}-Befehls unterscheidet. Weder
411 Kontext noch Layout-Objekt können angegeben werden, denn
412 das würde zu einem Fehler führen. Beide Angaben sind
413 durch das folgende Element impliziert. Hier sollte auch
414 kein Gleichheitszeichen vorhanden sein. Die verallgemeinerte
415 Syntax des @code{\tweak}-Befehls ist also einfach
418 \tweak #'@var{layout-eigenschaft} #@var{Wert}
421 Ein @code{\tweak}-Befehl kann auch benutzt werden, um nur
422 eine von mehreren Artikulationen zu ändern, wie im nächsten
423 Beispiel zu sehen ist.
425 @cindex Farb-Eigenschaft, Beispiel
426 @cindex @code{\tweak}-Beispiel
428 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
430 -\tweak #'color #red ^"Red"
431 -\tweak #'color #green _"Green"
435 Beachten Sie, dass dem @code{\tweak}-Befehl ein Artikulationsmodifikator
436 vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen
439 @cindex Triolen, geschachtelt
440 @cindex N-tolen, geschachtelt
441 @cindex Klammer, Triole
442 @cindex Triolenklammer
443 @cindex N-tolenklammer
444 @cindex Komplizierte Rhythmen, Schachtelung von
445 @funindex TupletBracket
447 Der @code{\tweak}-Befehl muss auch benutzt werden, wenn das
448 Aussehen einer vor mehreren geschachtelten Triolenklammern
449 geändert werden soll, die zum selben Zeitpunkt beginnen.
450 Im folgenden Beispiel beginnen die lange Klammer und die
451 erste Triolenklammer zum selben Zeitpunkt, sodass ein
452 @code{\override}-Befehl sich auf beide beziehen würde.
453 In dem Beispiel wird @code{\tweak} benutzt, um zwischen
454 ihnen zu unterscheiden. Der erste @code{\tweak}Befehl
455 gibt an, dass die lange Klammer über den Noten gesetzt
456 werden soll, und der zweite, dass die Zahl der rhythmischen
457 Aufteilung für die erste der kurzen Klammern in rot
460 @cindex Farb-Eigenschaft, Beispiel
461 @cindex @code{\tweak}-Beispiel
462 @cindex Richtungs-Eigenschaft, Beispiel
463 @cindex color-Eigenschaft, Beispiel
464 @cindex direction-Eigenschaft, Beispiel
466 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
467 \tweak #'direction #up
470 \times 2/3 { c8[ c c] }
471 \times 2/3 { c8[ c c] }
472 \times 2/3 { c8[ c c] }
476 Wenn geschachtelte N-tolen nicht zum gleichen Zeitpunkt
477 beginnen, kann ihr Aussehen auf die übliche Art mit dem
478 @code{\override}-Befehl geändert werden:
480 @cindex text-Eigenschaft, Beispiel
481 @cindex tuplet-number-Funktion, Beispiel
482 @cindex transparent-Eigenschaft, Beispiel
483 @cindex TupletNumber, Beispiel zur Veränderung
484 @cindex Triolennummer, Beispiel zur Veränderung
485 @cindex Triolen-Nummer-Funktion, Beispiel
487 @c NOTE Tuplet brackets collide if notes are high on staff
489 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
490 \times 2/3 { c8[ c c] }
491 \once \override TupletNumber
492 #'text = #tuplet-number::calc-fraction-text
496 \once \override TupletNumber #'transparent = ##t
497 \times 2/3 { c8[ c c] }
498 \times 2/3 { c8[ c c] }
505 @ruser{Der tweak-Befehl}.
508 @node Vnitřní referenční příručka
509 @section Vnitřní referenční příručka
510 @translationof The Internals Reference manual
513 * Vlastnosti předmětů v rozvržení::
514 * Vlastnosti, jež mohou mít rozhraní::
518 @node Vlastnosti předmětů v rozvržení
519 @subsection Vlastnosti předmětů v rozvržení
520 @translationof Properties of layout objects
522 @cindex Eigenschaften von Layout-Objekten
523 @cindex Eigenschaften von Grobs
524 @cindex Grobs, Eigenschaften von
525 @cindex Layout-Objekte, Eigenschaften von
526 @cindex Property (Layout-Objekte, Grobs)
527 @cindex Regerenz der Interna
529 Angenommen, in Ihrer Partitur tritt ein Legatobogen
530 auf, der Ihrer Meinung nach zu dünn ausgefallen ist.
531 Sie würden ihn gerne etwas schwerer gezeichnet
532 sehen. Wie gehen Sie vor? Von den Anmerkungen in
533 früheren Abschnitten wissen Sie schon, dass LilyPond
534 sehr flexibel ist und eine derartige Modifikation
535 möglich sein sollte, und Sie erraten vielleicht,
536 dass ein @code{\override}-Befehl angebracht ist.
537 Aber gibt es eine Eigenschaft für die Dicke eines
538 Legatobogens (engl. slur), und wenn es sie gibt,
539 auf welche Weise lässt sie sich verändern? Hier
540 kommt die Referenz der Interna zur Geltung. Dort
541 finden sich alle Informationen, um den beschriebenen
542 und alle anderen @code{\override}-Befehle zu
545 Bevor Sie jetzt in die Referenz der Interna wechseln, ist
546 eine Warnung angebracht. Es handelt sich um ein
547 @strong{Referenz}dokument, was heißt, dass es sehr
548 wenig oder gar keine Erklärungen enthält: seine Aufgabe
549 ist es, Information klar und genau darzustellen. Das
550 bedeutet, dass es auf den ersten Blick entmutigend
551 wirkt. Die Einführung und Erklärung in diesem Abschnitt
552 wird Ihnen aber schnell ermöglichen, genau die Information
553 aus der Referenz zu entnehmen, die Sie benötigen.
555 Beachten Sie, dass die Referenz der Interna nur auf Englisch
556 existiert. Um die Eigenschaftsbezeichnung eines bestimmten
557 Objektes zu finden, können Sie das Glossar (siehe
558 @rglosnamed{Top,Musikglossar})
560 die englischen Begriffe in viele andere Sprachen übersetzt sind.
562 @cindex Override-Beispiel
563 @cindex Referenz der Interna, Benutzung
564 @cindex IR (Referenz der Interna), Benutzung
565 @cindex @code{\addlyrics}-Beispiel
567 Das Vorgehen soll an einem konkreten Beispiel einer echten
568 Komposition demonstriert werden. Hier das Beispiel:
570 @c Mozart, Die Zauberflöte Nr. 7 Duett
572 @lilypond[quote,verbatim,relative=2]
577 r4 bes8 bes[( g]) g |
578 g8[( es]) es d[( f]) as |
582 The man who | feels love's sweet e -- | mo -- tion
587 Angenommen also, wir wollen die Legatobögen etwas
588 dicker setzten. Ist das möglich? Die Legatobögen sind mit
589 Sicherheit ein Layout-Objekt, die Frage muss also lauten:
590 @qq{Gibt es eine Eigenschaft von Legatobögen, die die
591 Dicke bestimmt?} Um diese Frage zu beantworten, müssen
592 wir in der Referenz der Interna ( kurz IR) nachschauen.
594 Die IR für die LilyPond-Version, die Sie benutzen, findet sich
595 auf der LilyPond-Webseite unter der Adresse
596 @uref{http://lilypond.org}. Gehen Sie zur Dokumentationsseite
597 und klicken Sie auf den Link zur Referenz der Interna.
598 @c Addition for German users
599 Die Sprache ändert sich ab hier nach englisch. Für diese Übung
600 sollten Sie die HTML-Version benutzen, nicht die
601 @qq{auf einer großen Seite} oder die PDF-Version.
602 Damit Sie die nächsten Absätze verstehen können, müssen Sie
603 genauso vorgehen, während Sie weiterlesen.
605 Unter der Überschrift @strong{Top} befinden sich fünf Links.
606 Wählen Sie den Link zum @emph{Backend}, wo sich die Information
607 über Layout-Objekte befindet. Hier, unter der Überschrift
608 @strong{Backend}, wählen Sie den Link @emph{All layout objects}.
609 Die Seite, die sich öffnet, enthält ein Liste aller Layout-Objekte,
610 die in Ihrerer LilyPond-Version benutzt werden, in alphabetischer
611 Ordnung. Wählen Sie den Link @emph{Slur} und die Eigenschaften
612 der Legatobögen (engl. slur) werden aufgelistet.
614 Eine alternative Methode, auf diese Seite zu gelangen, ist von
615 der Notationsreferenz aus. Auf einer der Seiten zu Legatobögen
616 findet sich ein Link zur Referenz der Interna. Dieser Link führt
617 Sie direkt auf diese Seite. Wenn Sie aber eine Ahnung haben,
618 wie die Bezeichnung des Layout-Objektes lauten könnte, das sie
619 ändern wollen, ist es oft schneller, direkt zur IR zu gehen und
622 Aus der Slur-Seite in der IR könne wir entnehmen, dass
623 Legatobögen (Slur-Objekte) durch den Slur_engraver erstellt
624 werden. Dann werden die Standardeinstellungen aufgelistet.
625 Beachten Sie, dass diese @strong{nicht} in alphabetischer Reihenfolge
626 geordnet sind. Schauen Sie sich die Liste an, ob sie eine Eigenschaft
627 enthält, mit der die Dicke von Legatobögen kontrolliert werden kann.
628 Sie sollten folgendes finden:
631 @code{thickness} (number)
633 Line thickness, generally measured in @code{line-thickness}
636 Das sieht ganz danach aus, als ob damit die Dicke geändert
637 werden kann. Es bedeutet, dass der Wert von
638 @code{thickness} einfach eine Zahl (@emph{number}) ist,
639 dass der Standardwert 1.2 ist, und dass die Einheit
640 für die Dicke eine andere Eigenschaft mit der
641 Bezeichnung @code{line-thickness} ist.
643 Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen
644 in der IR, aber wir haben schon genug Informationen, um
645 zu versuchen, die Dicke eines Legatobogens zu ändern. Die
646 Bezeichnung des Layout-Objekts ist offensichtlich
647 @code{Slur} und die Bezeichnung der Eigenschaft, die geändert
649 @code{thickness}. Der neue Wert sollte etwas mehr als 1.2 sein,
650 denn der Bogen soll ja dicker werden.
652 Den benötigten @code{\override}-Befehl können wir jetzt einfach
653 konstruieren, indem wir die Werte für die Bezeichnungen in den
654 Modellbefehl einfügen und den Kontext auslassen. Setzen wir
655 einmal einen sehr großen Wert für die Dicke um zu sehen, ob der
656 Befehl auch funktioniert. Also:
659 \override Slur #'thickness = #5.0
662 Vergessen Sie nicht das Rautenzeichen und Apostroph
663 (@code{#'}) vor der Eigenschaftsbezeichnung und das
664 Rautenzeichen vor dem neuen Wert!
666 Die nächste Frage ist nun: @qq{Wohin soll dieser Befehl geschrieben
667 werden?} Solange wir uns noch im Lernstadium befinden, ist
668 die beste Antwort: @qq{Innerhalb der Noten, vor den ersten
669 Legatobogen und nahe bei ihm.} Also etwa so:
671 @cindex Legatobogen, Beispiel für Veränderung
672 @cindex thickness-Eigenschaft, Beispiel
673 @cindex Dicke-Eigenschaft, Beispiel
675 @lilypond[quote,verbatim,relative=2]
680 % Increase thickness of all following slurs from 1.2 to 5.0
681 \override Slur #'thickness = #5.0
682 r4 bes8 bes[( g]) g |
683 g8[( es]) es d[( f]) as |
687 The man who | feels love's sweet e -- | mo -- tion
693 und wirklich wird der Legatobogen dicker.
695 Das ist also die grundlegende Herangehensweise,
696 @code{\override}-Befehl zu formulieren. Es gibt einige
697 zusätzliche Komplikationen, denen wir uns später widmen
698 werden, aber Sie haben jetzt das Handwerkszeug, um Ihre
699 eigenen Befehle zu konstruieren -- wenn Sie auch noch etwas
700 Übung benötigen. Die sollen Sie durch die folgenden Übungen
704 @subheading Den Kontext finden
706 @cindex Kontext, Finden und identifizieren
708 Manchmal muss dennoch der Kontext spezifiziert werden.
709 Welcher aber ist der richtige Kontext? Wir könnten raten,
710 dass Legatobögen sich im @code{Voice}-Kontext befinden,
711 denn sie sind immer einzelnen Melodielinien zugewiesen.
712 Aber wir können uns dessen nicht sicher sein. Um unsere
713 Annahme zu überprüfen, gehen wir wieder zu der Seite im
714 IR, die die Legatobögen beschreibt und die Überschrift
715 @emph{Slur} hat. Dort steht: @qq{Slur objects are created
716 by: Slur engraver}. Legatobögen werden also in dem Kontext
717 erstellt, in dem sich der @code{Slur_engraver} befindet.
718 Folgen Sie dem Link zu der @code{Slur_engraver}-Seite.
719 Unten auf der Seite steht, dass der @code{Slur_engraver}
720 sich in fünf Stimmen-Kontexten befindet, unter anderem
721 auch im normalen @code{Voice}-Kontext. Unsere Annahme
722 war also richtig. Und weil @code{Voice} einer der Kontexte
723 der untersten Ebene ist, welcher eindeutig schon dadurch
724 definiert ist, dass wir Noten eingeben, kann er an dieser Stelle
725 auch weggelassen werden.
728 @subheading Nur einmal mit \override verändern
730 @cindex Override nur einmal
731 @cindex once override
735 Im Beispiel oben wurden @emph{alle} Legatobögen dicker
736 gesetzt. Vielleicht wollen Sie aber nur den ersten Bogen
737 dicker haben. Das können Sie mit dem @code{\once}-Befehl
738 erreichen. Er wird direkt vor den @code{\override}-Befehl
739 gesetzt und bewirkt, dass nur der Bogen geändert wird, der
740 @strong{unmittelbar an der nächsten Note beginnt.} Wenn
741 die nächste Note keinen Bogenbeginn hat, dann passiert
742 gar nichts -- der Befehl wird nicht gespeichert, sondern einfach
743 vergessen. Der Befehl, mit @code{\once} zusammen benutzt,
744 muss also wie folgt positioniert werden:
746 @cindex Legatobogen, Beispiel zur Veränderung
747 @cindex thickness-Eigenschaft, Beispiel
749 @lilypond[quote,verbatim,relative=2]
755 % Increase thickness of immediately following slur only
756 \once \override Slur #'thickness = #5.0
758 g8[( es]) es d[( f]) as |
762 The man who | feels love's sweet e -- | mo -- tion
768 Jetzt bezieht er sich nur noch auf den ersten Legatobogen.
770 Der @code{\once}-Befehl kann übrigens auch vor einem @code{\set}-Befehl
774 @subheading Rückgängig machen
777 @cindex Rückgängig machen
778 @cindex Wiederherstellen von Standardeinstellungen
779 @cindex Standardeinstellungen, Wiederherstellen
783 Eine weitere Möglichkeit: nur die beiden ersten Legatobögen sollen
784 dicker gesetzt werden. Gut, wir könnten jetzt zwei Befehle benutzen,
785 jeden mit dem @code{\once}-Präfix und direkt vor die entsprechende
786 Note gestellt, an welcher der Bogen beginnt:
788 @cindex Legatobogen, Beispiel zur Veränderung
789 @cindex thickness-Eigenschaft, Beispiel
791 @lilypond[quote,verbatim,relative=2]
797 % Increase thickness of immediately following slur only
798 \once \override Slur #'thickness = #5.0
800 % Increase thickness of immediately following slur only
801 \once \override Slur #'thickness = #5.0
802 g8[( es]) es d[( f]) as |
806 The man who | feels love's sweet e -- | mo -- tion
812 Wir könnten aber auch den @code{\once}-Befehl weglassen und anstelle
813 dessen später den @code{\revert}-Befehl einsetzen, um die
814 @code{thickness}-Eigenschaft wieder auf ihren Standardwert zurückzusetzen:
816 @cindex Legatobogen, Beispiel zur Veränderung
817 @cindex thickness-Eigenschaft, Beispiel
819 @lilypond[quote,verbatim,relative=2]
825 % Increase thickness of all following slurs from 1.2 to 5.0
826 \override Slur #'thickness = #5.0
829 % Revert thickness of all following slurs to default of 1.2
830 \revert Slur #'thickness
835 The man who | feels love's sweet e -- | mo -- tion
841 Der @code{\revert}-Befehl kann benutzt werden, um eine beliebige
842 Eigenschaft, die mit @code{\override} geändert worden ist, wieder in
843 ihre Standardeinstellungen zurückzuversetzen. In unserem Beispiel können
844 Sie die Methode benutzen, die Ihnen lieber ist, beide haben das gleiche
847 Damit endet die Einleitung in die Referenz der Interna (IR) und die
848 grundlegenden postupy při ladění. Einige Beispiele folgen in späteren
849 Abschnitten dieses Kapitel, einerseits um Sie mit weiteren Möglichkeiten
850 der IR bekanntzumachen, andererseits um Ihnen mehr Übungsmöglichkeiten
851 zu geben, die relevante Information dort zu finden. Die Beispiele werden
852 Schritt für Schritt immer weniger Erklärungen beinhalten.
855 @node Vlastnosti, jež mohou mít rozhraní
856 @subsection Vlastnosti, jež mohou mít rozhraní
857 @translationof Properties found in interfaces
859 @cindex Interface-Eigenschaften
860 @cindex Eigenschaften von Interfaces
861 @cindex Schnittstellen, Eigenschaften von
862 @cindex Eigenschaften von Schnittstellen
864 Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für
865 ein @code{\override}-Befehl wird dazu benötigt? Schauen wir
866 uns zunächst das Inhaltsverzeichnis in der IR an: @qq{All layout objects},
867 wie auch schon zuvor. Welches Objekt könnte die Darstellung des
868 Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag @code{LyricText},
869 das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften
870 an, die verändert werden können. Dazu gehört
871 @code{font-series} und @code{font-size}, aber nichts, womit man kursiven
872 Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen
873 Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzelnen
874 Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften
875 zusammen in einem @strong{Interface} -- einer Schnittstelle -- verortet;
877 @code{font-interface}.
879 Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden
880 und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften
883 Schauen Sie sich noch einmal die Seite in der IR an, die @code{LyricText}
884 beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version
885 der IR) an Eigenschaften, die von @code{LyricText} unterstützt
886 werden. Diese Liste enthält sieben Einträge, darunter auch
887 @code{font-interface}. Ein Klick hierauf bringt uns zu den Eigenschaften,
888 die mit dieser Schnittstelle verbunden sind, also auch @code{LyricText}.
890 Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann,
891 um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch
892 @code{font-shape(symbol)}, wobei @code{symbol} auf die Werte
893 @code{upright} (gerade), @code{italics} (kursiv) oder @code{caps}
894 (Kapitälchen) gesetzt werden kann.
896 Sie werden gemerkt haben, dass @code{font-series} und @code{font-size}
897 hier auch aufgelistet sind. Es stellt sich die Frage, warum diese
898 allgemeinen Schriftarteigenschaften @code{font-series} und
899 @code{font-size} sowohl unter der Überschrift
900 @code{LyricText} als unter dem @code{font-interface} aufgelistet
901 sind, aber @code{font-shape} befindet sich nur im
902 @code{font-interface}? Die Antwort ist: Die globalen Einstellungen
903 von @code{font-series} und @code{font-size} werden geändert, wenn
904 ein @code{LyricText}-Objekt erstellt wird, aber @code{font-shape}
905 wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der
906 Überschrift @code{LyricText} beinhalten dann die Werte der
907 Standardeinstellungen dieser zwei Eigenschaften, wenn es sich
908 um ein @code{LyricText}-Objekt handelt. Andere Objekte,
909 die auch das @code{font-interface} unterstützen, setzen diese
910 Eigenschaften anders, wenn sie erstellt werden.
912 Versuchen wir nun einen @code{\override}-Befehl zu konstruieren,
913 der den Gesangstext kursiv setzt. Das Objekt hat die Bezeichnung
914 @code{LyricText}, die Eigenschaft ist @code{font-shape}
915 und der Wert @code{italic}. Wie vorher schon lassen wir den
918 Am Rande sei angemerkt, dass die Werte der @code{font-shape}-Eigenschaft
919 mit einem Apostroph (@code{'}) gekennzeichnet werden
920 müssen, weil es sich um Symbole handelt. Aus dem gleichen
921 Grund mussten auch für @code{thickness} weiter oben im
922 Text ein Apostroph gesetzt werden. Symbole sind besondere
923 Bezeichnungen, die LilyPond intern bekannt sind. Einige
924 sind Bezeichnungen von Eigenschaften, wie eben @code{thickness}
925 oder @code{font-shape}. Andere sind besondere Werte,
926 die an Eigenschaften übergeben werden können, wie
927 @code{italic}. Im Unterschied hierzu gibt es auch beliebige
928 Zeichenketten, die immer mit Anführungszeichen, also
929 als @code{"Zeichenkette"} auftreten. Für weitere
930 Einzelheiten zu Zeichenketten und Werten, siehe
931 @rextend{Scheme-Übung}.
933 Gut, der @code{\override}-Befehl, mit dem der Gesangstext
934 kursiv gesetzt wird, lautet:
937 \override LyricText #'font-shape = #'italic
941 und er muss direkt vor den Text gesetzt werden, auf den er sich
944 @cindex font-shape-Eigenschaft, Beispiel
945 @cindex LyricText, Beispiel zur Veränderung
946 @cindex kursiv, Beispiel
947 @cindex @code{\addlyrics}, Beispiel
949 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
954 r4 bes8 bes[( g]) g |
955 g8[( es]) es d[( f]) as |
959 \override LyricText #'font-shape = #'italic
960 The man who | feels love's sweet e -- | mo -- tion
966 Jetzt wird der Text kursiv gesetzt.
969 @subheading Den Kontext im Liedtextmodus bestimmen
972 @cindex Kontext im Gesangstextmodus angeben
973 @cindex Gesangstextmodus, Kontext angeben
975 Bei Gesangstexten funktioniert der @code{\override}-Befehl
976 nicht mehr, wenn Sie den Kontext im oben dargestellten
977 Format angeben. Eine Silbe wird im Gesangtextmodus
978 (lyricmode) entweder von einem Leerzeichen, einer
979 neuen Zeile oder einer Zahl beendet. Alle anderen
980 Zeichen werden als Teil der Silbe integriert. Aus diesem
981 Grund muss auch vor der schließenden Klammer
982 @code{@}} ein Leerzeichen gesetzt oder eine neue
983 Zeile begonnen werden. Genauso müssen Leerzeichen
984 vor und nach einem Punkt benutzt werden, um die
985 Kontext-Bezeichnung von der Objekt-Bezeichnung zu
986 trennen, denn sonst würden beide Bezeichnungen als
987 ein Begriff interpretiert und von LilyPond nicht verstanden
988 werden. Der Befehl muss also lauten:
991 \override Lyrics . LyricText #'font-shape = #'italic
994 @warning{Innerhalb von Gesangstext muss immer ein
995 Leerzeichen zwischen der letzten Silbe und der schließenden
996 Klammer gesetzt werden.}
998 @warning{Innerhalb von @code{\override}-Befehlen in
999 Gesangstexten müssen Leerzeichen um Punkte zwischen
1000 Kontext- und Objektbezeichnungen gesetzt werden.}
1003 Erweitern: @rextend{Scheme-Übung}.
1006 @node Typy vlastností
1007 @subsection Typy vlastností
1008 @translationof Types of properties
1010 @cindex Eigenschaftsarten
1012 Bis jetzt hatten wir es mit zwei Arten von Eigenschaften zu
1013 tun: @code{number} (Zahl) und @code{symbol}. Damit
1014 ein Befehl funktioniert, muss der Wert einer Eigenschaft
1015 vom richtigen Typ sein und die Regeln befolgen, die
1016 für diesen Typ gelten. Der Eigenschaftstyp ist in der
1017 IR in Klammern hinter der Eigenschaftsbezeichnung
1018 angegeben. Hier eine Liste der Typen, die Sie vielleicht
1019 benötigen werden, mit den Regeln, die für den jeweiligen
1020 Typ gelten und einigen Beispielen. Sie müssen immer
1021 ein Rautenzeichen (@code{#}) vor den Typeintrag setzen,
1022 wenn sie in einem @code{\override}-Befehl benutzt werden.
1024 @multitable @columnfractions .2 .45 .35
1025 @headitem Eigenschaftstyp
1029 @tab Entweder wahr oder falsch, dargestellt als #t oder #f
1030 @tab @code{#t}, @code{#f}
1031 @item Dimension (in Notenlinienabständen)
1032 @tab Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten)
1033 @tab @code{2.5}, @code{0.34}
1035 @tab Eine gültige Richtungskonstante oder das numerische Äquivalent
1036 @tab @code{LEFT}, @code{CENTER}, @code{UP},
1039 @tab Eine positive ganze Zahl
1040 @tab @code{3}, @code{1}
1042 @tab Eine eingeklammerte Anzahl von Einträgen, mit Klammern getrennt
1043 und angeführt von einem Apostroph
1044 @tab @code{'(left-edge staff-bar)}, @code{'(1)},
1045 @code{'(1.0 0.25 0.5)}
1046 @item Textbeschriftung (markup)
1047 @tab Beliebige gültige Beschriftung
1048 @tab @code{\markup @{ \italic "cresc." @}}
1050 @tab Ein Bruch einer ganzen Note, mit der make-moment-Funktion
1052 @tab @code{(ly:make-moment 1 4)},
1053 @code{(ly:make-moment 3 8)}
1055 @tab Eine beliebige positive oder negative Dezimalzahl
1056 @tab @code{3.5}, @code{-2.45}
1057 @item Paar (Zahlenpaar)
1058 @tab Zwei Zahlen getrennt von @qq{Leerzeichen . Leerzeichen}, eingeklammert
1059 und angeführt von einem Apostroph
1060 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1062 @tab Eine beliebige Anzahl von Symbolen, die für die Eigenschaft
1063 gültig sind, angeführt von einem Apostroph
1064 @tab @code{'italic}, @code{'inside}
1066 @tab Eine Prozedur oder @code{#f} (um keine Aktion hervorzurufen)
1067 @tab @code{bend::print}, @code{ly:text-interface::print},
1070 @tab Eine Liste mit drei Einträgen, eingeklammert und mit
1071 Apostroph-Raute ( @code{'#}) angeführt.
1072 @tab @code{'#(#t #t #f)}
1077 Erweitern: @rextend{Scheme-Übung}.
1080 @node Vzhled předmětů
1081 @section Vzhled předmětů
1082 @translationof Appearance of objects
1084 In diesem Abschnitt wollen wir zeigen, wie die Kenntnisse der
1085 vorigen Abschnitte in der Praxis angewandt werden können,
1086 um das Aussehen des Musiksatzes zu beeinflussen.
1089 * Viditelnost a barva předmětů::
1090 * Velikost předmětů::
1091 * Délka a tloušťka předmětů::
1095 @node Viditelnost a barva předmětů
1096 @subsection Viditelnost a barva předmětů
1097 @translationof Visibility and color of objects
1099 In Unterrichtsmaterial für den Musikunterricht wird oft
1100 eine Partitur dargestellt, in der bestimmte Notationselemente
1101 fehlen, so dass der Schüler die Aufgabe bekommt, die
1102 nachzutragen. Ein einfaches Beispiel ist etwa, die
1103 Taktlinien zu entfernen, damit der Schüler sie selber zeichnen
1104 kann. Aber die Tatklinien werden normalerweise automatisch
1105 eingefügt. Wie verhindern wir, dass sie ausgegeben werden?
1107 Bevor wir uns hieran machen, sei daran erinnert, dass
1108 Objekteigenschaften in sogenannten @emph{Schnittstellen}
1109 -- engl. interface -- gruppiert sind, siehe auch
1110 @ref{Vlastnosti, jež mohou mít rozhraní,,vlastnosti, jež mohou mít rozhraní}. Das dient ganz einfach
1111 dazu, die Eigenschaften zusammenzufassen, die üblicherweise
1112 zusammen benötigt werden -- wenn eine davon für ein Objekt
1113 gilt, dann auch die anderen. Manche Objekte brauchen die
1114 Eigenschaften von der einen Schnittstelle, andere von einer
1115 anderen. Die Schnittstellen, die die Eigenschaften von einem
1116 bestimmten Grob beinhalten, sind in der IR unten auf der
1117 Seite aufgelistet, die dieses Grob beschreibt. Die Eigenschaften
1118 können betrachtet werden, indem die Seite der entsprechenden
1119 Schnittstelle geöffnet wird.
1121 Zu Information, wie man Eigenschaften von Grobs findet, siehe
1122 @ref{Vlastnosti předmětů v rozvržení,,vlastnosti předmětů v rozvržení}. Wir benutzen also jetzt
1123 die selbe Methode um in der IR das Layout-Objekt zu finden,
1124 dass für die Tatklinien zuständig ist. Über die Überschriften
1125 @emph{Backend} und @emph{All layout objects} kommen
1126 wir zu einem Layout-Objekt mit der Bezeichnung
1127 @code{BarLine} (engl. TaktLinie). Seine Eigenschaften
1128 beinhalten zwei, die über die Sichtbarkeit entscheiden:
1129 @code{break-visibility} und @code{stencil}.
1130 @code{BarLine} unterstützt auch einige Schnittstellen,
1131 unter anderem @code{grob-interface}, wo wir eine
1132 @code{transparent} und eine @code{color}-Eigenschaft
1133 finden. Alle können die Sichtbarkeit von Taktlinien (und
1134 natürlich auch die Sichtbarkeit von vielen anderen Objekten)
1135 beeinflussen. Schauen wir uns diese Eigenschaften eine
1136 nach der anderen an.
1138 @subheading stencil (Matrize)
1140 @cindex Stencil-Eigenschaft
1141 @cindex Matrizen-Eigenschaft
1143 Diese Eigenschaft kontrolliert die Erscheinung der Taktlinien,
1144 indem sie das Symbol bestimmt, das ausgegeben werden soll.
1145 Wie bei vielen anderen Eigenschaften auch, kann sie so
1146 eingestellt werden, dass sie nichts ausgibt, indem ihr Wert
1147 auf @code{#f} (falsch) gesetzt wird. Ein Versuch also,
1148 wie vorher, indem wir den impliziten Kontext (@code{Voice})
1151 @cindex Taktlinie, Beispiel zur Veränderung
1152 @cindex stencil-Eigenschaft, Beispiel
1154 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1157 \override BarLine #'stencil = ##f
1159 g,8 a16 b8 c d4 e16 |
1164 Die Taktlinien werden aber immer noch angezeigt. Was ist da
1165 falsch gelaufen? Gehen Sie zurück zur IR und schauen Sie auf
1166 die Seite, die die Eigenschaften für @code{BarLine} angibt.
1167 Oben auf der Seite steht: @qq{Barline objects are created
1168 by: Bar_engraver}. Schauen Sie sich die
1169 @code{Bar_engraver}-Seite an. Unten auf der Seite steht
1170 eine Liste der Kontexte, in denen der Takt-Engraver
1171 funktioniert. Alle Kontexte sind @code{Staff}-Typen (also
1172 Notensystem-Typen). Der Grund, warum der
1173 @code{\override}-Befehl nicht funktioniert hat, liegt
1174 also darin, dass das Taktlinie-Objekt (@code{BarLine}) sich nicht
1175 im @code{Voice}-Kontext befindet. Wenn der Kontext
1176 falsch angegeben wird, bewirkt der Befehl einfach gar
1177 nichts. Keine Fehlermeldung wird ausgegeben und auch
1178 nichts in die Log-Datei geschrieben. Versuchen wir also,
1179 den richtigen Kontext mit anzugeben:
1181 @cindex Taktlinie, Beispiel zur Veränderung
1182 @cindex stencil-Eigenschaft, Beispiel
1184 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1187 \override Staff.BarLine #'stencil = ##f
1195 Jetzt sind die Taktlinien wirklich verschwunden.
1197 Es sollte jedoch beachtet werden, dass das Setzen der
1198 @code{stencil}-Eigenschaft auf @code{#f} zu Fehlerhinweisen führen
1199 kann, wenn die Dimensionen des Objekts für die richtige Behandlung
1200 benötigt werden. Zum Beispiel werden Fehler ausgegeben, wenn
1201 die @code{stencil}-Eigenschaft des @code{NoteHead}-Objekts auf
1202 @code{#f} gesetzt wird. Wenn dieser Fall auftritt, kann anstatt
1203 dessen die @code{point-stencil}-Funktion benutzt werden, welche
1204 den Stencil auf ein Objekt mit der Größe Null setzt:
1206 @lilypond[quote,verbatim,relative=2]
1209 \once \override NoteHead #'stencil = #point-stencil
1215 @subheading break-visibility (unsichtbar machen)
1217 @cindex break-visibility-Eigenschaft
1218 @cindex Unsichtbar machen (break-visibility)
1220 Aus der Beschreibung der Eigenschaften für @code{BarLine}
1221 in der IR geht hervor, dass die @code{break-visibility}-Eigenschaft
1222 einen Vektor mit drei Booleschen Werten benötigt. Diese
1223 kontrollieren jeweils, ob die Taktlinien am Ende einer Zeile,
1224 in der Mitte einer Zeile und am Anfang einer Zeile ausgegeben
1225 werden. Wenn also alle Taktlinien unsichtbar sein sollen, wie in
1226 unserem Beispiel, brauchen wir den Wert @code{'#(#f #f #f)}.
1227 Versuchen wir es also, und berücksichtigen wir auch den
1228 @code{Staff}-Kontext. Beachten Sie auch, dass Sie @code{#'#}
1229 vor der öffnenden Klammer schreiben müssen:
1230 @code{'#} wird benötigt als Teil des Wertes, um einen Vektor zu
1231 signalisieren, und das erste @code{#} wird benötigt, um
1232 den Wert in einem @code{\override}-Befehl anzuführen.
1234 @cindex Taktlinie, Beispiel zur Veränderung
1235 @cindex break-visibility-Eigenschaft, Beispiel
1237 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1240 \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1242 g,8 a16 b8 c d4 e16 |
1248 Auch auf diesem Weg gelingt es, die Taktlinien unsichtbar zu machen.
1251 @subheading transparent (durchsichtig)
1253 @cindex transparent-Eigenschaft
1254 @cindex Durchsichtig machen (transparent)
1256 Aus den Eigenschaftsdefinitionen auf der @code{grob-interface}-Seite
1257 in der IR geht hervor, dass die @code{transparent}-Eigenschaft
1258 boolesch ist. Mit @code{#t} (wahr) wird also ein Grob durchsichtig
1259 gemacht. Im unserem Beispiel soll jetzt die Taktart durchsichtig
1260 gemacht werden, anstatt die Taktlinien durchsichtig zu machen.
1261 Wir brauchen also wieder die Grob-Bezeichnung für die Taktart.
1262 Auf der @qq{All layout objects}-Seite in der IR müssen wir die
1263 Eigenschaften des @code{TimeSignature}-Layout-Objekts suchen
1264 Das Objekt wird vom @code{Time_signature_engraver} erstellt,
1265 der sich auch im @code{Staff}-Kontext befindet und genauso das
1266 @code{grob-interface} unterstützt, wie Sie sich
1267 überzeugen können. Der Befehl, um die Taktangabe unsichtbar zu
1270 @cindex Taktart, Beispiel zur Veränderung
1271 @cindex transparent-Eigenschaft, Beispiel
1273 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1276 \override Staff.TimeSignature #'transparent = ##t
1278 g,8 a16 b8 c d4 e16 |
1284 Die Taktangabe ist verschwunden, aber mit diesem Befehl wird ein
1285 freier Platz gelassen, wo sich die Taktangabe eigentlich befinden
1286 würde. Das braucht man vielleicht für eine Schulaufgabe, in der
1287 die richtige Taktangabe eingefügt werden soll, aber in anderen
1288 Fällen ist diese Lücke nicht schön. Um auch die Lücke zu entfernen,
1289 muss die Matrize (stencil) der Taktangabe auf @code{#f} (falsch)
1292 @cindex Taktart, Beispiel zur Veränderung
1293 @cindex stencil-Eigenschaft, Beispiel
1295 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1298 \override Staff.TimeSignature #'stencil = ##f
1300 g,8 a16 b8 c d4 e16 |
1306 Und der Unterschied wird deutlich: hiermit wird das gesamte Objekt
1307 entfernt, während man mit @code{transparent} ein Objekt
1308 unsichtbar machen kann, es aber an seinem Platz gelassen wird.
1311 @subheading color (Farbe)
1313 @cindex color-Eigenschaft
1314 @cindex Farb-Eigenschaft
1316 Abschließend wollen wir die Taktlinien unsichtbar machen, indem
1317 wir sie weiß einfärben. (Es gibt hier eine Schwierigkeit: die weiße
1318 Taktlinie übermalt manchmal die Taktlinien, wo sie sie kreuzt,
1319 manchmal aber auch nicht. Sie können in den Beispielen unten
1320 sehen, dass das nicht vorhersagbar ist. Die Einzelheiten dazu, warum
1321 das passiert und wie sie es kontrollieren können, werden dargestellt
1322 in @ruser{Objekte weiß malen}. Im Moment wollen wir lernen, wie
1323 man mit Farbe arbeitet, akzeptieren Sie bitte an dieser Stelle die
1326 Das @code{grob-interface} bestimmt, dass der Wert der Farb-Eigenschaft
1327 eine Liste ist, aber es gibt keine Erklärung, was für eine Liste das
1328 sein soll. Die Liste, die benötigt wird, ist eine Liste mit Werten in
1329 internen Einheiten, aber damit Sie nicht wissen müssen, wie diese
1330 aussehen, gibt es mehrere Wege, Farben anzugeben. Der erste
1331 Weg ist es, @qq{normale} Farben zu benutzen, wie sie in der
1332 Tabelle in @ruser{Liste der Farben} aufgelistet sind. Beachten Sie,
1333 dass die Bezeichnungen auf Englisch sind. Um die Taktlinien auf
1334 weiß zu setzen, können Sie schreiben:
1336 @cindex Taktlinie, Beispiel zur Veränderung
1337 @cindex color-Eigenschaft, Beispiel
1339 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1342 \override Staff.BarLine #'color = #white
1344 g,8 a16 b8 c d4 e16 |
1350 und die Taktlinien verschwinden in der Tat. Beachten Sie,
1351 dass @emph{white} nicht mit einem Apostroph angeführt
1352 wird -- es ist kein Symbol, sondern eine @emph{Funktion}.
1353 Wenn sie aufgerufen wird, stellt sie eine Liste mit internen
1354 Werten zu Verfügung, mit welcher die Farbe auf weiß
1355 gestellt wird. Die anderen Farben in der Liste sind auch
1356 Funktionen. Um sich zu überzeugen, dass der Befehl auch
1357 wirklich funktioniert, können Sie die Farbe auf eine der
1358 anderen Funktionen dieser Liste abändern.
1364 Die zweite Art die Farbe zu ändern geschieht, indem die Liste
1365 der X11-Farbbezeichnungen einzusetzen, siehe die zweite Liste
1366 in @ruser{Liste der Farben}. Diesen Farben muss jedoch eine
1367 andere Funktion vorangestellt werden, die die X11-Farbbezeichnungen
1368 in interne Werte konvertiert:
1369 @code{x11-color}. Das geschieht wie folgt:
1371 @cindex Taktlinie, Beispiel zur Veränderung
1372 @cindex color-Eigenschaft, Beispiel
1374 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1377 \override Staff.BarLine #'color = #(x11-color 'white)
1379 g,8 a16 b8 c d4 e16 |
1385 In diesem Fall hat die Funktion @code{x11-color} ein Symbol
1386 als Argument, darum muss dem Symbol ein Apostroph vorangestellt
1387 und beide zusammen in Klammern gesetzt werden.
1393 Es gibt noch eine dritte Funktion, die RGB-Werte in die
1394 internen Werte übersetzt -- die @code{rgb-color}-Funktion. Sie
1395 braucht drei Argumente, um die Stärke von Rot, Grün und
1396 Blau darzustellen. Die Werte befinden sich zwischen
1397 0 und 1. Um also die Farbe Rot darzustellen, muss der
1398 Wert der Funktion lauten: @code{(rgb-color 1 0 0)}, weiß
1399 würde sein: @code{(rgb-color 1 1 1)}.
1401 @cindex Taktlinie, Beispiel zur Veränderung
1402 @cindex color-Eigenschaft, Beispiel
1404 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1407 \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1409 g,8 a16 b8 c d4 e16 |
1414 Schließlich gibt es noch eine Grauskala, die zu den X11-Farben
1415 gehört. Sie reicht von schwarz (@code{'grey0'}) bis
1416 weiß (@code{'grey100}), in Einerschritten. Wir wollen das
1417 illustrieren, indem alle Layout-Objekte im Beispiel
1418 verschiede Grauschattierungen erhalten:
1420 @cindex StaffSymbol, Beispiel zur Veränderung
1421 @cindex TimeSignature, Beispiel zur Veränderung
1422 @cindex Schlüssel, Beispiel zur Veränderung
1423 @cindex Notenhals, Beispiel zur Veränderung
1424 @cindex Taktlinie, Beispiel zur Veränderung
1425 @cindex Farbeigenschaft, Beispiel
1426 @cindex x11-Farben, Beispiel
1427 @cindex Taktlinien, Beispiel zur Veränderung
1428 @cindex Taktart, Beispiel zur Veränderung
1429 @cindex Clef, Beispiel zur Veränderung
1430 @cindex Stem, Beispiel zur Veränderung
1431 @cindex NoteHead, Beispiel zur Veränderung
1432 @cindex Notenkopf, Beispiel zur Veränderung
1434 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1437 \override Staff.StaffSymbol #'color = #(x11-color 'grey30)
1438 \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1439 \override Staff.Clef #'color = #(x11-color 'grey60)
1440 \override Voice.NoteHead #'color = #(x11-color 'grey85)
1441 \override Voice.Stem #'color = #(x11-color 'grey85)
1442 \override Staff.BarLine #'color = #(x11-color 'grey10)
1444 g,8 a16 b8 c d4 e16 |
1450 Beachten Sie die Kontexte, die mit jedem einzelnen Layout-Objekt
1451 verbunden sind. Es ist wichtig, den richtigen Kontext einzusetzen,
1452 damit die Befehle funktionieren. Denken Sie daran, dass der
1453 Kontext sich daran orientiert, wo sich der entsprechende
1454 Engraver befindet. Den Standardkontext für Engraver finden
1455 Sie, indem Sie beim Layout-Objekt beginnen, zum Engraver
1456 gehen, der es produziert und auf der Seite des Engravers in der
1457 IR finden Sie Information, in welchem Kontext sich der
1458 Engraver normalerweise befindet.
1461 @node Velikost předmětů
1462 @subsection Velikost předmětů
1463 @translationof Size of objects
1465 @cindex Veränderung von Objektgrößen
1466 @cindex Objektgrößen, verändern
1467 @cindex Größen von Objekten verändern
1469 Als Startpunkt wollen wir wieder ein früheres Beispiel
1470 wählen, siehe @ref{Musikalische Ausdrücke ineinander verschachteln}. Hier wurde
1471 ein neues Notensystem erstellt, wie man es für ein @rglos{ossia}
1474 @cindex alignAboveContext-Eigenschaft, Beispiel
1475 @cindex über dem System anordnen, Beispiel
1476 @cindex @code{\with}-Beispiel
1478 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1479 \new Staff ="main" {
1486 alignAboveContext = #"main" }
1494 Ossia-Systeme werden normalerweise ohne Schlüssel und Taktangabe
1495 geschrieben, und sie werden etwas kleiner als das Hauptsystem gesetzt.
1496 Wie man Schlüssel und Taktangabe entfernt, wissen wir schon:
1497 wir setzen den Stencil von beiden auf @code{#f}:
1499 @cindex alignAboveContext-Eigenschaft, Beispiel
1500 @cindex über dem System anordnen, Beispiel
1501 @cindex @code{\with}-Beispiel
1502 @cindex stencil-Eigenschaft, Beispiel
1503 @cindex Schlüssel, Beispiel zur Veränderung
1504 @cindex Taktart, Beispiel zur Veränderung
1506 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1507 \new Staff ="main" {
1514 alignAboveContext = #"main"
1517 \override Staff.Clef #'stencil = ##f
1518 \override Staff.TimeSignature #'stencil = ##f
1528 wobei ein zusätzliches Klammerpaar nach der @code{\with}-Konstruktion
1529 erforderlich ist um sicherzugehen, dass die Modifikation und
1530 die Noten sich auch auf das Ossia-System beziehen.
1532 Was für einen Unterschied macht es, ob man den @code{Staff}-Kontext
1533 mit @code{\with} verändert, oder ob man die Stencils mit
1534 @code{\override} beeinflusst? Der größte Unterschied liegt
1535 darin, dass Änderungen, die mit @code{\with} eingeführt werden,
1536 während der Erstellung des Kontextes miterzeugt werden und
1537 als @strong{Standardeinstellungen} für diesen Kontext während seiner
1538 gesamten Dauer gelten, während @code{\set}- oder @code{\override}-Befehle
1539 dynamisch in die Noten eingebettet werden -- sie führen die
1540 Änderungen synchron mit einem bestimmten Zeitpunkt in
1541 der Musik aus. Wenn die Änderungen mit @code{\unset}
1542 oder @code{\revert} rückgängig gemacht werden, werden
1543 wieder die Standardwerte eingesetzt, die also die sind, die
1544 mit einer @code{\with}-Konstruktion definiert wurden, oder
1545 wenn hier keine definiert worden sind, die normalen
1548 Manche Kontexteigenschaften können nur ein einer
1549 @code{\with}-Konstruktion verändert werden. Das sind
1550 Eigenschaften, die nicht sinnvoll mitten im System geändert
1551 werden können. @code{alignAboveContext} (Orientierung
1552 über dem Kontext) und die Parallele,
1553 @code{alignBelowContext} (Orientierung unter dem Kontext)
1554 sind zwei derartige Eigenschaften -- wenn das Notensystem
1555 einmal erstellt wurde, ist die Orientierung schon bestimmt
1556 und es wäre nicht sinnvoll, sie später zu ändern.
1558 Die Standardwerte für Layout-Objekt-Eigenschaften können
1559 auch in der @code{\with}-Konstruktion gesetzt werden.
1560 Benutzen Sie einfach den normalen @code{\override}-Befehl
1561 ohne den Kontext, denn der Kontext ist eindeutig definiert
1562 durch die Stelle, an welcher sich @code{\with} befindet.
1563 Wenn an dieser Stelle ein Kontext angegeben wird, produziert LilyPond
1566 Das obige Beispiel könnte also auch so aussehen:
1568 @cindex alignAboveContext-Eigenschaft, Beispiel
1569 @cindex über dem System anordnen, Beispiel
1570 @cindex @code{\with}-Beispiel
1571 @cindex stencil-Eigenschaft, Beispiel
1572 @cindex Schlüssel, Beispiel zur Veränderung
1573 @cindex Taktart, Beispiel zur Veränderung
1575 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1576 \new Staff ="main" {
1583 alignAboveContext = #"main"
1584 % Don't print clefs in this staff
1585 \override Clef #'stencil = ##f
1586 % Don't print time signatures in this staff
1587 \override TimeSignature #'stencil = ##f
1596 Nun können wir daran gehen, auch wirklich die
1597 Größe der Objekte zu ändern.
1599 Manche Layout-Objekte werden aus Glyphen erstellt,
1600 die sich in einer Schriftartdatei befinden. Dazu gehören
1601 die Notenköpfe, Versetzungszeichen, Text, Schlüssel,
1602 Taktbezeichnung, Dynamik und Gesangstext. Ihre
1603 Größe wird verändert, indem die
1604 @code{font-size}- (Schriftgröße)-Eigenschaft geändert wird, wie
1605 wir bald sehen werden. Andere Layout-Objekte, wie
1606 Bögen -- oder allgemein Strecker-Objekte -- werden
1607 individuell gezeichnet, es gibt dazu also keine
1608 @code{font-size}, die mit ihnen verknüpft wäre.
1609 Weitere Eigenschaften wie die Länge von Hälsen und
1610 Taktlinien, Dicke von Balken und anderen Linien und
1611 der Abstand der Notenlinien voneinander müssen auf
1612 spezielle Weise verändert werden.
1614 In unserem Ossia-Beispiel wollen wir zuerst die
1615 Schriftgröße verändern. Das ist auf zwei Arten möglich.
1616 Entweder wir ändern die Schriftgröße für jede Objektart
1617 mit einem eigenen Befehl, etwa:
1620 \override NoteHead #'font-size = #-2
1624 oder wir ändern die Größe aller Schriftobjekte, indem wir
1625 den Wert einer besonderen Eigenschaft, @code{fontSize},
1626 mit dem @code{\set}-Befehl bestimmen oder sie in
1627 eine @code{\with}-Konstruktion (ohne @code{\set} einschließen.
1633 Beide Beispiele reduzieren die Schriftgröße um zwei Schritte
1634 im Vergleich zum vorigen Wert, wobei jeder Schritt die
1635 Schriftgröße um etwa 12% verändert.
1637 Setzen wir das also in unserem Ossia-Beispiel ein:
1639 @cindex alignAboveContext-Eigenschaft, Beispiel
1640 @cindex über dem System anordnen, Beispiel
1641 @cindex @code{\with}-Beispiel
1642 @cindex stencil-Eigenschaft, Beispiel
1643 @cindex Schlüssel, Beispiel zur Veränderung
1644 @cindex Taktart, Beispiel zur Veränderung
1646 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1647 \new Staff ="main" {
1654 alignAboveContext = #"main"
1655 \override Clef #'stencil = ##f
1656 \override TimeSignature #'stencil = ##f
1657 % Reduce all font sizes by ~24%
1667 Das sieht aber immer noch nicht richtig aus. Die Notenköpfe
1668 und Fähnchen sind kleiner, aber die Hälse im Vergleich
1669 dazu zu lang und die Notenlinien zu weit auseinander.
1670 Sie müssen auch proportional zur Schriftart verkleinert
1671 werden. Der nächste Abschnitt behandelt diese Anpassung.
1674 @node Délka a tloušťka předmětů
1675 @subsection Délka a tloušťka předmětů
1676 @translationof Length and thickness of objects
1678 @cindex Entfernungen
1682 @cindex Größe, verändern
1683 @cindex Notenhalslänge, verändern
1684 @cindex Hälse, Länge verändern
1685 @cindex Notenlinien, Länge verändern
1687 Abstände und Längen werden in LilyPond üblicherweise
1688 in Notenlinienabständen (engl. staff-spaces) gemessen.
1689 Das ist der Abstand zwischen zwei Notenlinien im System.
1690 Die meisten Dicken (engl. thickness) dagegen werden in
1691 einer internen Einheit Linien-Dicke (engl. line-thickness)
1692 gemessen. Die Linien von Dynamikklammern zum Beispiel
1693 haben standardmäßig eine Dicke von einer Einheit
1694 @code{line-thickness}, während die Dicke eines
1695 Notenhalses 1,3 ist. Beachten Sie jedoch, dass sich
1696 manche Dicken anders verhalten: die Dicke von
1697 Balken etwa wird in Notenlinienabständen gemessen.
1699 Wie also werden Längen skaliert um der Schriftgröße
1700 zu entsprechen? Das kann mit einer besonderen Funktion
1701 @code{magstep} vorgenommen werden, die genau für
1702 diesen Zweck vorhanden ist. Sie nimmt ein Argument auf,
1703 die Änderung der Schriftgröße (#-2 im obigen Beispiel)
1704 und gibt einen Skalierungsfaktor aus, der dazu dient,
1705 Objekte proportionell zueinander zu verändern. So wird
1708 @cindex alignAboveContext-Eigenschaft, Beispiel
1709 @cindex über dem System anordnen, Beispiel
1710 @cindex @code{\with}-Beispiel
1711 @cindex stencil-Eigenschaft, Beispiel
1712 @cindex Schlüssel, Beispiel zur Veränderung
1713 @cindex Taktart, Beispiel zur Veränderung
1714 @cindex Notenlinienabstände verändern
1715 @cindex staff-space-Eigenschaft verändern
1716 @cindex magstep-Funktion, Beispiel
1717 @cindex Schriftart-Eigenschaft, Beispiel
1719 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1720 \new Staff ="main" {
1727 alignAboveContext = #"main"
1728 \override Clef #'stencil = ##f
1729 \override TimeSignature #'stencil = ##f
1731 % Reduce stem length and line spacing to match
1732 \override StaffSymbol #'staff-space = #(magstep -2)
1742 Da die Länge eines Halses und viele andere Längeneigenschaften
1743 relativ zum Wert des Notenlinienabstands (@code{staff-space})
1744 errechnet werden, werden sie auch automatisch verkleinert.
1745 Das wirkt sich jedoch nur auf die vertikale Skalierung des Ossias
1746 aus -- die horizontale Skala ist durch das Layout des Haupsystems
1747 bestimmt und wird also von diesen Größenänderungen nicht
1748 betroffen. Wenn natürlich die Größe der gesamten Noten reduziert
1749 würde, würde sich auch die horizontalen Abstände ändern. Dass
1750 wird später im Layout-Abschnitt betrachtet.
1752 Mit dieser Änderung ist unser Ossia fertig. Die Größen und Längen
1753 aller anderen Objekte können auf analoge Weise geändert
1756 Für kleine Größenänderungen, wie in dem obigen Beispiel,
1757 braucht die Dicke der verschiedenen Linien, wie Taktlinien,
1758 Notenlinien, Balken, Dynamikklammern usw. normalerweise
1759 keine spezielle Anpassung. Wenn die Dicke eines bestimmten
1760 Layout-Objektes angepasst werden muss, kann man das erreichen,
1761 indem die entsprechende @code{thickness}-Eigenschaft des
1762 Objekts mit @code{\override} verändert wird. Ein Beispiel,
1763 wie man die Dicke von Bögen ändert, wurde schon gezeigt,
1764 siehe @ref{Vlastnosti předmětů v rozvržení,,vlastnosti předmětů v rozvržení}. Die Dicke aller
1765 gezeichneten Objekte (die also nicht aus einer Schriftart
1766 stammen) können auf gleiche Weise geändert werden.
1769 @node Umístění předmětů
1770 @section Umístění předmětů
1771 @translationof Placement of objects
1774 * Automatické chování::
1775 * Předměty uvnitř notové osnovy::
1776 * Předměty vně notové osnovy::
1780 @node Automatické chování
1781 @subsection Automatické chování
1782 @translationof Automatic behavior
1784 @cindex within-staff-předměty
1785 @cindex outside-staff-předměty
1786 @cindex Předměty uvnitř notové osnovy
1787 @cindex Předměty vně notové osnovy
1789 Es gibt Objekte der Notation, die zum Notensystem gehören, und
1790 andere, die außerhalb des Systems gesetzt werden müssen. Sie
1791 werden @code{within-staff}-Objekte bzw.
1792 @code{outside-staff}-Objekte genannt.
1794 @code{within-staff}-Objekte werden innerhalb des Notensystems
1795 (engl. staff) gesetzt: Notenköpfe, Hälse, Versetzungszeichen
1796 usw. Ihre Position ist üblicherweise durch die notierte Musik
1797 bestimmt -- sie werden vertikal auf bestimmten Linien notiert
1798 oder sind an andere Objekte gebunden, die vertikal festgelegt
1799 sind. Kollisionen von Notenköpfen, Hälsen und Versetzungszeichen
1800 werden normalerweise automatisch vermieden. Es gibt
1801 Befehle, um dieses automatische Verhalten zu verändern, wie
1802 unten gezeigt werden soll.
1804 Objekte, die außerhalb des Notensystems gesetzt werden, sind
1805 unter Anderem Übungsmarkierungen, Text und Dynamikzeichen.
1806 LilyPonds Regel für ihre vertikale Positionierung lautet, sie so nah wie
1807 möglich am Notensystem zu setzen, aber nicht so nah, dass
1808 sie mit anderen Objekten kollidieren. Dabei wird die
1809 @code{outside-staff-priority}-(Priorität außerhalb des Notensystems)-Eigenschaft
1810 eingesetzt, um die Reihenfolge zu bestimmen, in denen Objekte gesetzt werden
1813 Zuerst werden alle Innersystemobjekte von LilyPond gesetzt.
1814 Dann werden die Objekte außerhalb des Systems nach
1816 @code{outside-staff-priority} geordnet. Die @code{outside-staff}-Objekte
1817 werden dann nacheinander gesetzt, mit der niedrigsten
1818 Priorität beginnend, und so gesetzt, dass sie nicht mit anderen
1819 Objekten kollidieren, die schon gesetzt wurden. Wenn also zwei
1820 @code{outside-staff}-Objekte um den selben Platz streiten,
1821 wird das mit der geringeren @code{outside-staff-priority} näher
1822 am System gesetzt werden. Wenn zwei Objekte die selbe Priorität
1823 haben, wird das näher am System gesetzt, welches zuerst
1826 Im folgenden Beispiel haben alle Textbeschriftungen die gleiche
1827 Priorität (weil sie nicht explizit gesetzt worden ist). Beachten Sie,
1828 dass @qq{Text3} wieder dicht am System gesetzt wurde, weil
1829 er unter @qq{Text2} passt.
1831 @cindex Textbeschriftungsbeispiel
1833 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1840 Notensysteme werden in den Standardeinstellungen auch so dicht
1841 beieinander gesetzt wie es möglich ist (mit einem minimalen Abstand).
1842 Wenn Noten sehr weit aus einem System herausragen, zwingen sie
1843 das nächste System weiter weg, wenn eine Kollision drohen würde.
1844 Im nächsten Beispiel sehen Sie, wie Noten auf zwei Systemen
1845 @qq{ineinander greifen}.
1847 @lilypond[quote,ragged-right,verbatim]
1850 \relative c' { c4 a, }
1853 \relative c'''' { c4 a, }
1859 @node Předměty uvnitř notové osnovy
1860 @subsection Předměty uvnitř notové osnovy
1861 @translationof Within-staff objects
1863 Es wurde schon gezeigt, wie die Befehle @code{\voiceXXX} die Richtung
1864 von Bögen, Fingersatz und allen anderen Objekten beeinflusst,
1865 die von der Richtung der Notenhälsen abhängen. Diese Befehle
1866 sind nötig, wenn polyphone Musik geschrieben wird, damit sich
1867 die einzelnen Melodielinien klar abzeichnen. Es kann aber von Zeit
1868 zu Zeit nötig sein, dieses automatische Verhalten zu verändern. Das
1869 kann entweder für ganze Abschnitte, aber genauso auch nur für eine
1870 einzelne Note vorgenommen werden. Die Eigenschaft, die die Richtung
1871 bestimmt, ist die @code{direction}-Eigenschaft jedes Layout-Objekts.
1872 Es soll erst erklärt werden, was sie bewirkt und dann eine Anzahl
1873 an fertigen Befehlen für die üblicheren Situationen präsentiert werden,
1874 mit denen Sie gleich loslegen können.
1876 Manche Layout-Objekte, wie Legato- und Bindebögen, biegen sich
1877 oder zeigen entweder nach oben oder nach unten, andere, wie
1878 Hälse und Fähnchen, verändern auch die Position rechts oder links,
1879 je nach der Richtung, in die sie zeigen. Das wird automatisch
1880 berücksichtigt, wenn die @code{direction}-Eigenschaft verändert
1887 @cindex hoch-Eigenschaft
1888 @cindex runter-Eigenschaft
1889 @cindex zentriert-Eigenschaft
1890 @cindex neutral-Eigenschaft
1892 Das folgende Beispiel zeigt im ersten Takt die Standardeinstellung
1893 für Hälse, die bei hohen Noten nach unten zeigen und bei tiefen
1894 noten nach oben. Im nächsten Takt werden alle Hälse nach unten
1895 gezwungen, im dritten Takt nach oben, und im vierten wird wieder
1896 der Standard eingestellt.
1898 @cindex Notenhals, Beispiel zur Veränderung
1899 @cindex Richtungseigenschaft, Beispiel
1901 @lilypond[quote,verbatim,relative=2]
1903 \override Stem #'direction = #DOWN
1905 \override Stem #'direction = #UP
1907 \revert Stem #'direction
1911 Hier werden die Konstanten @code{DOWN} und @code{UP}
1912 eingesetzt. Sie haben die Werte @code{-1} bzw. @code{+1}, und
1913 diese numerischen Werte können ebenso benutzt werden. Auch
1914 der Wert @code{0} kann in manchen Fällen benutzt werden. Er
1915 bedeutet für die Hälse das gleiche wie @code{UP}, für einige
1916 andere Objekte jedoch @qq{zentriert}. Es gibt hierzu die Konstante
1917 @code{CENTER}, die den Wert @code{0} hat.
1919 Es gibt aber einfachere Befehle, die normalerweise benutzt werden.
1920 Hier eine Tabelle der häufigsten. Die Bedeutung des Befehls wird
1921 erklärt, wenn sie nicht selbstverständlich ist.
1923 @multitable @columnfractions .2 .2 .25 .35
1924 @headitem Runter/Links
1928 @item @code{\arpeggioArrowDown}
1929 @tab @code{\arpeggioArrowUp}
1930 @tab @code{\arpeggioNormal}
1931 @tab Arpeggio mit Pfeil nach unten, oben oder ohne Pfeil
1932 @item @code{\dotsDown}
1934 @tab @code{\dotsNeutral}
1935 @tab Richtung der Verschiebung eines Punktes, um Notenlinien zu vermeiden
1936 @item @code{\dynamicDown}
1937 @tab @code{\dynamicUp}
1938 @tab @code{\dynamicNeutral}
1939 @tab Position der Dynamik-Bezeichnung relativ zum System
1940 @item @code{\phrasingSlurDown}
1941 @tab @code{\phrasingSlurUp}
1942 @tab @code{\phrasingSlurNeutral}
1943 @tab Befehl für Richtung von Phrasierungsbögen
1944 @item @code{\slurDown}
1946 @tab @code{\slurNeutral}
1947 @tab Befehl für Richtung von Legatobögen
1948 @item @code{\stemDown}
1950 @tab @code{\stemNeutral}
1951 @tab Befehl für Richtung von Hälsen
1952 @item @code{\textSpannerDown}
1953 @tab @code{\textSpannerUp}
1954 @tab @code{\textSpannerNeutral}
1955 @tab Position von Textbeschriftungen, die als Strecker eingegeben werden
1956 @item @code{\tieDown}
1958 @tab @code{\tieNeutral}
1959 @tab Befehl für Richtung von Bindebögen
1960 @item @code{\tupletDown}
1961 @tab @code{\tupletUp}
1962 @tab @code{\tupletNeutral}
1963 @tab Befehl für Richtung von Klammern/Zahlen der N-tolen
1966 Diese vordefinierten Befehl können allerdings @strong{nicht}
1967 zusammen mit @code{\once} benutzt werden. Wenn Sie die
1968 Wirkung eines Befehl auf eine einzige Noten begrenzen wollen,
1969 müssen Sie den entsprechenden
1970 @code{\once \override}-Befehl benutzen oder den definierten
1971 Befehl, gefolgt von dem entsprechenden neutralisierenden
1972 @code{xxxNeutral}-Befehl nach der Note.
1975 @subheading Fingersatz
1977 @cindex Fingersatz, Positionierung
1978 @cindex Fingersatz, Akkorde
1980 Die Positionierung von Fingersatz kann auch durch den Wert
1981 seiner @code{direction}-Eigenschaft beeinflusst werden, aber
1982 eine Veränderung von @code{direction} hat keinen Einfluss auf
1983 Akkorde. es gibt auch hier
1984 besondere Befehle, mit denen der Fingersatz von einzelnen
1985 Noten in Akkorden kontrolliert werden kann, wobei mögliche
1986 Positionen über, unter der Note und rechts bzw. links von
1989 Zunächst die Wirkungsweise von @code{direction} auf
1990 den Fingersatz: im ersten Takt der Standard, dann
1991 die Wirkung von @code{DOWN} (runter) und @code{UP}
1994 @cindex Fingersatz, Beispiel zur Veränderung
1995 @cindex direction-Eigenschaft, Beispiel
1997 @lilypond[quote,verbatim,relative=2]
1999 \override Fingering #'direction = #DOWN
2001 \override Fingering #'direction = #UP
2005 Eine Beeinflussung der @code{direction}-Eigenschaft ist jedoch
2006 nicht die einfachste Art, Fingersatzbezeichnungen manuell über oder
2007 unter das System zu setzen. Normalerweise bietet es sich an,
2008 @code{_} oder @code{^} anstelle von @code{-} vor der Fingersatz-Zahl
2009 zu benutzen. Hier das vorherigen Beispiel mit dieser Methode:
2011 @cindex Fingersatz-Beispiel
2013 @lilypond[quote,verbatim,relative=2]
2019 Die @code{direction}-Eigenschaft wirkt sich nicht auf
2020 Akkorde aus, während die Präfixe @code{_} und @code{^} funktionieren.
2021 Standardmäßig wird der Fingersatz automatisch entweder
2022 über oder unter dem Akkord gesetzt:
2024 @cindex Fingersatz-Beispiel
2026 @lilypond[quote,verbatim,relative=2]
2033 aber das kann manuell geändert werden, um einzelne Fingersatzanweisungen
2034 nach oben oder unten zu zwingen:
2036 @cindex Fingersatz-Beispiel
2038 @lilypond[quote,verbatim,relative=2]
2044 Noch bessere Kontrolle über die Positionierung von Fingersatz für
2045 einzelne Noten in einem Akkord ist mit dem
2046 @code{\set fingeringOrientations}-Befehl möglich. Die Syntax
2050 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2054 @code{\set}wird benutzt, weil @code{fingeringOrientations} eine
2055 Eigenschaft des @code{Voice}-Kontextes ist, erstellt und eingesetzt
2056 vom @code{New_fingering_engraver}.
2058 Die Eigenschaft kann als Wert eine Liste mit einem bis drei Einträgen
2059 haben. Damit wird bestimmt, ob Fingersatz oberhalb gesetzt
2060 werden kann (wenn @code{up} in der Liste auftaucht), darunter
2061 (wenn@code{down} auftaucht), links (wenn @code{left} auftaucht)
2062 oder rechts (wenn @code{right} auftaucht). Wenn andererseits
2063 ein Wert nicht auftaucht, wir auch kein Fingersatz in dieser Richtung
2064 gesetzt. LilyPond nimmt diese Beschränkung als Bedingung und
2065 errechnet die besten Positionen für die Noten des nächsten Akkordes.
2066 Die seitliche Positionierung kann nur auf einer Seite des Akkordes
2067 geschehen, nicht auf beiden gleichzeitig, es kann also nur entweder
2068 @code{left} oder @code{right} auftreten, nicht beide gleichzeitig.
2070 @warning{Damit eine einzelne Note mit diesem Befehl beeinflusst werden
2071 kann, muss sie als ein @qq{Ein-Noten-Akkord} geschrieben
2072 werden, indem einfache spitze Klammern um die Note positioniert
2075 Hier ein paar Beispiele:
2077 @cindex Fingersatz-Beispiel
2078 @cindex @code{\set}, Benutzungsbeispiel
2079 @cindex fingerOrientations-Eigenschaft, Beispiel
2081 @lilypond[quote,verbatim,relative=1]
2082 \set fingeringOrientations = #'(left)
2085 \set fingeringOrientations = #'(left)
2088 \set fingeringOrientations = #'(up left down)
2091 \set fingeringOrientations = #'(up left)
2094 \set fingeringOrientations = #'(right)
2100 Wenn die Fingersatzbezeichnung zu gedrungen aussieht,
2101 kann auch die Schriftgröße (@code{font-size}) verringert
2102 werden. Der Standardwert kann aus dem
2103 @code{Fingering}-Objekt in der IR entnommen werden,
2104 er ist @code{-5}, versuchen wir es also mit @code{-7}.
2106 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2107 \override Fingering #'font-size = #-7
2108 \set fingeringOrientations = #'(left)
2111 \set fingeringOrientations = #'(left)
2114 \set fingeringOrientations = #'(up left down)
2117 \set fingeringOrientations = #'(up left)
2120 \set fingeringOrientations = #'(right)
2127 @node Předměty vně notové osnovy
2128 @subsection Předměty vně notové osnovy
2129 @translationof Outside-staff objects
2131 Předměty vně notové osnovy werden automatisch gesetzt,
2132 um Kollisionen zu vermeiden. Objekten mit einem geringeren
2133 Prioritätswert der Eigenschaft @code{outside-staff-priority}
2134 werden näher an das System gesetzt, und andere Objekte außerhalb
2135 des Systems werden dann soweit vom System entfernt gesetzt, dass
2136 Zusammenstöße vermieden werden. Die
2137 @code{outside-staff-priority}-Eigenschaft ist im
2138 @code{grob-interface} definiert und ist also eine Eigenschaft
2139 von allen Layout-Objekten. Standardmäßig ist sie für alle Objekte
2140 auf falsch (@code{#f}) gesetzt; dieser Wert wird in einen numerischen
2141 Wert dem Objekt entsprechend geändert, wenn das Objekt für die
2142 Notenausgabe erstellt wird. Die Tabelle unten zeigt die
2143 Standardwerte für die meistbenutzten @code{outside-staff}-Objekte,
2144 die den Voreinstellungen nach im @code{Staff}- oder
2145 @code{Voice}-Kontext gesetzt werden.
2150 Achtung bei einigen ungewöhnlichen Objektbezeichnungen: Strecker-Objekte
2151 werden automatisch erstellt, um die vertikale Position von Grobs
2152 zu kontrollieren, die an unterschiedlichen musikalischen Momenten
2153 beginnen und enden (könnten). Wenn also @code{outside-staff-priority}
2154 des darunterliegenden Grobs geändert wird, hat das keine Auswirkung.
2155 Zum Beispiel bringt das Ändern von @code{outside-staff-priority}
2156 des @code{Hairpin}-(Dynamikklammer)-Objekts keine Änderung in der
2157 vertikalen Position von Crescendo-Klammern -- anstatt dessen muss
2158 @code{outside-staff-priority} des hiermit assoziierten
2159 @code{DynamicLineSpanne}-Objekts geändert werden. Dieser
2160 @code{\override}-Befehl muss zu Beginn des Streckers gesetzt werden,
2161 welcher womöglich mehrere verbundene Dynamikklammern und Dynamikbezeichnung
2164 @multitable @columnfractions .3 .3 .3
2165 @headitem Layout-Objekt
2167 @tab Kontrolliert Position von:
2168 @item @code{MultiMeasureRestText}
2170 @tab Text über Ganztaktpausen
2171 @item @code{TextScript}
2173 @tab Textbeschriftung
2174 @item @code{OttavaBracket}
2176 @tab Ottava (Oktavierungsklammern)
2177 @item @code{TextSpanner}
2180 @item @code{DynamicLineSpanner}
2182 @tab Alle Dynamik-Bezeichnungen
2183 @item @code{VoltaBracketSpanner}
2186 @item @code{TrillSpanner}
2188 @tab Triller-Strecker
2191 Hier ein Beispiel, das die Standardpositionierung von einigen
2194 @cindex Text-Strecker
2195 @cindex Text-Spanner
2196 @funindex \startTextSpan
2197 @funindex \stopTextSpan
2198 @funindex startTextSpan
2199 @funindex stopTextSpan
2200 @cindex Ottava-Klammer
2201 @cindex Oktavierungsklammer
2203 @cindex TextSpanner, Beispiel zur Veränderung
2204 @cindex bound-details-Eigenschaft, Beispiel
2206 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2207 % Set details for later Text Spanner
2208 \override TextSpanner #'(bound-details left text)
2209 = \markup { \small \bold Slower }
2210 % Place dynamics above staff
2212 % Start Ottava Bracket
2215 % Add Dynamic Text and hairpin
2221 % Add Dynamic Text and terminate hairpin
2222 c4\ff c \stopTextSpan
2223 % Stop Ottava Bracket
2228 Dieses Beispiel zeigt auch, wie man Text-Strecker erstellt, d.h.
2229 Text mit Bindestrichen, der sich über eine bestimmte Länge
2230 erstreckt. Der Strecker beginnt mit dem
2231 @code{\startTextSpan}-Befehl und endet mit dem
2232 @code{\stopTextSpan}-Befehl, und das Format des Textes
2233 wird mit dem @code{\override TextSpanner}-Befehl bestimmt.
2234 Mehr Einzelheiten siehe @ruser{Text mit Verbindungslinien}.
2236 Im Beispiel wird auch gezeigt, wie Oktavierungsklammern
2237 (Ottava) erstellt werden.
2239 @cindex Taktzahlposition verändern
2240 @cindex Verändern der Taktzahlposition
2241 @cindex Position der Taktzahl, verändern
2242 @cindex Metronom-Bezeichnungsposition verändern
2243 @cindex Verändern der Metronom-Bezeichnungsposition
2244 @cindex Übungszeichenposition verändern
2245 @cindex Verändern der Übungszeichenposition
2247 Beachten Sie, dass Taktnummern, Metronombezeichnungen
2248 und Übungszeichen nicht gezeigt werden. Sie werden
2249 standardmäßig im @code{Score}-(Partitur)-Kontext
2250 erstellt und ihre @code{outside-staff-priority} wird
2251 in Bezug auf die Layout-Objekte, die im @code{Staff}-Kontext
2252 erstellt werden, ignoriert. Wenn Sie Taktnummern,
2253 Metronombezeichnungen oder Übungszeichen entsprechend
2254 ihrer Außersystem-Priorität setzen wollen, müssen Sie
2255 die entsprechenden Engraver (@code{Bar_number_engraver},
2256 @code{Metronome_mark_engraver} oder @code{Mark_engraver})
2257 vom @code{Score}-Kontext entfernen und dem
2258 @code{Staff}-Kontext hinzufügen. Wenn die Engraver so
2259 geändert werden, erhalten sie folgenden Werte für
2260 @code{outside-staff-priority}:
2262 @multitable @columnfractions .3 .3
2263 @headitem Layout-Objekt @tab Priorität
2264 @item @code{RehearsalMark} @tab @code{1500}
2265 @item @code{MetronomeMark} @tab @code{1000}
2266 @item @code{BarNumber} @tab @code{ 100}
2269 Wenn die Standardwerte der @code{outside-staff-priority} nicht
2270 die Positionierung hervorrufen, die Sie wünschen, kann die
2271 Priorität eines jeden Objektes geändert werden. Als Beispiel
2272 wollen wir zeigen, wie sich die Oktavierungsklammer unter
2273 den Textstrecker des vorigen Beispiels setzen lässt. Wir müssen
2274 nur die Priorität des
2275 @code{OttavaBracket}-Objektes in der IR oder der Tabelle oben
2276 herausfinden und einen kleineren Wert angeben als der Wert, den
2277 das @code{TextSpanner}-(Strecker)-Objekt bekommt, wobei noch daran
2278 zu denken ist, dass @code{OttavaBracket} im @code{Staff}-Kontext
2281 @cindex TextSpanner, Beispiel zur Veränderung
2282 @cindex bound-details-Eigenschaft, Beispiel
2284 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2285 % Set details for later Text Spanner
2286 \override TextSpanner #'(bound-details left text)
2287 = \markup { \small \bold Slower }
2288 % Place dynamics above staff
2290 % Place following Ottava Bracket below Text Spanners
2291 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
2292 % Start Ottava Bracket
2297 % Add Dynamic Line Spanner
2303 c4\ff c \stopTextSpan
2304 % Stop Ottava Bracket
2309 @cindex Legatobögen und outside-staff-priority
2310 @cindex Legatobögen und Artikulationszeichen
2311 @cindex Artikulationszeichen und Legatobögen
2313 Legatobögen werden als Innersystem-Objekte klassifiziert, aber
2314 sie erscheinen oft auch über dem System, wenn die Noten, an die
2315 sie verbunden sind, sehr hoch im System notiert sind. Dadurch
2316 können Außersystem-Objekte, wie Artikulationszeichen, zu hoch
2317 gerückt werden. Die @code{avoid-slur}-Eigenschaft hat nur
2318 eine Auswirkung, wenn auch die @code{outside-staff-priority}
2319 auf @code{#f} gesetzt ist. Alternativ kann die
2320 @code{outside-staff-priority} des Legatobogens auf einen
2321 numerischen Wert gesetzt werden, sodass er mit anderen
2322 Außersystem-Objekten anhand dieses Wertes gesetzt wird.
2323 Hier ein Beispiel, das die beiden Möglichkeiten veranschaulicht:
2325 @lilypond[quote,verbatim,relative=2]
2326 c4( c^\markup { \tiny \sharp } d4.) c8
2328 \once \override TextScript #'avoid-slur = #'inside
2329 \once \override TextScript #'outside-staff-priority = ##f
2330 c4^\markup { \tiny \sharp } d4.) c8
2331 \once \override Slur #'outside-staff-priority = #500
2332 c4( c^\markup { \tiny \sharp } d4.) c8
2335 Eine Änderung der @code{outside-staff-priority} kann auch dazu
2336 benutzt werden, die vertikale Plazierung von individuellen Objekten
2337 zu kontrollieren, auch wenn das Ergebnis nicht immer optimal
2338 ist. Im nächsten Beispiel soll @qq{Text3} oberhalb von @qq{Text4}
2339 gesetzt werden, das Beispiel wurde behandelt in
2340 @ref{Automatické chování,,automatickém chování}. Der Wert der Priorität muss also für
2341 die Eigenschaft @code{TextScript} entweder in der IR oder in der
2342 Tabelle oben festgestellt werden und dann die Priorität für
2343 @qq{Text3} höher eingestellt werden:
2345 @cindex TextScript, Beispiel zur Veränderung
2346 @cindex outside-staff-priority-Eigenschaft, Beispiel
2348 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2351 \once \override TextScript #'outside-staff-priority = #500
2356 Damit wird zwar @qq{Text3} ganz richtig über @qq{Text4}
2357 platziert, aber auch über @qq{Text2}, und @qq{Text4}
2358 wird jetzt weiter unten gesetzt. Eigentlich sollten ja alle
2359 diese Anmerkungen gleichweit vom System entfernt sein.
2360 Dazu muss offensichtlich horizontal etwas Platz gemacht
2361 werden. Das kann erreicht werden mit dem
2362 @code{textLengthOn}-(Textlänge an)-Befehl.
2364 @subheading \textLengthOn (Textlänge berücksichtigen)
2366 @cindex Noten, durch Text gespreizt
2367 @funindex \textLengthOn
2368 @funindex textLengthOn
2369 @funindex \textLengthOff
2370 @funindex textLengthOff
2372 Standardmäßig wird Text, der mit dem Beschriftungsbefehl
2373 @code{\markup} bzw. Äquivalenten erstellt wird, kein
2374 zusätzlicher Platz in Bezug auf die Positionierung der Noten
2375 zugestanden. Der @code{\textLengthOn}-Befehl ändert
2376 dieses Verhalten, so dass die Noten gespreizt werden, wenn
2377 die Breite des Textes es erfordert:
2379 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2380 \textLengthOn % Cause notes to space out to accommodate text
2387 Dieses Verhalten wird mit dem @code{\textLengthOff}-Befehl
2388 rückgängig gemacht. Erinnern Sie sich, dass @code{\once} nur mit
2389 @code{\override}, @code{\set}, @code{\revert} oder @code{unset}
2390 funktioniert, der Befehl kann also nicht zusammen mit
2391 @code{\textLengthOn} benutzt werden.
2393 @cindex Textbeschriftung, Vermeidung von Zusammenstößen
2394 @cindex Zusammenstöße vermeiden mit Textbeschriftung
2396 Textbeschriftung vermeidet auch Noten, die über das System hinausstehen.
2397 Wenn das nicht gewünscht ist, kann die automatische Verschiebung
2398 nach oben hin auch vollständig ausgeschaltet werden, indem die
2399 Priorität auf @code{#f} gesetzt wird. Hier ein Beispiel, wie
2400 eine Textbeschriftung mit diesen Noten reagiert:
2402 @cindex Textbeschriftung, Beispiel zur Veränderung
2403 @cindex outside-staff-priority-Eigenschaft, Beispiel
2405 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2406 % This markup is short enough to fit without collision
2410 % This is too long to fit, so it is displaced upwards
2414 % Turn off collision avoidance
2415 \once \override TextScript #'outside-staff-priority = ##f
2416 c,,2^"Long Text " c'' |
2419 % Turn off collision avoidance
2420 \once \override TextScript #'outside-staff-priority = ##f
2421 \textLengthOn % and turn on textLengthOn
2422 c,,2^"Long Text " % Spaces at end are honored
2429 @cindex Verändern der Positionierung von Dynamikzeichen
2430 @cindex Dynamikzeichen: Positionierung verändern
2432 Dynamikbezeichnung wird üblicherweise unter dem System
2433 gesetzt, kann aber auch nach oben mit dem Befehl
2434 @code{dynamicUp} gezwungen werden. Die Bezeichnung
2435 wird vertikal relativ zu der Note positioniert, an die sie angefügt
2436 wurde. Sie wird vertikal variabel gesetzt in Bezug zu
2437 Innersystemobjekten wie Bögen oder Taktnummern. Damit
2438 können oft recht gute Resultate erreicht werden, wie im
2441 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2446 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\!
2447 ees,2.~\)\mf ees4 r8
2450 Wenn aber Noten und Dynamikzeichen sehr dicht beieinander
2451 stehen, positioniert die automatische Kollisionsvermeidung
2452 später kommende Dynamikzeichen weiter weg, was allerdings
2453 nicht immer die beste Möglichkeit ist, wie in dem folgenden,
2454 etwas gewollten Beispiel zu sehen ist:
2456 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2458 a4\f b\mf c\mp b\p |
2462 Wenn eine ähnliche Situation in @qq{echter} Musik auftaucht,
2463 kann es nötig sein, die Noten etwas zu spreizen, damit die
2464 Dynamikzeichen alle auf der selben vertikalen Position
2465 gesetzt werden können. Dieses Verhalten war im Falle von
2466 Textbeschriftungen möglich mit dem @code{\textLengthOn}-Befehl,
2467 aber es gibt keinen entsprechenden Befehl für Dynamik. Wir
2468 müssen also unsere eigenen Befehle mit @code{\override}
2472 @subheading Verändern der Größe von grobs
2474 @cindex Grob, Größenveränderung
2475 @cindex Größenveränderung von grobs
2477 Zuallererst müssen wir lernen, wie die Größe von Grobs verändert
2478 wird. Alle Grobs besitzen einen Referenzpunkt, der
2479 benutzt wird, um ihre Position in Relation zu ihnen übergeordneten
2480 Objekten zu bestimmen. Dieser Punkt innerhalb des Grobs wird dann
2481 auf einer horizontalen Position (@code{X-offset}) und einer
2482 vertikalen Position (@code{Y-offset}) ausgerichtet, immer bezüglich
2483 des übergeordneten Objektes. Eine horizontale Strecke wird
2484 durch ein Zahlenpaar angegeben (@code{X-extent}), welche
2485 die linke und rechte Grenze relativ zum übergeordneten Objekt
2486 bezeichnen. Die vertikale Strecke wir genauso durch ein
2487 Zahlenpaar (@code{Y-extent}) definiert. Diese Eigenschaften
2488 gehören zu allen Grobs, die das
2489 @code{grob-interface} unterstützen.
2491 @cindex @code{extra-spacing-width}
2493 Standardmäßig haben Außersystemobjekte eine Länge von Null,
2494 so dass sie sich in horizontaler Richtung überlappen können. Das
2495 geschieht, indem dem linken Rand Unendlich zugewiesen wird
2496 und dem rechten Rand minus Unendlich (der Code der
2497 @code{extra-spacing-width}-(zusätzliche Positionierungslänge)-Eigenschaft
2498 lautet: @code{'(+inf.0 . -inf.0)}).
2499 Damit sich diese Objekte also horizontal nicht überschneiden, muss
2500 der Wert von @code{extra-spacing-width} auf
2501 @code{'(0 . 0)} gesetzt werden, sodass die wirkliche Länge eines
2502 Objektes zur Geltung kommt. Mit diesem Befehl wird das für
2503 Dynamik-Zeichen erledigt:
2506 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2510 Schauen wir uns an, wie es mit dem vorigen Beispiel funktioniert:
2512 @cindex DynamicText, Beispiel zur Veränderung
2513 @cindex extra-spacing-width-Eigenschaft, Beispiel
2515 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2517 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2522 Damit werden die Dynamik-Zeichen also wirklich nebeneinander
2523 gesetzt, aber es gibt noch zwei Probleme. Die Zeichen sollten
2524 etwas weiter außeinander stehen und es wäre gut, wenn sie alle
2525 den gleichen Abstand zum System hätte. Das erste Problem ist
2526 einfach behoben. Anstatt der @code{extra-spacing-width}-Eigenschaft
2527 Null zuzuweisen, können wir auch einen etwas größeren Wert
2528 wählen. Die Einheit wird gemessen in dem Abstand zwischen zwei
2529 Notenlinien, es scheint also gut, den rechten und linken
2530 Rand eine halbe Einheit zu vergrößern:
2532 @cindex DynamicText, Beispiel zur Veränderung
2533 @cindex extra-spacing-width-Eigenschaft, Beispiel
2535 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2537 % Extend width by 1 staff space
2538 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2543 Das sieht schon besser aus, aber es wäre noch besser, wenn die
2544 Dynamik-Zeichen alle an einer Linie ausgerichtet wären, anstatt
2545 höher und tiefer zu sitzen. Das kann mit der
2546 @code{staff-padding}-Eigenschaft erreicht werden,
2547 die wir uns im folgenden Abschnitt genauer anschauen werden.
2551 @node Střety předmětů
2552 @section Střety předmětů
2553 @translationof Collisions of objects
2556 * Přesouvání předmětů::
2557 * Oprava překrývajících se not::
2558 * Příklady ze života::
2561 @node Přesouvání předmětů
2562 @subsection Přesouvání předmětů
2563 @translationof Moving objects
2565 @cindex Verschieben von überschneidenden Objekten
2566 @cindex Verschieben von Zusammenstößen
2567 @cindex Zusammenstöße vermeiden
2568 @cindex Objekte, verschieben von Zusammestößen
2569 @cindex Vermeiden von Zusammenstößen
2571 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht
2572 perfekt. Einige Notationselemente können sich überschneiden. Das
2573 ist nicht schön, aber zum Glück sehr selten. Normalerweise müssen
2574 die Objekte zur Klarheit oder aus ästhetischen Gründen verschoben
2575 werden -- sie könnten besser aussehen, wenn sie etwas zusätzlichen
2578 Es gibt im Grunde drei Herangehensweisen, überlappende Notation
2579 zu verbessern. Man sollte sie in der folgenden Reihenfolge
2584 Die @strong{Richtung} eines der überlappenden Objekte kann
2585 geändert werden, indem die vordefinierten Befehle für
2586 Innersystemobjekte verwendet werden, wie beschrieben in
2587 @ref{Předměty uvnitř notové osnovy,,předmětech uvnitř notové osnovy)}. Hälse, Bögen, Balken, Dynamik-Zeichen
2588 und Triolen können auf diese Weise einfach umgeordnet
2589 werden. Beschränkt ist diese Methode insofern, als es nur
2590 zwei Möglichkeiten zur Veränderung gibt: oben oder unten.
2593 Die @strong{Objekteigenschaft}, die LilyPond benutzt um die
2594 Layout-Objekte zu platzieren, können mit dem
2595 @code{\override}-Befehl positioniert werden. Die Vorteile
2596 von Änderungen dieser Art sind a) dass einige Objekte
2597 automatisch verschoben werden, wenn es nötig ist Platz zu
2598 schaffen und b) ein einziges @code{\override} sich auf
2599 alle Fälle eines Objekttyps bezieht. Zu diesen Eigenschaften
2605 @code{direction} (Richtung)
2607 Das wurde schon detailliert behandelt, siehe
2608 @ref{Předměty uvnitř notové osnovy,,předměty uvnitř notové osnovy}.
2611 @code{padding}, @code{right-padding}, @code{staff-padding} (Verschiebung)
2613 @cindex Padding-Eigenschaft
2614 @cindex right-padding-Eigenschaft
2615 @cindex staff-padding-Eigenschaft
2616 @cindex Verschieben (padding)
2617 @cindex Füllung (padding)
2618 @cindex padding (Füllung)
2620 Wenn ein Objekt platziert wird, bestimmt der Wert seiner
2621 @code{padding}-(Füllungs)-Eigenschaft die Größe des
2622 Abstandes, der zwischen dem Objekt selber und dem
2623 Objekt, relativ zu welchem es positioniert wird, gelassen
2624 werden muss. Dabei zählt der @code{padding}-Wert
2625 des Objektes, das platziert werden soll, der @code{padding}-Wert
2626 des Objektes, das schon gesetzt wurde, wird hingegen
2627 ignoriert. Abstände mit @code{padding} können zu
2628 allen Objekten hinzugefügt werden, die das
2629 @code{side-position-interface} unterstützen.
2631 Anstelle von @code{padding} wird die Position von
2632 Versetzungszeichengruppen durch die Eigenschaften
2633 @code{right-padding} bestimmt. Diese Eigenschaft wird im
2634 @code{AccidentalPlacement}-(Versetzungszeichen-Positionierungs)-Objekt
2635 gefunden, das sich innerhalb des @strong{Staff}-Kontexts
2636 befindet. Während des Notensatzes werden die Notenköpfe
2637 zuerst gesetzt und dann die Versetzungszeichen, wenn denn
2638 welche gesetzt werden, durch die @code{right-padding}-Eigenschaft
2639 auf die linke Seite der Notenköpfe positioniert, um die Entfernung
2640 von den Notenköpfen und zwischen den einzelnen Versetzungszeichen zu
2641 bestimmen. Also nur die @code{right-padding}-(Verschiebung nach rechts)-Eigenschaft
2642 des @code{AccidentalPlacement}-Objekts hat Einfluss auf die
2643 Positionierung der Versetzungszeichen.
2645 Die @code{staff-padding}-(Verschiebung zum System)-Eigenschaft
2646 ist sehr ähnlich wie die @code{padding}-Eigenschaft:
2647 @code{padding} bestimmt den Minimalabstand zwischen
2648 einem Objekt, das das @code{side-position-interface}
2649 unterstützt, und dem nächsten anderen Objekt (normalerweise
2650 die Note oder Notenlinie); @code{staff-padding} dagegen
2651 wirkt nur auf Objekte die immer außerhalb des Notensystems
2652 sind -- damit wird der minimale Abstand bestimmt, der
2653 zwischen dem Objekt und dem Notensystem gelassen werden
2654 soll. @code{staff-padding} hat also @strong{keinen Einfluss}
2655 auf Objekte, die relativ zu einer Note positioniert werden, sondern
2656 nur auf solche, die zum System relativ stehen. Wenn es mit einem
2657 anderen Objekt eingesetzt wird, erhält man keine Fehlermeldung, aber
2658 der Befehl hat auch keine Auswirkungen.
2660 Um herauszufinden, welche @code{padding}-Eigenschaft für
2661 das bestimmte Objekt nötig, ist, das Sie verschieben wollen,
2662 müssen Sie in der IR nach den Objekt-Eigenschaften schauen.
2663 Dabei sollten Sie bedenken, dass sich die @code{padding}-Eigenschaften
2664 nicht unbedingt in dem Objekt selber befinden, schauen Sie
2665 also auch in Objekten nach, die offensichtlich Ähnlichkeiten
2668 Alle @code{padding}-Werte werden in Notenlinienabständen
2669 gemessen. Für die meisten Objekte ist der Wert ungefähr auf
2670 1.0 oder weniger gesetzt (das variiert von Objekt zu Objekt).
2671 Der Wert kann geändert werden, wenn ein größerer (oder
2672 kleinerer) Abstand gewünscht wird.
2675 @code{self-alignment-X} (Selbstpositionierung)
2677 @cindex self-alignment-X-Eigenschaft
2678 @cindex Samoumístění předmětů
2679 @cindex Ausrichtung von Objekten
2681 Diese Eigenschaft kann benutzt werden, um ein Objekt
2682 nach links, rechts oder zentriert an dem Referenzpunkt des Objekts
2683 auszurichten, an das es verknüpft ist. Es kann bei allen
2684 Objekten benutzt werden, die das @code{self-alignment-interface}
2685 unterstützen. Das sind üblicherweise Objekte, die Text
2686 enthalten. Die möglichen Werte der Eigenschaft sind @code{LEFT},
2687 @code{RIGHT} oder @code{CENTER}. Alternativ kann ein
2688 numerischer Wert zwischen @code{-1} und @code{+1}
2689 bestimmt werden: @code{-1} heißt linksbündig, @code{+1}
2690 rechtsbündig und Zahlen dazwischen bewegen den Text
2691 schrittweise von links nach rechts. Zahlen größer als
2692 @code{1} können angegeben werden, um den Text
2693 noch weiter nach links zu bewegen, oder weniger als @code{-1},
2694 um ihn weiter nach rechts zu schieben. Eine Änderung
2695 um @code{1} des Wertes entspricht einer Bewegung um
2696 die halbe Textbreite.
2699 @code{extra-spacing-width} (zusätzliche Breite)
2701 @cindex extra-spacing-width-Eigenschaft
2703 Diese Eigenschaft steht für alle Objekte zur Verfügung, die
2704 das @code{item-interface} unterstützen. Es braucht zwei
2705 Zahlen als Argument, die erste wird zur rechten Ausdehnung,
2706 die zweite zur linken Ausdehnung hinzugerechnet. Negative
2707 Zahlen verschieben die Ausdehnung nach rechts, positive nach
2708 links, um also ein Objekt zu verbreitern, muss die erste
2709 Zahl negativ und die zweite positiv sein. Allerdings beachten
2710 nicht alle Objekte beide Zahlen. Das
2711 @code{accidental}-(Versetzungszeichen)-Objekt etwa beachtet
2712 nur erste Zahl für die linke Ausdehnung.
2715 @code{staff-position} (Notensystempositionierung)
2717 @cindex staff-position-Eigenschaft
2719 @code{staff-position} ist eine Eigenschaft des
2720 @code{staff-symbol-referencer-interface}, die von Objekten unterstützt
2721 wird, die relativ zum Notensystem (engl. staff) positioniert werden.
2722 Hiermit wird die vertikale Position eines Objekts relativ zur
2723 Mittellinie des Systems in halben Notenlinienabständen angegeben.
2724 Das ist sehr nützlich, um Zusammenstöße zwischen Layout-Objekten
2725 wie Ganztaktpausen, Bögen und Noten in verschiedenen Stimmen
2729 @code{force-hshift} (vertikale Verschiebung erzwingen)
2731 @cindex force-hshift-Eigenschaft
2733 Eng beieinander stehende Noten in einem Akkord oder Noten, die zum
2734 gleichen Zeitpunkt in unterschiedlichen Stimmen stehen, werden
2735 in zwei oder manchmal auch mehr Kolumnen gesetzt, um Kollisionen
2736 zu umgehen. Diese Kolumnen werden Notenkolumnen genannt;
2737 ein @code{NoteColumn}-Objekt wird erstellt um die Noten in den
2740 Die @code{force-hshift}-(erzwinge horizontale Verschiebung)-Eigenschaft
2741 ist eine Eigenschaft von @code{NoteColumn} (bzw. vom
2742 @code{note-column-interface}). Eine Veränderung dieser Eigenschaft
2743 macht es möglich, eine Notenkolumne zu verschieben, dabei gilt als
2744 Einheit die Breite einer Kolumne, also die Breite des Notenkopfes der
2745 ersten Stimme. Diese Eigenschaft kann in Situationen benutzt werden,
2746 in denen die normalen @code{\shiftOn}-Befehle (siehe auch
2747 @ref{Stimmen explizit beginnen}) das Problem nicht beseitigen.
2748 Diese Eigenschaft ist besser in solchen Fällen zu verwenden als die
2749 @code{extra-offset}-Eigenschaft, weil man die richtige Entfernung nicht
2750 in Notenlinienabständen ausrechnen muss. Wenn eine Note in eine
2751 Notenkolumne oder aus ihr heraus geschoben wird, werden auch andere
2752 Funktionen beeinflusst, wie etwa die Verschmelzung von Notenköpfen.
2757 Zu guter Letzt, wenn alles andere nicht funktioniert, können Objekte auch
2758 manuell positioniert werden, entweder vertikal in Bezug auf die
2759 Mittellinie des Systems, oder indem sie einen beliebigen Abstand weit
2760 auf eine neue Position verschoben werden. Der Nachteil ist, dass die
2761 richtigen Werte für eine gute Position manuell ausprobiert werden müssen,
2762 meistens durch Herantasten an den richtigen Wert, und das für jedes
2763 einzelne Objekt extra. Und weil diese Verschiebungen erst vorgenommen
2764 werden, wenn LilyPond alle anderen Objekte gesetzt hat, ist man als
2765 Notensetzer selber dafür verantwortlich, ob es Zusammenstöße gibt.
2766 Am schwerwiegendsten ist aber die Tatsache, dass die
2767 Verschiebungskoordinaten wahrscheinlich neu errechnet oder
2768 ausprobiert werden müssen, wenn sich an den Noten und deren
2769 Layout später irgend etwas ändert. Die Eigenschaften, die für diese
2770 Arte der manuellen Verschiebung verwendet werden können, sind:
2773 @item extra-offset (zusätzlicher Abstand)
2775 @cindex extra-offset-Eigenschaft
2777 Diese Eigenschaft gehört zu jedem Layout-Objekt, das das
2778 @code{grob-interface} unterstützt. Sie braucht ein Zahlenpaar,
2779 das die exakte Verschiebung in horizontaler und vertikaler Richtung
2780 bezeichnet. Negative Zahlen verschieben das Objekt nach links oder
2781 unten. Die Einheit sind Notenlinienabstände. Die zusätzliche
2782 Positionierung wird vorgenommen, nachdem alle anderen Objekte
2783 platziert sind, weshalb ein Objekt irgendwohin verschoben werden
2784 kann, ohne den restlichen Satz zu beeinflussen.
2786 @item positions (Position)
2788 @cindex positions-Eigenschaft
2790 Diese Eigenschaft ist am sinnvollsten, um die Steigung und die
2791 Höhe von Balken, Bögen und Triolenklammern anzupassen.
2792 Sie braucht ein Zahlenpaar, das die Position des rechten und linken
2793 Endes relativ zur Mittellinie des Notensystems bestimmt. Die
2794 Einheit sind Notenlinienabstände. Bögen allerdings können nicht
2795 beliebig weit weg positioniert werden. LilyPond erstellt zunächst eine
2796 Liste an möglichen Positionen für den Bogen und findet normalerweise
2797 die Version, die @qq{am besten aussieht}. Wenn die
2798 @code{positions}-Eigenschaft verändert worden ist, wird der
2799 Bogen aus der Liste gewählt, der der gewünschten Position am
2805 Ein bestimmtes Objekt hat vielleicht nicht alle dieser Eigenschaften.
2806 Darum ist es nötig, in der IR nachzuschlagen, welche Eigenschaften
2807 ein bestimmtes Objekt unterstützt.
2809 Hier ist eine Liste an Objekten, die am wahrscheinlichsten an einer
2810 Kollision beteiligt sind, daneben findet sich die Bezeichnung des
2811 Objektes, mit der Sie es in der IR finden, um zu bestimmen,
2812 welche Eigenschaften benutzt werden können, um es zu verschieben.
2814 @multitable @columnfractions .5 .5
2815 @headitem Objekttyp @tab Objektbezeichnung
2816 @item Articulationszeichen @tab @code{Script}
2817 @item Balken @tab @code{Beam}
2818 @item Dynamikzeichen (vertikal) @tab @code{DynamicLineSpanner}
2819 @item Dynamikzeichen (horizontal) @tab @code{DynamicText}
2820 @item Fingersatz @tab @code{Fingering}
2821 @item Übungs-/Textmarken @tab @code{RehearsalMark}
2822 @item Legatobögen @tab @code{Slur}
2823 @item Text z. B. @code{^"text"} @tab @code{TextScript}
2824 @item Bindebögen @tab @code{Tie}
2825 @item N-tolen @tab @code{TupletBracket}
2829 @node Oprava překrývajících se not
2830 @subsection Oprava překrývajících se not
2831 @translationof Fixing overlapping notation
2833 Hier soll nun gezeigt werden, wie die Eigenschaften, die im
2834 vorigen Abschnitt vorgestellt wurden, bei der Problemlösung
2835 mit sich überschneidenden Notationselementen eingesetzt
2838 @subheading padding (Fülleigenschafte)
2840 @cindex padding (Verschiebungs-Eigenschaft)
2841 @cindex Überschneidende Notation korrigieren
2842 @cindex Korrigieren von überschneidender Notation
2844 Die @code{padding}-(Verschiebungs-)Eigenschaft kann benutzt
2845 werden, um den Abstand zwischen Symbolen zu vergößern (oder
2846 zu verkleinern), die über oder unter den Noten gesetzt werden.
2848 @cindex Script, Beispiel zur Veränderung
2849 @cindex Verschiebungs-Eigenschaft, Beispiel
2850 @cindex padding (Verschiebuns-Eigenschaft), Beispiel
2852 @lilypond[quote,fragment,relative=1,verbatim]
2854 \override Script #'padding = #3
2858 @cindex MetronomMark, Beispiel zur Veränderung
2859 @cindex Verschiebungs-Eigenschaft, Beispiel
2860 @cindex padding (Verschiebuns-Eigenschaft), Beispiel
2862 @lilypond[quote,fragment,relative=1,verbatim]
2863 % This will not work, see below
2864 \override MetronomeMark #'padding = #3
2868 \override Score.MetronomeMark #'padding = #3
2873 Im zweiten Beispiel können Sie sehen, wie wichtig es ist den richtigen
2874 Kontext anzugeben. Weil das @code{MetronomeMark}-Objekt
2875 sich im @code{Score}-Kontext befindet, werden Eigenschaftsänderungen
2876 im @code{Voice}-Kontext einfach ignoriert. Für mehr Einzelheiten siehe
2877 @ruser{Eigenschaften verändern}.
2879 Wenn die @code{padding}-Eigenschaft eines Objektes erhöht wird, das
2880 sich in einem Stapel von Objekten befindet, die nach ihrer
2881 Außersystempriorität (@code{outside-staff-priority}) positioniert werden,
2882 werden das Objekt und alle, die sich außerhalb davon befinden,
2883 entsprechend verschoben.
2885 @subheading right-padding (Verschieben nach links)
2887 @cindex Verschiebung nach rechts
2888 @cindex right-padding-Eigenschaft (Verschiebung nach rechts)
2890 Die @code{right-padding}-Eigenschaft wirkt sich auf den Abstand
2891 zwischen einem Versetzungszeichen und der Note, auf das sie sich
2892 bezieht, aus. Sie wird nicht sehr oft benötigt, aber die
2893 Standardanordnung kann für einige spezielle Versetzungszeichen-Glyphen
2894 oder Kombinationsglyphen,
2895 wie sie für Mikrotonale Musik benutzt werden, falsch sein. Derartige
2896 Glyphen müssen notiert werden, indem man den Stencil des
2897 Versetzungszeichens mit einer Textbeschriftung (Markup) ersetzt,
2898 wie im folgenden Beispiel:
2900 @cindex Versetzungszeichen, Beispiel zur Veränderung
2901 @cindex Accidental, Beispiel zur Veränderung
2902 @cindex Text-Eigenschaft, Beispiel
2903 @cindex stencil-Eigenschaft, Beispiel
2904 @cindex AccidentalPlacement, Beispiel zur Veränderung
2905 @cindex right-padding-Eigenschaft, Beispiel
2906 @cindex Verschiebung nach rechts (rigth-padding), Beispiel
2908 @lilypond[quote,ragged-right,verbatim]
2909 sesquisharp = \markup { \sesquisharp }
2912 % This prints a sesquisharp but the spacing is too small
2913 \once \override Accidental
2914 #'stencil = #ly:text-interface::print
2915 \once \override Accidental #'text = #sesquisharp
2917 % This improves the spacing
2918 \once \override Score.AccidentalPlacement #'right-padding = #0.6
2919 \once \override Accidental
2920 #'stencil = #ly:text-interface::print
2921 \once \override Accidental #'text = #sesquisharp
2927 Dazu ist aber ein @code{\override}-Befehl für den Stencil des
2928 Versetzungszeichens nötig, der bisher nicht behandelt wurde.
2929 Der Typ des Stencils muss eine Prozedur sein, die hier geändert
2930 wurde, um den Inhalt der @code{text}-Eigenschaft des
2931 @code{Accidental} (Versetzungszeichen)-Objekts zu setzen. Die
2932 @code{text}-Eigenschaft wiederum wird als @code{sesquisharp}-Glyph
2933 definiert. Dieser Glyph wird dann weiter vom Notenkopf entfernt
2934 durch die Veränderung von @code{right-padding} mit einem
2935 @code{\override}-Befehl.
2937 @subheading staff-padding (Systemfüllungseigenschaft)
2939 @cindex staff-padding-Eigenschaft
2940 @cindex Objekte an der Grundlinie ausrichten
2941 @cindex Ausrichten von Objekten an der Grundlinie
2943 @code{staff-padding} (Verschiebung zum Notensystem) kann
2944 verwendet werden um Objekte wie Dynamikzeichen an einer
2945 Grundlinie auf einer bestimmten Höhe über dem System
2946 auszurichten, sodass sie nicht von der Position der Note abhängen,
2947 an die sie angehängt sind. Diese Verschiebung ist keine Eigenschaft
2948 von @code{DynamicText}, sondern von @code{DynamicLineSpanner}.
2949 Das liegt daran, dass die Grundlinie sich gleicherweise auf
2950 @strong{alle} Dynamikzeichen beziehen soll, also auch auf die,
2951 die als Strecker erstellt wurden. Hier also die Lösung, die Dynamikzeichen
2952 aus dem Beispiel des vorigen Abschnitts auszurichten:
2954 @cindex DynamikText, Beispiel zur Veränderung
2955 @cindex extra-spacing-width-Eigenschaft, Beispiel
2956 @cindex DynamicLineSpanner, Beispiel zur Veränderung
2957 @cindex staff-padding-Eigenschaft, Beispiel
2959 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2961 % Extend width by 1 unit
2962 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2963 % Align dynamics to a base line 2 units above staff
2964 \override DynamicLineSpanner #'staff-padding = #2
2969 @subheading self-alignment-X (Selbstausrichtung-X-Eigenschaft)
2971 @cindex self-alignment-X-Eigenschaft
2973 Das nächste Beispiel zeigt, wie man den Zusammenstoß
2974 einer Fingersatzbezeichnung mit einem Notenhals
2975 verhindern kann, indem die rechte Ecke an dem
2976 Referenzpunkt der abhängigen Note angeordnet wird:
2978 @cindex StringNumber, Beispiel zur Veränderung
2980 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2983 \once \override StringNumber #'self-alignment-X = #RIGHT
2988 @subheading staff-position (Position innerhalb des Systems)
2990 @cindex staff-position-Eigenschaft
2991 @cindex Notensystem-Position-Eigenschaft
2992 @cindex Střety předmětů v osnově
2993 @cindex Zusammenstöße von Objekten im System
2995 Vieltaktpausen in einer Stimmen können mit Noten in anderen
2996 Stimmen kollidieren. Da diese Pausen zentriert zwischen den
2997 Taktlinien gesetzt werden, würde es für LilyPond eine recht große
2998 Anstrengung bedeuten herauszufinden, welche Noten mit ihnen
2999 zusammenstoßen könnten, denn alle Kollisionsvermeidung
3000 für Noten und Pausen funktioniert nur für Noten bzw. Pausen, die
3001 zur selben Zeit auftreten. Hier ein typisches Beispiel für eine
3002 Kollision dieser Art:
3004 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
3005 << { c4 c c c } \\ { R1 } >>
3008 Die beste Lösung ist es, die Ganztaktpause nach unten zu
3009 schieben, denn die Pause ist in der zweiten Stimme. Per
3010 Standardeinstellung für die zweite Stimme (@code{\voiceTwo},
3011 also die zweite Stimme in der
3012 @code{<<@{...@} \\ @{...@}>>}-Konstruktion) wird die
3013 Position auf dem System (@code{staff-position}) auf -4
3014 für @code{MultiMeasureRest}, in unserem Beispiel muss
3015 es also bspw. auf die Position @code{-8} gesetzt werden,
3016 d.h. vier halbe Notenlinienabstände weiter nach unten:
3018 @cindex MultiMeasureRest, Beispiel zur Veränderung
3019 @cindex Ganztaktpausen, Beispiel zur Veränderung
3020 @cindex staff-position-Eigenschaft, Beispiel
3022 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
3026 \override MultiMeasureRest #'staff-position = #-8
3031 Das ist besser, als etwa @code{extra-offset} zu benutzen, denn
3032 in unserem Fall wird die Hilfslinie der Pause automatisch gesetzt.
3035 @subheading extra-offset (Genaues Positionieren)
3037 @cindex extra-offset-Eigenschaft
3038 @cindex Zusätzlicher Abstand, Positionierung
3039 @cindex Umístění předmětů
3040 @cindex Objekte, Positionierung
3042 Die @code{extra-offset}-Eigenschaft bietet vollständige Kontrolle
3043 über die umístění předmětů in horizontaler und vertikaler
3046 Im Beispiel unten ist das zweite Fingersatzzeichen (@code{Fingering}) etwas nach
3047 links und 1,8 Notenlinienabstände nach unten verschoben:
3049 @cindex Fingersatz, Beispiel zur Veränderung
3050 @cindex extra-offset-Eigenschaft, Beispiel
3052 @lilypond[quote,fragment,relative=1,verbatim]
3055 \once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
3060 @subheading Ausrichtungseigenschaft
3062 @cindex positions-Eigenschaft
3063 @cindex Kontrolle über Triolen, Bögen und Balken manuell
3064 @cindex manuelle Kontrolle über Triolen, Bögen, Balken
3065 @cindex Balken, manuelle Kontrolle
3066 @cindex Bögen, manuelle Kontrolle
3067 @cindex Legatobögen, manuelle Kontrolle
3068 @cindex Phrasierungsbögen, manuelle Kontrolle
3069 @cindex Triollen-Klammer, manuelle Kontrolle
3071 Die @code{positions}-Eigenschaft erlaubt die Kontrolle von Position und
3072 Steigung von Balken, Legato- und Phrasierungsbögen sowie Triolenklammern.
3073 Hier ein Beispiel, in der ein unschöner Phrasierungsbogen auftritt, weil
3074 er den Bogen des Vorschlags vermeidet:
3076 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3077 r4 \acciaccatura e8\( d8 c~ c d c d\)
3081 Man könnte einfach den Phrasierungsbogen oberhalb der Noten setzen, und
3082 das wäre auch die beste Lösung:
3084 @cindex Phrasierungsbogen, Beispiel zur Veränderung
3085 @cindex positions-Eigenschaft, Beispiel
3086 @cindex Positionierung, Beispiel
3088 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3091 \acciaccatura e8\( d8 c~ c d c d\)
3095 aber wenn es einen Grund geben sollte, warum das nicht geht, könnte
3096 man das linke Ende des Phrasierungsbogens etwas nach unten verschieben,
3097 indem man die @code{positions}-Eigenschaft einsetzt. Damit
3098 verschwindet auch die etwas unschöne Form:
3100 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3102 \once \override PhrasingSlur #'positions = #'(-4 . -3)
3103 \acciaccatura e8\( d8 c~ c d c d\)
3106 Hier noch ein weiteres Beispiel aus der Einleitung von Chopins
3107 Prelude Op. 28 Nr. 2, das untere System. Wie zu sehen ist,
3108 stößt der Balken mit den oberen Noten zusammen:
3110 @lilypond[quote,verbatim,fragment,ragged-right]
3113 << { b,8 ais, b, g, } \\ { e, g e, g } >>
3114 << { b,8 ais, b, g, } \\ { e, g e, g } >>
3119 Das kann manuell gelöst werden, indem beide Enden des Balkens
3120 von ihrer Position 2 Notenlinienabstände über der Mittellinie
3121 hochgeschoben werden, etwa auf 3:
3123 @cindex Balken, Beispiel zur Veränderung
3124 @cindex positions-Eigenschaft, Beispiel
3125 @cindex Positionierung, Beispiel
3127 @lilypond[quote,verbatim,fragment,ragged-right]
3131 \override Beam #'positions = #'(3 . 3)
3136 << { b,8 ais, b, g, } \\ { e, g e, g } >>
3141 Hier ist zu beobachten, dass die Veränderung sich auch auf die
3142 weiteren Achtelbalken der ersten Stimme auswirkt, während sie keine
3143 Auswirkung auf die Balken der zweiten Stimme hat.
3145 @subheading force-hshift (vertikale Verschiebunseigenschaft)
3147 @cindex force-hshift-Eigenschaft
3148 @cindex Vertikale Verschiebung erzwingen
3150 An diesem Punkt können wir den letzten Feinschliff an unserem
3151 Chopin-Beispiel vornehmen, das wir behandelt haben in
3152 @ref{Ich höre Stimmen}. Wir hatten es in folgende Form
3155 @lilypond[quote,verbatim,fragment,ragged-right]
3156 \new Staff \relative c'' {
3173 Die unteren zwei Noten des ersten Akkords (also die in der
3174 dritten Stimme) sollten nicht aus der Notenkolumne der
3175 oberen zwei Noten weggeschoben werden. Um das zu
3176 korrigieren, setzen wir @code{force-hshift}, das eine
3178 @code{NoteColumn} ist, für diese Noten auf Null.
3179 Die untere Note des zweiten Akkordes wird am besten
3180 direkt rechts von den oberen Noten gesetzt. Das erreichen
3181 wir, indem wir @code{force-hshift} für diese Note auf
3182 0.5 setzen, also eine halbe Notenkopfbreite nach rechts von
3183 der Kolumne der oberen Noten aus.
3185 Hier das Endergebnis:
3187 @cindex Notenkolumne, Beispiel zur Veränderung
3188 @cindex force-hshift-Eigenschaft, Beispiel
3189 @cindex vertikale Verschiebung, Beispiel
3191 @lilypond[quote,verbatim,fragment,ragged-right]
3192 \new Staff \relative c'' {
3201 \once \override NoteColumn #'force-hshift = #0
3203 \once \override NoteColumn #'force-hshift = #0.5
3212 @node Příklady ze života
3213 @subsection Příklady ze života
3214 @translationof Real music example
3216 Das Kapitel zu Optimierungen soll mit einem komplizierten Beispiel
3217 beendet werden, in dem verschiedene Optimierungen vorgenommen
3218 werden müssen, bis das Ergebnis gut aussieht. Das Beispiel wurde
3219 ganz bewusst gewählt um die Benutzung der Notationsreferenz
3220 zu zeigen, wenn ungewöhnliche Notationsprobleme gelöst werden
3221 müssen. Es ist nicht repräsentativ für normale Notationsprojekte,
3222 lassen Sie sich also nicht durch dieses Beispiel entmutigen! Zum
3223 Glück sind Probleme wie die hier gezeigten nicht sehr häufig.
3225 Das Beispiel stammt aus Chopins Premiére Ballade, Op. 23, Takte
3226 6--9, der Übergang vom Lento der Einleitung zum Moderato.
3227 Hier zunächst der Satz, wie er aussehen soll, allerdings ohne
3228 Dynamik, Fingersatz und Pedalbezeichnung, um das Beispiel nicht
3229 zu kompliziert zu machen.
3231 @c This example should not be indexed
3232 @lilypond[quote,ragged-right,line-width=6\in]
3233 rhMusic = \relative c'' {
3236 \once \override Tie #'staff-position = #3.5
3240 \mergeDifferentlyHeadedOn
3241 \mergeDifferentlyDottedOn
3242 bes2.^\markup { \bold "Moderato" } r8
3248 % Reposition the c2 to the right of the merged note
3249 \once \override NoteColumn #'force-hshift = #1.0
3250 % Move the c2 out of the main note column so the merge will work
3257 % Stem on the d2 must be down to permit merging
3259 % Stem on the d2 should be invisible
3260 \once \override Stem #'transparent = ##t
3268 \mergeDifferentlyHeadedOff
3269 \mergeDifferentlyDottedOff
3274 lhMusic = \relative c' {
3276 <d g, d>1)\arpeggio |
3283 \new Staff = "RH" <<
3287 \new Staff = "LH" <<
3296 Die erste Überlegung ist, dass das System für die rechte Hand
3297 im dritten Takt vier Stimmen braucht. Das sind die fünf
3298 Achtelnoten mit Balken, das übergebundene C, die Halbe D, die
3299 mit der Achtel D verschmolzen ist, und die punktierte Viertel
3300 Fis, die auch mit einer Achtelnote verschmolzen ist. Alles
3301 andere ist eine einzige Stimme, es ist also am einfachsten, die
3302 zusätzlichen drei Stimmen nur zeitweise zu erstellen, wenn sie
3303 auftreten. Wenn Sie vergessen haben, wie man das anstellt,
3304 schauen Sie sich nochmal den Abschnitt @ref{Ich höre Stimmen}
3305 und @ref{Stimmen explizit beginnen} an. Hier wollen wir explizit
3306 begonnene Stimmen für die polyphone Stelle benutzen, weil LilyPond
3307 Kollisionen besser vermeidet, wenn alle Stimmen auf diese Weise
3308 explizit begonnen werden.
3311 Wir wollen anfange, indem wir die Noten in zwei Variablen
3312 notieren und dann die Systemstruktur in einer
3313 @code{\score}-Umgebung erstellen. Das ist, was LilyPond
3316 @c line-width ensures no break
3317 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3318 rhMusic = \relative c'' {
3319 \new Voice { r2 c4. g8 |
3323 % Start polyphonic section of four voices
3325 { c,8 d fis bes a } % continuation of main voice
3339 g2. % continuation of main voice
3343 lhMusic = \relative c' {
3352 \new Staff = "RH" <<
3356 \new Staff = "LH" <<
3365 Alle Noten sind richtig, aber die Positionierung sehr
3366 verbesserungsbedürftig. Der Bindebogen kollidiert mit
3367 der veränderten Taktart zusammen, einige Noten werden nicht
3368 verschmolzen und einige Notationselemente fehlen ganz.
3369 Behandeln wir zunächst die einfacheren Dinge. Der
3370 Balken kann durch eine manuelle Begrenzung einfach
3371 korrigiert werden, und auch der Legatobogen der linken
3372 Hand und der Phrasierungsbogen der rechten Hand
3373 sind schnell gesetzt, denn sie wurden schon in der
3374 Übung erklärt. Damit haben wir folgendes Notenbild:
3376 @c line-width ensures no break
3377 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3378 rhMusic = \relative c'' {
3384 % Start polyphonic section of four voices
3386 { c,8 d fis bes a } % continuation of main voice
3400 g2.\) % continuation of main voice
3404 lhMusic = \relative c' {
3413 \new Staff = "RH" <<
3417 \new Staff = "LH" <<
3426 Der erste Takt stimmt jetzt schon. Der zweite Takt enthält ein
3427 Arpeggio und wird mit einer doppelten Taktlinie beschlossen.
3428 Wie können wir diese notieren, denn sie sind im Handbuch zum
3429 Lernen nicht vorgekommen? Hier brauchen wir jetzt die
3430 Notationsreferenz. Ein Blick in den Index zeigt uns die
3431 Einträge für @qq{Arpeggio} und @qq{Taktlinien}: ein
3432 Arpeggio also erstellt man mit dem Befehl @code{\arpeggio}
3433 hinter einem Akkord und eine doppelte Taktlinie wird mit dem
3434 Befehl @code{\bar "||"} erstellt. Das ist einfach. Als nächstes
3435 muss der Zusammenstoß des Bindebogens mit der Taktartbezeichnung
3436 gelöst werden. Das geht am besten, indem wir den Bogen nach
3437 oben verschieben. Wie man Objekte verschiebt wurde schon
3438 behandelt in @ref{Přesouvání předmětů,,přesouvání předmětů}, wo stand, dass Objekte
3439 die relativ zum System positioniert werden, vertikal verschoben werden
3440 können, indem ihre @code{staff-position}-Eigenschaft
3441 geändert wird, die in halben Notenlinienabständen relativ
3442 zur Mittellinie angegeben wird. Dieser @code{\override}-Befehl
3443 also, direkt vor die erste übergebundene Note gestellt, verschiebt
3444 den Bindebogen (@code{tie}) 3,5 halbe Notenlinienabstände
3445 über die Mittellinie:
3447 @code{\once \override Tie #'staff-position = #3.5}
3449 Damit ist auch der zweite Takt vollständig:
3451 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3452 rhMusic = \relative c'' {
3455 \once \override Tie #'staff-position = #3.5
3460 % Start polyphonic section of four voices
3462 { c,8 d fis bes a } % continuation of main voice
3476 g2.\) % continuation of main voice
3480 lhMusic = \relative c' {
3482 <d g, d>1)\arpeggio |
3489 \new Staff = "RH" <<
3493 \new Staff = "LH" <<
3502 In Takt drei beginnt der Moderato-Abschnitt. In der
3503 Übung wurde behandelt, wie man fetten Text mit dem
3504 @code{\markup}-Befehl eingibt, es ist also einfach, das
3505 @qq{Moderato} in fetter Schrift hinzuzufügen. Wie aber werden Noten
3506 verschmolzen? Hier nehmen wir wieder die Notationsreferenz
3507 zu Hilfe. Die Suche nach @qq{Verschmelzen} (engl. merge)
3508 im Index führt uns zu den Befehlen, um Noten mit
3509 unterschiedlichen Köpfen und unterschiedlichen Punkten
3510 zu verschmelzen, in @ruser{Auflösung von Zusammenstößen}. In unserem
3511 Beispiel müssen sowohl unterschiedliche Köpfe also auch
3512 unterschiedliche Punktierung verschmolzen werden, wir
3513 brauchen also die Befehle
3516 \mergeDifferentlyHeadedOn
3517 \mergeDifferentlyDottedOn
3521 aus der Notationsreferenz, die wir an den Beginn unseres
3522 Abschnittes stellen und
3525 \mergeDifferentlyHeadedOff
3526 \mergeDifferentlyDottedOff
3530 um das Verhalten wieder auszuschalten. Das sieht so aus:
3532 @cindex Bindebogen, Beispiel zur Veränderung
3533 @cindex staff-position-Eigenschaft, Beispiel
3535 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3536 rhMusic = \relative c'' {
3539 \once \override Tie #'staff-position = #3.5
3543 bes2.^\markup { \bold "Moderato" } r8
3544 \mergeDifferentlyHeadedOn
3545 \mergeDifferentlyDottedOn
3546 % Start polyphonic section of four voices
3548 { c,8 d fis bes a } % continuation of main voice
3562 \mergeDifferentlyHeadedOff
3563 \mergeDifferentlyDottedOff
3564 g2.\) % continuation of main voice
3568 lhMusic = \relative c' {
3570 <d g, d>1)\arpeggio |
3577 \new Staff = "RH" <<
3581 \new Staff = "LH" <<
3590 Mit diesen Veränderungen wurden die beiden Fis-Noten
3591 verschmolzen, aber nicht die zwei Ds. Warum nicht? Die
3592 Antwort befindet sich im gleicher Abschnitt der Notationsreferenz:
3593 Noten, die verschmolzen werden, müssen Hälse in entgegengesetzte
3594 Richtungen aufweisen und zwei Noten können nicht verschmolzen
3595 werden, wenn eine dritte Noten in der gleichen Kolumne
3596 stört. In unserem Fall weisen beide Hälse nach oben und es
3597 befindet sich zur gleichen Zeit auch noch eine dritte Note, das C.
3598 Wie die Richtung von Hälsen geändert wird, wissen wir schon:
3599 mit @code{\stemDown}, und in der Notationsreferenz findet
3600 sich auch Information, wie das C verschoben werden kann: mit
3601 dem @code{\shift}-Befehl. Aber welcher von ihnen? Das C
3602 befindet sich in der zweiten Stimme, die @qq{shift off} hat,
3603 die zwei Ds sind in den Stimmen eins und drei, die @qq{shift
3604 off} bzw. @qq{shift on} haben. Das C muss also noch eine
3605 Stufe weiter verschoben werden mit @code{\shiftOnn}, damit
3606 es die Verschmelzung der Ds nicht stört. Das sieht jetzt so
3609 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3610 rhMusic = \relative c'' {
3613 \once \override Tie #'staff-position = #3.5
3617 bes2.^\markup { \bold "Moderato" } r8
3618 \mergeDifferentlyHeadedOn
3619 \mergeDifferentlyDottedOn
3620 % Start polyphonic section of four voices
3622 { c,8 d fis bes a } % continuation of main voice
3625 % Move the c2 out of the main note column so the merge will work
3630 % Stem on the d2 must be down to permit merging
3638 \mergeDifferentlyHeadedOff
3639 \mergeDifferentlyDottedOff
3640 g2.\) % continuation of main voice
3644 lhMusic = \relative c' {
3646 <d g, d>1)\arpeggio |
3653 \new Staff = "RH" <<
3657 \new Staff = "LH" <<
3666 Fast schon geschafft. Nur noch ein Problem ist übrig: Der Hals nach
3667 unten des verschmolzenen sollte nicht da sein, und das C sähe
3668 besser auf der rechten Seite des Ds aus. Beides können wir mit den
3669 gelernten postupy při ladění erreichen. Den Hals machen
3670 wir durchsichtig und das C verschieben wir mit der
3671 @code{force-hshift}-Eigenschaft. Hier ist das Endergebnis:
3673 @cindex Notenkolumne, Beispiel zur Veränderung
3674 @cindex force-hshift-Eigenschaft, Beispiel
3675 @cindex Hals, Beispiel zur Veränderung
3676 @cindex Notenhals, Beispiel zur Veränderung
3677 @cindex transparent-Eigenschaft, Beispiel
3679 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3680 rhMusic = \relative c'' {
3683 \once \override Tie #'staff-position = #3.5
3687 bes2.^\markup { \bold "Moderato" } r8
3688 \mergeDifferentlyHeadedOn
3689 \mergeDifferentlyDottedOn
3690 % Start polyphonic section of four voices
3692 { c,8 d fis bes a } % continuation of main voice
3696 % Reposition the c2 to the right of the merged note
3697 \once \override NoteColumn #'force-hshift = #1.0
3698 % Move the c2 out of the main note column so the merge will work
3705 % Stem on the d2 must be down to permit merging
3707 % Stem on the d2 should be invisible
3708 \once \override Stem #'transparent = ##t
3716 \mergeDifferentlyHeadedOff
3717 \mergeDifferentlyDottedOff
3718 g2.\) % continuation of main voice
3722 lhMusic = \relative c' {
3724 <d g, d>1)\arpeggio |
3731 \new Staff = "RH" <<
3735 \new Staff = "LH" <<
3746 @section Další ladění
3747 @translationof Further tweaking
3750 * Jiné využití ladění::
3751 * Použití proměnných pro ladění::
3752 * Celkové formátování::
3754 * Vyhnutí se ladění s pomalejším překladem::
3755 * Pokročilá ladění se Scheme::
3758 @node Jiné využití ladění
3759 @subsection Jiné využití ladění
3760 @translationof Other uses for tweaks
3762 @cindex Transparente Objekte
3763 @cindex Entfernen von Objekten
3764 @cindex Verstecken von Objekten
3765 @cindex Unsichtbare Objekte
3766 @cindex transparent-Eigenschaft, Benutzung
3767 @cindex Objekte unsichtbar machen
3768 @cindex Objekte entfernen
3769 @cindex Objekte verstecken
3770 @cindex Noten zwischen Stimmen überbinden
3771 @cindex Überbinden von Noten zwischen Stimmen
3773 @subheading Noten zwischen unterschiedlichen Stimmen überbinden
3775 Das nächste Beispiel zeigt, wie man Noten von verschiedenen
3776 Stimmen miteinander verknüpfen kann, indem man Bindebögen
3777 für Überbindungen benutzt. Normalerweise können nur zwei
3778 Noten der gleichen Stimme übergebunden werden. Wenn
3779 man zwei Stimmen benutzt, wobei die überbundenen Noten
3780 sich in der selben befinden,
3782 @lilypond[quote,fragment,relative=2]
3783 << { b8~ b8\noBeam } \\ { b[ g8] } >>
3787 und dann den ersten Hals nach oben unsichtbar macht,
3788 sieht es so aus, als ob die Überbindung zwischen
3789 den Stimmen stattfindet:
3791 @cindex Hals, Beispiel zur Veränderung
3792 @cindex Notenhals, Beispiel zur Veränderung
3793 @cindex transparent-Eigenschaft, Beispiel
3795 @lilypond[quote,fragment,relative=2,verbatim]
3798 \once \override Stem #'transparent = ##t
3806 Um sicherzugehen, dass der unsichtbare Hals den Bindebogen
3807 nicht zu sehr verkleinert, kann er verlängert werden, indem
3808 seine Länge (@code{length}) auf den Wert @code{8}
3811 @lilypond[quote,fragment,relative=2,verbatim]
3814 \once \override Stem #'transparent = ##t
3815 \once \override Stem #'length = #8
3824 @subheading Eine Fermate in MIDI simulieren
3826 @cindex stencil-Eigenschaft, Benutzung
3827 @cindex Fermate, Benutzung in MIDI
3828 @cindex MIDI: Fermate erstellen
3830 Pro předměty vně notové osnovy ist es normalerweise
3831 besser, die @code{stencil}-Eigenschaft anstelle der
3832 @code{transparent}-Eigenschaft zu verändern, wenn man
3833 sie vom fertigen Notensatz entfernen will. Indem die
3834 @code{stencil}-Eigenschaft auf falsch (@code{#f}) gesetzt
3835 wird, wird das entsprechende Objekt vollständig entfernt.
3836 Das bedeutet, dass es die Positionierung der anderen Objekte
3839 Auf diese Art kann etwa das Tempo geändert werden, damit
3840 in der MIDI-Ausgabe eine Fermate zu hören ist, ohne dass
3841 im Notensatz etwas von diesen Tempoänderungen zu sehen
3842 ist. Die Metronombezeichnung soll auch nicht die Position
3843 von Text an der gleichen Stelle oder die Abstände zwischen
3844 zwei Systemen beeinflussen. Darum ist es am besten,
3845 @code{stencil} auf @code{#f} zu setzen. Im Beispiel wird
3846 der Unterschied zwischen einem unsichtbaren Objekt und
3847 einem entfernten Objekt gezeigt:
3849 @cindex Metronom-Bezeichnung, Beispiel zur Veränderung
3850 @cindex transparent-Eigenschaft, Beispiel
3852 @lilypond[quote,verbatim,ragged-right]
3855 % Visible tempo marking
3858 \once \override Score.MetronomeMark #'transparent = ##t
3859 % Invisible tempo marking to lengthen fermata in MIDI
3862 % New tempo for next section
3871 @lilypond[quote,verbatim,ragged-right]
3874 % Visible tempo marking
3877 \once \override Score.MetronomeMark #'stencil = ##f
3878 % Invisible tempo marking to lengthen fermata in MIDI
3881 % New tempo for next section
3891 Mit beiden Methoden wird die Tempobezeichnung entfernt, mit
3892 der die Fermate verlängert wird, und beide beeinflussen die
3893 MIDI-Ausgabe wie gewünscht. Die unsichtbare Metronombezeichnung
3894 schiebt aber die folgende Bezeichnung in die Höhe, während
3895 das im zweiten Beispiel, in dem der @code{stencil} entfernt
3896 wurde, nicht passiert.
3903 @node Použití proměnných pro ladění
3904 @subsection Použití proměnných pro ladění
3905 @translationof Using variables for tweaks
3907 @cindex Variablen, Benutzung zur Optimierung
3908 @cindex Optimierung mit Variablen
3910 @code{\override}-Befehle sind oft lang und mühsam zu
3911 tippen, und sie müssen immer absolut richtig sein. Wenn
3912 derselbe Befehl mehrere Male benutzt werden muss, lohnt
3913 es sich oft schon, eine Variable zu definieren, in der er
3916 Als Beispiel sollen einige Worte im
3917 Gesangstext fett und kursiv hervorgehoben werden.
3918 Die Befehle @code{\italic} und @code{\bold} funktionieren
3919 im Gesangstext-Kontext nur, wenn sie gleichzeitig mit den Wörtern,
3920 auf die sie angewendet werden sollen, zusätzlich
3921 in eine @code{\markup}-Umgebung eingeschlossen
3922 werden. Durch diese Einbettung können einzelne Wörter nicht
3923 einfach zu einer Variable umgeformt werden. Als
3924 Alternative versuchen wir, einen Befehl mit
3925 @code{\override} und @code{\revert} zu konstruieren.
3928 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3929 @code{\override Lyrics . LyricText #'font-series = #'bold}
3931 @code{\revert Lyrics . LyricText #'font-shape}
3932 @code{\revert Lyrics . LyricText #'font-series}
3935 Das wäre natürlich noch viel mühsamer, wenn viele Wörter eine
3936 Hervorhebung benötigen. Anstelle dieser Befehlsketten @emph{können}
3937 wir jedoch zwei Variablen definieren. Mit ihnen und dem entsprechenden
3938 Wort in geschweiften Klammern erreichen wir den gewünschten Effekt.
3939 Ein weiterer Vorteil ist, dass in diesem Fall die Leerzeichen um die
3940 Punkte herum nicht benötigt werden, weil sie nicht innerhalb des
3941 @code{lyricmode}-Kontextes interpretiert werden. Hier ein Beispiel;
3942 die Bezeichnungen können natürlich auch kürzer sein,
3943 um noch weniger schreiben zu müssen:
3945 @cindex LyricText, Beispiel zur Veränderung
3946 @cindex Gesangstext, Beispiel zur Veränderung
3947 @cindex font-shape-Eigenschaft, Beispiel
3948 @cindex font-series-Eigenschaft, Beispiel
3950 @lilypond[quote,verbatim]
3952 \override Lyrics.LyricText #'font-shape = #'italic
3953 \override Lyrics.LyricText #'font-series = #'bold
3956 \revert Lyrics.LyricText #'font-shape
3957 \revert Lyrics.LyricText #'font-series
3960 global = { \key c \major \time 4/4 \partial 4 }
3962 SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
3963 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
3964 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3965 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
3967 VerseOne = \lyrics {
3968 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
3971 VerseTwo = \lyricmode {
3972 O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
3975 VerseThree = \lyricmode {
3976 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
3979 VerseFour = \lyricmode {
3980 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
3987 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
3988 \new Voice = "Alto" { \voiceTwo \AltoMusic }
3989 \new Lyrics \lyricsto "Soprano" { \VerseOne }
3990 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
3991 \new Lyrics \lyricsto "Soprano" { \VerseThree }
3992 \new Lyrics \lyricsto "Soprano" { \VerseFour }
3996 \new Voice = "Tenor" { \voiceOne \TenorMusic }
3997 \new Voice = "Bass" { \voiceTwo \BassMusic }
4004 @node Celkové formátování
4005 @subsection Celkové formátování
4006 @translationof Style sheets
4008 Die Ausgabe von LilyPond kann sehr stark verändert werden, siehe
4009 zu Einzelheiten @ref{Ladění výstupu,,ladění výstupu}. Aber was ist,
4010 wenn man mehrere Eingabedateien hat, die die gleichen Anpassungen
4011 erfahren sollen? Oder wenn Sie einfach nur die Anpassungen von
4012 der eigentlichen Musik trennen wollen? Das lässt sich recht einfach
4015 Schauen wir uns ein Beispiel an. Sorgen Sie sich nicht, wenn Sie
4016 den Abschnitt mit den vielen @code{#()} nicht verstehen. Das wird
4017 erklärt in @ref{Pokročilá ladění se Scheme,,pokročilých laděních se Scheme}.
4019 @lilypond[quote,verbatim,ragged-right]
4021 #(make-dynamic-script
4023 #:translate '(5 . 0)
4024 #:line (#:dynamic "mp"
4025 #:text #:italic "dolce")))
4028 #(define-music-function
4029 (parser location string)
4034 'text (markup #:bold (#:box string))))
4038 a4.\mpdolce d8 cis4--\glissando a |
4042 g8(\! fis)-. e( d)-. cis2 |
4046 Es gibt einige Probleme mit sich überschneidender Ausgabe, die wird
4047 zurechtgerückt mit den Techniken von @ref{Přesouvání předmětů,,přesouvání předmětů}.
4048 Aber jetzt zu den Definitionen von @code{mpdolce} und @code{inst}.
4049 Sie erstellen die gewünschte Ausgabe, aber wir wollen sie vielleicht
4050 auch in einem anderen Stück verwenden. Wir könnten sie immer wieder
4051 kopieren und oben in jedes Stück einfügen, aber das ist sehr aufwändig.
4052 Dadurch werden die Definitionen auch in der Eingabedatei belassen,
4053 und ich finde diese @code{#()} irgendwie hässlich. Verstecken
4057 %%% in Datei "definitions.ily" speichern
4059 #(make-dynamic-script
4061 #:translate '(5 . 0)
4062 #:line (#:dynamic "mp"
4063 #:text #:italic "dolce")))
4066 #(define-music-function
4067 (parser location string)
4072 'text (markup #:bold (#:box string))))
4075 Diese Datei wir mit dem @code{\include}-Befehl ziemlich weit oben
4076 in der Datei eingefügt. (Die Erweiterung @file{.ily} wird benutzt,
4077 um diese Datei als eine eingefügte, inkludierte zu kennzeichnen, die
4078 man nicht alleinstehend kompilieren kann.) Jetzt ändern wir die
4079 Noten (in der Datei @file{music.ly}).
4081 @c We have to do this awkward example/lilypond-non-verbatim
4082 @c because we can't do the \include stuff in the manual.
4085 \include "definitions.ily"
4089 a4.\mpdolce d8 cis4--\glissando a |
4093 g8(\! fis)-. e( d)-. cis2 |
4097 @lilypond[quote,ragged-right]
4099 #(make-dynamic-script
4101 #:translate '(5 . 0)
4102 #:line (#:dynamic "mp"
4103 #:text #:italic "dolce")))
4106 #(define-music-function
4107 (parser location string)
4112 'text (markup #:bold (#:box string))))
4116 a4.\mpdolce d8 cis4--\glissando a |
4120 g8(\! fis)-. e( d)-. cis2 |
4124 Das sieht schon besser aus, aber einige Änderungen könnten wir noch vornehmen.
4125 Das Glissando ist kaum sichtbar, machen wir es also etwas dicker und
4126 näher an den Notenkopf. Die Metronombezeichnung soll über dem
4127 Schlüssel stehen, anstatt über der ersten Note. Und schließlich
4128 mag mein Kompositionsprofessor keine @qq{C}-Taktangaben, das ändern
4129 wir also in @qq{4/4}.
4131 Ändern Sie jetzt jedoch nicht @file{music.ly}. Ändern Sie die
4132 @file{definitions.ily} mit dem Folgenden:
4137 #(make-dynamic-script
4139 #:translate '(5 . 0)
4140 #:line (#:dynamic "mp"
4141 #:text #:italic "dolce")))
4144 #(define-music-function
4145 (parser location string)
4150 'text (markup #:bold (#:box string))))
4155 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4156 \override MetronomeMark #'padding = #'3
4160 \override TimeSignature #'style = #'numbered
4164 \override Glissando #'thickness = #3
4165 \override Glissando #'gap = #0.1
4170 @lilypond[quote,ragged-right]
4172 #(make-dynamic-script
4174 #:translate '(5 . 0)
4175 #:line (#:dynamic "mp"
4176 #:text #:italic "dolce")))
4179 #(define-music-function
4180 (parser location string)
4185 'text (markup #:bold (#:box string))))
4190 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4191 \override MetronomeMark #'padding = #'3
4195 \override TimeSignature #'style = #'numbered
4199 \override Glissando #'thickness = #3
4200 \override Glissando #'gap = #0.1
4206 a4.\mpdolce d8 cis4--\glissando a |
4210 g8(\! fis)-. e( d)-. cis2 |
4214 Das sieht besser aus! Aber nehmen wir an, Ich will dieses Stück publizieren.
4215 Mein Professor mag die @qq{C}-Taktangabe nicht, mir gefällt sie aber sehr
4216 gut. Kopieren wir also die Datei @file{definitions.ily} nach
4217 @file{web-publish.ily} und verändern diese. Weil die Noten als PDF
4218 auf dem Monitor dargestellt werden sollen, wird auch die Notengröße
4224 #(make-dynamic-script
4226 #:translate '(5 . 0)
4227 #:line (#:dynamic "mp"
4228 #:text #:italic "dolce")))
4231 #(define-music-function
4232 (parser location string)
4237 'text (markup #:bold (#:box string))))
4239 #(set-global-staff-size 23)
4244 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4245 \override MetronomeMark #'padding = #'3
4252 \override Glissando #'thickness = #3
4253 \override Glissando #'gap = #0.1
4258 @lilypond[quote,ragged-right]
4260 #(make-dynamic-script
4262 #:translate '(5 . 0)
4263 #:line (#:dynamic "mp"
4264 #:text #:italic "dolce")))
4267 #(define-music-function
4268 (parser location string)
4273 'text (markup #:bold (#:box string))))
4275 #(set-global-staff-size 23)
4279 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4280 \override MetronomeMark #'padding = #'3
4283 \override Glissando #'thickness = #3
4284 \override Glissando #'gap = #0.1
4290 a4.\mpdolce d8 cis4--\glissando a |
4294 g8(\! fis)-. e( d)-. cis2 |
4298 In der Eingabedatei muss jetzt nur noch die Zeile
4299 @code{\include "definitions.ily"} mit
4300 @code{\include "web-publish.ily"} ersetzt werden. Das könnte
4301 man natürlich noch besser machen. Es könnte eine Datei
4302 @file{definitions.ily} mit allen Definitionen (also
4303 @code{mpdolce} und @code{inst}) geben, eine Datei
4304 @file{web-publish.ily}, die nur die @code{\layout}-Veränderung
4305 enthält und eine Datei @file{university.ily}, die nur die
4306 Prozedur enthält, die Ausgabe meinem Professor angenehm zu machen.
4307 Der Anfang von @file{music.ly} würde dann folgendermaßen aussehen:
4310 \include "definitions.ily"
4312 %%% nur eine der zwei Zeilen auskommentieren!
4313 \include "web-publish.ily"
4314 %\include "university.ily"
4317 Diese Herangehensweise kann auch schon nützlich sein, wenn man
4318 nur ein paar Stimmen schreiben will. Ich habe eine ganze Anzahl
4319 an @qq{Stylesheets} für meine Projekte. Ich fange jede Datei mit
4320 der Zeile @code{\include "../global.ily"} an, die etwa folgendes
4325 \version @w{"@version{}"}
4327 #(ly:set-option 'point-and-click #f)
4329 \include "../init/init-defs.ly"
4330 \include "../init/init-layout.ly"
4331 \include "../init/init-headers.ly"
4332 \include "../init/init-paper.ly"
4337 @node Více informací
4338 @subsection Více informací
4339 @translationof Other sources of information
4341 Die Programmreferenz enthält sehr viel Information über LilyPond, aber
4342 noch více informací findet sich in den internen
4343 LilyPond-Dateien. Um sie erforschen zu können, müssen Sie erst
4344 das richtige Verzeichnis auf Ihrem System finden. Die Position
4345 hängt a) davon ab, ob Ihre LilyPond-Installation mit der vorkompilierten
4346 Version von der LilyPond-Internetseite vorgenommen wurde oder Sie
4347 die Version durch Ihren Paketmanager installiert haben (also
4348 z. B. in einer Linux-Distribution oder unter fink oder cygwin
4349 installiert), und b) auf welchem Betriebssystem Sie das Programm
4352 @strong{Von lilypond.org heruntergeladen}
4357 Wechseln Sie in das Verzeichnis
4358 @file{@var{INSTALL_VERZ}/lilypond/usr/@/share/lilypond/current/}
4362 Wechseln Sie in das Verzeichnis
4363 @file{@var{INSTALL_VERZ}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4364 indem Sie entweder mit dem Befehl @code{cd} vom Terminal aus
4365 in das Verzeichnis wechseln, oder mit Control-Klick auf das
4366 LilyPond-Programmsymbol gehen und @qq{Show Package Contents}
4371 Wechseln Sie mit dem Windows Explorer ins Verzeichnis
4372 @file{@var{INSTALL_VERZ}/LilyPond/usr/@/share/lilypond/current/}
4376 @strong{Mit einem Paket-Manager installiert oder selber aus
4377 den Quellen kompiliert}
4379 Wechseln Sie in das Verzeichnis
4380 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, wobei
4381 @var{PREFIX} bei Ihrem Paket-Manager oder dem
4382 @code{configure}-Skript gesetzt wird, und @var{X.Y.Z}
4383 die LilyPond-Versionsnummer.
4387 In diesem Ordner sind die zwei interessanten Unterordner:
4390 @item @file{ly/} - beinhaltet Dateien im LilyPond-Format
4391 @item @file{scm/} - beinhaltet Dateien im Scheme-Format
4394 Schauen wir uns zuerst einige Dateien in @file{ly/} an.
4395 Öffnen Sie @file{ly/property-init.ly} in einem Texteditor.
4396 Der, den Sie normalerweise für @file{.ly}-Dateien benutzen,
4397 genügt. Diese Datei enthält die Definitionen aller vordefinierten
4398 Befehle für LilyPond, wie etwa @code{\stemUp} und
4399 @code{\slurDotted}. Sie können sehen, dass es sich um
4400 nichts mehr handelt als Definitionen von Variablen, die eine
4401 oder mehrere @code{\override}-Befehle enthalten. Der
4402 Befehl @code{/tieDotted} etwa wird folgendermaßen definiert:
4406 \override Tie #'dash-period = #0.75
4407 \override Tie #'dash-fraction = #0.1
4411 Wenn Sie diese Voreinstellungen der vordefinierten Befehl nicht
4412 mögen, können Sie sie ganz einfach umdefinieren, genauso wie
4413 jede andere Variable auch, indem Sie sie an den Anfang Ihrer
4414 Quelldatei schreiben.
4416 Hier sind die wichtigsten Dateien, die sich im Ordner
4417 @file{ly/} befinden:
4419 @multitable @columnfractions .4 .6
4422 @item @file{ly/engraver-init.ly}
4423 @tab Definitionen von Engraver-Kontexten
4424 @item @file{ly/paper-defaults-init.ly}
4425 @tab Spezifikationen von Voreinstellungen für Papiermaße
4426 @item @file{ly/performer-init.ly}
4427 @tab Definitionen von Performer-Kontexten
4428 @item @file{ly/property-init.ly}
4429 @tab Definitionen aller vordefinierten Befehle
4430 @item @file{ly/spanner-init.ly}
4431 @tab Definitionen aller vordefinierten Strecker-Befehle
4434 Andere Einstellungen (wie die Definitionen von Beschriftungsbefehlen)
4435 sind in @file{.scm}-(Scheme)-Dateien gespeichert. Die
4436 Scheme-Programmiersprache wird benutzt, um eine
4437 programmierbare Schnittstelle zu den internen Operationen von
4438 LilyPond zu haben. Eine weitere Erklärung dieser Dateien ist
4439 im Moment außerhalb des Rahmens dieses Handbuchs, denn
4440 sie erfordern einige Kenntnis der Scheme-Sprache. Die Warnung
4441 ist hier angebracht, dass des ein gutes technisches Verständnis
4442 oder sehr viel Zeit braucht, um Scheme und diese
4443 Dateien zu verstehen (siehe auch @rextend{Scheme-Übung}).
4445 Wenn Sie sich mit Scheme auskennen, sind hier mögliche
4446 interessante Dateien:
4448 @multitable @columnfractions .4 .6
4451 @item @file{scm/auto-beam.scm}
4452 @tab Sub-Balken-Voreinstellungen
4453 @item @file{scm/define-grobs.scm}
4454 @tab Voreinstellungen für Grob-Eigenschaften
4455 @item @file{scm/define-markup-commands.scm}
4456 @tab Definition aller Markup-Beschriftungsbefehle
4457 @item @file{scm/midi.scm}
4458 @tab Voreinstellung für die MIDI-Ausgabe
4459 @item @file{scm/output-lib.scm}
4460 @tab Einstellungen mit Einfluss auf die Darstellung von Bunddiagrammen, Farben, Versetzungszeichen, Taktlinien usw.
4461 @item @file{scm/parser-clef.scm}
4462 @tab Definitionen der unterstützten Schlüssel
4463 @item @file{scm/script.scm}
4464 @tab Voreinstellungen für Artikulationszeichen
4468 @node Vyhnutí se ladění s pomalejším překladem
4469 @subsection Vyhnutí se ladění s pomalejším překladem
4470 @translationof Avoiding tweaks with slower processing
4472 LilyPond kann einige zusätzliche Tests durchführen, während
4473 die Noten gesetzt werden. Dadurch braucht das Programm länger,
4474 um den Notensatz zu produzieren, aber üblicherweise werden
4475 weniger nachträgliche Anpassungen nötig sein. Wenn eine
4476 Textsilbe oder eine Beschriftung aus dem Rand der Partitur
4477 ragt, wird durch diese Tests die Zeile gerade so weit komprimiert,
4478 dass sie sich innerhalb der Ränder befindet.
4480 Damit diese Tests immer funktionieren, müssen sie aktiviert werden,
4481 indem die @bs{}@code{override}-Befehle in einer @code{context}-Umgebung
4482 innerhalb der @code{layout}-Umgebung notiert werden und nicht innerhalb
4487 @{ @dots{}Noten@dots{} @}
4491 % Um sicher zu gehen, dass Texte und Liedtext
4492 % innerhalb der Papierränder bleiben
4493 \override PaperColumn #'keep-inside-line = ##t
4494 \override NonMusicalPaperColumn #'keep-inside-line = ##t
4500 @code{keep-inside-line} braucht jedoch sehr viel Berechnungen,
4501 sodass es sich anbietet, diese Funktion zunächst nicht zu aktivieren
4502 und erst einzufügen, wenn man die endgültige Version erstellt.
4503 Auf diese Weise muss man nicht mit der Hand @code{\break}-Befehle
4504 hinzufügen, um zu vermeiden, dass Text über den rechten Rand der
4508 @node Pokročilá ladění se Scheme
4509 @subsection Pokročilá ladění se Scheme
4510 @translationof Advanced tweaks with Scheme
4512 Auch wenn viele Sachen mit @code{\override} und @code{\tweak}
4513 möglich sind, gibt es eine sehr viel mächtigere Möglichkeit, die
4514 Arbeitsweise von LilyPond mit Hilfe der programmierbaren Schnittstelle
4515 zu beeinflussen. Code, der in der Scheme-Programmiersprache
4516 geschrieben ist, kann direkt in die interne Satzmaschine von LilyPond
4517 eingefügt werden. Natürlich brauchen Sie dazu wenigstens ein
4518 grundlegendes Verständnis von Scheme. Eine Einleitung finden
4519 Sie in der @rextend{Scheme-Übung}.
4521 Zur Illustration der vielen Möglichkeiten soll gezeigt werden, dass eine
4522 Eigenschaft nicht nur auf eine Konstante, sondern auch auf eine
4523 Scheme-Prozedur gesetzt werden kann, die dann jedes Mal
4524 aufgerufen wird, wenn die Eigenschaft von LilyPond benutzt
4525 wird. Die Eigenschaft kann damit dynamisch auf einen Wert
4526 gesetzt werden, der durch die Prozedur jedes Mal neu bestimmt
4527 wird. In diesem Beispiel wird die Farbe der Notenköpfe entsprechend
4528 zu ihrer Position innerhalb der Tonleiter gesetzt.
4530 @cindex x11-Farben, Beispiel zur Benutzung
4531 @cindex Notenkopf, Beispiel zur Veränderung
4532 @cindex Farb-Eigenschaft, in Scheme-Prozedur gesetzt
4534 @lilypond[quote,verbatim,ragged-right]
4535 #(define (color-notehead grob)
4536 "Color the notehead according to its position on the staff."
4537 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4540 ;; Return rainbow colors
4541 ((1) (x11-color 'red )) ; for C
4542 ((2) (x11-color 'orange )) ; for D
4543 ((3) (x11-color 'yellow )) ; for E
4544 ((4) (x11-color 'green )) ; for F
4545 ((5) (x11-color 'blue )) ; for G
4546 ((6) (x11-color 'purple )) ; for A
4547 ((0) (x11-color 'violet )) ; for B
4551 % Arrange to obtain color from color-notehead procedure
4552 \override NoteHead #'color = #color-notehead
4553 a2 b | c2 d | e2 f | g2 a |
4557 Weiter Beispiele, die die Benutzung dieser programmierbaren
4558 Schnittstelle zeigen, finden sich in @rextend{Optimierungen mit Scheme}.