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