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