]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/de/learning/tweaks.itely
Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / Documentation / de / learning / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
2
3 @ignore
4     Translation of GIT committish: 32114617e6b96617749a3c4efb4fa2203a8c3d50
5
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..
9 @end ignore
10
11 @c \version "2.12.0"
12
13 @node Die Ausgabe verändern
14 @chapter Die Ausgabe verändern
15 @translationof Tweaking output
16
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.
20
21
22 @menu
23 * Grundlagen für die Optimierung::
24 * Die Referenz der Programminterna::
25 * Erscheinung von Objekten::
26 * Positionierung von Objekten::
27 * Kollision von Objekten::
28 * Weitere Optimierungen::
29 @end menu
30
31
32 @node Grundlagen für die Optimierung
33 @section Grundlagen für die Optimierung
34 @translationof Tweaking basics
35
36 @menu
37 * Grundlagen zur Optimierung::
38 * Objekte und Schnittstellen::
39 * Regeln zur Benennung von Objekten und Eigenschaften::
40 * Optimierungsmethoden::
41 @end menu
42
43 @node Grundlagen zur Optimierung
44 @subsection Grundlagen zur Optimierung
45 @translationof Introduction to tweaks
46
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 Opitmierungen sind sehr 
51 einfach, andere dagegen recht komplex. Aber insgesamt erlaubt das
52 System an Optimierungen so gut wie alle möglichen Erscheindungsformen
53 für die Notenausgabe.
54
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.
62
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.
68
69
70 @node Objekte und Schnittstellen
71 @subsection Objekte und Schnittstellen
72 @translationof Objects and interfaces
73
74 @cindex Objekte
75 @cindex Grobs
76 @cindex Spanners
77 @cindex Interfaces
78 @cindex Strecker
79 @cindex Schnittstellen
80 @cindex graphische Objekte (Grob)
81 @cindex Objekteigenschaften
82 @cindex Layout-Objekt
83 @cindex Objekt, Layout-
84 @cindex Eigenschaften von Objekten
85
86 Optimierung bedeutet, die internen Operationen und Strukturen
87 des LilyPond-Programmes zu verändern, darum sollen hier
88 zunächst die wichtigesten Begriffe erklärt werden, die zur
89 Beschreibung dieser Operationen und Strukturen benutzt werden.
90
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.
105
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,
113 Farbe usw.
114
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)
121 bezeichnet.
122
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.
138
139 Dies waren die Hauptbegriffe, die in diesem Kapitel zur Anwendung
140 kommen sollen.
141
142
143 @node Regeln zur Benennung von Objekten und Eigenschaften
144 @subsection Regeln zur Benennung von Objekten und Eigenschaften
145 @translationof Naming conventions of objects and properties
146
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
152
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.
162
163 @multitable @columnfractions .33 .33 .33
164 @headitem Objekt-/Eigenschaftstyp
165   @tab Naming convention
166   @tab Beispiele
167 @item Kontexte
168   @tab Aaaa oder AaaaAaaaAaaa
169   @tab Staff, GrandStaff
170 @item Layout-Objekte
171   @tab Aaaa oder AaaaAaaaAaaa
172   @tab Slur, NoteHead
173 @item Engraver
174   @tab Aaaa_aaa_engraver
175   @tab Clef_engraver, Note_heads_engraver
176 @item Schnittstellen
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
185 @end multitable
186
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.
193
194
195 @node Optimierungsmethoden
196 @subsection Optimierungsmethoden
197 @translationof Tweaking methods
198
199 @cindex override-Befehl
200 @funindex \override
201 @funindex override
202
203 @strong{Der \override-Befehl}
204
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.
212
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 werder soll,
219 und welches der neu zu setzende Wert dann ist. Schauen wir
220 uns an, wie das vor sich geht.
221
222 Die allgemeine Syntax dieses Befehles ist:
223
224 @example
225 \override @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft} =
226 #@var{Wert}
227 @end example
228
229 @noindent
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
233 Wert @var{value}.
234
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.
241
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.
246
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
253 zu ändern:
254
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
259
260 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
261 c d
262 \override NoteHead #'color = #red
263 e f g
264 \override NoteHead #'color = #green
265 a b c
266 @end lilypond
267
268
269 @strong{Der \revert-Befehl}
270
271 @cindex revert-Befehl
272 @funindex \revert
273 @funindex revert
274
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.
282
283 @example
284 \revert @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft}
285 @end example
286
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.
291
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
296
297 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
298 c d
299 \override NoteHead #'color = #red
300 e f g
301 \override NoteHead #'color = #green
302 a
303 \revert NoteHead #'color
304 b c
305 @end lilypond
306
307 @strong{\once-Präfix}
308
309 @funindex \once
310 @funindex once
311
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
317 geändert werden:
318
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
323
324 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
325 c d
326 \once \override NoteHead #'color = #red
327 e f g
328 \once \override NoteHead #'color = #green
329 a b c
330 @end lilypond
331
332
333 @strong{Der \overrideProperty-Befehl}
334
335 @cindex overrideProperty-Befehl
336
337 @funindex \overrideProperty
338 @funindex overrideProperty
339
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 @ruser{Schwierige Korrekturen}.
345 @c Maybe explain in a later iteration  -td
346
347
348 @strong{Der \tweak-Befehl}
349
350 @cindex tweak-Befehl
351 @funindex \tweak
352 @funindex tweak
353
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.
361
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:
366
367 @cindex Schriftgröße, Beispiel
368 @cindex NoteHead, Beispiel für override
369 @cindex Notenkopf, Beispiel für Veränderung
370
371 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
372   <c e g>4
373   \once \override NoteHead #'font-size = #-3
374   <c e g>
375   <c e g>
376 @end lilypond
377
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.
384
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 kreirt
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.
396
397 Um also zu unserem Beispiel zurückzukommen, könnte man die
398 mittlere Note eines Akkordes auf diese Weise ändern:
399
400 @cindex font-size-Eigenschaft, Beispiel
401 @cindex Schriftgröße, Beispiel
402 @cindex @code{\tweak}-Beispiel
403
404 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
405   <c e g>4
406   <c \tweak #'font-size #-3 e g>4
407 @end lilypond
408
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 konnen 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 Gleichheitzeichen vorhanden sein.  Die verallgemeinerte
415 Syntax des @code{\tweak}-Befehls ist also einfach
416
417 @example
418 \tweak #'@var{layout-eigenschaft} #@var{Wert}
419 @end example
420
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.
424
425 @cindex Farb-Eigenschaft, Beispiel
426 @cindex @code{\tweak}-Beispiel
427
428 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
429 a ^Black
430   -\tweak #'color #red ^Red
431   -\tweak #'color #green _Green
432 @end lilypond
433
434 @noindent
435 Beachten Sie, dass dem @code{\tweak}-Befehl ein Artikulationsmodifikartor
436 vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen
437 wäre.
438
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
446
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
458 gesetzt wird.
459
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
465
466 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
467 \tweak #'direction #up
468 \times 4/3 {
469   \tweak #'color #red
470   \times 2/3 { c8[ c8 c8] }
471   \times 2/3 { c8[ c8 c8] }
472   \times 2/3 { c8[ c8 c8] }
473 }
474 @end lilypond
475
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:
479
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
486
487 @c NOTE Tuplet brackets collide if notes are high on staff
488 @c See issue 509
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
493 \times 2/3 {
494   c[ c]
495   c[ c]
496   \once \override TupletNumber #'transparent = ##t
497   \times 2/3 { c8[ c c] }
498 \times 2/3 { c8[ c c]}
499 }
500 @end lilypond
501
502
503 @seealso
504 Notationsreferenz:
505 @ruser{Der tweak-Befehl}.
506
507
508 @node Die Referenz der Programminterna
509 @section Die Referenz der Programminterna
510 @translationof The Internals Reference manual
511
512 @menu
513 * Eigenschaften von Layoutobjekten::
514 * Eigenschaften, die Schnittstellen besitzen können::
515 * Typen von Eigenschaften::
516 @end menu
517
518 @node Eigenschaften von Layoutobjekten
519 @subsection Eigenschaften von Layoutobjekten
520 @translationof Properties of layout objects
521
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
528
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
543 konstruieren.
544
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.
554 @c For German users
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})
559  verwenden, in dem
560 die englischen Begriffe in viele andere Sprachen übersetzt sind.
561
562 @cindex Override-Beispiel
563 @cindex Referenz der Interna, Benutzung
564 @cindex IR (Referenz der Interna), Benutzung
565 @cindex @code{\addlyrics}-Beispiel
566
567 Das Vorgehen soll an einem konkreten Beispiel einer echten
568 Komposition demonstriert werden. Hier das Beispiel:
569
570 @lilypond[quote,verbatim,relative=2]
571 {
572   \time 6/8
573   {
574     r4 b8 b[( g]) g |
575     g[( e]) e d[( f]) a |
576     a g
577   }
578   \addlyrics {
579     The man who feels love's sweet e -- mo -- tion
580   }
581 }
582 @end lilypond
583
584 Angenommen also, wir wollen die Legatobögen etwas
585 dicker setzten. Ist das möglich? Die Legatobögen sind mit
586 Sicherheit ein Layout-Objekt, die Frage muss also lauten:
587 @qq{Gibt es eine Eigenschaft von Legatobögen, die die
588 Dicke bestimmt?} Um diese Frage zu beantworten, müssen
589 wir in der Referenz der Interna ( kurz IR) nachschauen.
590
591 Die IR für die LilyPond-Version, die Sie benutzen, findet sich
592 auf der LilyPond-Webseite unter der Adresse 
593 @uref{http://lilypond.org}. Gehen Sie zur Dokumentationsseite
594 und klicken Sie auf den Link zur Referenz der Interna.
595 @c Addition for German users
596 Die Sprache ändert sich ab hier nach englisch. Für diese Übung
597 sollten Sie die HTML-Version benutzen, nicht die
598 @qq{auf einer großen Seite} oder die PDF-Version.
599 Damit Sie die nächsten Absätze verstehen können, müssen Sie
600 genauso vorgehen, während Sie weiterlesen.
601
602 Unter der Überschrift @strong{Top} befinden sich fünf Links.
603 Wählen Sie den Link zum @emph{Backend}, wo sich die Information
604 über Layout-Objekte befindet. Hier, unter der Überschrift
605 @strong{Backend}, wählen Sie den Link @emph{All layout objects}.
606 Die Seite, die sich öffnet, enthält ein Liste aller Layout-Objekte,
607 die in Ihrerer LilyPond-Version benutzt werden, in alphabetischer
608 Ordnung. Wählen Sie den Link @emph{Slur} und die Eigenschaften
609 der Legatobögen (engl. slur) werden aufgelistet.
610
611 Eine alternative Methode, auf diese Seite zu gelangen, ist von
612 der Notationsreferenz aus. Auf einer der Seiten zu Legatobögen
613 findet sich ein Link zur Referenz der Interna. Dieser Link führt
614 Sie direkt auf diese Seite. Wenn Sie aber eine Ahnung haben, 
615 wie die Bezeichnung des Layout-Objektes lauten könnte, das sie
616 ändern wollen, ist es oft schneller, direkt zur IR zu gehen und 
617 dort nachzuschlagen.
618
619 Aus der Slur-Seite in der IR könne wir entnehmen, dass
620 Legatobögen (Slur-Objekte) durch den Slur_engraver erstellt
621 werden. Dann werden die Standardeinstellungen aufgelistet.
622 Beachten Sie, dass diese @strong{nicht} in alphabetischer Reihenfolge
623 geordnet sind. Schauen Sie sich die Liste an, ob sie eine Eigenschaft
624 enthält, mit der die Dicke von Legatobögen kontrolliert werden kann.
625 Sie sollten folgendes finden:
626
627 @example
628 @code{thickness} (number)
629      @code{1.2}
630      Line thickness, generally measured in @code{line-thickness}
631 @end example
632
633 Das sieht ganz danach aus, als ob damit die Dicke geändert
634 werden kann. Es bedeutet, dass der Wert von
635 @code{thickness} einfach eine Zahl (@emph{number}) ist,
636 dass der Standardwert 1.2 ist, und dass die Einheit
637 für die Dicke eine andere Eigenschaft mit der
638 Bezeichnung @code{line-thickness} ist.
639
640 Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen
641 in der IR, aber wir haben schon genug Informationen, um
642 zu versuchen, die Dicke eines Legatobogens zu ändern. Die
643 Bezeichnung des Layout-Objekts ist offensichtlich
644 @code{Slur} und die Bezeichnung der Eigenschaft, die geändert
645 werden soll
646 @code{thickness}. Der neue Wert sollte etwas mehr als 1.2 sein,
647 denn der Bogen soll ja dicker werden.
648
649 Den benötigten @code{\override}-Befehl können wir jetzt einfach
650 konstruieren, indem wir die Werte für die Bezeichnungen in den
651 Modellbefehl einfügen und den Kontext auslassen. Setzen wir
652 einmal einen sehr großen Wert für die Dicke um zu sehen, ob der
653 Befehl auch funktioniert. Also:
654
655 @example
656 \override Slur #'thickness = #5.0
657 @end example
658
659 Vergessen Sie nicht das Rautenzeichen und Apostroph
660 (@code{#'}) vor der Eigenschaftsbezeichnung und das
661 Rautenzeichen vor dem neuen Wert!
662
663 Die nächste Frage ist nun: @qq{Wohin soll dieser Befehl geschrieben
664 werden?} Solange wir uns noch im Lernstadium befinden, ist
665 die beste Antwort: @qq{Innerhalb der Noten, vor den ersten
666 Legatobogen und nahe bei ihm.} Also etwa so:
667
668 @cindex Legatobogen, Beispiel für Veränderung
669 @cindex thickness-Eigenschaft, Beispiel
670 @cindex Dicke-Eigenschaft, Beispiel
671
672 @lilypond[quote,verbatim,relative=2]
673 {
674   \time 6/8
675   {
676     % Increase thickness of all following slurs from 1.2 to 5.0
677     \override Slur #'thickness = #5.0
678     r4 b8 b[( g]) g |
679     g[( e]) e d[( f]) a |
680     a g
681   }
682   \addlyrics {
683     The man who feels love's sweet e -- mo -- tion
684   }
685 }
686 @end lilypond
687
688 @noindent
689 und wirklich wird der Legatobogen dicker.
690
691 Das ist also die grundlegende Herangehensweise, 
692 @code{\override}-Befehl zu formulieren. Es gibt einige
693 zusätzliche Komplikationen, denen wir uns später widmen
694 werden, aber Sie haben jetzt das Handwerkszeug, um Ihre
695 eigenen Befehle zu konstruieren -- wenn Sie auch noch etwas
696 Übung benötigen. Die sollen Sie durch die folgenden Übungen
697 erhalten.
698
699
700 @subheading Den Kontext finden
701
702 @cindex Kontext, Finden und identifizieren
703
704 Manchmal muss dennoch der Kontext spezifiziert werden.
705 Welcher aber ist der richtige Kontext? Wir könnten raten,
706 dass Legatobögen sich im @code{Voice}-Kontext befinden,
707 denn sie sind immer einzelnen Melodielinien zugewiesen.
708 Aber wir können uns dessen nicht sicher sein. Um unsere
709 Annahme zu überprüfen, gehen wir wieder zu der Seite im
710 IR, die die Legatobögen beschreibt und die Überschrift
711 @emph{Slur} hat. Dort steht: @qq{Slur objects are created 
712 by: Slur engraver}. Legatobögen werden also in dem Kontext
713 erstellt, in dem sich der @code{Slur_engraver} befindet. 
714 Folgen Sie dem Link zu der @code{Slur_engraver}-Seite.
715 Unten auf der Seite steht, dass der @code{Slur_engraver}
716 sich in fünf Stimmen-Kontexten befindet, unter anderem
717 auch im normalen @code{Voice}-Kontext. Unsere Annahme
718 war also richtig. Und weil @code{Voice} einer der Kontexte
719 der untersten Ebene ist, welcher eindeutig schon dadurch
720 definiert ist, dass wir Noten eingeben, kann er an dieser Stelle
721 auch weggelassen werden.
722
723
724 @subheading Nur einmal mit \override verändern
725
726 @cindex Override nur einmal
727 @cindex once override
728 @funindex \once
729 @funindex once
730
731 Im Beispiel oben wurden @emph{alle} Legatobögen dicker
732 gesetzt. Vielleicht wollen Sie aber nur den ersten Bogen
733 dicker haben. Das können Sie mit dem @code{\once}-Befehl
734 erreichen. Er wird direkt vor den @code{\override}-Befehl
735 gesetzt und bewirkt, dass nur der Bogen geändert wird, der
736 @strong{unmittelbar an der nächsten Note beginnt.} Wenn
737 die nächste Note keinen Bogenbeginn hat, dann passiert
738 gar nichts -- der Befehl wird nicht gespeichert, sondern einfach
739 vergessen. Der Befehl, mit @code{\once} zusammen benutzt,
740 muss also wie folgt positioniert werden:
741
742 @cindex Legatobogen, Beispiel zur Veränderung
743 @cindex thickness-Eigenschaft, Beispiel
744
745 @lilypond[quote,verbatim,relative=2]
746 {
747   \time 6/8
748   {
749     r4 b8
750     % Increase thickness of immediately following slur only
751     \once \override Slur #'thickness = #5.0
752     b[( g]) g |
753     g[( e]) e d[( f]) a |
754     a g
755   }
756   \addlyrics {
757     The man who feels love's sweet e -- mo -- tion
758   }
759 }
760 @end lilypond
761
762 @noindent
763 Jetzt bezieht er sich nur noch auf den ersten Legatobogen.
764
765 Der @code{\once}-Befehl kann übrigens auch vor einem @code{\set}-Befehl
766 eingesetzt werden.
767
768
769 @subheading Rückgängig machen
770
771 @cindex Revert
772 @cindex Rückgängig machen
773 @cindex Wiederherstellen von Standardeinstellungen
774 @cindex Standardeinstellungen, Wiederherstellen
775 @funindex \revert
776 @funindex revert
777
778 Eine weitere Möglichkeit: nur die beiden ersten Legatobögen sollen
779 dicker gesetzt werden. Gut, wir könnten jetzt zwei Befehle benutzen,
780 jeden mit dem @code{\once}-Präfix und direkt vor die entsprechende
781 Note gestellt, an welcher der Bogen beginnt:
782
783 @cindex Legatobogen, Beispiel zur Veränderung
784 @cindex thickness-Eigenschaft, Beispiel
785
786 @lilypond[quote,verbatim,relative=2]
787 {
788   \time 6/8
789   {
790     r4 b8
791     % Increase thickness of immediately following slur only
792     \once \override Slur #'thickness = #5.0
793     b[( g]) g |
794     % Increase thickness of immediately following slur only
795     \once \override Slur #'thickness = #5.0
796     g[( e]) e d[( f]) a |
797     a g
798   }
799   \addlyrics {
800     The man who feels love's sweet e -- mo -- tion
801   }
802 }
803 @end lilypond
804
805 @noindent
806 Wir könnten aber auch den @code{\once}-Befehl weglassen und anstelle 
807 dessen später den @code{\revert}-Befehl einsetzen, um die
808 @code{thickness}-Eigenschaft wieder auf ihren Standardwert zurückzusetzen:
809
810 @cindex Legatobogen, Beispiel zur Veränderung
811 @cindex thickness-Eigenschaft, Beispiel
812
813 @lilypond[quote,verbatim,relative=2]
814 {
815   \time 6/8
816   {
817     r4 b8
818     % Increase thickness of all following slurs from 1.2 to 5.0
819     \override Slur #'thickness = #5.0
820     b[( g]) g |
821     g[( e])
822     % Revert thickness of all following slurs to default of 1.2
823     \revert Slur #'thickness
824     e d[( f]) a |
825     a g
826   }
827   \addlyrics {
828     The man who feels love's sweet e -- mo -- tion
829   }
830 }
831 @end lilypond
832
833 @noindent
834 Der @code{\revert}-Befehl kann benutzt werden, um eine beliebige
835 Eigenschaft, die mit @code{\override} geändert worden ist, wieder in 
836 ihre Standardeinstellungen zurückzuversetzen. In unserem Beispiel können
837 Sie die Methode benutzen, die Ihnen lieber ist, beide haben das gleiche
838 Resultat.
839
840 Damit endet die Einleitung in die Referenz der Interna (IR) und die
841 grundlegenden Optimierungsmethoden. Einige Beispiele folgen in späteren
842 Abschnitten dieses Kapitel, einerseits um Sie mit weiteren Möglichkeiten
843 der IR bekanntzumachen, andererseits um Ihnen mehr Übungsmöglichkeiten
844 zu geben, die relevante Information dort zu finden. Die Beispiele werden
845 Schritt für Schritt immer weniger Erklärungen beinhalten.
846
847
848 @node Eigenschaften, die Schnittstellen besitzen können
849 @subsection Eigenschaften, die Schnittstellen besitzen können
850 @translationof Properties found in interfaces
851
852 @cindex Interface-Eigenschaften
853 @cindex Eigenschaften von Interfaces
854 @cindex Schnittstellen, Eigenschaften von
855 @cindex Eigenschaften von Schnittstellen
856
857 Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für
858 ein @code{\override}-Befehl wird dazu benötigt? Schauen wir
859 uns zunächst das Inhaltsverzeichnis in der IR an: @qq{All layout objects},
860 wie auch schon zuvor. Welches Objekt könnte die Darstellung des
861 Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag @code{LyricText},
862 das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften
863 an, die verändert werden können. Dazu gehört 
864 @code{font-series} und @code{font-size}, aber nichts, womit man kursiven
865 Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen
866 Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzlenen
867 Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften
868 zusammen in einem @strong{Interface} -- einer Schnittstelle -- verortet;
869 in diesem Fall das
870 @code{font-interface}.
871
872 Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden
873 und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften
874 benutzen.
875
876 Schauen Sie sich noch einmal die Seite in der IR an, die @code{LyricText}
877 beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version
878 der IR) an Eigenschaften, die von @code{LyricText} unterstützt
879 werden. Diese Liste enthält sieben Einträge, darunter auch
880 @code{font-interface}. Ein Klick hierauf bringt uns zu den Eigenschaften,
881 die mit dieser Schnittstelle verbunden sind, also auch @code{LyricText}.
882
883 Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann,
884 um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch
885 @code{font-shape(symbol)}, wobei @code{symbol} auf die Werte
886 @code{upright} (gerade), @code{italics} (kursiv) oder @code{caps}
887 (Kapitälchen) gesetzt werden kann.
888
889 Sie werden gemerkt haben, dass @code{font-series} und @code{font-size}
890 hier auch aufgelistet sind. Es stellt sich die Frage, warum diese
891 allgemeinen Schriftarteigenschaften @code{font-series} und
892 @code{font-size} sowohl unter der Überschrift
893 @code{LyricText} als unter dem @code{font-interface} aufgelistet 
894 sind, aber @code{font-shape} befindet sich nur im 
895 @code{font-interface}? Die Antwort ist: Die globalen Einstellungen 
896 von @code{font-series} und @code{font-size} werden geändert, wenn
897 ein @code{LyricText}-Objekt erstellt wird, aber @code{font-shape} 
898 wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der
899 Überschrift @code{LyricText} beinhalten dann die Werte der
900 Standardeinstellungen dieser zwei Eigenschaften, wenn es sich
901 um ein @code{LyricText}-Objekt handelt. Andere Objekte,
902 die auch das @code{font-interface} unterstützen, setzen diese
903 Eigenschaften anders, wenn sie erstellt werden.
904
905 Versuchen wir nun einen @code{\override}-Befehl zu konstruieren,
906 der den Gesantext kursiv setzt. Das Objekt hat die Bezeichnung
907 @code{LyricText}, die Eigenschaft ist @code{font-shape} 
908 und der Wert @code{italic}. Wie vorher schon lassen wir den
909 Kontext aus.
910
911 Am Rande sei angemerkt, dass die Werte der @code{font-shape}-Eigenschaft
912 mit einem Apostroph (@code{'}) gekennzeichnet werden
913 müssen, weil es sich um Symbole handelt. Aus dem gleichen
914 Grund mussten auch für @code{thickness} weiter oben im
915 Text ein Apostroph gesetzt werden. Symbole sind besondere
916 Bezeichnungen, die LilyPond intern bekannt sind. Einige
917 sind Bezeichnungen von Eigenschaften, wie eben @code{thickness}
918 oder @code{font-shape}. Andere sind besondere Werte,
919 die an Eigenschaften übergeben werden können, wie
920 @code{italic}. Im Unterschied hierzu gibt es auch beliebige
921 Zeichenketten, die immer mit Anführungszeichen, also
922 als @code{"Zeichenkette"} auftreten. Für weitere
923 Einzelheiten zu Zeichenketten und Werten, siehe 
924 @ref{Scheme-Übung}.
925
926 Gut, der @code{\override}-Befehl, mit dem der Gesangstext
927 kursiv gesetzt wird, lautet:
928
929 @example
930 \override LyricText #'font-shape = #'italic
931 @end example
932
933 @noindent
934 und er muss direkt vor den Text gesetzt werden, auf den er sich
935 bezieht, etwa so:
936
937 @cindex font-shape-Eigenschaft, Beispiel
938 @cindex LyricText, Beispiel zur Veränderung
939 @cindex kursiv, Beispiel
940 @cindex @code{\addlyrics}, Beispiel
941
942 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
943 {
944   \time 6/8
945   {
946     r4 b8 b[( g]) g |
947     g[( e]) e d[( f]) a |
948     a g
949   }
950   \addlyrics {
951     \override LyricText #'font-shape = #'italic
952     The man who feels love's sweet e -- mo -- tion
953   }
954 }
955 @end lilypond
956
957 @noindent
958 Jetzt wird der Text kursiv gesetzt.
959
960
961 @subheading Den Kontext im Liedtextmodus bestimmen
962
963
964 @cindex Kontext im Gesangstextmodus angeben
965 @cindex Gesangstextmodus, Kontext angeben
966
967 Bei Gesangstexten funktioniert der @code{\override}-Befehl
968 nicht mehr, wenn Sie den Kontext im oben dargestellten
969 Format angeben.  Eine Silbe wird im Gesangtextmodus
970 (lyricmode) entweder von einem Leerzeichen, einer
971 neuen Zeile oder einer Zahl beendet.  Alle anderen
972 Zeichen werden als Teil der Silbe integriert.  Aus diesem 
973 Grund muss auch vor der schließenden Klammer
974 @code{@}} ein Leerzeichen gesetzt oder eine neue
975 Zeile begonnen werden.  Genauso müssen Leerzeichen
976 vor und nach einem Punkt benutzt werden, um die
977 Kontext-Bezeichnung von der Objekt-Bezeichnung zu 
978 trennen, denn sonst würden beide Bezeichnungen als
979 ein Begriff interpretiert und von LilyPond nicht verstanden 
980 werden.  Der Befehl muss also lauten:
981
982 @example
983 \override Lyrics . LyricText #'font-shape = #'italic
984 @end example
985
986 @warning{Innerhalb von Gesangstext muss immer ein
987 Leerzeichen zwischen der letzten Silbe und der schließenden
988 Klammer gesetzt werden.}
989
990 @warning{Innerhalb von @code{\override}-Befehlen in
991 Gesangstexten müssen Leerzeichen um Punkte zwischen
992 Kontext- und Objektbezeichnungen gesetzt werden.}
993
994
995 @node Typen von Eigenschaften
996 @subsection Typen von Eigenschaften
997 @translationof Types of properties
998
999 @cindex Eigenschaftsarten
1000
1001 Bis jetzt hatten wir es mit zwei Arten von Eigenschaften zu
1002 tun: @code{number} (Zahl) und @code{symbol}.  Damit
1003 ein Befehl funktioniert, muss der Wert einer Eigenschaft
1004 vom richtigen Typ sein und die Regeln befolgen, die
1005 für diesen Typ gelten.  Der Eigenschaftstyp ist in der
1006 IR in Klammern hinter der Eigenschaftsbezeichnung
1007 angegeben.  Hier eine Liste der Typen, die Sie vielleicht
1008 benötigen werden, mit den Regeln, die für den jeweiligen
1009 Typ gelten und einigen Beispielen. Sie müssen immer
1010 ein Rautenzeichen (@code{#}) vor den Typeintrag setzen,
1011 wenn sie in einem @code{\override}-Befehl benutzt werden.
1012
1013 @multitable @columnfractions .2 .45 .35
1014 @headitem Eigenschaftstyp
1015   @tab Regeln
1016   @tab Beispiele
1017 @item Boolesch
1018   @tab Entweder wahr oder falsch, dargestellt als #t oder #f
1019   @tab @code{#t}, @code{#f}
1020 @item Dimension (in Notenlinienabständen)
1021   @tab Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten)
1022   @tab @code{2.5}, @code{0.34}
1023 @item Richtung
1024   @tab Eine gültige Richtungskonstante oder das numerische Äquivalent
1025   @tab @code{LEFT}, @code{CENTER}, @code{UP},
1026        @code{1}, @code{-1}
1027 @item Integer
1028   @tab Eine positive ganze Zahl
1029   @tab @code{3}, @code{1}
1030 @item Liste
1031   @tab Eine eingeklammerte Anzahl von Einträgen, mit Klammern getrennt
1032   und angeführt von einem Apostroph
1033   @tab @code{'(left-edge staff-bar)}, @code{'(1)},
1034        @code{'(1.0 0.25 0.5)}
1035 @item Textbeschriftung (markup)
1036   @tab Beliebige gültige Beschriftung
1037   @tab @code{\markup @{ \italic "cresc." @}}
1038 @item Moment
1039   @tab Ein Bruch einer ganzen Note, mit der make-moment-Funktion
1040   konstruiert
1041   @tab @code{(ly:make-moment 1 4)},
1042        @code{(ly:make-moment 3 8)}
1043 @item Zahl
1044   @tab Eine beliebige positive oder negative Dezimalzahl
1045   @tab @code{3.5}, @code{-2.45}
1046 @item Paar (Zahlenpaar)
1047   @tab Zwei Zahlen getrennt von @qq{Leerzeichen . Leerzeichen}, eingeklammert
1048   und angeführt von einem Apostroph
1049   @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1050 @item Symbol
1051   @tab Eine beliebige Anzahl von Symbolen, die für die Eigenschaft 
1052   gültig sind, angeführt von einem Apostroph
1053   @tab @code{'italic}, @code{'inside}
1054 @item Unbekannt
1055   @tab Eine Prozedur oder @code{#f} (um keine Aktion hervorzurufen)
1056   @tab @code{bend::print}, @code{ly:text-interface::print},
1057        @code{#f}
1058 @item Vektor
1059   @tab Eine Liste mit drei Einträgen, eingeklammert und mit
1060   Apostroph-Raute ( @code{'#}) angeführt.
1061   @tab @code{'#(#t #t #f)}
1062 @end multitable
1063
1064
1065 @seealso
1066 Handbuch zum Lernen: @ref{Scheme-Übung}.
1067
1068
1069 @node Erscheinung von Objekten
1070 @section Erscheinung von Objekten
1071 @translationof Appearance of objects
1072
1073 In diesem Abschnitt wollen wir zeigen, wie die Kenntnisse der
1074 vorigen Abschnitte in der Praxis angewandt werden können,
1075 um das Aussehen des Musiksatzes zu beeinflussen.
1076
1077 @menu
1078 * Sichtbarkeit und Farbe von Objekten::
1079 * Größe von Objekten::
1080 * Länge und Dicke von Objekten::
1081 @end menu
1082
1083
1084 @node Sichtbarkeit und Farbe von Objekten
1085 @subsection Sichtbarkeit und Farbe von Objekten
1086 @translationof Visibility and color of objects
1087
1088 In Unterrichtsmaterial für den Musikunterricht wird oft
1089 eine Partitur dargestellt, in der bestimmte Notationselemente
1090 fehlen, so dass der Schüler die Aufgabe bekommt, die 
1091 nachzutragen.  Ein einfaches Beispiel ist etwa, die
1092 Taktlinien zu entfernen, damit der Schüler sie selber zeichnen
1093 kann.  Aber die Tatklinien werden normalerweise automatisch
1094 eingefügt.  Wie verhindern wir, dass sie ausgegeben werden?
1095
1096 Bevor wir uns hieran machen, sei daran erinnert, dass
1097 Objekteigenschaften in sogenannten @emph{Schnittstellen}
1098 -- engl. interface -- gruppiert sind, siehe auch
1099 @ref{Eigenschaften, die Schnittstellen besitzen können}.  Das dient ganz einfach
1100 dazu, die Eigenschaften zusammenzufassen, die üblicherweise
1101 zusammen benötigt werden -- wenn eine davon für ein Objekt
1102 gilt, dann auch die anderen.  Manche Objekte brauchen die
1103 Eigenschaften von der einen Schnittstelle, andere von einer 
1104 anderen.  Die Schnittstellen, die die Eigenschaften von einem
1105 bestimmten Grob beinhalten, sind in der IR unten auf der
1106 Seite aufgelistet, die dieses Grob beschreibt.  Die Eigenschaften
1107 können betrachtet werden, indem die Seite der entsprechenden
1108 Schnittstelle geöffnet wird.
1109
1110 Zu Information, wie man Eigenschaften von Grobs findet, siehe
1111 @ref{Eigenschaften von Layoutobjekten}.  Wir benutzen also jetzt
1112 die selbe Methode um in der IR das Layout-Objekt zu finden,
1113 dass für die Tatklinien zuständig ist. Über die Überschriften
1114 @emph{Backend} und @emph{All layout objects} kommen
1115 wir zu einem Layout-Objekt mit der Bezeichnung
1116 @code{BarLine} (engl. TaktLinie).  Seine Eigenschaften 
1117 beinhalten zwei, die über die Sichtbarkeit entscheiden:
1118 @code{break-visibility} und @code{stencil}.  
1119 @code{BarLine} unterstützt auch einige Schnittstellen,
1120 unter anderem @code{grob-interface}, wo wir eine
1121 @code{transparent} und eine @code{color}-Eigenschaft
1122 finden.  Alle können die Sichtbarkeit von Taktlinien (und
1123 natürlich auch die Sichtbarkeit von vielen anderen Objekten)
1124 beeinflussen.  Schauen wir uns diese Eigenschaften eine
1125 nach der anderen an.
1126
1127 @subheading stencil (Matrize)
1128
1129 @cindex Stencil-Eigenschaft
1130 @cindex Matrizen-Eigenschaft
1131
1132 Diese Eigenschaft kontrolliert die Erscheinung der Taktlinien,
1133 indem sie das Symbol bestimmt, das ausgegeben werden soll.
1134 Wie bei vielen anderen Eigenschaften auch, kann sie so
1135 eingestellt werden, dass sie nichts ausgibt, indem ihr Wert
1136 auf @code{#f} (falsch) gesetzt wird.  Ein Versuch also,
1137 wie vorher, indem wir den impliziten Kontext (@code{Voice})
1138 auslassen:
1139
1140 @cindex Taktlinie, Beispiel zur Veränderung
1141 @cindex stencil-Eigenschaft, Beispiel
1142
1143 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1144 {
1145   \time 12/16
1146   \override BarLine #'stencil = ##f
1147   c4 b8 c d16 c d8 |
1148   g, a16 b8 c d4 e16 |
1149   e8
1150 }
1151 @end lilypond
1152
1153 Die Taktlinien werden aber immer noch angezeigt.  Was ist da
1154 falsch gelaufen?  Gehen Sie zurück zur IR und schauen Sie auf 
1155 die Seite, die die Eigenschafter für @code{BarLine} angibt.
1156 Oben auf der Seite steht: @qq{Barline objects are created
1157 by: Bar_engraver}.  Schauen Sie sich die
1158 @code{Bar_engraver}-Seite an.  Unten auf der Seite steht
1159 eine Liste der Kontexte, in denen der Takt-Engraver
1160 funktioniert.  Alle Kontexte sind @code{Staff}-Typen (also
1161 Notensystem-Typen).  Der Grund, warum der
1162 @code{\override}-Befehl nicht funktioniert hat, liegt
1163 also darin, dass das Taktlinie-Objekt (@code{BarLine}) sich nicht
1164 im @code{Voice}-Kontextbefindet.  Wenn der Kontext
1165 falsch angegeben wird, bewirkt der Befehl einfach gar
1166 nichts.  Keine Fehlermeldung wird ausgegeben und auch
1167 nichts in die Log-Datei geschrieben.  Versuchen wir also,
1168 den richtigen Kontext mitanzugeben:
1169
1170 @cindex Taktlinie, Beispiel zur Veränderung
1171 @cindex stencil-Eigenschaft, Beispiel
1172
1173 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1174 {
1175   \time 12/16
1176   \override Staff.BarLine #'stencil = ##f
1177   c4 b8 c d16 c d8 |
1178   g, a16 b8 c d4 e16 |
1179   e8
1180 }
1181 @end lilypond
1182
1183 @noindent
1184 Jetzt sind die Taktlinien wirklich verschwunden.
1185
1186 Es sollte jedoch beachtet werden, dass das Setzen der
1187 @code{stencil}-Eigenschaft auf @code{#f} zu Fehlerhinweisen führen
1188 kann, wenn die Dimensionen des Objekts für die richtige Behandlung
1189 benötigt werden.  Zum Beispiel werden Fehler ausgegeben, wenn
1190 die @code{stencil}-Eigenschaft des @code{NoteHead}-Objekts auf
1191 @code{#f} gesetzt wird. Wenn dieser Fall auftritt, kann anstatt
1192 dessen die @code{point-stencil}-Funktion benutzt werden, welche
1193 den Stencil auf ein Objekt mit der Größe Null setzt:
1194
1195 @lilypond[quote,verbatim,relative=2]
1196 {
1197   c c
1198   \once \override NoteHead #'stencil = #point-stencil
1199   c c
1200 }
1201 @end lilypond
1202
1203
1204 @subheading break-visibility (unsichtbar machen)
1205
1206 @cindex break-visibility-Eigenschaft
1207 @cindex Unsichtbar machen (break-visibility)
1208
1209 Aus der Beschreibung der Eigenschaften für @code{BarLine}
1210 in der IR geht hervor, dass die @code{break-visibility}-Eigenschaft
1211 einen Vektor mit drei Booleschen Werten benötigt. Diese
1212 kontrollieren jeweils, ob die Taktlinien am Ende einer Zeile,
1213 in der Mitte einer Zeile und am Anfang einer Zeile ausgegeben
1214 werden.  Wenn also alle Taktlinien unsichtbar sein sollen, wie in
1215 unserem Beispiel, brauchen wir den Wert @code{'#(#f #f #f)}.
1216 Versuchen wir es also, und berücksichtigen wir auch den
1217 @code{Staff}-Kontext.  Beachten Sie auch, dass Sie @code{#'#}
1218 vor der öffnenden Klammer schreiben müssen: 
1219 @code{'#} wird benötigt als Teil des Wertes, um einen Vektor zu
1220 signalisieren, und das erste @code{#} wird benötigt, um
1221 den Wert in einem @code{\override}-Befehl anzuführen.
1222
1223 @cindex Taktlinie, Beispiel zur Veränderung
1224 @cindex break-visibility-Eigenschaft, Beispiel
1225
1226 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1227 {
1228   \time 12/16
1229   \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1230   c4 b8 c d16 c d8 |
1231   g, a16 b8 c d4 e16 |
1232   e8
1233 }
1234 @end lilypond
1235
1236 @noindent
1237 Auch auf diesem Weg gelingt es, die Taktlinien unsichtbar zu machen.
1238
1239
1240 @subheading transparent (durchsichtig)
1241
1242 @cindex transparent-Eigenschaft
1243 @cindex Durchsichtig machen (transparent)
1244
1245 Aus den Eigenschaftsdefinitionen auf der @code{grob-interface}-Seite
1246 in der IR geht hervor, dass die @code{transparent}-Eigenschaft
1247 boolesch ist.  Mit @code{#t} (wahr) wird also ein Grob durchsichtig
1248 gemacht.  Im unserem Beispiel soll jetzt die Taktart durchsichtig
1249 gemacht werden, anstatt die Taktlinien durchsichtig zu machen.
1250 Wir brauchen also wieder die Grob-Bezeichnung für die Taktart.
1251 Auf der @qq{All layout objects}-Seite in der IR müssen wir die
1252 Eigenschaften des @code{TimeSignature}-Layout-Objekts suchen
1253 Das Objekt wird vom @code{Time_signature_engraver} erstellt,
1254 der sich auch im @code{Staff}-Kontext befindet und genauso das
1255 @code{grob-interface} unterstützt, wie Sie sich
1256 überzeugen können.  Der Befehl, um die Taktangabe unsichtbar zu
1257 machen, ist also:
1258
1259 @cindex Taktart, Beispiel zur Veränderung
1260 @cindex transparent-Eigenschaft, Beispiel
1261
1262 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1263 {
1264   \time 12/16
1265   \override Staff.TimeSignature #'transparent = ##t
1266   c4 b8 c d16 c d8 |
1267   g, a16 b8 c d4 e16 |
1268   e8
1269 }
1270 @end lilypond
1271
1272 @noindent
1273 Die Taktangabe ist verschwunden, aber mit diesem Befehl wird ein
1274 freier Platz gelassen, wo sich die Taktangabe eigentlich befinden
1275 würde.  Das braucht man vielleicht für eine Schulaufgabe, in der
1276 die richtige Taktangabe eingefügt werden soll, aber in anderen
1277 Fällen ist diese Lücke nicht schön.  Um auch die Lücke zu entfernen,
1278 muss die Matrize (stencil) der Taktangabe auf @code{#f} (falsch)
1279 gesetzt werden:
1280
1281 @cindex Taktart, Beispiel zur Veränderung
1282 @cindex stencil-Eigenschaft, Beispiel
1283
1284 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1285 {
1286   \time 12/16
1287   \override Staff.TimeSignature #'stencil = ##f
1288   c4 b8 c d16 c d8 |
1289   g, a16 b8 c d4 e16 |
1290   e8
1291 }
1292 @end lilypond
1293
1294 @noindent
1295 Und der Unterschied wird deutlich: hiermit wird das gesamte Objekt
1296 entfernt, während man mit @code{transparent} ein Objekt
1297 unsichtbar machen kann, es aber an seinem Platz gelassen wird.
1298
1299
1300 @subheading color (Farbe)
1301
1302 @cindex color-Eigenschaft
1303 @cindex Farb-Eigenschaft
1304
1305 Abschließend wollen wir die Taktlinien unsichtbar machen, indem
1306 wir sie weiß einfärben.  (Es gibt hier eine Schwierigkeit: die weiße
1307 Taktlinie übermalt manchmal die Taktlinienen, wo sie sie kreuzt, 
1308 manchmal aber auch nicht.  Sie können in den Beispielen unten
1309 sehen, dass das nicht vorhersagbar ist.  Die Einzelheiten dazu, warum
1310 das passiert und wie sie es kontrollieren können, werden dargestellt
1311 in @ruser{Objekte weiß malen}.  Im Moment wollen wir lernen, wie
1312 man mit Farbe arbeitet, akzeptieren Sie bitte an dieser Stelle die
1313 Beschränkung.)
1314
1315 Das @code{grob-interface} bestimmt, dass der Wert der Farb-Eigenschaft
1316 eine Liste ist, aber es gibt keine Erklärung, was für eine Liste das
1317 sein soll.  Die Liste, die benötigt wird, ist eine Liste mit Werten in
1318 internen Einheiten, aber damit Sie nicht wissen müssen, wie diese
1319 aussehen, gibt es mehrere Wege, Farben anzugeben.  Der erste
1320 Weg ist es, @qq{normale} Farben zu benutzen, wie sie in der
1321 Tabelle in @ruser{Liste der Farben} aufgelistet sind.  Beachten Sie,
1322 dass die Bezeichnungen auf English sind.  Um die Taktlinien auf
1323 weiß zu setzen, können Sie schreiben:
1324
1325 @cindex Taktlinie, Beispiel zur Veränderung
1326 @cindex color-Eigenschaft, Beispiel
1327
1328 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1329 {
1330   \time 12/16
1331   \override Staff.BarLine #'color = #white
1332   c4 b8 c d16 c d8 |
1333   g, a16 b8 c d4 e16 |
1334   e8
1335 }
1336 @end lilypond
1337
1338 @noindent
1339 und die Taktlinien verschwinden in der Tat.  Beachten Sie,
1340 dass @emph{white} nicht mit einem Apostroph angeführt
1341 wird -- es ist kein Symbol, sondern eine @emph{Funktion}.
1342 Wenn sie aufgerufen wird, stellt sie eine Liste mit internen
1343 Werten zu Verfügung, mit welcher die Farbe auf weiß
1344 gestellt wird.  Die anderen Farben in der Liste sind auch
1345 Funktionen.  Um sich zu überzeugen, dass der Befehl auch
1346 wirklich funktioniert, können Sie die Farbe auf eine der
1347 anderen Funktionen dieser Liste abändern.
1348
1349 @cindex Farben, X11
1350 @cindex X11-Farben
1351 @funindex x11-color
1352
1353 Die zweite Art die Farbe zu ändern geschieht, indem die Liste
1354 der X11-Farbbezeichnungen einzusetzen, siehe die zweite Liste
1355 in @ruser{Liste der Farben}.  Diesen Farben muss jedoch eine
1356 andere Funktion vorangestellt werden, die die X11-Farbbezeichnungen
1357 in interne Werte konvertiert: 
1358 @code{x11-color}.  Das geschieht wie folgt:
1359
1360 @cindex Taktlinie, Beispiel zur Veränderung
1361 @cindex color-Eigenschaft, Beispiel
1362
1363 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1364 {
1365   \time 12/16
1366   \override Staff.BarLine #'color = #(x11-color 'white)
1367   c4 b8 c d16 c d8 |
1368   g, a16 b8 c d4 e16 |
1369   e8
1370 }
1371 @end lilypond
1372
1373 @noindent
1374 In diesem Fall hat die Funktion @code{x11-color} ein Symbol
1375 als Argument, darum muss dem Symbol ein Apostroph vorangestellt
1376 und beide zusammen in Klammern gesetzt werden.
1377
1378 @cindex RGB-Farben
1379 @cindex Farben, RGB
1380 @funindex rgb-color
1381
1382 Es gibt noch eine dritte Funktion, die RGB-Werte in die
1383 internen Werte übersetzt -- die @code{rgb-color}-Funktion.  Sie
1384 braucht drei Argumente, um die Stärke von Rot, Grün und
1385 Blau darzustellen. Die Werte befinden sich zwischen 
1386 0 und 1.  Um also die Farbe Rot darzustellen, muss der
1387 Wert der Funktion lauten: @code{(rgb-color 1 0 0)}, weiß
1388 würde sein: @code{(rgb-color 1 1 1)}.
1389
1390 @cindex Taktlinie, Beispiel zur Veränderung
1391 @cindex color-Eigenschaft, Beispiel
1392
1393 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1394 {
1395   \time 12/16
1396   \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1397   c4 b8 c d16 c d8 |
1398   g, a16 b8 c d4 e16 |
1399   e8
1400 }
1401 @end lilypond
1402
1403 Schließlich gibt es noch eine Grauskala, die zu den X11-Farben
1404 gehört.  Sie reicht von schwarz (@code{'grey0'}) bis
1405 weiß (@code{'grey100}), in Einserschritten.  Wir wollen das
1406 illustrieren, indem alle Layout-Objekte im Beispiel
1407 verschiede Grauschattierungen erhalten:
1408
1409 @cindex StaffSymbol, Beispiel zur Veränderung
1410 @cindex TimeSignature, Beispiel zur Veränderung
1411 @cindex Schlüssel, Beispiel zur Veränderung
1412 @cindex Notenhals, Beispiel zur Veränderung
1413 @cindex Taktlinie, Beispiel zur Veränderung
1414 @cindex Farbeigenschaft, Beispiel
1415 @cindex x11-Farben, Beispiel
1416 @cindex Taktlinien, Beispiel zur Veränderung
1417 @cindex Taktart, Beispiel zur Veränderung
1418 @cindex Clef, Beispiel zur Veränderung
1419 @cindex Stem, Beispiel zur Veränderung
1420 @cindex NoteHead, Beispiel zur Veränderung
1421 @cindex Notenkopf, Beispiel zur Veränderung
1422
1423 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1424 {
1425   \time 12/16
1426   \override Staff.StaffSymbol   #'color = #(x11-color 'grey30)
1427   \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1428   \override Staff.Clef          #'color = #(x11-color 'grey60)
1429   \override Voice.NoteHead      #'color = #(x11-color 'grey85)
1430   \override Voice.Stem          #'color = #(x11-color 'grey85)
1431   \override Staff.BarLine       #'color = #(x11-color 'grey10)
1432   c4 b8 c d16 c d8 |
1433   g, a16 b8 c d4 e16 |
1434   e8
1435 }
1436 @end lilypond
1437
1438 @noindent
1439 Beachten Sie die Kontexte, die mit jedem einzelnen Layout-Objekt
1440 verbunden sind.  Es ist wichtig, den richtigen Kontext einzusetzen,
1441 damit die Befehle funktionieren.  Denken Sie daran, dass der 
1442 Kontext sich daran orientiert, wo sich der entsprechende
1443 Engraver befindet.  Den Standardkontext für Engraver finden
1444 Sie, indem Sie beim Layout-Objekt beginnen, zum Engraver
1445 gehen, der es produziert und auf der Seite des Engravers in der
1446 IR finden Sie Information, in welchem Kontext sich der
1447 Engraver normalerweise befindet.
1448
1449
1450 @node Größe von Objekten
1451 @subsection Größe von Objekten
1452 @translationof Size of objects
1453
1454 @cindex Veränderung von Objektgrößen
1455 @cindex Objektgrößen, verändern
1456 @cindex Größen von Objekten verändern
1457
1458 Als Startpunkt wollen wir wieder ein früheres Beispiel
1459 wählen, siehe @ref{Musikalische Ausdrücke ineinander verschachteln}. Hier wurde
1460 ein neues Notensystem erstellt, wie man es für ein @rglos{ossia}
1461 braucht.
1462
1463 @cindex alignAboveContext-Eigenschaft, Beispiel
1464 @cindex über dem System anordnen, Beispiel
1465 @cindex @code{\with}-Beispiel
1466
1467 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1468 \new Staff ="main" {
1469        \relative g' {
1470          r4 g8 g c4 c8 d |
1471          e4 r8
1472          <<
1473            { f c c }
1474            \new Staff \with {
1475              alignAboveContext = #"main" }
1476            { f8 f c }
1477          >>
1478          r4 |
1479        }
1480      }
1481 @end lilypond
1482
1483 Ossia-Systeme werden normalerweise ohne Schlüssel und Taktangabe
1484 geschrieben, und sie werden etwas kleiner als das Hauptsystem gesetzt.
1485 Wie man Schlüssel und Taktangabe entfernt, wissen wir schon:
1486 wir setzen den Stencil von beiden auf @code{#f}:
1487
1488 @cindex alignAboveContext-Eigenschaft, Beispiel
1489 @cindex über dem System anordnen, Beispiel
1490 @cindex @code{\with}-Beispiel
1491 @cindex stencil-Eigenschaft, Beispiel
1492 @cindex Schlüssel, Beispiel zur Veränderung
1493 @cindex Taktart, Beispiel zur Veränderung
1494
1495 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1496 \new Staff ="main" {
1497   \relative g' {
1498     r4 g8 g c4 c8 d |
1499     e4 r8
1500     <<
1501       { f c c }
1502       \new Staff \with {
1503         alignAboveContext = #"main"
1504       }
1505       {
1506         \override Staff.Clef #'stencil = ##f
1507         \override Staff.TimeSignature #'stencil = ##f
1508         { f8 f c }
1509       }
1510     >>
1511     r4 |
1512   }
1513 }
1514 @end lilypond
1515
1516 @noindent
1517 wobei ein zusätzliches Klammerpaar nach der @code{\with}-Konstruktion
1518 erforderlich ist um sicherzugehen, dass die Modifikation und 
1519 die Noten sich auch auf das Ossia-System beziehen.
1520
1521 Was für einen Unterschied macht es, ob man den @code{Staff}-Kontext
1522 mit @code{\with} verändert, oder ob man die Stencils mit 
1523 @code{\override} beeinflusst?  Der größte Unterschied liegt
1524 darin, dass Änderungen, die mit @code{\with} eingeführt werden,
1525 während der Erstellung des Kontextes miterzeugt werden und
1526 als @strong{Standardeinstellungen} für diesen Kontext während seiner
1527 gesamten Dauer gelten, während @code{\set}- oder @code{\override}-Befehle
1528 dynamisch in die Noten eingebettet werden -- sie führen die
1529 Änderungen synchron mit einem bestimmten Zeitpunkt in 
1530 der Musik aus.  Wenn die Änderungen mit  @code{\unset}
1531 oder @code{\revert} rückgängig gemacht werden, werden
1532 wieder die Standardwerte eingesetzt, die also die sind, die
1533 mit einer @code{\with}-Konstruktion definiert wurden, oder
1534 wenn hier keine definiert worden sind, die normalen
1535 Standardwerte.
1536
1537 Manche Kontexteigenschaften können nur ein einer
1538 @code{\with}-Konstruktion verändert werden.  Das sind
1539 Eigenschaften, die nicht sinnvoll mitten im System geändert
1540 werden können.  @code{alignAboveContext} (Orientierung
1541 über dem Kontext) und die Parallele,
1542 @code{alignBelowContext} (Orientierung unter dem Kontext)
1543 sind zwei derartige Eigenschaften -- wenn das Notensystem
1544 einmal erstellt wurde, ist die Orientierung schon bestimmt
1545 und es wäre nicht sinnvoll, sie später zu ändern.
1546
1547 Die Standardwerte für Layout-Objekt-Eigenschaften können
1548 auch in der @code{\with}-Konstruktion gesetzt werden.
1549 Benutzen Sie einfach den normalen @code{\override}-Befehl
1550 ohne den Kontext, denn der Kontext ist eindeutig definiert
1551 durch die Stelle, an welcher sich @code{\with} befindet.
1552 Wenn an dieser Stelle ein Kontext angegeben wird, produziert LilyPond
1553 eine Fehlermeldung.
1554
1555 Das obige Beispiel könnte also auch so aussehen:
1556
1557 @cindex alignAboveContext-Eigenschaft, Beispiel
1558 @cindex über dem System anordnen, Beispiel
1559 @cindex @code{\with}-Beispiel
1560 @cindex stencil-Eigenschaft, Beispiel
1561 @cindex Schlüssel, Beispiel zur Veränderung
1562 @cindex Taktart, Beispiel zur Veränderung
1563
1564 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1565 \new Staff ="main" {
1566   \relative g' {
1567     r4 g8 g c4 c8 d |
1568     e4 r8
1569     <<
1570       { f c c }
1571       \new Staff \with {
1572         alignAboveContext = #"main"
1573         % Don't print clefs in this staff
1574         \override Clef #'stencil = ##f
1575         % Don't print time signatures in this staff
1576         \override TimeSignature #'stencil = ##f
1577       }
1578         { f8 f c }
1579     >>
1580     r4 |
1581   }
1582 }
1583 @end lilypond
1584
1585 Nun können wir daran gehen, auch wirklich die
1586 Größe der Objekte zu ändern.
1587
1588 Manche Layout-Objekte werden aus Glyphen erstellt,
1589 die sich in einer Schriftartdatei befinden.  Dazu gehören
1590 die Notenköpfe, Versetzungszeichen, Text, Schlüssel,
1591 Taktbezeichnung, Dynamik und Gesangstext.  Ihre
1592 Größe wird verändert, indem die
1593 @code{font-size}- (Schriftgröße)-Eigenschaft geändert wird, wie
1594 wir bald sehen werden.  Andere Layout-Objekte, wie
1595 Bögen -- oder allgemein Strecker-Objekte -- werden
1596 individuell gezeichnet, es gibt dazu also keine 
1597 @code{font-size}, die mit ihnen verknüpft wäre.
1598 Weitere Eigenschaften wie die Länge von Hälsen und
1599 Taktlinien, Dicke von Balken und anderen Linien und 
1600 der Abstand der Notenlinien voneinander müssen auf
1601 spezielle Weise verändert werden.
1602
1603 In unserem Ossia-Beispiel wollen wir zuerst die
1604 Schriftgröße verändern.  Das ist auf zwei Arten möglich. 
1605 Entweder wir ändern die Schriftgröße für jede Objektart
1606 mit einem eigenen Befehl, etwa:
1607
1608 @example
1609 \override NoteHead #'font-size = #-2
1610 @end example
1611
1612 @noindent
1613 oder wir ändern die Größe aller Schriftobjekte, indem wir
1614 den Wert einer besonderen Eigenschaft, @code{fontSize},
1615 mit dem @code{\set}-Befehl bestimmen oder sie in 
1616 eine @code{\with}-Konstruktion (ohne @code{\set} einschließen.
1617
1618 @example
1619 \set fontSize = #-2
1620 @end example
1621
1622 Beide Beispiele reduzieren die Schriftgröße um zwei Schritte
1623 im Vergleich zum vorigen Wert, wobei jeder Schritt die
1624 Schriftgröße um etwa 12% verändert.
1625
1626 Setzen wir das also in unserem Ossia-Beispiel ein:
1627
1628 @cindex alignAboveContext-Eigenschaft, Beispiel
1629 @cindex über dem System anordnen, Beispiel
1630 @cindex @code{\with}-Beispiel
1631 @cindex stencil-Eigenschaft, Beispiel
1632 @cindex Schlüssel, Beispiel zur Veränderung
1633 @cindex Taktart, Beispiel zur Veränderung
1634
1635 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1636 \new Staff ="main" {
1637   \relative g' {
1638     r4 g8 g c4 c8 d |
1639     e4 r8
1640     <<
1641       { f c c }
1642       \new Staff \with {
1643         alignAboveContext = #"main"
1644         \override Clef #'stencil = ##f
1645         \override TimeSignature #'stencil = ##f
1646         % Reduce all font sizes by ~24%
1647         fontSize = #-2
1648       }
1649         { f8 f c }
1650     >>
1651     r4 |
1652   }
1653 }
1654 @end lilypond
1655
1656 Das sieht aber immer noch nicht richtig aus.  Die Notenköpfe
1657 und Fähnchen sind kleiner, aber die Hälse im Vergleich
1658 dazu zu lang und die Notenlinien zu weit auseinander.
1659 Sie müssen auch proportional zur Schriftart verkleinert
1660 werden.  Der nächste Abschnitt behandelt diese Anpassung.
1661
1662
1663 @node Länge und Dicke von Objekten
1664 @subsection Länge und Dicke von Objekten
1665 @translationof Length and thickness of objects
1666
1667 @cindex Entfernungen
1668 @cindex Dicke
1669 @cindex Länge
1670 @funindex magstep
1671 @cindex Größe, verändern
1672 @cindex Notenhalslänge, verändern
1673 @cindex Hälse, Länge verändern
1674 @cindex Notenlinien, Länge verändern
1675
1676 Abstände und Längen werden in LilyPond üblicherweise
1677 in Notenlinienabständen (engl. staff-spaces) gemessen. 
1678 Das ist der Abstand zwischen zwei Notenlinien im System.
1679 Die meisten Dicken (engl. thickness) dagegen werden in
1680 einer internen Einheit Linien-Dicke (engl. line-thickness)
1681 gemessen.  Die Linien von Dynamikklammern zum Beispiel
1682 haben standardmäßig eine Dicke von einer Einheit
1683 @code{line-thickness}, während die Dicke eines
1684 Notenhalses 1,3 ist.  Beachten Sie jedoch, dass sich
1685 manche Dicken anders verhalten: die Dicke von
1686 Balken etwa wird in Notenlinienabständen gemessen.
1687
1688 Wie also werden Längen skaliert um der Schriftgröße
1689 zu entsprechen?  Das kann mit einer besonderen Funktion
1690 @code{magstep} vorgenommen werden, die genau für
1691 diesen Zweck vorhanden ist.  Sie nimmt ein Argument auf,
1692 die Änderung der Schriftgröße (#-2 im obigen Beispiel)
1693 und gibt einen Skalierungsfaktor aus, der dazu dient,
1694 Objekte proportionell zueinander zu verändern.  So wird
1695 sie benutzt:
1696
1697 @cindex alignAboveContext-Eigenschaft, Beispiel
1698 @cindex über dem System anordnen, Beispiel
1699 @cindex @code{\with}-Beispiel
1700 @cindex stencil-Eigenschaft, Beispiel
1701 @cindex Schlüssel, Beispiel zur Veränderung
1702 @cindex Taktart, Beispiel zur Veränderung
1703 @cindex Notenlinienabstände verändern
1704 @cindex staff-space-Eigenschaft verändern
1705 @cindex magstep-Funktion, Beispiel
1706 @cindex Schriftart-Eigenschaft, Beispiel
1707
1708 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1709 \new Staff ="main" {
1710   \relative g' {
1711     r4 g8 g c4 c8 d |
1712     e4 r8
1713     <<
1714       { f c c }
1715       \new Staff \with {
1716         alignAboveContext = #"main"
1717         \override Clef #'stencil = ##f
1718         \override TimeSignature #'stencil = ##f
1719         fontSize = #-2
1720         % Reduce stem length and line spacing to match
1721         \override StaffSymbol #'staff-space = #(magstep -2)
1722       }
1723         { f8 f c }
1724     >>
1725     r4 |
1726   }
1727 }
1728 @end lilypond
1729
1730 @noindent
1731 Da die Länge eines Halses und viele andere Längeneigenschaften
1732 relativ zum Wert des Notenlinienabstands (@code{staff-space})
1733 errechnet werden, werden sie auch automatisch verkleinert.
1734 Das wirkt sich jedoch nur auf die vertikale Skalierung des Ossias
1735 aus -- die horizontale Skala ist durch das Layout des Haupsystems
1736 bestimmt und wird also von diesen Größenänderungen nicht
1737 betroffen.  Wenn natürlich die Größe der gesamten Noten reduziert
1738 würde, würde sich auch die horizontalen Abstände ändern.  Dass
1739 wird später im Layout-Abschnitt betrachtet.
1740
1741 Mit dieser Änderung ist unser Ossia fertig.  Die Größen und Längen
1742 aller anderen Objekte können auf analoge Weise geändert
1743 werden.
1744
1745 Für kleine Größenänderungen, wie in dem obigen Beispiel,
1746 braucht die Dicke der verschiedenen Linien, wie Taktlinien,
1747 Notenlinien, Balken, Dynamikklammern usw. normalerweise
1748 keine spezielle Anpassung.  Wenn die Dicke eines bestimmten
1749 Layout-Objektes angepasst werden muss, kann man das erreichen,
1750 indem die entsprechende @code{thickness}-Eigenschaft des
1751 Objekts mit @code{\override} verändert wird.  Ein Beispiel,
1752 wie man die Dicke von Bögen ändert, wurde schon gezeigt,
1753 siehe @ref{Eigenschaften von Layoutobjekten}.  Die Dicke aller
1754 gezeichneten Objekte (die also nicht aus einer Schriftart 
1755 stammen) können auf gleiche Weise geändert werden.
1756
1757
1758 @node Positionierung von Objekten
1759 @section Positionierung von Objekten
1760 @translationof Placement of objects
1761
1762 @menu
1763 * Automatisches Verhalten::
1764 * within-staff (Objekte innerhalb des Notensystems)::
1765 * Objekte außerhalb des Notensystems::
1766 @end menu
1767
1768
1769 @node Automatisches Verhalten
1770 @subsection Automatisches Verhalten
1771 @translationof Automatic behavior
1772
1773 @cindex within-staff-Objekte
1774 @cindex outside-staff-Objekte
1775 @cindex Objekte innerhalb des Notensystems
1776 @cindex Objekte außerhalb des Notensystems
1777
1778 Es gibt Objekte der Notation, die zum Notensystem gehören, und
1779 andere, die außerhalb des Systems gesetzt werden müssen.  Sie
1780 werden @code{within-staff}-Objekte bzw.
1781 @code{outside-staff}-Objekte genannt.
1782
1783 @code{within-staff}-Objekte werden innerhalb des Notensystems
1784 (engl. staff) gesetzt: Notenköpfe, Hälse, Versetzungszeichen
1785 usw.  Ihre Position ist üblicherweise durch die notierte Musik
1786 bestimmt -- sie werden vertikal auf bestimmten Linien notiert
1787 oder sind an andere Objekte gebunden, die vertikal festgelegt
1788 sind.  Kollisionen von Notenköpfen, Hälsen und Versetzungszeichen
1789 werden normalerweise automatisch vermieden.  Es gibt 
1790 Befehle, um dieses automatische Verhalten zu verändern, wie
1791 unten gezeigt werden soll.
1792
1793 Objekte, die außerhalb des Notensystems gesetzt werden, sind
1794 unter Anderem Übungsmarkierungen, Text und Dynamikzeichen.
1795 LilyPonds Regel für ihre vertikale Positionierung lautet, sie so nah wie
1796 möglich am Notensystem zu setzen, aber nicht so nah, dass
1797 sie mit anderen Objekten kollidieren.  Dabei wird die
1798 @code{outside-staff-priority}-(Priorität außerhalb des Notensystems)-Eigenschaft
1799 eingesetzt, um die Reihenfolge zu bestimmen, in denen Objekte gesetzt werden 
1800 sollen.
1801
1802 Zuerst werden alle Innersystemobjekte von LilyPond gesetzt.
1803 Dann werden die Objekte außerhalb des Systems nach
1804 ihrer 
1805 @code{outside-staff-priority} geordnet.  Die @code{outside-staff}-Objekte
1806 werden dann nacheinander gesetzt, mit der niedrigsten
1807 Priorität beginnend, und so gesetzt, dass sie nicht mit anderen
1808 Objekten kollidieren, die schon gesetzt wurden.  Wenn also zwei
1809 @code{outside-staff}-Objekte um den selben Platz streiten,
1810 wird das mit der geringeren @code{outside-staff-priority} näher
1811 am System gesetzt werden.  Wenn zwei Objekte die selbe Priorität
1812 haben, wird das näher am System gesetzt, welches zuerst
1813 auftritt.
1814
1815 Im folgenden Beispiel haben alle Textbeschriftungen die gleiche
1816 Priorität (weil sie nicht explizit gesetzt worden ist).  Beachten Sie,
1817 dass @qq{Text3} wieder dicht am System gesetzt wurde, weil
1818 er unter @qq{Text2} passt.
1819
1820 @cindex Textbeschriftungsbeispiel
1821
1822 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1823 c2^"Text1"
1824 c^"Text2"
1825 c^"Text3"
1826 c^"Text4"
1827 @end lilypond
1828
1829 Notensysteme werden in den Standardeinstellungen auch so dicht
1830 beeinander gesetzt wie es möglich ist (mit einem minimalen Abstand).
1831 Wenn Noten sehr weit aus einem System herausragen, zwingen sie
1832 das nächste System weiter weg, wenn eine Kollision drohen würde.
1833 Im nächsten Beispiel sehen Sie, wie Noten auf zwei Systemen
1834 @qq{ineinander greifen}.
1835
1836 @lilypond[quote,ragged-right,verbatim]
1837 <<
1838   \new Staff {
1839     \relative c' { c a, }
1840   }
1841   \new Staff {
1842     \relative c'''' { c a, }
1843   }
1844 >>
1845 @end lilypond
1846
1847
1848 @node within-staff (Objekte innerhalb des Notensystems)
1849 @subsection within-staff (Objekte innerhalb des Notensystems)
1850 @translationof Within-staff objects
1851
1852 Es wurde schon gezeigt, wie die Befehle @code{\voiceXXX} die Richtung
1853 von Bögen, Fingersatz und allen anderen Objekten beeinflusst,
1854 die von der Richtung der Notenhälsen abhängen.  Diese Befehle
1855 sind nötig, wenn polyphone Musik geschrieben wird, damit sich 
1856 die einzelnen Melodielinien klar abzeichnen.  Es kann aber von Zeit
1857 zu Zeit nötig sein, dieses automatische Verhalten zu verändern.  Das
1858 kann entweder für ganze Abschnitte, aber genauso auch nur für eine
1859 einzelne Note vorgenommen werden.  Die Eigenschaft, die die Richtung
1860 bestimmt, ist die @code{direction}-Eigenschaft jedes Layout-Objekts.
1861 Es soll erst erklärt werden, was sie bewirkt und dann eine Anzahl
1862 an fertigen Befehlen für die üblicheren Situationen präsentiert werden,
1863 mit denen Sie gleich loslegen können.
1864
1865 Manche Layout-Objekte, wie Legato- und Bindebögen, biegen sich
1866 oder zeigen entweder nach oben oder nach unten, andere, wie
1867 Hälse und Fähnchen, verändern auch die Position rechts oder links,
1868 je nach der Richtung, in die sie zeigen.  Das wird automatisch 
1869 berücksichtigt, wenn die @code{direction}-Eigenschaft verändert
1870 wird.
1871
1872 @funindex down
1873 @funindex up
1874 @funindex center
1875 @funindex neutral
1876 @cindex hoch-Eigenschaft
1877 @cindex runter-Eigenschaft
1878 @cindex zentriert-Eigenschaft
1879 @cindex neutral-Eigenschaft
1880
1881 Das folgende Beispiel zeigt im ersten Takt die Standardeinstellung
1882 für Hälse, die bei hohen Noten nach unten zeigen und bei tiefen
1883 noten nach oben. Im nächsten Takt werden alle Hälse nach unten
1884 gezwungen, im dritten Takt nach oben, und im vierten wird wieder
1885 der Standard eingestellt.
1886
1887 @cindex Notenhals, Beispiel zur Veränderung
1888 @cindex Richtungseigenschaft, Beispiel
1889
1890 @lilypond[quote,verbatim,relative=2]
1891 a4 g c a
1892 \override Stem #'direction = #DOWN
1893 a g c a
1894 \override Stem #'direction = #UP
1895 a g c a
1896 \revert Stem #'direction
1897 a g c a
1898 @end lilypond
1899
1900 Hier werden die Konstanten @code{DOWN} und @code{UP}
1901 eingesetzt.  Sie haben die Werte @code{-1} bwz. @code{+1}, und
1902 diese numerischen Werte können ebenso benutzt werden.  Auch
1903 der Wert @code{0} kann in manchen Fällen benutzt werden.  Er
1904 bedeutet für die Hälse das gleiche wie @code{UP}, für einige
1905 andere Objekte jedoch @qq{zentiert}.  Es gibt hierzu die Konstante
1906 @code{CENTER}, die den Wert @code{0} hat.
1907
1908 Es gibt aber einfachere Befehle, die normalerweise benutzt werden.
1909 Hier eine Tabelle der häufigsten.  Die Bedeutung des Befehls wird
1910 erklärt, wenn sie nicht selbsverständlich ist.
1911
1912 @multitable @columnfractions .2 .2 .25 .35
1913 @headitem Runter/Links
1914   @tab Rauf/Rechts
1915   @tab Rückgängig
1916   @tab Wirkung
1917 @item @code{\arpeggioArrowDown}
1918   @tab @code{\arpeggioArrowUp}
1919   @tab @code{\arpeggioNormal}
1920   @tab Arpeggio mit Pfeil nach unten, oben oder ohne Pfeil
1921 @item @code{\dotsDown}
1922   @tab @code{\dotsUp}
1923   @tab @code{\dotsNeutral}
1924   @tab Richtung der Verschiebung eines Punktes, um Notenlinien zu vermeiden
1925 @item @code{\dynamicDown}
1926   @tab @code{\dynamicUp}
1927   @tab @code{\dynamicNeutral}
1928   @tab Position der Dynamik-Bezeichnung relativ zum System
1929 @item @code{\phrasingSlurDown}
1930   @tab @code{\phrasingSlurUp}
1931   @tab @code{\phrasingSlurNeutral}
1932   @tab Befehl für Richtung von Phrasierungsbögen
1933 @item @code{\slurDown}
1934   @tab @code{\slurUp}
1935   @tab @code{\slurNeutral}
1936   @tab Befehl für Richtung von Legatobögen
1937 @item @code{\stemDown}
1938   @tab @code{\stemUp}
1939   @tab @code{\stemNeutral}
1940   @tab Befehl für Richtung von Hälsen
1941 @item @code{\textSpannerDown}
1942   @tab @code{\textSpannerUp}
1943   @tab @code{\textSpannerNeutral}
1944   @tab Position von Textbeschrifungen, die als Strecker eingegeben werden
1945 @item @code{\tieDown}
1946   @tab @code{\tieUp}
1947   @tab @code{\tieNeutral}
1948   @tab Befehl für Richtung von Bindebögen
1949 @item @code{\tupletDown}
1950   @tab @code{\tupletUp}
1951   @tab @code{\tupletNeutral}
1952   @tab Befehl für Richtung von Klammern/Zahlen der N-tolen
1953 @end multitable
1954
1955 Diese vordefinierten Befehl können allerdings @strong{nicht}
1956 zusammen mit @code{\once} benutzt werden.  Wenn Sie die
1957 Wirkung eines Befehl auf eine einzige Noten begrenzen wollen,
1958 müssen Sie den entsprechenden
1959 @code{\once \override}-Befehl benutzen oder den definierten
1960 Befehl, gefolgt von dem entsprechenden neutralisierenden
1961 @code{xxxNeutral}-Befehl nach der Note.
1962
1963
1964 @subheading Fingersatz
1965
1966 @cindex Fingersatz, Positionierung
1967 @cindex Fingersatz, Akkorde
1968
1969 Die Positionierung von Fingersatz kann auch durch den Wert
1970 seiner @code{direction}-Eigenschaft beeinflusst werden, aber
1971 eine Veränderung von  @code{direction} hat keinen Einfluss auf
1972 Akkorde. es gibt auch hier
1973 besondere Befehle, mit denen der Fingersatz von einzelnen
1974 Noten in Akkorden kontrolliert werden kann, wobei mögliche
1975 Positionen über, unter der Note und rechts bzw. links von
1976 ihr sind.
1977
1978 Zunächst die Wirkungsweise von @code{direction} auf
1979 den Fingersatz: im ersten Takt der Standard, dann
1980 die Wirkung von @code{DOWN} (runter) und @code{UP}
1981 (hinauf).
1982
1983 @cindex Fingersatz, Beispiel zur Veränderung
1984 @cindex direction-Eigenschaft, Beispiel
1985
1986 @lilypond[quote,verbatim,relative=2]
1987 c-5 a-3 f-1 c'-5
1988 \override Fingering #'direction = #DOWN
1989 c-5 a-3 f-1 c'-5
1990 \override Fingering #'direction = #UP
1991 c-5 a-3 f-1 c'-5
1992 @end lilypond
1993
1994 Eine Beeinflussung der @code{direction}-Eigenschaft ist jedoch 
1995 nicht die einfachste Art, Fingersatzbezeichnungen manuell über oder
1996 unter das System zu setzen.  Normalerweise bietet es sich an,
1997 @code{_} oder @code{^} anstelle von @code{-} vor der Fingersatz-Zahl
1998 zu benutzen.  Hier das vorherigen Beispiel mit dieser Methode:
1999
2000 @cindex Fingersatz-Beispiel
2001
2002 @lilypond[quote,verbatim,relative=2]
2003 c-5 a-3 f-1 c'-5
2004 c_5 a_3 f_1 c'_5
2005 c^5 a^3 f^1 c'^5
2006 @end lilypond
2007
2008 Die @code{direction}-Eigenschaft wirkt sich nicht auf
2009 Akkorde aus, während die Präfixe @code{_} und @code{^} funktionieren.
2010 Standardmäßig wird der Fingersatz automatisch entweder
2011 über oder unter dem Akkord gesetzt:
2012
2013 @cindex Fingersatz-Beispiel
2014
2015 @lilypond[quote,verbatim,relative=2]
2016 <c-5 g-3>
2017 <c-5 g-3 e-2>
2018 <c-5 g-3 e-2 c-1>
2019 @end lilypond
2020
2021 @noindent
2022 aber das kann manuell geändert werden, um einzelne Fingersatzanweisungen
2023 nach oben oder unten zu zwingen:
2024
2025 @cindex Fingersatz-Beispiel
2026
2027 @lilypond[quote,verbatim,relative=2]
2028 <c-5 g-3 e-2 c-1>
2029 <c^5 g_3 e_2 c_1>
2030 <c^5 g^3 e^2 c_1>
2031 @end lilypond
2032
2033 Noch bessere Kontrolle über die Positionierung von Fingersatz für
2034 einzelne Noten in einem Akkord ist mit dem
2035 @code{\set fingeringOrientations}-Befehl möglich.  Die Syntax
2036 lautet:
2037
2038 @example
2039 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2040 @end example
2041
2042 @noindent
2043 @code{\set}wird benutzt, weil @code{fingeringOrientations} eine
2044 Eigenschaft des @code{Voice}-Kontextes ist, erstellt und eingesetzt
2045 vom @code{New_fingering_engraver}.
2046
2047 Die Eigenschaft kann als Wert eine Liste mit einem bis drei Einträgen
2048 haben.  Damit wird bestimmt, ob Fingersatz oberhalb gesetzt
2049 werden kann (wenn @code{up} in der Liste auftaucht), darunter
2050 (wenn@code{down} auftaucht), links (wenn @code{left} auftaucht)
2051 oder rechts (wenn @code{right} auftaucht).  Wenn andererseits
2052 ein Wert nicht auftaucht, wir auch kein Fingersatz in dieser Richtung
2053 gesetzt.  LilyPond nimmt diese Beschränkung als Bedingung und
2054 errechnet die besten Positionen für die Noten des nächsten Akkordes.
2055 Die seitliche Positionierung kann nur auf einer Seite des Akkordes
2056 geschehen, nicht auf beiden gleichzeitig, es kann also nur entweder
2057 @code{left} oder @code{right} auftreten, nicth beide gleichzeitig.
2058
2059 @warning{Damit eine einzelne Note mit diesem Befehl beeinflusst werden
2060 kann, muss sie als ein @qq{Ein-Noten-Akkord} geschrieben
2061 werden, indem einfache spitze Klammern um die Note positioniert
2062 werden.}
2063
2064 Hier ein paar Beispiele:
2065
2066 @cindex Fingersatz-Beispiel
2067 @cindex @code{\set}, Benutzungsbeispiel
2068 @cindex fingerOrientations-Eigenschaft, Beispiel
2069
2070 @lilypond[quote,verbatim,relative=1]
2071 \set fingeringOrientations = #'(left)
2072 <f-2>
2073 < c-1  e-2 g-3 b-5 > 4
2074 \set fingeringOrientations = #'(left)
2075 <f-2>
2076 < c-1  e-2 g-3 b-5 > 4
2077 \set fingeringOrientations = #'(up left down)
2078 <f-2>
2079 < c-1  e-2 g-3 b-5 > 4
2080 \set fingeringOrientations = #'(up left)
2081 <f-2>
2082 < c-1  e-2 g-3 b-5 > 4
2083 \set fingeringOrientations = #'(right)
2084 <f-2>
2085 < c-1  e-2 g-3 b-5 > 4
2086 @end lilypond
2087
2088 @noindent
2089 Wenn die Fingersatzbezeichnung zu gedrungen aussieht,
2090 kann auch die Schriftgröße (@code{font-size}) verringert
2091 werden.  Der Standardwert kann aus dem
2092 @code{Fingering}-Objekt in der IR entnommen werden,
2093 er ist @code{-5}, versuchen wir es also mit @code{-7}.
2094
2095 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2096 \override Fingering #'font-size = #-7
2097 \set fingeringOrientations = #'(left)
2098 <f-2>
2099 < c-1  e-2 g-3 b-5 > 4
2100 \set fingeringOrientations = #'(left)
2101 <f-2>
2102 < c-1  e-2 g-3 b-5 > 4
2103 \set fingeringOrientations = #'(up left down)
2104 <f-2>
2105 < c-1  e-2 g-3 b-5 > 4
2106 \set fingeringOrientations = #'(up left)
2107 <f-2>
2108 < c-1  e-2 g-3 b-5 > 4
2109 \set fingeringOrientations = #'(right)
2110 <f-2>
2111 < c-1  e-2 g-3 b-5 > 4
2112 @end lilypond
2113
2114
2115
2116 @node Objekte außerhalb des Notensystems
2117 @subsection Objekte außerhalb des Notensystems
2118 @translationof Outside-staff objects
2119
2120 Objekte außerhalb des Notensystems werden automatisch gesetzt,
2121 um Kollisionen zu vermeiden.  Objekten mit einem geringeren
2122 Prioritätswert der Eigenschaft @code{outside-staff-priority}
2123 werden näher an das System gesetzt, und andere Objekte außerhalb
2124 des Systems werden dann soweit vom System entfernt gesetzt, dass
2125 Zusammenstöße vermieden werden.  Die
2126 @code{outside-staff-priority}-Eigenschaft ist im
2127 @code{grob-interface} definiert und ist also eine Eigenschaft
2128 von allen Layout-Objekten.  Standardmäßig ist sie für alle Objekte
2129 auf falsch (@code{#f}) gesetzt; dieser Wert wird in einen numerischen
2130 Wert dem Objekt entsprechend geändert, wenn das Objekt für die
2131 Notenausgabe erstellt wird.  Die Tabelle unten zeigt die 
2132 Standardwerte für die meistbenutzten @code{outside-staff}-Objekte,
2133 die den Voreinstellungen nach im
2134 @code{Staff}- oder @code{Voice}-Kontext gesetzt werden.
2135
2136 @multitable @columnfractions .3 .3 .3
2137 @headitem Layout-Objekt        
2138   @tab Priorität
2139   @tab Kontrolliert Position von:
2140 @item @code{MultiMeasureRestText}
2141   @tab @code{450}
2142   @tab Text über Ganztaktpausen
2143 @item @code{TextScript}
2144   @tab @code{450}
2145   @tab Textbeschriftung
2146 @item @code{OttavaBracket}
2147   @tab @code{400}
2148   @tab Ottava (Oktavierungsklammern)
2149 @item @code{TextSpanner}
2150   @tab @code{350}
2151   @tab Text-Strecker
2152 @item @code{DynamicLineSpanner}
2153   @tab @code{250}
2154   @tab Alle Dynamik-Bezeichnungen
2155 @item @code{VoltaBracketSpanner}
2156   @tab @code{100}
2157   @tab Volta-Klammern
2158 @item @code{TrillSpanner}
2159   @tab @code{50}
2160   @tab Triller-Strecker
2161 @end multitable
2162
2163 Hier ein Beispiel, das die Standardpositionierung von einigen
2164 Objekten zeigt.
2165
2166 @cindex Text-Strecker
2167 @cindex Text-Spanner
2168 @funindex \startTextSpan
2169 @funindex \stopTextSpan
2170 @funindex startTextSpan
2171 @funindex stopTextSpan
2172 @cindex Ottava-Klammer
2173 @cindex Oktavierungsklammer
2174
2175 @cindex TextSpanner, Beispiel zur Veränderung
2176 @cindex bound-details-Eigenschaft, Beispiel
2177
2178 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2179 % Set details for later Text Spanner
2180 \override TextSpanner #'(bound-details left text)
2181     = \markup { \small \bold Slower }
2182 % Place dynamics above staff
2183 \dynamicUp
2184 % Start Ottava Bracket
2185 \ottava #1
2186 c' \startTextSpan
2187 % Add Dynamic Text
2188 c\pp
2189 % Add Dynamic Line Spanner
2190 c\<
2191 % Add Text Script
2192 c^Text
2193 c c
2194 % Add Dynamic Text
2195 c\ff c \stopTextSpan
2196 % Stop Ottava Bracket
2197 \ottava #0
2198 c, c c c
2199 @end lilypond
2200
2201 Dieses Beispiel zeigt auch, wie man Text-Strecker erstellt, d.h.
2202 Text mit Bindestrichen, der sich über eine bestimmte Länge
2203 erstreckt.  Der Strecker beginnt mit dem
2204 @code{\startTextSpan}-Befehl und endet mit dem
2205 @code{\stopTextSpan}-Befehl, und das Format des Textes
2206 wird mit dem @code{\override TextSpanner}-Befehl bestimmt.
2207 Mehr Einzelheiten siehe @ruser{Text mit Verbindungslinien}.
2208
2209 Im Beispiel wird auch gezeigt, wie Oktavierungsklammern
2210 (Ottava) erstellt werden.
2211
2212 @cindex Taktzahlposition verändern
2213 @cindex Verändern der Taktzahlposition
2214 @cindex Position der Taktzahl, verändern
2215 @cindex Metronom-Bezeichnungsposition verändern
2216 @cindex Verändern der Metronom-Bezeichnungsposition
2217 @cindex Übungszeichenposition verändern
2218 @cindex Verändern der Übungszeichenposition
2219
2220 Beachten Sie, dass Taktnummern, Metronombezeichnungen
2221 und Übungszeichen nicht gezeigt werden.  Sie werden
2222 standardmäßig im @code{Score}-(Partitur)-Kontext
2223 erstellt und ihre @code{outside-staff-priority} wird
2224 in Bezug auf die Layout-Objekte, die im @code{Staff}-Kontext
2225 erstellt werden, ignoriert.  Wenn Sie Taktnummern,
2226 Metronombezeichnungen oder Übungszeichen entsprechend
2227 ihrer Außersystem-Priorität setzen wollen, müssen Sie
2228 die entsprechenden Engraver (@code{Bar_number_engraver},
2229 @code{Metronome_mark_engraver} oder @code{Mark_engraver})
2230 vom @code{Score}-Kontext entfernen und dem
2231 @code{Staff}-Kontext hinzufügen.  Wenn die Engraver so
2232 geändert werden, erhalten sie folgenden Werte für
2233 @code{outside-staff-priority}:
2234
2235 @multitable @columnfractions .3 .3
2236 @headitem Layout-Objekt           @tab Priorität
2237 @item @code{RehearsalMark}        @tab @code{1500}
2238 @item @code{MetronomeMark}        @tab @code{1000}
2239 @item @code{BarNumber}            @tab @code{ 100}
2240 @end multitable
2241
2242 Wenn die Standardwerte der @code{outside-staff-priority} nicht
2243 die Positionierung hervorrufen, die Sie wünschen, kann die
2244 Priorität eines jeden Objektes geändert werden.  Als Beispiel
2245 wollen wir zeigen, wie sich die Oktavierungsklammer unter
2246 den Textstrecker des vorigen Beispiels setzen lässt.  Wir müssen
2247 nur die Priorität des
2248 @code{OttavaBracket}-Objektes in der IR oder der Tabelle oben
2249 herausfinden und einen kleineren Wert angeben als der Wert, den
2250 das @code{TextSpanner}-(Strecker)-Objekt bekommt, wobei noch daran
2251 zu denken ist, dass @code{OttavaBracket} im @code{Staff}-Kontext
2252 erstellt wird:
2253
2254 @cindex TextSpanner, Beispiel zur Veränderung
2255 @cindex bound-details-Eigenschaft, Beispiel
2256
2257 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2258 % Set details for later Text Spanner
2259 \override TextSpanner #'(bound-details left text)
2260     = \markup { \small \bold Slower }
2261 % Place dynamics above staff
2262 \dynamicUp
2263 %Place following Ottava Bracket below Text Spanners
2264 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
2265 % Start Ottava Bracket
2266 \ottava #1
2267 c' \startTextSpan
2268 % Add Dynamic Text
2269 c\pp
2270 % Add Dynamic Line Spanner
2271 c\<
2272 % Add Text Script
2273 c^Text
2274 c c
2275 % Add Dynamic Text
2276 c\ff c \stopTextSpan
2277 % Stop Ottava Bracket
2278 \ottava #0
2279 c, c c c
2280 @end lilypond
2281
2282 @cindex Legatobögen und outside-staff-priority
2283 @cindex Legatobögen und Artikulationszeichen
2284 @cindex Artikulationszeichen und Legatobögen
2285
2286 Legatobögen werden als Innersystem-Objekte klassifiziert, aber
2287 sie erscheinen oft auch über dem System, wenn die Noten, an die
2288 sie verbunden sind, sehr hoch im System notiert sind.  Dadurch
2289 können Außersystem-Objekte, wie Artikulationszeichen, zu hoch
2290 gerückt werden.  Die @code{avoid-slur}-Eigenschaft hat nur
2291 eine Auswirkung, wenn auch die @code{outside-staff-priority}
2292 auf @code{#f} gesetzt ist.  Alternativ kann die
2293 @code{outside-staff-priority}  des Legatobogens auf einen
2294 numerischen Wert gesetzt werden, sodass er mit anderen
2295 Außersystem-Objekten anhand dieses Wertes gesetzt wird.
2296 Hier ein Beispiel, das die beiden Möglichkeiten veranschaulicht:
2297
2298 @lilypond[quote,verbatim,relative=2]
2299 c4( c^\markup\tiny\sharp d4.) c8
2300 c4(
2301 \once \override TextScript #'avoid-slur = #'inside
2302 \once \override TextScript #'outside-staff-priority = ##f
2303 c^\markup\tiny\sharp d4.) c8
2304 \once \override Slur #'outside-staff-priority = #500
2305 c4( c^\markup\tiny\sharp d4.) c8
2306 @end lilypond
2307
2308 Eine Änderung der @code{outside-staff-priority} kann auch dazu
2309 benutzt werden, die vertikale Plazierung von individuellen Objekten
2310 zu kontrollieren, auch wenn das Ergebnis nicht immer optimal
2311 ist.  Im nächsten Beispiel soll @qq{Text3} oberhalb von @qq{Text4}
2312 gesetzt werden, das Beispiel wurde behandelt in
2313 @ref{Automatisches Verhalten}.  Der Wert der Priorität muss also für
2314 die Eigenschaft @code{TextScript} entweder in der IR oder in der
2315 Tabelle oben festgestellt werden und dann die Priorität für
2316 @qq{Text3} höher eingestellt werden:
2317
2318 @cindex TextScript, Beispiel zur Veränderung
2319 @cindex outside-staff-priority-Eigenschaft, Beispiel
2320
2321 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2322 c2^"Text1"
2323 c^"Text2"
2324 \once \override TextScript #'outside-staff-priority = #500
2325 c^"Text3"
2326 c^"Text4"
2327 @end lilypond
2328
2329 Damit wird zwar @qq{Text3} ganz richtig über @qq{Text4}
2330 platziert, aber auch über @qq{Text2}, und @qq{Text4}
2331 wird jetzt weiter unten gesetzt.  Eigentlich sollten ja alle
2332 diese Anmerkungen gleichweit vom System entfernt sein.
2333 Dazu muss offensichtlich horizontal etwas Platz gemacht
2334 werden.  Das kann erreicht werden mit dem
2335 @code{textLengthOn}-(Textlänge an)-Befehl.
2336
2337 @subheading \textLengthOn (Textlänge berücksichtigen)
2338
2339 @cindex Noten, durch Text gespreizt
2340 @funindex \textLengthOn
2341 @funindex textLengthOn
2342 @funindex \textLengthOff
2343 @funindex textLengthOff
2344
2345 Standardmäßig wird Text, der mit dem Beschriftungsbefehl
2346 @code{\markup} bzw. Äquivalenten erstellt wird, kein
2347 zusätzlicher Platz in Bezug auf die Positionierung der Noten
2348 zugestanden.  Der @code{\textLengthOn}-Befehl ändert
2349 dieses Verhalten, so dass die Noten gespreizt werden, wenn
2350 die Breite des Textes es erfordert:
2351
2352 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2353 \textLengthOn  % Cause notes to space out to accommodate text
2354 c2^"Text1"
2355 c^"Text2"
2356 c^"Text3"
2357 c^"Text4"
2358 @end lilypond
2359
2360 Dieses Verhalten wird mit dem @code{\textLengthOff}-Befehl 
2361 rückgängig gemacht.  Erinnern Sie sich, dass @code{\once} nur mit
2362 @code{\override}, @code{\set}, @code{\revert} oder @code{unset}
2363 funktioniert, der Befehl kann also nicht zusammen mit
2364 @code{\textLengthOn} benutzt werden.
2365
2366 @cindex Textbeschriftung, Vermeidung von Zusammenstößen
2367 @cindex Zusammenstöße vermeiden mit Textbeschriftung
2368
2369 Textbeschriftung vermeidet auch Noten, die über das System hinausstehen.
2370 Wenn das nicht gewünscht ist, kann die automatische Verschiebung
2371 nach oben hin auch vollständig ausgeschaltet werden, indem die
2372 Priorität auf @code{#f} gesetzt wird.  Hier ein Beispiel, wie
2373 eine Textbeschriftung mit diesen Noten reagiert:
2374
2375 @cindex Textbeschriftung, Beispiel zur Veränderung
2376 @cindex outside-staff-priority-Eigenschaft, Beispiel
2377
2378 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2379 % This markup is short enough to fit without collision
2380 c2^"Tex"
2381 c''2
2382 R1
2383 % This is too long to fit, so it is displaced upwards
2384 c,,2^"Text"
2385 c''2
2386 R1
2387 % Turn off collision avoidance
2388 \once \override TextScript #'outside-staff-priority = ##f
2389 c,,2^"Long Text   "
2390 c''2
2391 R1
2392 % Turn off collision avoidance
2393 \once \override TextScript #'outside-staff-priority = ##f
2394 \textLengthOn  % and turn on textLengthOn
2395 c,,2^"Long Text   "  % Spaces at end are honored
2396 c''2
2397 @end lilypond
2398
2399
2400 @subheading Dynamik
2401
2402 @cindex Verändern der Positionierung von Dynamikzeichen
2403 @cindex Dynamikzeichen: Positionierung verändern
2404
2405 Dynamikbezeichnung wird üblicherweise unter dem System
2406 gesetzt, kann aber auch nach oben mit dem Befehl
2407 @code{dynamicUp} gezwungen werden.  Die Bezeichnung
2408 wird vertikal relativ zu der Note positioniert, an die sie angefügt
2409 wurde.  Sie wird vertikal variabel gesetzt in Bezug zu 
2410 Innersystemobjekten wie Bögen oder Taktnummern. Damit
2411 können oft recht gute Resultate erreicht werden, wie im
2412 folgenden Beispiel:
2413
2414 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2415 \clef "bass"
2416 \key aes \major
2417 \time 9/8
2418 \dynamicUp
2419 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2420 ees,2.~\)\mf ees4 r8 |
2421 @end lilypond
2422
2423 Wenn aber Noten und Dynamikzeichen sehr dicht beieinander
2424 stehen, positioniert die automatische Kollisionsvermeidung
2425 später kommende Dynamikzeichen weiter weg, was allerdings
2426 nicht immer die beste Möglichkeit ist, wie in dem folgenden,
2427 etwas gewollten Beispiel zu sehen ist:
2428
2429 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2430 \dynamicUp
2431 a4\f b\mf c\mp b\p
2432 @end lilypond
2433
2434 @noindent
2435 Wenn eine ähnliche Situation in @qq{echter} Musik auftaucht,
2436 kann es nötig sein, die Noten etwas zu spreizen, damit die
2437 Dynamikzeichen alle auf der selben vertikalen Position
2438 gesetzt werden können.  Dieses Verhalten war im Falle von
2439 Textbeschriftungen möglich mit dem @code{\textLengthOn}-Befehl,
2440 aber es gibt keinen entsprechenden Befehl für Dynamik.  Wir
2441 müssen also unsere eigenen Befehle mit @code{\override}
2442 konstruieren.
2443
2444
2445 @subheading Verändern der Größe von grobs
2446
2447 @cindex Grob, Größenveränderung
2448 @cindex Größenveränderung von grobs
2449
2450 Zuallererst müssen wir lernen, wie die Größe von Grobs verändert
2451 wird.  Alle Grobs besitzen einen Referenzpunkt, der
2452 benutzt wird, um ihre Position in Relation zu ihnen übergeordneten
2453 Objekten zu bestimmen.  Dieser Punkt innerhalb des Grobs wird dann
2454 auf einer horizontalen Position (@code{X-offset}) und einer
2455 vertikalen Position (@code{Y-offset}) ausgerichtet, immer bezüglich
2456 des übergeordneten Objektes.  Eine horizontale Strecke wird
2457 durch ein Zahlenpaar angegeben (@code{X-extent}), welche
2458 die linke und rechte Grenze relativ zum übergeordneten Objekt
2459 bezeichnen.  Die vertikale Strecke wir genauso durch ein
2460 Zahlenpaar (@code{Y-extent}) definiert.  Diese Eigenschaften
2461 gehören zu allen Grobs, die das
2462 @code{grob-interface} unterstützen.
2463
2464 @cindex @code{extra-spacing-width}
2465
2466 Standardmäßig haben Außersystemobjekte eine Länge von Null,
2467 so dass sie sich in horizontaler Richtung überlappen können.  Das
2468 geschieht, indem dem linken Rand Unendlich zugewiesen wird
2469 und dem rechten Rand minus Undendlich (der Code der 
2470 @code{extra-spacing-width}-(zusätzliche Positionierungslänge)-Eigenschaft
2471 lautet: @code{'(+inf.0 . -inf.0)}).
2472 Damit sich diese Objekte also horizontal nicht überschneiden, muss
2473 der Wert von @code{extra-spacing-width} auf
2474 @code{'(0 . 0)} gesetzt werden, sodass die wirkliche Länge eines
2475 Objektes zur Geltung kommt.  Mit diesem Befehl wird das für
2476 Dynamik-Zeichen erledigt:
2477
2478 @example
2479 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2480 @end example
2481
2482 @noindent
2483 Schauen wir uns an, wie es mit dem vorigen Beispiel funktioniert:
2484
2485 @cindex DynamicText, Beispiel zur Veränderung
2486 @cindex extra-spacing-width-Eigenschaft, Beispiel
2487
2488 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2489 \dynamicUp
2490 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2491 a4\f b\mf c\mp b\p
2492 @end lilypond
2493
2494 @noindent
2495 Damit werden die Dynamik-Zeichen also wirklich nebeneinander
2496 gesetzt, aber es gibt noch zwei Probleme.  Die Zeichen sollten
2497 etwas weiter außeinander stehen und es wäre gut, wenn sie alle
2498 den gleichen Abstand zum System hätte.  Das erste Problem ist
2499 einfach behoben.  Anstatt der @code{extra-spacing-width}-Eigenschaft
2500 Null zuzuweisen, können wir auch einen etwas größeren Wert
2501 wählen.  Die Einheit wird gemessen in dem Abstand zwischen zwei
2502 Notenlinien, es scheint also gut, den rechten und linken
2503 Rand eine halbe Einheit zu vergrößern:
2504
2505 @cindex DynamicText, Beispiel zur Veränderung
2506 @cindex extra-spacing-width-Eigenschaft, Beispiel
2507
2508 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2509 \dynamicUp
2510 % Extend width by 1 staff space
2511 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2512 a4\f b\mf c\mp b\p
2513 @end lilypond
2514
2515 @noindent
2516 Das sieht schon besser aus, aber es wäre noch besser, wenn die
2517 Dynamik-Zeichen alle an einer Linie ausgerichtet wären, anstatt
2518 höher und tiefer zu sitzen.  Das kann mit der
2519 @code{staff-padding}-Eigenschaft erreicht werden,
2520 die wir uns im folgenden Abschnitt genauer anschauen werden.
2521
2522
2523
2524 @node Kollision von Objekten
2525 @section Kollision von Objekten
2526 @translationof Collisions of objects
2527
2528 @menu
2529 * Verschieben von Objekten::
2530 * Überlappende Notation in Ordnung bringen::
2531 * Beispiele aus dem Leben::
2532 @end menu
2533
2534 @node Verschieben von Objekten
2535 @subsection Verschieben von Objekten
2536 @translationof Moving objects
2537
2538 @cindex Verschieben von überschneidenden Objekten
2539 @cindex Verschieben von Zusammenstößen
2540 @cindex Zusammenstöße vermeiden
2541 @cindex Objekte, verschieben von Zusammestößen
2542 @cindex Vermeiden von Zusammenstößen
2543
2544 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht 
2545 perfekt. Einige Notationselemente können sich überschneiden. Das 
2546 ist nicht schön, aber zum Glück sehr selten.  Normalerweise müssen
2547 die Objekte zur Klarheit oder aus ästhetischen Gründen verschoben
2548 werden -- sie könnten besser aussehen, wenn sie etwas zusätzlichen
2549 Platz erhalten.
2550
2551 Es gibt im Grunde drei Herangehensweisen, überlappende Notation
2552 zu verbessern.  Man sollte sie in der folgenden Reihenfolge 
2553 anwenden:
2554
2555 @enumerate
2556 @item
2557 Die @strong{Richtung} eines der überlappenden Objekte kann 
2558 geändert werden, indem die vordefinierten Befehle für
2559 Innersystemobjekte verwendet werden, wie beschrieben in
2560 @ref{within-staff (Objekte innerhalb des Notensystems)}.  Hälse, Bögen, Balken, Dynamik-Zeichen
2561 und Triolen können auf diese Weise einfach umgeordnet
2562 werden.  Beschränkt ist diese Methode insofern, als es nur
2563 zwei Möglichkeiten zur Veränderung gibt: oben oder unten.
2564
2565 @item
2566 Die @strong{Objekteigenschaft}, die LilyPond benutzt um die
2567 Layout-Objekte zu platzieren, können mit dem 
2568 @code{\override}-Befehl positioniert werden.  Die Vorteile
2569 von Änderungen dieser Art sind a) dass einige Objekte
2570 automatisch verschoben werden, wenn es nötig ist Platz zu
2571 schaffen und b) ein einziges @code{\override} sich auf
2572 alle Fälle eines Objekttyps bezieht.  Zu diesen Eigenschaften
2573 gehören:
2574
2575 @itemize
2576
2577 @item
2578 @code{direction} (Richtung)
2579
2580 Das wurde schon detailliert behandelt, siehe
2581 @ref{within-staff (Objekte innerhalb des Notensystems)}.
2582
2583 @item
2584 @code{padding}, @code{left-padding},
2585 @code{right-padding}, @code{staff-padding} (Verschiebung)
2586
2587 @cindex left-padding-Eigenschaft
2588 @cindex Padding-Eigenschaft
2589 @cindex right-padding-Eigenschaft
2590 @cindex staff-padding-Eigenschaft
2591 @cindex Verschieben (padding)
2592 @cindex Füllung (padding)
2593 @cindex padding (Füllung)
2594
2595 Wenn ein Objekt platziert wird, bestimmt der Wert seiner
2596 @code{padding}-(Füllungs)-Eigenschaft die Größe des
2597 Abstandes, der zwischen dem Objekt selber und dem
2598 Objekt, relativ zu welchem es positioniert wird, gelassen
2599 werden muss.  Dabei zählt der @code{padding}-Wert
2600 des Objektes, das platziert werden soll, der @code{padding}-Wert
2601 des Objektes, das schon gesetzt wurde, wird hingegegen
2602 ignoriert.  Abstände mit @code{padding} können zu 
2603 allen Objekten hinzugefügt werden, die das
2604 @code{side-position-interface} unterstützen.
2605
2606 Anstelle von @code{padding} wird die Position von
2607 Versetzungszeichengruppen durch die Eigenschaften
2608 @code{left-padding} und @code{right-padding} bestimmt.
2609 Diese Eigenschaften werden im
2610 @code{AccidentalPlacement}-(Versetzungszeichen-Positionierungs)-Objekt
2611 gefunden, das sich innerhalb des @strong{Staff}-Kontexts
2612 befindet.  Während des Notensatzes werden die Notenköpfe
2613 zuerst gesetzt und dann die Versetzungszeichen, wenn denn
2614 welche gesetzt werden,  durch die @code{right-padding}-Eigenschaft
2615 auf die linke Seite der Notenköpfe positioniert, um die Entfernung
2616 von den Notenköpfen zu bestimmen.  Also nur die
2617 @code{right-padding}-(Verschiebung nach rechts)-Eigenschaft des
2618 @code{AccidentalPlacement}-Objekts hat Einfluss auf die
2619 Positionierung der Versetzungszeichen.
2620
2621 Die @code{staff-padding}-(Verschiebung zum System)-Eigenschaft
2622 ist sehr ähnlich wie die @code{padding}-Eigenschaft:
2623 @code{padding} bestimmt den Minimalabstand zwischen
2624 einem Objekt, das das @code{side-position-interface} 
2625 unterstützt, und dem nächsten anderen Objekt (normalerweise
2626 die Note oder Notenlinie); @code{staff-padding} dagegen
2627 wirkt nur auf Objekte die immer außerhalb des Notensystems
2628 sind -- damit wird der minimale Abstand bestimmt, der
2629 zwischen dem Objekt und dem Notensystem gelassen werden 
2630 soll.  @code{staff-padding} hat also @strong{keinen Einfluss}
2631 auf Objekte, die relativ zu einer Note positioniert werden, sondern
2632 nur auf solche, die zum System relativ stehen. Wenn es mit einem
2633 anderen Objekt eingesetzt wird, erhält man keine Fehlermeldung, aber
2634 der Befehl hat auch keine Auswirkungen.
2635
2636 Um herauszufinden, welche @code{padding}-Eigenschaft für
2637 das bestimmte Objekt nötig, ist, das Sie verschieben wollen,
2638 müssen Sie in der IR nach den Objekt-Eigenschaften schauen.
2639 Dabei sollten Sie bedenken, dass sich die @code{padding}-Eigenschaften
2640 nicht unbedingt in dem Objekt selber befinden, schauen Sie
2641 also auch in Objekten nach, die offensichtlich Ähnlichkeiten
2642 haben.
2643
2644 Alle @code{padding}-Werte werden in Notenlinienabständen 
2645 gemessen.  Für die meisten Objekte ist der Wert ungefähr auf
2646 1.0 oder weniger gesetzt (das variiert von Objekt zu Objekt).
2647 Der Wert kann geändert werden, wenn ein größerer (oder
2648 kleinerer) Abstand gewünscht wird.
2649
2650 @item
2651 @code{self-alignment-X} (Selbstpositionierung)
2652
2653 @cindex self-alignment-X-Eigenschaft
2654 @cindex Selbstpositionierung von Objekten
2655 @cindex Ausrichtung von Objekten
2656
2657 Diese Eigenschaft kann benutzt werden, um ein Objekt
2658 nach links, rechts oder zentriert an dem Referenzpunkt des Objekts
2659 auszurichten, an das es verknüpft ist.  Es kann bei allen
2660 Objekten benutzt werden, die das @code{self-alignment-interface}
2661 unterstützen.  Das sind üblicherweise Objekte, die Text
2662 enthalten.  Die möglichen Werte der Eigenschaft sind @code{LEFT},
2663 @code{RIGHT} oder @code{CENTER}.  Alternativ kann ein
2664 numerischer Wert zwischen @code{-1} und @code{+1} 
2665 bestimmt werden: @code{-1} heißt linksbündig, @code{+1}
2666 rechtsbündig und Zahlen dazwischen bewegen den Text
2667 schrittweise von links nach rechts.  Zahlen größer als
2668 @code{1} können angegeben werdne, um den Text
2669 noch weiter nach links zu bewegen, oder weniger als @code{-1},
2670 um ihn weiter nach rechts zu schieben.  Eine Änderung
2671 um @code{1} des Wertes entspricht einer Bewegung um 
2672 die halbe Textbreite.
2673
2674 @item
2675 @code{extra-spacing-width} (zusätzliche Breite)
2676
2677 @cindex extra-spacing-width-Eigenschaft
2678
2679 Diese Eigenschaft steht für alle Objekte zur Verfügung, die
2680 das @code{item-interface} unterstützen.  Es braucht zwei
2681 Zahlen als Argument, die erste wird zur rechten Ausdehnung,
2682 die zweite zur linken Ausdehnung hinzugerechnet.  Negative
2683 Zahlen verschieben die Ausdehnung nach rechts, positive nach
2684 links, um also ein Objekt zu verbreitern, muss die erste
2685 Zahl negativ und die zweite positiv sein.  Allerdings beachten
2686 nicht alle Objekte beide Zahlen.  Das 
2687 @code{accidental}-(Versetzungszeichen)-Objekt etwa beachtet
2688 nur erste Zahl für die linke Ausdehnung.
2689
2690 @item
2691 @code{staff-position} (Notensystempositionierung)
2692
2693 @cindex staff-position-Eigenschaft
2694
2695 @code{staff-position} ist eine Eigenschaft des
2696 @code{staff-symbol-referencer-interface}, die von Objekten unterstützt
2697 wird, die relativ zum Notensystem (engl. staff) positioniert werden.
2698 Hiermit wird die vertikale Position eines Objekts relativ zur
2699 Mittellinie des Systems in halben Notenlinienabständen angegeben.
2700 Das ist sehr nützlich, um Zusammenstöße zwischen Layout-Objekten
2701 wie Ganztaktpausen, Bögen und Noten in verschiedenen Stimmen
2702 zu lösen.
2703
2704 @item
2705 @code{force-hshift} (vertikale Verschiebung erzwingen)
2706
2707 @cindex force-hshift-Eigenschaft
2708
2709 Eng beeinander stehende Noten in einem Akkord oder Noten, die zum
2710 gleichen Zeitpunkt in unterschiedlichen Stimmen stehen, werden
2711 in zwei oder manchmal auch mehr Kolumnen gesetzt, um Kollisionen
2712 zu umgehen.  Diese Kolumnen werden Notenkolumnen genannt;
2713 ein @code{NoteColumn}-Objekt wird erstellt um die Noten in den
2714 Kolumnen zu setzen.
2715
2716 Die @code{force-hshift}-(erzwinge horizontale Verschiebung)-Eigenschaft
2717 ist eine Eigenschaft von @code{NoteColumn} (bzw. vom
2718 @code{note-column-interface}).  Eine Veränderung dieser Eigenschaft
2719 macht es möglich, eine Notenkolumne zu verschieben, dabei gilt als
2720 Einheit die Breite einer Kolumne, also die Breite des Notenkopfes der
2721 ersten Stimme.  Diese Eigenschaft kann in Situationen benutzt werden,
2722 in denen die normalen @code{\shiftOn}-Befehle (siehe auch
2723 @ref{Stimmen explizit beginnen}) das Problem nicht beseitigen.
2724 Diese Eigenschaft ist besser in solchen Fällen zu verwenden als die
2725 @code{extra-offset}-Eigenschaft, weil man die richtige Entfernung nicht
2726 in Notenlinienabständen ausrechnen muss.  Wenn eine Note in eine
2727 Notenkolumne oder aus ihr heraus geschoben wird, werden auch andere
2728 Funktionen beeinflusst, wie etwa die Verschmelzung von Notenköpfen.
2729
2730 @end itemize
2731
2732 @item
2733 Zu guter Letzt, wenn alles andere nicht funktioniert, können Objekte auch
2734 manuell positioniert werden, entweder vertikal in Bezug auf die
2735 Mittellinie des Systems, oder indem sie einen beliebigen Abstand weit
2736 auf eine neue Position verschoben werden.  Der Nachteil ist, dass die
2737 richtigen Werte für eine gute Position manuell ausprobiert werden müssen,
2738 meistens durch Herantasten an den richtigen Wert, und das für jedes
2739 einzelne Objekt extra.  Und weil diese Verschiebungen erst vorgenommen
2740 werden, wenn LilyPond alle anderen Objekte gesetzt hat, ist man als
2741 Notensetzer selber dafür verantwortlich, ob es Zusammenstöße gibt.
2742 Am schwerwiegendsten ist aber die Tatsache, dass die
2743 Verschiebungskoordinaten wahrscheinlich neu errechnent oder 
2744 ausprobiert werden müssen, wenn sich an den Noten und deren
2745 Layout später irgend etwas ändert.  Die Eigenschaften, die für diese
2746 Arte der manuellen Verschiebung verwendet werden können, sind:
2747
2748 @table @code
2749 @item extra-offset (zusätzlicher Abstand)
2750
2751 @cindex extra-offset-Eigenschaft
2752
2753 Diese Eigenschaft gehört zu jedem Layout-Objekt, das das
2754 @code{grob-interface} unterstützt.  Sie braucht ein Zahlenpaar,
2755 das die exakte Verschiebung in horizontaler und vertikaler Richtung
2756 bezeichnet.  Negative Zahlen verschieben das Objekt nach links oder
2757 unten.  Die Einheit sind Notenlinienabstände.  Die zusätzliche
2758 Positionierung wird vorgenommen, nachdem alle anderen Objekte
2759 platziert sind, weshalb ein Objekt irgendwohin verschoben werden
2760 kann, ohne den restlichen Satz zu beeinflussen.
2761
2762 @item positions (Position)
2763
2764 @cindex positions-Eigenschaft
2765
2766 Diese Eigenschaft ist am sinnvollsten, um die Steigung und die
2767 Höhe von Balken, Bögen und Triolenklammern anzupassen.
2768 Sie braucht ein Zahlenpaar, das die Position des rechten und linken
2769 Endes relativ zur Mittellinie des Notensystems bestimmt.  Die
2770 Einheit sind Notenlinienabstände.  Bögen allerdings können nicht
2771 beliebig weit weg positioniert werden.  LilyPond erstellt zunächst eine
2772 Liste an möglichen Positionen für den Bogen und findet normalerweise
2773 die Version, die @qq{am besten aussieht}.  Wenn die 
2774 @code{positions}-Eigenschaft verändert worden ist, wird der
2775 Bogen aus der Liste gewählt, der der gewünschten Position am
2776 nächsten kommt.
2777 @end table
2778
2779 @end enumerate
2780
2781 Ein bestimmtes Objekt hat vielleicht nicht alle dieser Eigenschaften.
2782 Darum ist es nötig, in der IR nachzuschlagen, welche Eigenschaften
2783 ein bestimmtes Objekt unterstützt.
2784
2785 Hier ist eine Liste an Objekten, die am wahrscheinlichsten an einer
2786 Kollision beteiligt sind, daneben findet sich die Bezeichnung des
2787 Objektes, mit der Sie es in der IR finden, um zu bestimmen,
2788 welche Eigenschaften benutzt werden können, um es zu verschieben.
2789
2790 @multitable @columnfractions .5 .5
2791 @headitem Objekttyp           @tab Objektbezeichnung
2792 @item Articulationszeichen             @tab @code{Script}
2793 @item Balken                     @tab @code{Beam}
2794 @item Dynamikzeichen (vertikal)     @tab @code{DynamicLineSpanner}
2795 @item Dynamikzeichen (horizontal)   @tab @code{DynamicText}
2796 @item Fingersatz                @tab @code{Fingering}
2797 @item Übungs-/Textmarken    @tab @code{RehearsalMark}
2798 @item Legatobögen                     @tab @code{Slur}
2799 @item Text z. B. @code{^"text"}  @tab @code{TextScript}
2800 @item Bindebögen                      @tab @code{Tie}
2801 @item N-tolen                   @tab @code{TupletBracket}
2802 @end multitable
2803
2804
2805 @node Überlappende Notation in Ordnung bringen
2806 @subsection Überlappende Notation in Ordnung bringen
2807 @translationof Fixing overlapping notation
2808
2809 Hier soll nun gezeigt werden, wie die Eigenschaften, die im
2810 vorigen Abschnitt vorgestellt wurden, bei der Problemlösung
2811 mit sich überschneidenden Notationselementen eingesetzt
2812 werden können.
2813
2814 @subheading padding (Fülleigenschafte)
2815
2816 @cindex padding (Verschiebungs-Eigenschaft)
2817 @cindex Überschneidende Notation korrigieren
2818 @cindex Korrigieren von überschneidender Notation
2819
2820 Die @code{padding}-(Verschiebungs-)Eigenschaft kann benutzt
2821 werden, um den Abstand zwischen Symbolen zu vergößern (oder
2822 zu verkleinern), die über oder unter den Noten gesetzt werden.
2823
2824 @cindex Script, Beispiel zur Veränderung
2825 @cindex Verschiebungs-Eigenschaft, Beispiel
2826 @cindex padding (Verschiebuns-Eigenschaft), Beispiel
2827
2828 @lilypond[quote,fragment,relative=1,verbatim]
2829 c2\fermata
2830 \override Script #'padding = #3
2831 b2\fermata
2832 @end lilypond
2833
2834 @cindex MetronomMark, Beispiel zur Veränderung
2835 @cindex Verschiebungs-Eigenschaft, Beispiel
2836 @cindex padding (Verschiebuns-Eigenschaft), Beispiel
2837
2838 @lilypond[quote,fragment,relative=1,verbatim]
2839 % This will not work, see below:
2840 \override MetronomeMark #'padding = #3
2841 \tempo 4=120
2842 c1
2843 % This works:
2844 \override Score.MetronomeMark #'padding = #3
2845 \tempo 4=80
2846 d1
2847 @end lilypond
2848
2849 Im zweiten Beispiel können Sie sehen, wie wichtig es ist den richtigen
2850 Kontext anzugeben.  Weil das @code{MetronomeMark}-Objekt
2851 sich im @code{Score}-Kontext befindet, werden Eigenschaftsänderungen
2852 im @code{Voice}-Kontext einfach ignoriert.  Für mehr Einzelheiten siehe
2853 @ruser{Eignschaften verändern}.
2854
2855 Wenn die @code{padding}-Eigenschaft eines Objektes erhöht wird, das
2856 sich in einem Stapel von Objekten befindet, die nach ihrer
2857 Außersystempriorität (@code{outside-staff-priority}) positioniert werden,
2858 werden das Objekt und alle,  die sich außerhalb davon befinden,
2859 entsprechend verschoben.
2860
2861 @subheading left-padding (Verschieben nach rechts) und right-padding (Verschieben nach links)
2862
2863 @cindex left-padding-Eigenschaft (Verschiebung nach links)
2864 @cindex Verschiebung nach rechts oder links
2865 @cindex right-padding-Eigenschaft (Verschiebung nach rechts)
2866
2867 Die @code{right-padding}-Eigenschaft wirkt sich auf den Abstand
2868 zwischen einem Versetzungszeichen und der Note, auf das sie sich
2869 bezieht, aus.  Sie wird nicht sehr oft benötigt, aber die
2870 Standardanordnung kann für einige spezielle Versetzungszeichen-Glyphen
2871 oder Kombinationsglyphen,
2872 wie sie für Mikrotonale Musik benutzt werden, falsch sein.  Derartige
2873 Glyphen müssen notiert werden, indem man den Stencil des
2874 Versetzungszeichens mit einer Textbeschriftung (Markup) ersetzt,
2875 wie im folgenden Beispiel:
2876
2877 @cindex Versetzungszeichen, Beispiel zur Veränderung
2878 @cindex Accidental, Beispiel zur Veränderung
2879 @cindex Text-Eigenschaft, Beispiel
2880 @cindex stencil-Eigenschaft, Beispiel
2881 @cindex AccidentalPlacement, Beispiel zur Veränderung
2882 @cindex right-padding-Eigenschaft, Beispiel
2883 @cindex Verschiebung nach rechts (rigth-padding), Beispiel
2884
2885 @lilypond[quote,ragged-right,verbatim]
2886 sesquisharp = \markup { \sesquisharp }
2887  \relative c'' {
2888   c
2889   % This prints a sesquisharp but the spacing is too small
2890   \once \override Accidental
2891     #'stencil = #ly:text-interface::print
2892   \once \override Accidental #'text = #sesquisharp
2893   cis c
2894   % This improves the spacing
2895   \once \override Score.AccidentalPlacement #'right-padding = #0.6
2896   \once \override Accidental
2897     #'stencil = #ly:text-interface::print
2898   \once \override Accidental #'text = #sesquisharp
2899   cis
2900 }
2901 @end lilypond
2902
2903 @noindent
2904 Dazu ist aber ein @code{\override}-Befehl für den Stencil des
2905 Versetzungszeichens nötig, der bisher nicht behandelt wurde.
2906 Der Typ des Stencils muss eine Prozedur sein, die hier geändert
2907 wurde, um den Inhalt der @code{text}-Eigenschaft des
2908 @code{Accidental} (Versetzungszeichen)-Objekts zu setzen.  Die
2909 @code{text}-Eigenschaft wiederum wird als @code{sesquisharp}-Glyph
2910 definiert.  Dieser Glyph wird dann weiter vom Notenkopf entfernt
2911 durch die Veränderung von @code{right-padding} mit einem
2912 @code{\override}-Befehl.
2913
2914 @subheading staff-padding (Systemfüllungseigenschaft)
2915
2916 @cindex staff-padding-Eigenschaft
2917 @cindex Objekte an der Grundlinie ausrichten
2918 @cindex Ausrichten von Objekten an der Grundlinie
2919
2920 @code{staff-padding} (Verschiebung zum Notensystem) kann 
2921 verwendet werden um Objekte wie Dynamikzeichen an einer
2922 Grundlinie auf einer bestimmten Höhe über dem System 
2923 auszurichten, sodass sie nicht von der Position der Note abhängen,
2924 an die sie angehängt sind.  Diese Verschiebung ist keine Eigenschaft
2925 von @code{DynamicText}, sondern von @code{DynamicLineSpanner}.
2926 Das liegt daran, dass die Grundlinie sich gleicherweise auf 
2927 @strong{alle} Dynamikzeichen beziehen soll, also auch auf die,
2928 die als Strecker erstellt wurden.  Hier also die Lösung, die Dynamikzeichen
2929 aus dem Beispiel des vorigen Abschnitts auszurichten:
2930
2931 @cindex DynamikText, Beispiel zur Veränderung
2932 @cindex extra-spacing-width-Eigenschaft, Beispiel
2933 @cindex DynamicLineSpanner, Beispiel zur Veränderung
2934 @cindex staff-padding-Eigenschaft, Beispiel
2935
2936 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2937 \dynamicUp
2938 % Extend width by 1 unit
2939 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2940 % Align dynamics to a base line 2 units above staff
2941 \override DynamicLineSpanner #'staff-padding = #2
2942 a4\f b\mf c\mp b\p
2943 @end lilypond
2944
2945
2946 @subheading self-alignment-X (Selbstausrichtung-X-Eigenschaft)
2947
2948 @cindex self-alignment-X-Eigenschaft
2949
2950 Das nächste Beispiel zeigt, wie man den Zusammenstoß
2951 einer Fingersatzbezeichnung mit einem Notenhals
2952 verhindern kann, indem die rechte Ecke an dem
2953 Referenzpunkt der abhängigen Note angeordnet wird:
2954
2955 @cindex StringNumber, Beispiel zur Veränderung
2956
2957 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2958 \voiceOne
2959 < a \2 >
2960 \once \override StringNumber #'self-alignment-X = #RIGHT
2961 < a \2 >
2962 @end lilypond
2963
2964
2965 @subheading staff-position (Position innerhalb des Systems)
2966
2967 @cindex staff-position-Eigenschaft
2968 @cindex Notensystem-Position-Eigenschaft
2969 @cindex Kollision von Objekten im System
2970 @cindex Zusammenstöße von Objekten im System
2971
2972 Vieltaktpausen in einer Stimmen können mit Noten in anderen
2973 Stimmen kollidieren.  Da diese Pausen zentriert zwischen den
2974 Taktlinien gesetzt werden, würde es für LilyPond eine recht große
2975 Anstrengung bedeuten herauszufinden, welche Noten mit ihnen
2976 zusammenstoßen könnten, denn alle Kollisionsvermeidung
2977 für Noten und Pausen funktioniert nur für Noten bzw. Pausen, die
2978 zur selben Zeit auftreten.  Hier ein typisches Beispiel für eine
2979 Kollision dieser Art:
2980
2981 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2982 << {c c c c} \\ {R1} >>
2983 @end lilypond
2984
2985 Die beste Lösung ist es, die Ganztaktpause nach unten zu
2986 schieben, denn die Pause ist in der zweiten Stimme.  Per
2987 Standardeinstellung für die zweite Stimme (@code{\voiceTwo},
2988 also die zweite Stimme in der
2989 @code{<<@{...@} \\ @{...@}>>}-Konstruktion) wird die
2990 Position auf dem System (@code{staff-position}) auf -4
2991 für @code{MultiMeasureRest}, in unserem Beispiel muss
2992 es also bspw. auf die Position @code{-8} gesetzt werden, 
2993 d.h. vier halbe Notenlinienabstände weiter nach unten:
2994
2995 @cindex MultiMeasureRest, Beispiel zur Veränderung
2996 @cindex Ganztaktpausen, Beispiel zur Veränderung
2997 @cindex staff-position-Eigenschaft, Beispiel
2998
2999 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
3000 <<
3001   {c c c c}
3002 \\
3003   \override MultiMeasureRest #'staff-position = #-8
3004   {R1}
3005 >>
3006 @end lilypond
3007
3008 Das ist besser, als etwa @code{extra-offset} zu benutzen, denn
3009 in unserem Fall wird die Hilfslinie der Pause automatisch gesetzt.
3010
3011
3012 @subheading extra-offset (Genaues Positionieren)
3013
3014 @cindex extra-offset-Eigenschaft
3015 @cindex Zusätzlicher Abstand, Positionierung
3016 @cindex Positionierung von Objekten
3017 @cindex Objekte, Positionierung
3018
3019 Die @code{extra-offset}-Eigenschaft bietet vollständige Kontrolle
3020 über die Positionierung von Objekten in horizontaler und vertikaler
3021 Richtung.
3022
3023 Im Beispiel unten ist das zweite Fingersatzzeichen (@code{Fingering}) etwas nach
3024 links und 1,8 Notenlinienabstände nach unten verschoben:
3025
3026 @cindex Fingersatz, Beispiel zur Veränderung
3027 @cindex extra-offset-Eigenschaft, Beispiel
3028
3029 @lilypond[quote,fragment,relative=1,verbatim]
3030 \stemUp
3031 f-5
3032 \once \override Fingering
3033     #'extra-offset = #'(-0.3 . -1.8)
3034 f-5
3035 @end lilypond
3036
3037
3038 @subheading Ausrichtungseigenschaft
3039
3040 @cindex positions-Eigenschaft
3041 @cindex Kontrolle über Triolen, Bögen und Balken manuell
3042 @cindex manuelle Kontrolle über Triolen, Bögen, Balken
3043 @cindex Balken, manuelle Kontrolle
3044 @cindex Bögen, manuelle Kontrolle
3045 @cindex Legatobögen, manuelle Kontrolle
3046 @cindex Phrasierungsbögen, manuelle Kontrolle
3047 @cindex Triollen-Klammer, manuelle Kontrolle
3048
3049 Die @code{positions}-Eigenschaft erlaubt die Kontrolle von Position und
3050 Steigung von Balken, Legato- und Phrasierungsbögen sowie Triolenklammern.
3051 Hier ein Beispiel, in der ein unschöner Phrasierungsbogen auftritt, weil
3052 er den Bogen des Vorschlags vermeidet:
3053
3054 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3055 r4  \acciaccatura e8\( d8 c ~c d c d\)
3056 @end lilypond
3057
3058 @noindent
3059 Man könnte einfach den Phrasierungsbogen oberhalb der Noten setzen, und
3060 das wäre auch die beste Lösung:
3061
3062 @cindex Phrasierungsbogen, Beispiel zur Veränderung
3063 @cindex positions-Eigenschaft, Beispiel
3064 @cindex Positionierung, Beispiel
3065
3066 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3067 r4
3068 \phrasingSlurUp
3069 \acciaccatura e8\( d8 c ~c d c d\)
3070 @end lilypond
3071
3072 @noindent
3073 aber wenn es einen Grund geben sollte, warum das nicht geht, könnte
3074 man das linke Ende des Phrasierungsbogens etwas nach unten verschieben,
3075 indem man die @code{positions}-Eigenschaft einsetzt.  Damit
3076 verschwindet auch die etwas unschöne Form:
3077
3078 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3079 r4
3080 \once \override PhrasingSlur #'positions = #'(-4 . -3)
3081 \acciaccatura
3082 e8\( d8 c ~c d c d\)
3083 @end lilypond
3084
3085 Hier noch ein weiteres Beispiel aus der Einleitung von Chopins
3086 Prelude Op. 28 Nr. 2, das untere System.  Wie zu sehen ist,
3087 stößt der Balken mit den oberen Noten zusammen:
3088
3089 @lilypond[quote,verbatim,fragment,ragged-right]
3090 {
3091 \clef "bass"
3092 << {b,8 ais, b, g,} \\ {e, g e, g} >>
3093 << {b,8 ais, b, g,} \\ {e, g e, g} >>
3094 }
3095 @end lilypond
3096
3097 @noindent
3098 Das kann manuell gelöst werden, indem beide Enden des Balkens
3099 von ihrer Position 2 Notenlinienabstände über der Mittellinie
3100 hochgeschoben werden, etwa auf 3:
3101
3102 @cindex Balken, Beispiel zur Veränderung
3103 @cindex positions-Eigenschaft, Beispiel
3104 @cindex Positionierung, Beispiel
3105
3106 @lilypond[quote,verbatim,fragment,ragged-right]
3107 {
3108   \clef "bass"
3109   <<
3110     \override Beam #'positions = #'(3 . 3)
3111     {b,8 ais, b, g,}
3112   \\
3113     {e, g e, g}
3114   >>
3115   << {b,8 ais, b, g,} \\ {e, g e, g} >>
3116 }
3117 @end lilypond
3118
3119 @noindent
3120 Hier ist zu beobachten, dass die Veränderung sich auch auf die
3121 weiteren Achtelbalken der ersten Stimme auwirkt, während sie keine
3122 Auswirkung auf die Balken der zweiten Stimme hat.
3123
3124 @subheading force-hshift (vertikale Verschiebunseigenschaft)
3125
3126 @cindex force-hshift-Eigenschaft
3127 @cindex Vertikale Verschiebung erzwingen
3128
3129 @c FIXME: formatting stuff  (ie not important right now IMO)
3130 @c @a nchor Chopin finally corrected TODOgp
3131
3132 An diesem Punkt können wir den letzten Feinschliff an unserem
3133 Chopin-Beispiel vornhemen, das wir behandelt haben in
3134 @ref{Ich höre Stimmen}.  Wir hatten es in folgende Form
3135 gebracht:
3136
3137 @lilypond[quote,verbatim,fragment,ragged-right]
3138 \new Staff \relative c'' {
3139   \key aes \major
3140   <<
3141     { c2 aes4. bes8 } \\
3142     { aes2 f4 fes   } \\
3143     { \voiceFour
3144       <ees c>2
3145       des2
3146     }
3147   >> |
3148   <c ees aes c>1 |
3149 }
3150 @end lilypond
3151
3152 @noindent
3153 Die unteren zwei Noten des ersten Akkords (also diein der
3154 dritten Stimme) sollten nicht aus der Notenkolumne der
3155 oberen zwei Noten weggeschoben werden.  Um das zu
3156 korrigieren, setzen wir @code{force-hshift}, das eine
3157 Eigenschaft von
3158 @code{NoteColumn} ist, für diese Noten auf Null.
3159 Die untere Note des zweiten Akkordes wird am besten
3160 direkt rechts von den oberen Noten gesetzt.  Das erreichen
3161 wir, indem wir @code{force-hshift} für diese Note auf
3162 0.5 setzen, also eine halbe Notenkopfbreite nach rechts von
3163 der Kolumne der oberen Noten aus.
3164
3165 Hier das Endergebnis:
3166
3167 @cindex Notenkolumne, Beispiel zur Veränderung
3168 @cindex force-hshift-Eigenschaft, Beispiel
3169 @cindex vertikale Verschiebung, Beispiel
3170
3171 @lilypond[quote,verbatim,fragment,ragged-right]
3172 \new Staff \relative c'' {
3173   \key aes \major
3174   <<
3175     { c2 aes4. bes8 } \\
3176     { aes2 f4 fes   } \\
3177     { \voiceFour
3178       \once \override NoteColumn #'force-hshift = #0 <ees c>2
3179       \once \override NoteColumn #'force-hshift = #0.5 des2
3180     }
3181   >> |
3182   <c ees aes c>1 |
3183 }
3184 @end lilypond
3185
3186
3187 @node Beispiele aus dem Leben
3188 @subsection Beispiele aus dem Leben
3189 @translationof Real music example
3190
3191 Das Kapitel zu Optimierungen soll mit einem komplizierten Beispiel
3192 beendet werden, in dem verschiedene Optimierungen vorgenommen
3193 werden müssen, bis das Ergebnis gut ausssieht.  Das Beispiel wurde
3194 ganz bewusst gewählt um die Benutzung der Notationsreferenz
3195 zu zeigen, wenn ungewöhnliche Notationsprobleme gelöst werden
3196 müssen.  Es ist nicht repräsentativ für normale Notationsprojekte,
3197 lassen Sie sich also nicht durch dieses Beispiel entmutigen!  Zum
3198 Glück sind Probleme wie die hier gezeigten nicht sehr häufig.
3199
3200 Das Beispiel stammt aus Chopins Premiére Ballade, Op. 23, Takte
3201 6--9, der Übergang vom Lento der Einleitung zum Moderato.
3202 Hier zunächst der Satz, wie er aussehen soll, allerdings ohne
3203 Dynamik, Fingersatz und Pedalbezeichnung, um das Beispiel nicht
3204 zu kompliziert zu machen.
3205
3206 @c This example should not be indexed
3207 @lilypond[quote,ragged-right]
3208 rhMusic = \relative c'' {
3209   r2
3210   c4.\( g8 |
3211   \once \override Tie #'staff-position = #3.5
3212   bes1~ |
3213   \bar "||"
3214   \time 6/4
3215   \mergeDifferentlyHeadedOn
3216   \mergeDifferentlyDottedOn
3217   bes2.^\markup {\bold "Moderato"} r8
3218   <<
3219     {c,8[ d fis bes a] | }
3220   \\
3221     % Reposition the c2 to the right of the merged note
3222     {c,8~ \once \override NoteColumn #'force-hshift = #1.0
3223     % Move the c2 out of the main note column so the merge will work
3224     \shiftOnn c2}
3225   \\
3226     % Stem on the d2 must be down to permit merging
3227     {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3228   \\
3229     {s4 fis4.}
3230   >>
3231   \mergeDifferentlyHeadedOff
3232   \mergeDifferentlyDottedOff
3233   g2.\)
3234 }
3235
3236 lhMusic = \relative c' {
3237   r2 <c g ees>2( |
3238   <d g, d>1)\arpeggio |
3239   r2. d,,4 r4 r |
3240   r4
3241 }
3242
3243 \score {
3244   \new PianoStaff <<
3245     \new Staff = "RH"  <<
3246       \key g \minor
3247       \rhMusic
3248     >>
3249     \new Staff = "LH" <<
3250       \key g \minor
3251       \clef "bass"
3252       \lhMusic
3253     >>
3254   >>
3255 }
3256 @end lilypond
3257
3258 Die erste Überlegung ist, dass das System für die rechte Hand
3259 im dritten Takt vier Stimmen braucht.  Das sind die fünf
3260 Achtelnoten mit Balken, das übergebundene C, die Halbe D, die
3261 mit der Achtel D verschmolzen ist, und die punktierte Viertel
3262 Fis, die auch mit einer Achtelnote verschmolzen ist.  Alles
3263 andere ist eine einzige Stimme, es ist also am einfachsten, die
3264 Stimmen nur zeitweise zu erstellen, wenn sie auftreten.  Wenn
3265 Sie vergessen haben, wie man das anstellt, schauen Sie sich
3266 nochmal den Abschnitt @ref{Ich höre Stimmen} an.  Wir
3267 wollen anfange, indem wir die Noten in zwei Variablen
3268 notieren und dann die Systemstruktur in einer
3269 @code{\score}-Umgebung erstellen.  Das ist, was LilyPond
3270 erstellt:
3271
3272 @lilypond[quote,verbatim,ragged-right]
3273 rhMusic = \relative c'' {
3274   r2 c4. g8 |
3275   bes1~ |
3276   \time 6/4
3277   bes2. r8
3278   % Start polyphonic section of four voices
3279   <<
3280     {c,8 d fis bes a | }
3281   \\
3282     {c,8~ c2 | }
3283   \\
3284     {s8 d2 | }
3285   \\
3286     {s4 fis4. | }
3287   >>
3288   g2.
3289 }
3290
3291 lhMusic = \relative c' {
3292   r2 <c g ees>2 |
3293   <d g, d>1 |
3294   r2. d,,4 r4 r |
3295   r4
3296 }
3297
3298 \score {
3299   \new PianoStaff <<
3300     \new Staff = "RH"  <<
3301       \key g \minor
3302       \rhMusic
3303     >>
3304     \new Staff = "LH" <<
3305       \key g \minor
3306       \clef "bass"
3307       \lhMusic
3308     >>
3309   >>
3310 }
3311 @end lilypond
3312
3313 Alle Noten sind richtig, aber die Positionierung sehr
3314 verbesserungsbedürftig.  Der Bindebogen stößt mit
3315 der veränderten Taktart zusammen, die Balkung im
3316 dritten Takt ist falsch, die Noten werden nicht 
3317 verschmolzen und einige Notationselemente fehlen ganz.
3318 Behandeln wir zunächst die einfacheren Dinge.  Der
3319 Balken kann durch eine manuelle Begrenzung einfach
3320 korrigiert werden, und auch der Legatobogen der linken
3321 Hand und der Phrasierungsbogen der rechten Hand
3322 sind schnell gesetzt, denn sie wurden schon in der
3323 Übung erklärt.  Damit haben wir folgendes Notenbild:
3324
3325 @lilypond[quote,verbatim,ragged-right]
3326 rhMusic = \relative c'' {
3327   r2 c4.\( g8 |
3328   bes1~ |
3329   \time 6/4
3330   bes2. r8
3331   % Start polyphonic section of four voices
3332   <<
3333     {c,8[ d fis bes a] | }
3334   \\
3335     {c,8~ c2 | }
3336   \\
3337     {s8 d2 | }
3338   \\
3339     {s4 fis4. | }
3340   >>
3341   g2.\)
3342 }
3343
3344 lhMusic = \relative c' {
3345   r2 <c g ees>2( |
3346   <d g, d>1) |
3347   r2. d,,4 r4 r |
3348   r4
3349 }
3350
3351 \score {
3352   \new PianoStaff <<
3353     \new Staff = "RH"  <<
3354       \key g \minor
3355       \rhMusic
3356     >>
3357     \new Staff = "LH" <<
3358       \key g \minor
3359       \clef "bass"
3360       \lhMusic
3361     >>
3362   >>
3363 }
3364 @end lilypond
3365
3366 Der erste Takt stimmt jetzt schon.  Der zweite Takt enthält ein
3367 Arpeggio und wird mit einer doppelten Taktlinie beschlossen.
3368 Wie können wir diese notieren, denn sie sind im Handbuch zum
3369 Lernen nicht vorgekommen?  Hier brauchen wir jetzt die
3370 Notationsreferenz.  Ein Blick in den Index zeigt uns die
3371 Einträge für @qq{Arpeggio} und @qq{Taktlinien}: ein
3372 Arpeggio also erstellt man mit dem Befehl @code{\arpeggio}
3373 hinter einem Akkord und eine doppelte Taktlinie wird mit dem
3374 Befehl @code{\bar "||"} erstellt.  Das ist einfach.  Als nächstes
3375 muss der Zusammenstoß des Bindebogens mit der Taktartbezeichnung
3376 gelöst werden.  Das geht am besten, indem wir den Bogen nach
3377 oben verschieben.  Wie man Objekte verschiebt wurde schon
3378 behandelt in @ref{Verschieben von Objekten}, wo stand, dass Objekte
3379 die
3380 relativ zum System positioniert werden, verschoben werden 
3381 können, indem ihre @code{staff-position}-Eigenschaft
3382 geändert wird, die in halben Notenlienienabständen relativ
3383 zur Mittellinie angegeben wird.  Dieser @code{\override}-Befehl
3384 also, direkt vor die erste übergebundene Note gestellt, verschiebt
3385 den Bindebogen (@code{tie}) 3,5 halbe Notenlinienabstände
3386 über die Mittellinie:
3387
3388 @code{\once \override Tie #'staff-position = #3.5}
3389
3390 Damit ist auch der zweite Takt vollständig:
3391
3392 @lilypond[quote,verbatim,ragged-right]
3393 rhMusic = \relative c'' {
3394   r2 c4.\( g8 |
3395   \once \override Tie #'staff-position = #3.5
3396   bes1~ |
3397   \bar "||"
3398   \time 6/4
3399   bes2. r8
3400   % Start polyphonic section of four voices
3401   <<
3402     {c,8[ d fis bes a] | }
3403   \\
3404     {c,8~ c2 | }
3405   \\
3406     {s8 d2 | }
3407   \\
3408     {s4 fis4. | }
3409   >>
3410   g2.\)
3411 }
3412
3413 lhMusic = \relative c' {
3414   r2 <c g ees>2( |
3415   <d g, d>1)\arpeggio |
3416   r2. d,,4 r4 r |
3417   r4
3418 }
3419
3420 \score {
3421   \new PianoStaff <<
3422     \new Staff = "RH"  <<
3423       \key g \minor
3424       \rhMusic
3425     >>
3426     \new Staff = "LH" <<
3427       \key g \minor
3428       \clef "bass"
3429       \lhMusic
3430     >>
3431   >>
3432 }
3433 @end lilypond
3434
3435 In Takt drei beginnt der Moderato-Abschnitt.  In der
3436 Übung wurde behandelt, wie man fetten Text mit dem
3437 @code{\markup}-Befehl eingibt, es ist also einfach, das
3438 @qq{Moderato} hinzuzufügen.  Wie aber werden Noten
3439 verschmolzen?  Hier nehmen wir wieder die Notationsreferenz
3440 zu Hilfe.  Die Suche nach @qq{Verschmelzen} (engl. merge)
3441 im Index führt uns zu den Befehlen um Noten mit
3442 unterschiedlichen Köpfen und unterschiedlichen Punkten
3443 zu verschmelzen in @ruser{Auflösung von Zusammenstößen}.  In unserem
3444 Beispiel müssen sowohl unterschiedliche Köpfe also auch
3445 unterschiedliche Punktierung verschmolzen werden, wir
3446 brauchen also die Befehle
3447
3448 @example
3449 \mergeDifferentlyHeadedOn
3450 \mergeDifferentlyDottedOn
3451 @end example
3452
3453 @noindent
3454 aus der Notationsreferenz, die wir an den Beginn unseres
3455 Abschnittes stellen und
3456
3457 @example
3458 \mergeDifferentlyHeadedOff
3459 \mergeDifferentlyDottedOff
3460 @end example
3461
3462 @noindent
3463 um das Verhalten wieder auszuschalten. Das sieht so aus:
3464
3465 @cindex Bindebogen, Beispiel zur Veränderung
3466 @cindex staff-position-Eigenschaft, Beispiel
3467
3468 @lilypond[quote,verbatim,ragged-right]
3469 rhMusic = \relative c'' {
3470   r2 c4.\( g8 |
3471   \once \override Tie #'staff-position = #3.5
3472   bes1~ |
3473   \bar "||"
3474   \time 6/4
3475   bes2.^\markup {\bold "Moderato"} r8
3476   \mergeDifferentlyHeadedOn
3477   \mergeDifferentlyDottedOn
3478   % Start polyphonic section of four voices
3479   <<
3480     {c,8[ d fis bes a] | }
3481   \\
3482     {c,8~ c2 | }
3483   \\
3484     {s8 d2 | }
3485   \\
3486     {s4 fis4. | }
3487   >>
3488   \mergeDifferentlyHeadedOff
3489   \mergeDifferentlyDottedOff
3490   g2.\)
3491 }
3492
3493 lhMusic = \relative c' {
3494   r2 <c g ees>2( |
3495   <d g, d>1)\arpeggio |
3496   r2. d,,4 r4 r |
3497   r4
3498 }
3499
3500 \score {
3501   \new PianoStaff <<
3502     \new Staff = "RH"  <<
3503       \key g \minor
3504       \rhMusic
3505     >>
3506     \new Staff = "LH" <<
3507       \key g \minor
3508       \clef "bass"
3509       \lhMusic
3510     >>
3511   >>
3512 }
3513 @end lilypond
3514
3515 Mit diesen Veränderungen wurden die beiden Fis-Noten 
3516 verschmolzen, aber nicht die zwei Ds.  Warum nicht?  Die
3517 Antwort befindet sich im gleicher Abschnitt der Notationsreferenz:
3518 Noten, die verschmolzen werden, müssen Hälse in entgegengesetzte
3519 Richtungen aufweisen und zwei Noten können nicht verschmolzen
3520 werden, wenn eine dritte Noten in der gleichen Kolumne
3521 stört.  In unserem Fall weisen beide Hälse nach oben und es
3522 befindet sich zur gleichen Zeit auch noch eine dritte Note, das C.
3523 Wie die Richtung von Hälsen geändert wird, wissen wir schon:
3524 mit @code{\stemDown}, und in der Notationsreferenz findet
3525 sich auch Information, wie das C verschoben werden kann: mit
3526 dem @code{\shift}-Befehl.  Aber welcher von ihnen?  Das C
3527 befindet sich in der zweiten Stimme, die @qq{shift off} hat,
3528 die zwei Ds sind in den Stimmen eins und drei, die @qq{shift
3529 off} bzw. @qq{shift on} haben.  Das C muss also noch eine
3530 Stufe weiter verschoben werden mit @code{\shiftOnn}, damit
3531 es die Verschmelzung der Ds nicht stört.  Das sieht jetzt so
3532 aus:
3533
3534 @lilypond[quote,verbatim,ragged-right]
3535 rhMusic = \relative c'' {
3536   r2 c4.\( g8 |
3537   \once \override Tie #'staff-position = #3.5
3538   bes1~ |
3539   \bar "||"
3540   \time 6/4
3541   bes2.^\markup {\bold "Moderato"} r8
3542   \mergeDifferentlyHeadedOn
3543   \mergeDifferentlyDottedOn
3544   % Start polyphonic section of four voices
3545   <<
3546     {c,8[ d fis bes a] | }
3547   \\
3548     % Move the c2 out of the main note column so the merge will work
3549     {c,8~ \shiftOnn c2 | }
3550   \\
3551     % Stem on the d2 must be down to permit merging
3552     {s8 \stemDown d2 | }
3553   \\
3554     {s4 fis4. | }
3555   >>
3556   \mergeDifferentlyHeadedOff
3557   \mergeDifferentlyDottedOff
3558   g2.\)
3559 }
3560
3561 lhMusic = \relative c' {
3562   r2 <c g ees>2( |
3563   <d g, d>1)\arpeggio |
3564   r2. d,,4 r4 r |
3565   r4
3566 }
3567
3568 \score {
3569   \new PianoStaff <<
3570     \new Staff = "RH"  <<
3571       \key g \minor
3572       \rhMusic
3573     >>
3574     \new Staff = "LH" <<
3575       \key g \minor
3576       \clef "bass"
3577       \lhMusic
3578     >>
3579   >>
3580 }
3581 @end lilypond
3582
3583 Fast schon geschafft.  Nur noch ein Problem ist übrig: Der Hals nach
3584 unten des verschmolzenen sollte nicht da sein, und das C sähe
3585 besser auf der rechten Seite des Ds aus.  Beides können wir mit den
3586 gelernten Optimierungsmethoden erreichen. Den Hals machen
3587 wir durchsichtig und das C verschieben wir mit der
3588 @code{force-hshift}-Eigenschaft.  Hier ist das Endergebnis:
3589
3590 @cindex Notenkolumne, Beispiel zur Veränderung
3591 @cindex force-hshift-Eigenschaft, Beispiel
3592 @cindex Hals, Beispiel zur Veränderung
3593 @cindex Notenhals, Beispiel zur Veränderung
3594 @cindex transparent-Eigenschaft, Beispiel
3595
3596 @lilypond[quote,verbatim,ragged-right]
3597 rhMusic = \relative c'' {
3598   r2
3599   c4.\( g8 |
3600   \once \override Tie #'staff-position = #3.5
3601   bes1~ |
3602   \bar "||"
3603   \time 6/4
3604   bes2.^\markup {\bold "Moderato"} r8
3605   \mergeDifferentlyHeadedOn
3606   \mergeDifferentlyDottedOn
3607   <<
3608     {c,8[ d fis bes a] | }
3609   \\
3610     % Reposition the c2 to the right of the merged note
3611     {c,8~ \once \override NoteColumn #'force-hshift = #1.0
3612     % Move the c2 out of the main note column so the merge will work
3613     \shiftOnn c2}
3614   \\
3615     % Stem on the d2 must be down to permit merging
3616     {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3617   \\
3618     {s4 fis4.}
3619   >>
3620   \mergeDifferentlyHeadedOff
3621   \mergeDifferentlyDottedOff
3622   g2.\)
3623 }
3624
3625 lhMusic = \relative c' {
3626   r2 <c g ees>2( |
3627   <d g, d>1)\arpeggio |
3628   r2. d,,4 r4 r |
3629   r4
3630 }
3631
3632 \score {
3633   \new PianoStaff <<
3634     \new Staff = "RH"  <<
3635       \key g \minor
3636       \rhMusic
3637     >>
3638     \new Staff = "LH" <<
3639       \key g \minor
3640       \clef "bass"
3641       \lhMusic
3642     >>
3643   >>
3644 }
3645 @end lilypond
3646
3647
3648 @node Weitere Optimierungen
3649 @section Weitere Optimierungen
3650 @translationof Further tweaking
3651
3652 @menu
3653 * Andere Benutzung von Optimierungen::
3654 * Variablen für Optimierungen einsetzen::
3655 * Mehr Information::
3656 * Vermeiden von Optimierungen durch langsamere Übersetzung::
3657 * Fortgeschrittene Optimierungen mit Scheme::
3658 @end menu
3659
3660 @node Andere Benutzung von Optimierungen
3661 @subsection Andere Benutzung von Optimierungen
3662 @translationof Other uses for tweaks
3663
3664 @cindex Transparente Objekte
3665 @cindex Entfernen von Objekten
3666 @cindex Verstecken von Objekten
3667 @cindex Unsichtbare Objekte
3668 @cindex transparent-Eigenschaft, Benutzung
3669 @cindex Objekte unsichtbar machen
3670 @cindex Objekte entfernen
3671 @cindex Objekte verstecken
3672 @cindex Noten zwischen Stimmen überbinden
3673 @cindex Überbinden von Noten zwischen Stimmen
3674
3675 @subheading Noten zwischen unterschiedlichen Stimmen überbinden
3676
3677 Das nächste Beispiel zeigt, wie man Noten von verschiedenen
3678 Stimmen miteinander verknüpfen kann, indem man Bindebögen
3679 für Überbindungen benutzt.  Normalerweise können nur zwei
3680 Noten der gleichen Stimme übergebunden werden.  Wenn
3681 man zwei Stimmen benutzt, wobei die überbundenen Noten
3682 sich in der selben befinden,
3683
3684 @lilypond[quote,fragment,relative=2]
3685 << { b8~ b8\noBeam }
3686 \\ { b[ g8] }
3687 >>
3688 @end lilypond
3689
3690 @noindent
3691 und dann den ersten Hals nach oben unsichtbar macht,
3692 sieht es so aus, als ob die Überbindung zwischen
3693 den Stimmen stattfindet:
3694
3695 @cindex Hals, Beispiel zur Veränderung
3696 @cindex Notenhals, Beispiel zur Veränderung
3697 @cindex transparent-Eigenschaft, Beispiel
3698
3699 @lilypond[quote,fragment,relative=2,verbatim]
3700 <<
3701   {
3702     \once \override Stem #'transparent = ##t
3703     b8~ b8\noBeam
3704   }
3705 \\
3706   { b[ g8] }
3707 >>
3708 @end lilypond
3709
3710 Um sicherzugehen, dass der unsichtbare Hals den Bindebogen
3711 nicht zu sehr verkleinert, kann er verlängert werden, indem
3712 seine Länge (@code{length}) auf den Wert @code{8}
3713 gesetzt wird:
3714
3715 @lilypond[quote,fragment,relative=2,verbatim]
3716 <<
3717   {
3718     \once \override Stem #'transparent = ##t
3719     \once \override Stem #'length = #8
3720     b8~ b8\noBeam
3721   }
3722 \\
3723   { b[ g8] }
3724 >>
3725 @end lilypond
3726
3727
3728 @subheading Eine Fermate in MIDI simulieren
3729
3730 @cindex stencil-Eigenschaft, Benutzung
3731 @cindex Fermate, Benutzung in MIDI
3732 @cindex MIDI: Fermate erstellen
3733
3734 Für Objekte außerhalb des Notensystems ist es normalerweise
3735 besser, die @code{stencil}-Eigenschaft anstelle der
3736 @code{transparent}-Eigenschaft zu verändern, wenn man
3737 sie vom fertigen Notensatz entfernen will.  Indem die
3738 @code{stencil}-Eigenschaft auf falsch (@code{#f}) gesetzt
3739 wird, wird das entsprechende Objekt vollständig entfernt.
3740 Das bedeutet, dass es die Positionierung der anderen Objekte
3741 nicht beeinflusst.
3742
3743 Auf diese Art kann etwa das Tempo geändert werden, damit
3744 in der MIDI-Ausgabe eine Fermate zu hören ist, ohne dass
3745 im Notensatz etwas von diesen Tempoänderungen zu sehen
3746 ist.  Die Metronombezeichnung soll auch nicht die Position
3747 von Text an der gleichen Stelle oder die Abstände zwischen
3748 zwei Systemen beeinflussen.  Darum ist es am besten, 
3749 @code{stencil} auf @code{#f} zu setzen.  Im Beispiel wird
3750 der Unterschied zwischen einem unsichtbaren Objekt und
3751 einem entfernten Objekt gezeigt:
3752
3753 @cindex Metronom-Bezeichnung, Beispiel zur Veränderung
3754 @cindex transparent-Eigenschaft, Beispiel
3755
3756 @lilypond[quote,verbatim,ragged-right]
3757 \score {
3758   \relative c'' {
3759     % Visible tempo marking
3760     \tempo 4=120
3761     a4 a a
3762     \once \override Score.MetronomeMark #'transparent = ##t
3763     % Invisible tempo marking to lengthen fermata in MIDI
3764     \tempo 4=80
3765     a\fermata
3766     % New tempo for next section
3767     \tempo 4=100
3768     a a a a
3769   }
3770   \layout { }
3771   \midi { }
3772 }
3773 @end lilypond
3774
3775 @lilypond[quote,verbatim,ragged-right]
3776 \score {
3777   \relative c'' {
3778     % Visible tempo marking
3779     \tempo 4=120
3780     a4 a a
3781     \once \override Score.MetronomeMark #'stencil = ##f
3782     % Invisible tempo marking to lengthen fermata in MIDI
3783     \tempo 4=80
3784     a\fermata
3785     % New tempo for next section
3786     \tempo 4=100
3787     a a a a
3788   }
3789   \layout { }
3790   \midi { }
3791 }
3792 @end lilypond
3793
3794 @noindent
3795 Mit beiden Methoden wird die Tempobezeichnung entfernt, mit
3796 der die Fermate verlängert wird, und beide beeinflussen die
3797 MIDI-Ausgabe wie gewünscht.  Die unsichtbare Metronombezeichnung
3798 schiebt aber die folgende Bezeichnung in die Höhe, während
3799 das im zweiten Beispiel, in dem der @code{stencil} entfernt
3800 wurde, nicht passiert.
3801
3802
3803 @node Variablen für Optimierungen einsetzen
3804 @subsection Variablen für Optimierungen einsetzen
3805 @translationof Using variables for tweaks
3806
3807 @cindex Variablen, Benutzung zur Optimierung
3808 @cindex Optimierung mit Variablen
3809
3810 @code{\override}-Befehle sind oft lang und mühsam zu
3811 tippen, und sie müssen immer absolut richtig sein.  Wenn
3812 derselbe Befehl mehrere Male benutzt werden muss, lohnt
3813 es sich oft schon, eine Variable zu definieren, in der er
3814 sich befindet.
3815
3816 Als Beispiel sollen einige Worte im
3817 Gesangstext fett und kursiv hervorgehoben werden.
3818 Die Befehle @code{\italic} und @code{\bold} funktionieren
3819 im Gesangstext-Kontext nur, wenn sie gleichzeitig mit den Wörtern,
3820 auf die sie angewendet werden sollen, zusätzlich
3821 in eine @code{\markup}-Umgebung eingeschlossen
3822 werden. Durch diese Einbettung können einzelne Wörter nicht
3823 einfach zu einer Variable umgeformt werden.  Als
3824 Alternative versuchen wir, einen Befehl mit
3825 @code{\override} und @code{\revert} zu konstruieren.
3826
3827 @example
3828 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3829 @code{\override Lyrics . LyricText #'font-series = #'bold}
3830
3831 @code{\revert Lyrics . LyricText #'font-shape}
3832 @code{\revert Lyrics . LyricText #'font-series}
3833 @end example
3834
3835 Das wäre natürlich noch viel mühsamer, wenn viele Wörter eine
3836 Hervorhebung benötigen.  Anstelle dieser Befehlsketten @emph{können}
3837 wir jedoch zwei Variablen definieren.  Mit ihnen und dem entsprechenden
3838 Wort in geschweiften Klammern erreichen wir den gewünschten Effekt.
3839 Ein weiterer Vorteil ist, dass in diesem Fall die Leerzeichn um die
3840 Punkte herum nicht benötigt werden, weil sie nicht innerhalb des
3841 @code{lyricmode}-Kontextes interpretiert werden.  Hier ein Beispiel;
3842 die Bezeichnungen können natürlich auch kürzer sein,
3843 um noch weniger schreiben zu müssen:
3844
3845 @cindex LyricText, Beispiel zur Veränderung
3846 @cindex Gesangstext, Beispiel zur Veränderung
3847 @cindex font-shape-Eigenschaft, Beispiel
3848 @cindex font-series-Eigenschaft, Beispiel
3849
3850 @lilypond[quote,verbatim]
3851 emphasize = {
3852   \override Lyrics.LyricText #'font-shape = #'italic
3853   \override Lyrics.LyricText #'font-series = #'bold
3854 }
3855 normal = {
3856   \revert Lyrics.LyricText #'font-shape
3857   \revert Lyrics.LyricText #'font-series
3858 }
3859
3860 global = { \time 4/4 \partial 4 \key c \major}
3861 SopranoMusic   = \relative c' { c4 | e4. e8 g4  g  | a a g }
3862 AltoMusic  = \relative c' { c4 | c4. c8 e4  e  | f f e }
3863 TenorMusic = \relative c  { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3864 BassMusic  = \relative c  { c4 | c4. c8 c4  c  | f8 g a b c4 }
3865 VerseOne   = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
3866 VerseTwo   = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
3867 VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
3868 VerseFour  = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
3869
3870 \score {
3871   \new ChoirStaff <<
3872     \new Staff <<
3873       \clef "treble"
3874       \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
3875       \new Voice = "Alto" { \voiceTwo \AltoMusic }
3876       \new Lyrics \lyricsto "Soprano" { \VerseOne   }
3877       \new Lyrics \lyricsto "Soprano" { \VerseTwo   }
3878       \new Lyrics \lyricsto "Soprano" { \VerseThree }
3879       \new Lyrics \lyricsto "Soprano" { \VerseFour  }
3880     >>
3881     \new Staff <<
3882       \clef "bass"
3883       \new Voice = "Tenor" { \voiceOne \TenorMusic }
3884       \new Voice = "Bass"  { \voiceTwo \BassMusic  }
3885     >>
3886   >>
3887 }
3888 @end lilypond
3889
3890
3891 @node Mehr Information
3892 @subsection Mehr Information
3893 @translationof Other sources of information
3894
3895 Die Programmreferenz enthält sehr viel Information über LilyPond, aber 
3896 noch mehr Information findet sich in den internen 
3897 LilyPond-Dateien.  Um sie erforschen zu können, müssen Sie erst
3898 das richtige Verzeichnis auf Ihrem System finden.  Die Position
3899 hängt a) davon ab, ob Ihre LilyPond-Installation mit der vorkompilierten
3900 Version von der LilyPond-Internetseite vorgenommen wurde oder Sie
3901 die Version durch Ihren Paketmanager installiert haben (also
3902 z. B. in einer Linux-Distribution oder unter fink oder cygwin
3903 installiert), und b) auf welchem Betriebssystem Sie das Programm
3904 benutzen:
3905
3906 @strong{Von lilypond.org heruntergeladen}
3907
3908 @itemize @bullet
3909 @item Linux
3910
3911 Wechseln Sie in das Verzeichnis
3912 @file{@var{INSTALL_VERZ}/lilypond/usr/share/lilypond/current/}
3913
3914 @item MacOS X
3915
3916 Wechseln Sie in das Verzeichnis
3917 @file{@var{INSTALL_VERZ}/LilyPond.app/Contents/Resources/share/lilypond/current/}
3918 indem Sie entweder mit dem Befehl @code{cd} vom Terminal aus
3919 in das Verzeichnis wechseln, oder mit Control-Klick auf das
3920 LilyPond-Programmsymbol gehen und @qq{Show Package Contents}
3921 auswählen.
3922
3923 @item Windows
3924
3925 Wechseln Sie mit dem Windows Explorer ins Verzeichnis
3926 @file{@var{INSTALL_VERZ}/LilyPond/usr/share/lilypond/current/}
3927
3928 @end itemize
3929
3930 @strong{Mit einem Paket-Manager installiert oder selber aus
3931 den Quellen kompiliert}
3932
3933 Wechseln Sie in das Verzeichnis
3934 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, wobei
3935 @var{PREFIX} bei Ihrem Paket-Manager oder dem
3936 @code{configure}-Skript gesetzt wird, und @var{X.Y.Z}
3937 die LilyPond-Versionsnummer.
3938
3939 @smallspace
3940
3941 In diesem Ordner sind die zwei interessanten Unterordner:
3942
3943 @itemize
3944 @item @file{ly/} - beinhaltet Dateien im LilyPond-Format
3945 @item @file{scm/} - beinhaltet Dateien im Scheme-Format
3946 @end itemize
3947
3948 Schauen wir uns zuerst einige Dateien in @file{ly/} an.
3949 Öffnen Sie @file{ly/property-init.ly} in einem Texteditor.
3950 Der, den Sie normalerweise für @code{.ly}-Dateien benutzen,
3951 genügt.  Diese Datei enthält die Definitionen aller vordefinierten
3952 Befehle für LilyPond, wie etwa @code{\stemUp} und
3953 @code{\slurDotted}.  Sie können sehen, dass es sich um
3954 nichts mehr handelt als Definitionen von Variablen, die eine
3955 oder mehrere @code{\override}-Befehle enthalten.  Der
3956 Befehl @code{/tieDotted} etwa wird folgendermaßen definiert:
3957
3958 @example
3959 tieDotted = @{
3960   \override Tie #'dash-period = #0.75
3961   \override Tie #'dash-fraction = #0.1
3962 @}
3963 @end example
3964
3965 Wenn Sie diese Voreinstellungen der vordefinierten Befehl nicht
3966 mögen, können Sie sie ganz einfach umdefinieren, genauso wie
3967 jede andere Variable auch, indem Sie sie an den Anfang Ihrer
3968 Quelldatei schreiben.
3969
3970 Hier sind die wichtisgsten Dateien, die sich im Ordner
3971 @file{ly/} befinden:
3972
3973 @multitable @columnfractions .4 .6
3974 @headitem Dateiname
3975   @tab Inhalt
3976 @item @file{ly/engraver-init.ly}
3977   @tab Definitionen von Engraver-Kontexten
3978 @item @file{ly/paper-defaults-init.ly}
3979   @tab Spezifikationen von Voreinstellungen für Papiermaße
3980 @item @file{ly/performer-init.ly}
3981   @tab Definitionen von Performer-Kontexten
3982 @item @file{ly/property-init.ly}
3983   @tab Definitionen aller vordefinierten Befehle
3984 @item @file{ly/spanner-init.ly}
3985   @tab Definitionen aller vordefinierten Strecker-Befehle
3986 @end multitable
3987
3988 Andere Einstellungen (wie die Definitionen von Beschriftungsbefehlen)
3989 sind in @code{.scm}-(Scheme)-Dateien gespeichert.  Die
3990 Scheme-Programmiersprache wird benutzt, um eine
3991 programmierbare Schnittstelle zu den internen Operationen von
3992 LilyPond zu haben.  Eine weitere Erklärung dieser Dateien ist
3993 im Moment außerhalb des Rahmens dieses Handbuchs, denn
3994 sie erfordern einige Kenntnis der Scheme-Sprache.  Die Warnung
3995 ist hier angebracht, dass des ein gutes technisches Verständnis
3996 oder sehr viel Zeit braucht, um Scheme und diese
3997 Dateien zu verstehen (siehe auch @ref{Scheme-Übung}).
3998
3999 Wenn Sie sich mit Scheme auskennen, sind hier mögliche
4000 interessante Dateien:
4001
4002 @multitable @columnfractions .4 .6
4003 @headitem Dateiname
4004   @tab Inhalt
4005 @item @file{scm/auto-beam.scm}
4006   @tab Sub-Balken-Voreinstellungen
4007 @item @file{scm/define-grobs.scm}
4008   @tab Voreinstellungen für Grob-Eigenschaften
4009 @item @file{scm/define-markup-commands.scm}
4010   @tab Definition aller Markup-Beschriftungsbefehle
4011 @item @file{scm/midi.scm}
4012   @tab Voreinstellung für die MIDI-Ausgabe
4013 @item @file{scm/output-lib.scm}
4014   @tab Einstellungen mit Einfluss auf die Darstellung von Bunddiagrammen, Farben, Versetzungszeichen, Taktlinien usw.
4015 @item @file{scm/parser-clef.scm}
4016   @tab Definitionen der unterstützten Schlüssel
4017 @item @file{scm/script.scm}
4018   @tab Voreinstellungen for Artikulationszeichen
4019 @end multitable
4020
4021
4022 @node Vermeiden von Optimierungen durch langsamere Übersetzung
4023 @subsection Vermeiden von Optimierungen durch langsamere Übersetzung
4024 @translationof Avoiding tweaks with slower processing
4025
4026 LilyPond kann einige zusätzliche Tests durchführen, während 
4027 die Noten gesetzt werden.  Dadurch braucht das Programm länger, 
4028 um den Notensatz zu produzieren, aber üblicherweise werden 
4029 weniger nachträgliche Anpassungen nötig sein.  Wenn eine
4030 Textsilbe oder eine Beschriftung aus dem Rand der Partitur
4031 ragt, wird durch diese Tests die Zeile gerade so weit komprimiert,
4032 dass sie sich innerhalb der Ränder befindet.
4033
4034 @example
4035 \new Score \with @{
4036  %  Um sicher zu gehen, dass Texte und Liedtext 
4037  %  innerhalb der Papierränder bleiben
4038  \override PaperColumn #'keep-inside-line = ##t
4039  \override NonMusicalPaperColumn #'keep-inside-line = ##t
4040 @} @{
4041    ...
4042 @}
4043 @end example
4044
4045
4046 @node Fortgeschrittene Optimierungen mit Scheme
4047 @subsection Fortgeschrittene Optimierungen mit Scheme
4048 @translationof Advanced tweaks with Scheme
4049
4050 Auch wenn viele Sachen mit @code{\override} und @code{\tweak}
4051 möglich sind, gibt es eine sehr viel mächtigere Möglichkeit, die
4052 Arbeitsweise von LilyPond mit Hilfe der programmierbaren Schnittstelle
4053 zu beeinflussen.  Code, der in der Scheme-Programmiersprache
4054 geschrieben ist, kann direkt in die interne Satzmaschine von LilyPond
4055 eingefügt werden.  Natürlich brauchen Sie dazu wenigstens ein
4056 grundlegendes Verständnis von Scheme.  Eine Einleitung finden
4057 Sie in der @ref{Scheme-Übung}.
4058
4059 Zur Illustration der vielen Möglichkeiten soll gezeigt werden, dass eine
4060 Eigenschaft nicht nur auf eine Konstante, sondern auch auf eine
4061 Scheme-Prozedur gesetzt werden kann, die dann jedes Mal
4062 aufgerufen wird, wenn die Eigenschaft von LilyPond benutzt
4063 wird.  Die Eigenschaft kann damit dynamisch auf einen Wert
4064 gesetzt werden, der durch die Prozedur jedes Mal neu bestimmt
4065 wird.  In diesem Beispiel wird die Farbe der Notenköpfe entsprechend
4066 zu ihrer Position innerhalb der Tonleiter gesetzt.
4067
4068 @cindex x11-Farben, Beispiel zur Benutzung
4069 @cindex Notenkopf, Beispiel zur Veränderung
4070 @cindex Farb-Eigenschaft, in Scheme-Prozedur gesetzt
4071
4072 @lilypond[quote,verbatim,ragged-right]
4073 #(define (color-notehead grob)
4074   "Color the notehead according to its position on the staff."
4075   (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
4076     (case mod-position
4077       ;;   Return rainbow colors
4078       ((1) (x11-color 'red    ))  ; for C
4079       ((2) (x11-color 'orange ))  ; for D
4080       ((3) (x11-color 'yellow ))  ; for E
4081       ((4) (x11-color 'green  ))  ; for F
4082       ((5) (x11-color 'blue   ))  ; for G
4083       ((6) (x11-color 'purple ))  ; for A
4084       ((0) (x11-color 'violet ))  ; for B
4085     )
4086   )
4087 )
4088
4089 \relative c' {
4090   % Arrange to obtain color from color-notehead procedure
4091   \override NoteHead #'color = #color-notehead
4092   c2 c' |
4093   b4 g8 a b4 c |
4094   c,2 a' |
4095   g1 |
4096 }
4097 \addlyrics {
4098   Some -- where o -- ver the Rain -- bow, way up high,
4099 }
4100 @end lilypond
4101
4102 Weiter Beispiele, die die Benutzung dieser programmierbaren
4103 Schnittstelle zeigen, finden sich in @ref{Optimierungen mit Scheme}.