1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.tely
4 Translation of GIT committish: 3121682025660b6c85fbf3f22bb9cd8396699ad1
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 @ruser{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 @ruser{The \override command}, @ruser{Common tweaks}.
171 @node Fixing overlapping notation
172 @section Fixing overlapping notation
174 Im Kapitel @ruser{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 @ruser{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 @ruser{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:
330 @lilypond[quote,fragment,relative=2,verbatim]
332 \once \override Stem #'transparent = ##t
333 \once \override Stem #'length = #8
342 @cindex Veränderungen von Abständen
343 @cindex Optimierung von Abständen
346 Abstände in LilyPond werden in Notenzeilenabständen
347 (@code{staff-space}) gemessen, während die meisten Dicke-Eigenschaften
348 auf mit der Notenliniendicke korrespondieren. Eine Eigenschaften
349 verhalten sich anders, etwa die Dicke von Balken ist an die
350 Notenzeilenabstände gekoppelt. Mehr Information findet sich
351 im relevanten Teil der Programmreferenz.
354 @section Default files
356 Die Programmreferenz enthält sehr viel Information über LilyPond, aber
357 noch mehr Information findet sich in den internen
360 Eine Standardeinstellungen (wie die Definitionen für den Kopf (@code{\header}
361 sind als @code{.ly}-Datei gespeichert. Andere Einstellungen
362 (wie die Definition für Beschriftung (@code{markup}) sind
363 als @code{.scm} (Scheme)-Datei gespeichert. Eine nähere Erklärung
364 geht über den Rahmen dieses Handbuches hinaus. Der Hinweis
365 scheint aber angebracht, dass es grundlegende technische
366 Kenntnis und sehr viel Zeit erfordert, diese Dateien zu verstehen.
370 @item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
373 @file{@var{installdir}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
374 Um diese Ordner anzuschauen, wechseln Sie entweder mit @code{cd} im Terminal
375 zu der Adresse oder klicken Sie mit der rechten Maustaste auf das LilyPond-Symbol
376 und wählen Sie @q{Schow Package Contents}.
378 @item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
382 Die @file{ly/} und @file{scm/}-Ordner sind von besonderem Interesse.
383 Dateien wie @file{ly/property-init.ly} und
384 @file{ly/declarations-init.ly} definieren alle häufig vorkommenden Veränderungen.
387 @node Fitting music onto fewer pages
388 @section Fitting music onto fewer pages
390 Manchmal bleiben nur noch ein oder zwei Systeme auf der
391 letzten Seite übrig. Das ist immer ärgerlich, besonders
392 wenn es scheint, dass auf den vorigen Seiten genug Platz
393 ist, um die Systeme noch unterzubringen.
395 Wenn man versucht, das Layout zu verändern, kommt einem
396 der Befehl @code{annotate-spacing} zu Hilfe. Mit diesem
397 Befehl erhält man die Werte von verschiedenen Abstandsbefehlen
398 ausgedruckt, mehr Information im Kapitel @ruser{Displaying spacing}.
399 Anhand dieser Angaben kann dann entschieden werden, welche
400 Werte verändert werden müssen.
402 Neben Rändern gibt es nämlich weitere Optionen, Platz zu sparen:
406 LilyPond kann die Systeme so dicht wie möglich platzieren (damit
407 so viele Systeme wie möglich auf eine Seite passen), aber sie
408 dann so anordnen, dass kein weißer Rand unten auf der Seite entsteht.
412 between-system-padding = #0.1
413 between-system-space = #0.1
414 ragged-last-bottom = ##f
420 Die Anzahl der Systeme kann reduziert werden (wenn LilyPond
421 die Musik auf 11 Systeme verteilt, kann man die Benutzung von
422 nur 10 Systemen erzwingen).
431 Vermeidung von Objekten, die den vertikalen Abstand von Systemen
432 vergrößern, hilft oft. Die Verwendung von Klammern bei Wiederholungen
433 etwa braucht mehr Platz. Wenn die Noten innerhalb der Klammern auf
434 zwei Systeme verteilt sind, brauchen sie mehr Platz, als wenn sie
435 nur auf einer Zeile gedruckt werden.
437 Ein anderes Beispiel ist es, Dynamik-Zeichen, die besonders
438 weit @qq{hervorstehen}, zu verschieben.
440 @lilypond[verbatim,quote,fragment]
443 \override DynamicLineSpanner #'padding = #-1.8
444 \override DynamicText #'extra-offset = #'( -2.1 . 0)
450 Die horizontalen Abstände können mit der
451 @code{SpacingSpanner}-Eigenschaft verändert werden. Siehe
452 @ruser{Changing horizontal spacing} für Einzelheiten.
454 @lilypond[verbatim,quote]
457 g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
458 g4 e e2 | f4 d d2 | c4 e g g | c,1 |
459 d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
460 g4 e e2 | f4 d d2 | c4 e g g | c,1 |
465 \override SpacingSpanner
466 #'base-shortest-duration = #(ly:make-moment 1 4)
475 @node Advanced tweaks with Scheme
476 @section Advanced tweaks with Scheme
478 Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert
479 werden kann, indem man Befehle wie
480 @code{\override TextScript #'extra-offset = ( 1 . -1)} benutzt. Aber
481 noch mehr Einfluss auf die Formatierung kann durch den Einsatz von
482 Scheme genommen werden. Eine vollständige Erklärung findet sich in der
483 @ruser{Scheme tutorial} und den
484 @ruser{Interfaces for programmers}.
486 Scheme kann benutzt werden, um einfach nur Befehle zu @qq{überschreiben}
489 @lilypond[quote,verbatim,ragged-right]
490 padText = #(define-music-function (parser location padding) (number?)
492 \once \override TextScript #'padding = #$padding
500 c4^"piu mosso" fis a g
504 Hiermit können aber auch neue Befehle erstellt werden:
506 @lilypond[quote,verbatim,ragged-right]
507 tempoMark = #(define-music-function (parser location padding marktext)
510 \once \override Score . RehearsalMark #'padding = $padding
511 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
512 \mark \markup { \bold $marktext }
517 \tempoMark #3.0 #"Allegro"
522 Sogar ganze musikalische Ausdrücke können eingefügt werden:
524 @lilypond[quote,verbatim,ragged-right]
525 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
532 \pattern {d16 dis} { ais16-> b\p }
537 @node Avoiding tweaks with slower processing
538 @section Avoiding tweaks with slower processing
540 LilyPond kann einige zusätzliche Tests durchführen, während
541 die Noten gesetzt werden. Dadurch braucht das Programm länger,
542 um den Notensatz zu produzieren, aber üblicherweise werden
543 weniger nachträgliche Anpassungen nötig sein.
546 %% Um sicher zu gehen, dass Texte und Liedtext
547 %% innerhalb der Papierränder bleiben
548 \override Score.PaperColumn #'keep-inside-line = ##t