1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.tely
4 Translation of GIT committish: 0bf625c588a94030d351f3f8ec631cada2e15d8a
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
11 @chapter Tweaking output
13 In diesem Kapitel wird erklärt, wie man die Notenausgabe verändern
14 kann. In LilyPond kann man sehr viel konfigurieren, fast jedes
15 Notenfragment kann geändert werden.
20 * Fixing overlapping notation::
23 * Fitting music onto fewer pages::
24 * Advanced tweaks with Scheme::
25 * Avoiding tweaks with slower processing::
30 @section Moving objects
32 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht
33 perfekt. Einige Notationselemente können sich überschneiden. Das
34 ist nicht schön, kann aber (in den meisten Fällen) sehr einfach
37 @c FIXME: find a better example for 5.1 Moving Objects. -gp
38 @c yes, I want this TODO to be visible to end-users. It's better
39 @c than having nothing at all.
40 TODO: Mit den neuen Abstandseigenschaften seit Version 2.12 sind die
41 jeweiligen Beispiele nicht mehr relevant. Sie zeigen jedoch immer noch
42 machtvolle Eigenschaften von LilyPond und verbleiben deshalb in der
43 Dokumentation, bis jemand bessere Beispiel zur Verfügung stellt.
45 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
46 % temporary code to break this example:
47 \override TextScript #'outside-staff-priority = ##f
48 e4^\markup{ \italic ritenuto } g b e
51 @cindex Abstände füllen
53 Die einfachste Lösung ist es, Abstände zwischen Objekt und Note zu vergrößern
54 (genauso auch für Fingersätze oder Dynamikzeichen). In
55 LilyPond wird das durch Veränderung der @code{padding} (Füllungs)-Eigenschaft
56 erreicht, ihre Maßeinheit sind Notenzeilenabstände. Für die meisten
57 Objekte ist der Wert etwa 1.0 oder weniger (das unterscheidet sich
58 von Objekt zu Objekt). Hier soll der Abstand vergrößert werden, also
59 scheint 1.5 eine gute Wahl.
61 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
62 % temporary code to break this example:
63 \override TextScript #'outside-staff-priority = ##f
64 \once \override TextScript #'padding = #1.5
65 e4^\markup{ \italic ritenuto } g b e
68 Das sieht besser aus, ist aber noch nicht groß genug. Nach einigen
69 Experimenten wird darum 2.3 genommen für diesen Fall. Diese Zahl
70 ist aber nur das Resultat einigen Probierens und persönlicher
71 Geschmack. Probieren Sie selber ein wenig herum und entscheiden
72 Sie nach eigenem Geschmack.
74 Die @code{staff-padding}-Eigenschaft ist der vorigen sehr ähnlich.
75 @code{padding} entscheidet über den minimalen Abstand zwischen einem
76 Objekt und dem nächsten anderen Objekt (meistens eine Note oder
77 Notenzeile); @code{staff-padding} entscheidet über den minimalen
78 Abstand zwischen einem Objekt und dem Notensystem. Das ist nur ein
79 kleiner Unterschied, aber hier wird das Verhalten demonstriert:
81 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
82 % temporary code to break this example:
83 \override TextScript #'outside-staff-priority = ##f
85 \once \override TextScript #'padding = #4.6
87 \once \override TextScript #'staff-padding = #4.6
88 c4^"piu mosso" fis a g
91 \once \override TextScript #'padding = #4.6
93 \once \override TextScript #'staff-padding = #4.6
94 c4^"piu mosso" fis a g
97 @cindex Abstand, zusätzlicher
100 Eine andere Lösung ermöglicht vollständige Kontrolle über die Positionierung
101 eines Objektes sowohl horizontal als auch vertikal. Das wird mit der
102 @code{extra-offset} (Zusätzlicher-Abstand)-Eigenschaft erreicht. Das
103 ist etwas komplizierter und kann andere Probleme mit sich ziehen. Wenn
104 Objekte mit dieser Eigenschaft verschoben werden, heißt das, dass
105 LilyPond sie erst setzt, nachdem alle anderen Objekte positioniert
106 worden sind. Deshalb können sich die Objekte am Ende überlagern.
108 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
109 % temporary code to break this example:
110 \override TextScript #'outside-staff-priority = ##f
111 \once \override TextScript #'extra-offset = #'( 1.0 . -1.0 )
112 e4^\markup{ \italic ritenuto } g b e
115 Bei Verwendung von @code{extra-offset} bestimmt die erste Zahl über die
116 horizontale Verschiebung (nach links ist negativ), die zweite Zahl
117 bestimmt die vertikale Verschiebung (nach oben ist positiv). Nach einigen
118 Experimenten wurden hier folgende Werte für gut befunden:
120 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
121 % temporary code to break this example:
122 \override TextScript #'outside-staff-priority = ##f
123 \once \override TextScript #'extra-offset = #'( -1.6 . 1.0 )
124 e4^\markup{ \italic ritenuto } g b e
128 Auch diese Zahlen sind nur Resultat einigen Herumprobierens und Vergleichens
129 der Ergebnisse. Sie wollen den Text vielleicht etwas höher oder etwas mehr
130 nach links setzen. Versuchen Sie es selber und vergleichen Sie das Ergebnis.
132 Eine letzte Warnung: in diesem Kapitel haben wir den Befehl
135 \once \override TextScript @dots{}
139 benutzt. Dieser Befehl verändert die Anzeige des Textes für die nächste
140 Note. Wenn die Note keinen Text zugeordnet hat, wird auch nichts
141 verändert (und es wird @strong{nicht} nach dem nächsten Text gesucht).
142 Um das Verhalten zu verändern, so dass alles, was nach dem Befehl
143 kommt, verändert wird, müssen Sie den Befehl @code{\once} weglassen.
144 Um die Veränderung zu stoppen, benutzen Sie den Befehl @code{\revert}.
145 Das wird genauer im Kapitel
146 @ref{The \override command} erklärt.
148 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
149 % temporary code to break this example:
150 \override TextScript #'outside-staff-priority = ##f
152 \once \override TextScript #'padding = #4.6
155 \once \override TextScript #'padding = #4.6
159 \override TextScript #'padding = #4.6
162 \revert TextScript #'padding
168 @ref{The \override command}, @ref{Common tweaks}.
171 @node Fixing overlapping notation
172 @section Fixing overlapping notation
174 Im Kapitel @ref{Moving objects} wurde gezeigt, wie man Texte
175 (@code{TextScript}-Objekte) verschiebt. Mit der gleichen
176 Technik können auch andere Objektklassen verschoben werden,
177 @code{TextScript} muss dann nur durch den Namen des Objektes
180 Um den Objektnamen zu finden, siehe die @q{@strong{see also}}-Hinweise
181 am Ende des jeweiligen Abschnittes. Zum Beispiel am Ende des
182 Kapitels @ref{Dynamics} findet sich:
187 Programmreferenz: @internalsref{DynamicText}, @internalsref{Hairpin}.
188 Vertikale Positionierung dieser Symbole wird mit
189 @internalsref{DynamicLineSpanner} erreicht.
193 Um also Dynamik-Zeichen zu verschieben, muss
196 \override DynamicLineSpanner #'padding = #2.0
199 benutzt werden. Es ist nicht genügend Platz, um jedes Objekt aufzulisten,
200 aber die gebräuchlichsten finden sich hier:
202 @multitable @columnfractions .33 .66
203 @headitem Objekttyp @tab Objektbzeichnung
204 @item Dynamikzeichen (vertikal) @tab @code{DynamicLineSpanner}
205 @item Dynamikzeichen (horizontal) @tab @code{DynamicText}
206 @item Bindebögen @tab @code{Tie}
207 @item Phrasierungsbögen @tab @code{Slur}
208 @item Artikulationszeichen @tab @code{Script}
209 @item Fingersatz @tab @code{Fingering}
210 @item Text, z. B. @code{^"text"} @tab @code{TextScript}
211 @item Übungs-/Textmarken @tab @code{RehearsalMark}
216 @section Common tweaks
217 Bestimmte Korrekturen sind so häufig, dass für sie schon fertige
218 angepasste Befehle bereitgestellt sind, so etwa
219 @code{\slurUp} um einen Bindebogen oberhalb anzuzeigen oder
220 @code{\stemDown} um den Notenhals nach unten zu zwingen. Diese
221 Befehle sind im Teil Alles über die Notation unter dem
222 entsprechenden Abschnitt erklärt.
224 Eine vollständige Liste aller Veränderungen, die für jeden Objekttypen
225 (etwa Bögen oder Balken) zur Verfügung stehen, ist in der Programmreferenz
226 dargestellt. Viele Layoutobjekte benutzen jedoch gleiche Eigenschaften,
227 die benutzt werden können, um eigene Einstellungen vorzunehmen.
235 @code{padding}-Eigenschaft kann gesetzt werden, um den Abstand zwischen
236 Symbolen über oder unter den Noten zu vergrößern oder zu verkleinern.
237 Das gilt für alle Objekte, die ein @code{side-position-interface}
238 besitzen, also unterscheiden, auf welcher Seite der Note sie sich befinden.
240 @lilypond[quote,fragment,relative=1,verbatim]
242 \override Script #'padding = #3
246 @lilypond[quote,fragment,relative=1,verbatim]
247 % This will not work, see below:
248 \override MetronomeMark #'padding = #3
252 \override Score.MetronomeMark #'padding = #3
257 Im zweiten Beispiel ist es sehr wichtig zu wissen, welcher Kontext
258 für bestimmte Objekte zuständig ist. Weil das
259 @code{MetronomeMark}-Objekt vom @code{Score}-Kontext gesetzt
260 wird, werden Veränderungen innerhalb des @code{Voice}-Kontextes
261 nicht berücksichtigt. Genauere Details im Kapitel
262 @ref{Constructing a tweak}.
265 @cindex zusätzlicher Abstand
266 @cindex Abstand, zusätzlicher
269 Die @code{extra-offset}-Eigenschaft verschiebt Objekte, hier ist ein
270 Zahlenpaar zur Angabe der Positionierung erforderlich. Die erste Nummer bestimmt
271 die horizontale Bewegung, eine positive Zahl bewegt das Objekt nach rechts.
272 Die zweite Zahl bestimmt die vertikale Bewegung, eine positive Zahl bewegt
273 das Objekt nach oben. Die
274 @code{extra-offset}-Eigenschaft läuft auf unterster Ebene ab: Die
275 Formatierungsmaschine ist sich der Veränderungen nicht bewusst.
277 Im folgenden Beispiel wird die zweite Fingersatzbezeichnung etwas nach
278 links verschoben und 1,8 Notenzeilenabstände nach unten:
280 @lilypond[quote,fragment,relative=1,verbatim]
283 \once \override Fingering
284 #'extra-offset = #'(-0.3 . -1.8)
289 Die Verwendung der @code{transparent}-Eigenschaft druckt das entsprechende Objekt
290 mit @qq{unsichtbarer Druckerschwärze}: Das Objekt wird nicht angezeigt, aber
291 sein Verhalten bleibt bestehen. Das Objekt nimmt weiterhin Platz ein, es nimmt
292 teil an Überschneidungen und deren Auflösung durch das Programm, Bögen und Balken
293 können daran angebunden werden.
295 @cindex transparente Objekte
296 @cindex Entfernen von Objekten
297 @cindex Verstecken von Objekten
298 @cindex unsichtbare Objekte
299 Das nächste Beispiel zeigt, wie man unterschiedliche Stimmen mit
300 Bindebögen verbinden kann. Normalerweise können Bindebögen nur
301 zwei Noten der selben Stimme verbinden. Indem aber ein Bogen in einer
302 anderen Stimme erstellt wird,
304 @lilypond[quote,fragment,relative=2]
313 und dann der erste Hals nach oben unsichtbar gemacht wird, scheint der
314 Bindebogen die Stimme zu wechseln:
317 @lilypond[quote,fragment,relative=2,verbatim]
319 \once \override Stem #'transparent = ##t
326 Damit der Hals den Bogen nicht zu sehr verkleinert, wird seine
327 Länge (@code{length}) auf den Wert @code{8} gesetzt:
329 @lilypond[quote,fragment,relative=2,verbatim]
331 \once \override Stem #'transparent = ##t
332 \once \override Stem #'length = #8
341 @cindex Veränderungen von Abständen
342 @cindex Optimierung von Abständen
345 Abstände in LilyPond werden in Notenzeilenabständen
346 (@code{staff-space}) gemessen, während die meisten Dicke-Eigenschaften
347 auf mit der Notenliniendicke korrespondieren. Eine Eigenschaften
348 verhalten sich anders, etwa die Dicke von Balken ist an die
349 Notenzeilenabstände gekoppelt. Mehr Information findet sich
350 im relevanten Teil der Programmreferenz.
353 @section Default files
355 Die Programmreferenz enthält sehr viel Information über LilyPond, aber
356 noch mehr Information findet sich in den internen
359 Eine Standardeinstellungen (wie die Definitionen für den Kopf (@code{\header}
360 sind als @code{.ly}-Datei gespeichert. Andere Einstellungen
361 (wie die Definition für Beschriftung (@code{markup}) sind
362 als @code{.scm} (Scheme)-Datei gespeichert. Eine nähere Erklärung
363 geht über den Rahmen dieses Handbuches hinaus. Der Hinweis
364 scheint aber angebracht, dass es grundlegende technische
365 Kenntnis und sehr viel Zeit erfordert, diese Dateien zu verstehen.
369 @item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
372 @file{@var{installdir}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
373 Um diese Ordner anzuschauen, wechseln Sie entweder mit @code{cd} im Terminal
374 zu der Adresse oder klicken Sie mit der rechten Maustaste auf das LilyPond-Symbol
375 und wählen Sie @q{Schow Package Contents}.
377 @item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
381 Die @file{ly/} und @file{scm/}-Ordner sind von besonderem Interesse.
382 Dateien wie @file{ly/property-init.ly} und
383 @file{ly/declarations-init.ly} definieren alle häufig vorkommenden Veränderungen.
386 @node Fitting music onto fewer pages
387 @section Fitting music onto fewer pages
389 Manchmal bleiben nur noch ein oder zwei Systeme auf der
390 letzten Seite übrig. Das ist immer ärgerlich, besonders
391 wenn es scheint, dass auf den vorigen Seiten genug Platz
392 ist, um die Systeme noch unterzubringen.
394 Wenn man versucht, das Layout zu verändern, kommt einem
395 der Befehl @code{annotate-spacing} zu Hilfe. Mit diesem
396 Befehl erhält man die Werte von verschiedenen Abstandsbefehlen
397 ausgedruckt, mehr Information im Kapitel @ref{Displaying spacing}.
398 Anhand dieser Angaben kann dann entschieden werden, welche
399 Werte verändert werden müssen.
401 Neben Rändern gibt es nämlich weitere Optionen, Platz zu sparen:
405 LilyPond kann die Systeme so dicht wie möglich platzieren (damit
406 so viele Systeme wie möglich auf eine Seite passen), aber sie
407 dann so anordnen, dass kein weißer Rand unten auf der Seite entsteht.
411 between-system-padding = #0.1
412 between-system-space = #0.1
413 ragged-last-bottom = ##f
419 Die Anzahl der Systeme kann reduziert werden (wenn LilyPond
420 die Musik auf 11 Systeme verteilt, kann man die Benutzung von
421 nur 10 Systemen erzwingen).
430 Vermeidung von Objekten, die den vertikalen Abstand von Systemen
431 vergrößern, hilft oft. Die Verwendung von Klammern bei Wiederholungen
432 etwa braucht mehr Platz. Wenn die Noten innerhalb der Klammern auf
433 zwei Systeme verteilt sind, brauchen sie mehr Platz, als wenn sie
434 nur auf einer Zeile gedruckt werden.
436 Ein anderes Beispiel ist es, Dynamik-Zeichen, die besonders
437 weit @qq{hervorstehen}, zu verschieben.
439 @lilypond[verbatim,quote,fragment]
442 \override DynamicLineSpanner #'padding = #-1.8
443 \override DynamicText #'extra-offset = #'( -2.1 . 0)
449 Die horizontalen Abstände können mit der
450 @code{SpacingSpanner}-Eigenschaft verändert werden. Siehe
451 @ref{Changing horizontal spacing} für Einzelheiten.
453 @lilypond[verbatim,quote]
456 g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
457 g4 e e2 | f4 d d2 | c4 e g g | c,1 |
458 d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
459 g4 e e2 | f4 d d2 | c4 e g g | c,1 |
464 \override SpacingSpanner
465 #'base-shortest-duration = #(ly:make-moment 1 4)
474 @node Advanced tweaks with Scheme
475 @section Advanced tweaks with Scheme
477 Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert
478 werden kann, indem man Befehle wie
479 @code{\override TextScript #'extra-offset = ( 1 . -1)} benutzt. Aber
480 noch mehr Einfluss auf die Formatierung kann durch den Einsatz von
481 Scheme genommen werden. Eine vollständige Erklärung findet sich in der
482 @ref{Scheme tutorial} und den
483 @ref{Interfaces for programmers}.
485 Scheme kann benutzt werden, um einfach nur Befehle zu @qq{überschreiben}
488 @lilypond[quote,verbatim,ragged-right]
489 padText = #(define-music-function (parser location padding) (number?)
491 \once \override TextScript #'padding = #$padding
499 c4^"piu mosso" fis a g
503 Hiermit können aber auch neue Befehle erstellt werden:
505 @lilypond[quote,verbatim,ragged-right]
506 tempoMark = #(define-music-function (parser location padding marktext)
509 \once \override Score . RehearsalMark #'padding = $padding
510 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
511 \mark \markup { \bold $marktext }
516 \tempoMark #3.0 #"Allegro"
521 Sogar ganze musikalische Ausdrücke können eingefügt werden:
523 @lilypond[quote,verbatim,ragged-right]
524 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
531 \pattern {d16 dis} { ais16-> b\p }
536 @node Avoiding tweaks with slower processing
537 @section Avoiding tweaks with slower processing
539 LilyPond kann einige zusätzliche Tests durchführen, während
540 die Noten gesetzt werden. Dadurch braucht das Programm länger,
541 um den Notensatz zu produzieren, aber üblicherweise werden
542 weniger nachträgliche Anpassungen nötig sein.
545 %% Um sicher zu gehen, dass Texte und Liedtext
546 %% innerhalb der Papierränder bleiben
547 \override Score.PaperColumn #'keep-inside-line = ##t