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.
13 @chapter Tweaking output
15 In diesem Kapitel wird erklärt, wie man die Notenausgabe verändern
16 kann. In LilyPond kann man sehr viel konfigurieren, fast jedes
17 Notenfragment kann geändert werden.
22 * Fixing overlapping notation::
25 * Fitting music onto fewer pages::
26 * Advanced tweaks with Scheme::
27 * Avoiding tweaks with slower processing::
32 @section Moving objects
34 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht
35 perfekt. Einige Notationselemente können sich überschneiden. Das
36 ist nicht schön, kann aber (in den meisten Fällen) sehr einfach
39 @c FIXME: find a better example for 5.1 Moving Objects. -gp
40 @c yes, I want this TODO to be visible to end-users. It's better
41 @c than having nothing at all.
42 TODO: Mit den neuen Abstandseigenschaften seit Version 2.12 sind die
43 jeweiligen Beispiele nicht mehr relevant. Sie zeigen jedoch immer noch
44 machtvolle Eigenschaften von LilyPond und verbleiben deshalb in der
45 Dokumentation, bis jemand bessere Beispiel zur Verfügung stellt.
47 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
48 % temporary code to break this example:
49 \override TextScript #'outside-staff-priority = ##f
50 e4^\markup{ \italic ritenuto } g b e
53 @cindex Abstände füllen
55 Die einfachste Lösung ist es, Abstände zwischen Objekt und Note zu vergrößern
56 (genauso auch für Fingersätze oder Dynamikzeichen). In
57 LilyPond wird das durch Veränderung der @code{padding} (Füllungs)-Eigenschaft
58 erreicht, ihre Maßeinheit sind Notenzeilenabstände. Für die meisten
59 Objekte ist der Wert etwa 1.0 oder weniger (das unterscheidet sich
60 von Objekt zu Objekt). Hier soll der Abstand vergrößert werden, also
61 scheint 1.5 eine gute Wahl.
63 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
64 % temporary code to break this example:
65 \override TextScript #'outside-staff-priority = ##f
66 \once \override TextScript #'padding = #1.5
67 e4^\markup{ \italic ritenuto } g b e
70 Das sieht besser aus, ist aber noch nicht groß genug. Nach einigen
71 Experimenten wird darum 2.3 genommen für diesen Fall. Diese Zahl
72 ist aber nur das Resultat einigen Probierens und persönlicher
73 Geschmack. Probieren Sie selber ein wenig herum und entscheiden
74 Sie nach eigenem Geschmack.
76 Die @code{staff-padding}-Eigenschaft ist der vorigen sehr ähnlich.
77 @code{padding} entscheidet über den minimalen Abstand zwischen einem
78 Objekt und dem nächsten anderen Objekt (meistens eine Note oder
79 Notenzeile); @code{staff-padding} entscheidet über den minimalen
80 Abstand zwischen einem Objekt und dem Notensystem. Das ist nur ein
81 kleiner Unterschied, aber hier wird das Verhalten demonstriert:
83 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
84 % temporary code to break this example:
85 \override TextScript #'outside-staff-priority = ##f
87 \once \override TextScript #'padding = #4.6
89 \once \override TextScript #'staff-padding = #4.6
90 c4^"piu mosso" fis a g
93 \once \override TextScript #'padding = #4.6
95 \once \override TextScript #'staff-padding = #4.6
96 c4^"piu mosso" fis a g
99 @cindex Abstand, zusätzlicher
102 Eine andere Lösung ermöglicht vollständige Kontrolle über die Positionierung
103 eines Objektes sowohl horizontal als auch vertikal. Das wird mit der
104 @code{extra-offset} (Zusätzlicher-Abstand)-Eigenschaft erreicht. Das
105 ist etwas komplizierter und kann andere Probleme mit sich ziehen. Wenn
106 Objekte mit dieser Eigenschaft verschoben werden, heißt das, dass
107 LilyPond sie erst setzt, nachdem alle anderen Objekte positioniert
108 worden sind. Deshalb können sich die Objekte am Ende überlagern.
110 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
111 % temporary code to break this example:
112 \override TextScript #'outside-staff-priority = ##f
113 \once \override TextScript #'extra-offset = #'( 1.0 . -1.0 )
114 e4^\markup{ \italic ritenuto } g b e
117 Bei Verwendung von @code{extra-offset} bestimmt die erste Zahl über die
118 horizontale Verschiebung (nach links ist negativ), die zweite Zahl
119 bestimmt die vertikale Verschiebung (nach oben ist positiv). Nach einigen
120 Experimenten wurden hier folgende Werte für gut befunden:
122 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
123 % temporary code to break this example:
124 \override TextScript #'outside-staff-priority = ##f
125 \once \override TextScript #'extra-offset = #'( -1.6 . 1.0 )
126 e4^\markup{ \italic ritenuto } g b e
130 Auch diese Zahlen sind nur Resultat einigen Herumprobierens und Vergleichens
131 der Ergebnisse. Sie wollen den Text vielleicht etwas höher oder etwas mehr
132 nach links setzen. Versuchen Sie es selber und vergleichen Sie das Ergebnis.
134 Eine letzte Warnung: in diesem Kapitel haben wir den Befehl
137 \once \override TextScript @dots{}
141 benutzt. Dieser Befehl verändert die Anzeige des Textes für die nächste
142 Note. Wenn die Note keinen Text zugeordnet hat, wird auch nichts
143 verändert (und es wird @strong{nicht} nach dem nächsten Text gesucht).
144 Um das Verhalten zu verändern, so dass alles, was nach dem Befehl
145 kommt, verändert wird, müssen Sie den Befehl @code{\once} weglassen.
146 Um die Veränderung zu stoppen, benutzen Sie den Befehl @code{\revert}.
147 Das wird genauer im Kapitel
148 @ruser{The \override command} erklärt.
150 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
151 % temporary code to break this example:
152 \override TextScript #'outside-staff-priority = ##f
154 \once \override TextScript #'padding = #4.6
157 \once \override TextScript #'padding = #4.6
161 \override TextScript #'padding = #4.6
164 \revert TextScript #'padding
170 @ruser{The \override command}, @ref{Common tweaks}.
173 @node Fixing overlapping notation
174 @section Fixing overlapping notation
176 Im Kapitel @ref{Moving objects} wurde gezeigt, wie man Texte
177 (@code{TextScript}-Objekte) verschiebt. Mit der gleichen
178 Technik können auch andere Objektklassen verschoben werden,
179 @code{TextScript} muss dann nur durch den Namen des Objektes
182 Um den Objektnamen zu finden, siehe die @q{@strong{see also}}-Hinweise
183 am Ende des jeweiligen Abschnittes. Zum Beispiel am Ende des
184 Kapitels @ruser{Dynamics} findet sich:
189 Programmreferenz: @rinternals{DynamicText}, @rinternals{Hairpin}.
190 Vertikale Positionierung dieser Symbole wird mit
191 @rinternals{DynamicLineSpanner} erreicht.
195 Um also Dynamik-Zeichen zu verschieben, muss
198 \override DynamicLineSpanner #'padding = #2.0
201 benutzt werden. Es ist nicht genügend Platz, um jedes Objekt aufzulisten,
202 aber die gebräuchlichsten finden sich hier:
204 @multitable @columnfractions .33 .66
205 @headitem Objekttyp @tab Objektbezeichnung
206 @item Dynamikzeichen (vertikal) @tab @code{DynamicLineSpanner}
207 @item Dynamikzeichen (horizontal) @tab @code{DynamicText}
208 @item Bindebögen @tab @code{Tie}
209 @item Phrasierungsbögen @tab @code{Slur}
210 @item Artikulationszeichen @tab @code{Script}
211 @item Fingersatz @tab @code{Fingering}
212 @item Text, z. B. @code{^"text"} @tab @code{TextScript}
213 @item Übungs-/Textmarken @tab @code{RehearsalMark}
218 @section Common tweaks
219 Bestimmte Korrekturen sind so häufig, dass für sie schon fertige
220 angepasste Befehle bereitgestellt sind, so etwa
221 @code{\slurUp} um einen Bindebogen oberhalb anzuzeigen oder
222 @code{\stemDown} um den Notenhals nach unten zu zwingen. Diese
223 Befehle sind im Teil Alles über die Notation unter dem
224 entsprechenden Abschnitt erklärt.
226 Eine vollständige Liste aller Veränderungen, die für jeden Objekttypen
227 (etwa Bögen oder Balken) zur Verfügung stehen, ist in der Programmreferenz
228 dargestellt. Viele Layoutobjekte benutzen jedoch gleiche Eigenschaften,
229 die benutzt werden können, um eigene Einstellungen vorzunehmen.
237 @code{padding}-Eigenschaft kann gesetzt werden, um den Abstand zwischen
238 Symbolen über oder unter den Noten zu vergrößern oder zu verkleinern.
239 Das gilt für alle Objekte, die ein @code{side-position-interface}
240 besitzen, also unterscheiden, auf welcher Seite der Note sie sich befinden.
242 @lilypond[quote,fragment,relative=1,verbatim]
244 \override Script #'padding = #3
248 @lilypond[quote,fragment,relative=1,verbatim]
249 % This will not work, see below:
250 \override MetronomeMark #'padding = #3
254 \override Score.MetronomeMark #'padding = #3
259 Im zweiten Beispiel ist es sehr wichtig zu wissen, welcher Kontext
260 für bestimmte Objekte zuständig ist. Weil das
261 @code{MetronomeMark}-Objekt vom @code{Score}-Kontext gesetzt
262 wird, werden Veränderungen innerhalb des @code{Voice}-Kontextes
263 nicht berücksichtigt. Genauere Details im Kapitel
264 @ruser{Constructing a tweak}.
267 @cindex zusätzlicher Abstand
268 @cindex Abstand, zusätzlicher
271 Die @code{extra-offset}-Eigenschaft verschiebt Objekte, hier ist ein
272 Zahlenpaar zur Angabe der Positionierung erforderlich. Die erste Nummer bestimmt
273 die horizontale Bewegung, eine positive Zahl bewegt das Objekt nach rechts.
274 Die zweite Zahl bestimmt die vertikale Bewegung, eine positive Zahl bewegt
275 das Objekt nach oben. Die
276 @code{extra-offset}-Eigenschaft läuft auf unterster Ebene ab: Die
277 Formatierungsmaschine ist sich der Veränderungen nicht bewusst.
279 Im folgenden Beispiel wird die zweite Fingersatzbezeichnung etwas nach
280 links verschoben und 1,8 Notenzeilenabstände nach unten:
282 @lilypond[quote,fragment,relative=1,verbatim]
285 \once \override Fingering
286 #'extra-offset = #'(-0.3 . -1.8)
291 Die Verwendung der @code{transparent}-Eigenschaft druckt das entsprechende Objekt
292 mit @qq{unsichtbarer Druckerschwärze}: Das Objekt wird nicht angezeigt, aber
293 sein Verhalten bleibt bestehen. Das Objekt nimmt weiterhin Platz ein, es nimmt
294 teil an Überschneidungen und deren Auflösung durch das Programm, Bögen und Balken
295 können daran angebunden werden.
297 @cindex transparente Objekte
298 @cindex Entfernen von Objekten
299 @cindex Verstecken von Objekten
300 @cindex unsichtbare Objekte
301 Das nächste Beispiel zeigt, wie man unterschiedliche Stimmen mit
302 Bindebögen verbinden kann. Normalerweise können Bindebögen nur
303 zwei Noten der selben Stimme verbinden. Indem aber ein Bogen in einer
304 anderen Stimme erstellt wird,
306 @lilypond[quote,fragment,relative=2]
315 und dann der erste Hals nach oben unsichtbar gemacht wird, scheint der
316 Bindebogen die Stimme zu wechseln:
319 @lilypond[quote,fragment,relative=2,verbatim]
321 \once \override Stem #'transparent = ##t
328 Damit der Hals den Bogen nicht zu sehr verkleinert, wird seine
329 Länge (@code{length}) auf den Wert @code{8} gesetzt:
332 @lilypond[quote,fragment,relative=2,verbatim]
334 \once \override Stem #'transparent = ##t
335 \once \override Stem #'length = #8
344 @cindex Veränderungen von Abständen
345 @cindex Optimierung von Abständen
348 Abstände in LilyPond werden in Notenzeilenabständen
349 (@code{staff-space}) gemessen, während die meisten Dicke-Eigenschaften
350 auf mit der Notenliniendicke korrespondieren. Eine Eigenschaften
351 verhalten sich anders, etwa die Dicke von Balken ist an die
352 Notenzeilenabstände gekoppelt. Mehr Information findet sich
353 im relevanten Teil der Programmreferenz.
356 @section Default files
358 Die Programmreferenz enthält sehr viel Information über LilyPond, aber
359 noch mehr Information findet sich in den internen
362 Eine Standardeinstellungen (wie die Definitionen für den Kopf (@code{\header}
363 sind als @code{.ly}-Datei gespeichert. Andere Einstellungen
364 (wie die Definition für Beschriftung (@code{markup}) sind
365 als @code{.scm} (Scheme)-Datei gespeichert. Eine nähere Erklärung
366 geht über den Rahmen dieses Handbuches hinaus. Der Hinweis
367 scheint aber angebracht, dass es grundlegende technische
368 Kenntnis und sehr viel Zeit erfordert, diese Dateien zu verstehen.
372 @item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
375 @file{@var{installdir}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
376 Um diese Ordner anzuschauen, wechseln Sie entweder mit @code{cd} im Terminal
377 zu der Adresse oder klicken Sie mit der rechten Maustaste auf das LilyPond-Symbol
378 und wählen Sie @q{Show Package Contents}.
380 @item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
384 Die @file{ly/} und @file{scm/}-Ordner sind von besonderem Interesse.
385 Dateien wie @file{ly/property-init.ly} und
386 @file{ly/declarations-init.ly} definieren alle häufig vorkommenden Veränderungen.
389 @node Fitting music onto fewer pages
390 @section Fitting music onto fewer pages
392 Manchmal bleiben nur noch ein oder zwei Systeme auf der
393 letzten Seite übrig. Das ist immer ärgerlich, besonders
394 wenn es scheint, dass auf den vorigen Seiten genug Platz
395 ist, um die Systeme noch unterzubringen.
397 Wenn man versucht, das Layout zu verändern, kommt einem
398 der Befehl @code{annotate-spacing} zu Hilfe. Mit diesem
399 Befehl erhält man die Werte von verschiedenen Abstandsbefehlen
400 ausgedruckt, mehr Information im Kapitel @ruser{Displaying spacing}.
401 Anhand dieser Angaben kann dann entschieden werden, welche
402 Werte verändert werden müssen.
404 Neben Rändern gibt es nämlich weitere Optionen, Platz zu sparen:
408 LilyPond kann die Systeme so dicht wie möglich platzieren (damit
409 so viele Systeme wie möglich auf eine Seite passen), aber sie
410 dann so anordnen, dass kein weißer Rand unten auf der Seite entsteht.
414 between-system-padding = #0.1
415 between-system-space = #0.1
416 ragged-last-bottom = ##f
422 Die Anzahl der Systeme kann reduziert werden (wenn LilyPond
423 die Musik auf 11 Systeme verteilt, kann man die Benutzung von
424 nur 10 Systemen erzwingen).
433 Vermeidung von Objekten, die den vertikalen Abstand von Systemen
434 vergrößern, hilft oft. Die Verwendung von Klammern bei Wiederholungen
435 etwa braucht mehr Platz. Wenn die Noten innerhalb der Klammern auf
436 zwei Systeme verteilt sind, brauchen sie mehr Platz, als wenn sie
437 nur auf einer Zeile gedruckt werden.
439 Ein anderes Beispiel ist es, Dynamik-Zeichen, die besonders
440 weit @qq{hervorstehen}, zu verschieben.
442 @lilypond[verbatim,quote,fragment]
445 \override DynamicLineSpanner #'padding = #-1.8
446 \override DynamicText #'extra-offset = #'( -2.1 . 0)
452 Die horizontalen Abstände können mit der
453 @code{SpacingSpanner}-Eigenschaft verändert werden. Siehe
454 @ruser{Changing horizontal spacing} für Einzelheiten.
456 @lilypond[verbatim,quote]
459 g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
460 g4 e e2 | f4 d d2 | c4 e g g | c,1 |
461 d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
462 g4 e e2 | f4 d d2 | c4 e g g | c,1 |
467 \override SpacingSpanner
468 #'base-shortest-duration = #(ly:make-moment 1 4)
477 @node Advanced tweaks with Scheme
478 @section Advanced tweaks with Scheme
480 Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert
481 werden kann, indem man Befehle wie
482 @code{\override TextScript #'extra-offset = ( 1 . -1)} benutzt. Aber
483 noch mehr Einfluss auf die Formatierung kann durch den Einsatz von
484 Scheme genommen werden. Eine vollständige Erklärung findet sich in der
485 @ref{Scheme tutorial} und den
486 @ruser{Interfaces for programmers}.
488 Scheme kann benutzt werden, um einfach nur Befehle zu @qq{überschreiben}
491 @lilypond[quote,verbatim,ragged-right]
492 padText = #(define-music-function (parser location padding) (number?)
494 \once \override TextScript #'padding = #$padding
502 c4^"piu mosso" fis a g
506 Hiermit können aber auch neue Befehle erstellt werden:
508 @lilypond[quote,verbatim,ragged-right]
509 tempoMark = #(define-music-function (parser location padding marktext)
512 \once \override Score . RehearsalMark #'padding = $padding
513 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
514 \mark \markup { \bold $marktext }
519 \tempoMark #3.0 #"Allegro"
524 Sogar ganze musikalische Ausdrücke können eingefügt werden:
526 @lilypond[quote,verbatim,ragged-right]
527 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
534 \pattern {d16 dis} { ais16-> b\p }
539 @node Avoiding tweaks with slower processing
540 @section Avoiding tweaks with slower processing
542 LilyPond kann einige zusätzliche Tests durchführen, während
543 die Noten gesetzt werden. Dadurch braucht das Programm länger,
544 um den Notensatz zu produzieren, aber üblicherweise werden
545 weniger nachträgliche Anpassungen nötig sein.
548 %% Um sicher zu gehen, dass Texte und Liedtext
549 %% innerhalb der Papierränder bleiben
550 \override Score.PaperColumn #'keep-inside-line = ##t