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 * The Internals Reference manual::
23 * Appearance of objects::
24 * Placement of objects::
25 * Collisions of objects::
32 @section Tweaking basics
37 * Introduction to tweaks::
38 * Objects and interfaces::
39 * Naming conventions of objects and properties::
43 @node Introduction to tweaks
44 @subsection Introduction to tweaks
48 @node Objects and interfaces
49 @subsection Objects and interfaces
53 @node Naming conventions of objects and properties
54 @subsection Naming conventions of objects and properties
58 @node Tweaking methods
59 @subsection Tweaking methods
63 @node The Internals Reference manual
64 @section The Internals Reference manual
69 * Properties of layout objects::
70 * Properties found in interfaces::
71 * Types of properties::
74 @node Properties of layout objects
75 @subsection Properties of layout objects
79 @node Properties found in interfaces
80 @subsection Properties found in interfaces
84 @node Types of properties
85 @subsection Types of properties
89 @node Appearance of objects
90 @section Appearance of objects
95 * Visibility and color of objects::
97 * Length and thickness of objects::
100 @node Visibility and color of objects
101 @subsection Visibility and color of objects
105 @node Size of objects
106 @subsection Size of objects
110 @node Length and thickness of objects
111 @subsection Length and thickness of objects
115 @node Placement of objects
116 @section Placement of objects
121 * Automatic behavior::
122 * Within-staff objects::
123 * Outside staff objects::
126 @node Automatic behavior
127 @subsection Automatic behavior
131 @node Within-staff objects
132 @subsection Within-staff objects
136 @node Outside staff objects
137 @subsection Outside staff objects
142 @node Collisions of objects
143 @section Collisions of objects
147 * Fixing overlapping notation::
148 * Real music example::
152 @subsection Moving objects
154 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht
155 perfekt. Einige Notationselemente können sich überschneiden. Das
156 ist nicht schön, kann aber (in den meisten Fällen) sehr einfach
159 @c FIXME: find a better example for 5.1 Moving Objects. -gp
160 @c yes, I want this TODO to be visible to end-users. It's better
161 @c than having nothing at all.
162 TODO: Mit den neuen Abstandseigenschaften seit Version 2.12 sind die
163 jeweiligen Beispiele nicht mehr relevant. Sie zeigen jedoch immer noch
164 machtvolle Eigenschaften von LilyPond und verbleiben deshalb in der
165 Dokumentation, bis jemand bessere Beispiel zur Verfügung stellt.
167 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
168 % temporary code to break this example:
169 \override TextScript #'outside-staff-priority = ##f
170 e4^\markup{ \italic ritenuto } g b e
173 @cindex Abstände füllen
175 Die einfachste Lösung ist es, Abstände zwischen Objekt und Note zu vergrößern
176 (genauso auch für Fingersätze oder Dynamikzeichen). In
177 LilyPond wird das durch Veränderung der @code{padding} (Füllungs)-Eigenschaft
178 erreicht, ihre Maßeinheit sind Notenzeilenabstände. Für die meisten
179 Objekte ist der Wert etwa 1.0 oder weniger (das unterscheidet sich
180 von Objekt zu Objekt). Hier soll der Abstand vergrößert werden, also
181 scheint 1.5 eine gute Wahl.
183 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
184 % temporary code to break this example:
185 \override TextScript #'outside-staff-priority = ##f
186 \once \override TextScript #'padding = #1.5
187 e4^\markup{ \italic ritenuto } g b e
190 Das sieht besser aus, ist aber noch nicht groß genug. Nach einigen
191 Experimenten wird darum 2.3 genommen für diesen Fall. Diese Zahl
192 ist aber nur das Resultat einigen Probierens und persönlicher
193 Geschmack. Probieren Sie selber ein wenig herum und entscheiden
194 Sie nach eigenem Geschmack.
196 Die @code{staff-padding}-Eigenschaft ist der vorigen sehr ähnlich.
197 @code{padding} entscheidet über den minimalen Abstand zwischen einem
198 Objekt und dem nächsten anderen Objekt (meistens eine Note oder
199 Notenzeile); @code{staff-padding} entscheidet über den minimalen
200 Abstand zwischen einem Objekt und dem Notensystem. Das ist nur ein
201 kleiner Unterschied, aber hier wird das Verhalten demonstriert:
203 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
204 % temporary code to break this example:
205 \override TextScript #'outside-staff-priority = ##f
207 \once \override TextScript #'padding = #4.6
209 \once \override TextScript #'staff-padding = #4.6
210 c4^"piu mosso" fis a g
212 c'4^"piu mosso" b a b
213 \once \override TextScript #'padding = #4.6
215 \once \override TextScript #'staff-padding = #4.6
216 c4^"piu mosso" fis a g
219 @cindex Abstand, zusätzlicher
222 Eine andere Lösung ermöglicht vollständige Kontrolle über die Positionierung
223 eines Objektes sowohl horizontal als auch vertikal. Das wird mit der
224 @code{extra-offset} (Zusätzlicher-Abstand)-Eigenschaft erreicht. Das
225 ist etwas komplizierter und kann andere Probleme mit sich ziehen. Wenn
226 Objekte mit dieser Eigenschaft verschoben werden, heißt das, dass
227 LilyPond sie erst setzt, nachdem alle anderen Objekte positioniert
228 worden sind. Deshalb können sich die Objekte am Ende überlagern.
230 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
231 % temporary code to break this example:
232 \override TextScript #'outside-staff-priority = ##f
233 \once \override TextScript #'extra-offset = #'( 1.0 . -1.0 )
234 e4^\markup{ \italic ritenuto } g b e
237 Bei Verwendung von @code{extra-offset} bestimmt die erste Zahl über die
238 horizontale Verschiebung (nach links ist negativ), die zweite Zahl
239 bestimmt die vertikale Verschiebung (nach oben ist positiv). Nach einigen
240 Experimenten wurden hier folgende Werte für gut befunden:
242 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
243 % temporary code to break this example:
244 \override TextScript #'outside-staff-priority = ##f
245 \once \override TextScript #'extra-offset = #'( -1.6 . 1.0 )
246 e4^\markup{ \italic ritenuto } g b e
250 Auch diese Zahlen sind nur Resultat einigen Herumprobierens und Vergleichens
251 der Ergebnisse. Sie wollen den Text vielleicht etwas höher oder etwas mehr
252 nach links setzen. Versuchen Sie es selber und vergleichen Sie das Ergebnis.
254 Eine letzte Warnung: in diesem Kapitel haben wir den Befehl
257 \once \override TextScript @dots{}
261 benutzt. Dieser Befehl verändert die Anzeige des Textes für die nächste
262 Note. Wenn die Note keinen Text zugeordnet hat, wird auch nichts
263 verändert (und es wird @strong{nicht} nach dem nächsten Text gesucht).
264 Um das Verhalten zu verändern, so dass alles, was nach dem Befehl
265 kommt, verändert wird, müssen Sie den Befehl @code{\once} weglassen.
266 Um die Veränderung zu stoppen, benutzen Sie den Befehl @code{\revert}.
267 Das wird genauer im Kapitel
268 @ruser{The \override command} erklärt.
270 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
271 % temporary code to break this example:
272 \override TextScript #'outside-staff-priority = ##f
274 \once \override TextScript #'padding = #4.6
277 \once \override TextScript #'padding = #4.6
281 \override TextScript #'padding = #4.6
284 \revert TextScript #'padding
290 @ruser{The \override command}, @ref{Common tweaks}.
293 @node Fixing overlapping notation
294 @subsection Fixing overlapping notation
296 Im Kapitel @ref{Moving objects} wurde gezeigt, wie man Texte
297 (@code{TextScript}-Objekte) verschiebt. Mit der gleichen
298 Technik können auch andere Objektklassen verschoben werden,
299 @code{TextScript} muss dann nur durch den Namen des Objektes
302 Um den Objektnamen zu finden, siehe die @q{@strong{see also}}-Hinweise
303 am Ende des jeweiligen Abschnittes. Zum Beispiel am Ende des
304 Kapitels @ruser{Dynamics} findet sich:
309 Programmreferenz: @rinternals{DynamicText}, @rinternals{Hairpin}.
310 Vertikale Positionierung dieser Symbole wird mit
311 @rinternals{DynamicLineSpanner} erreicht.
315 Um also Dynamik-Zeichen zu verschieben, muss
318 \override DynamicLineSpanner #'padding = #2.0
321 benutzt werden. Es ist nicht genügend Platz, um jedes Objekt aufzulisten,
322 aber die gebräuchlichsten finden sich hier:
324 @multitable @columnfractions .33 .66
325 @headitem Objekttyp @tab Objektbezeichnung
326 @item Dynamikzeichen (vertikal) @tab @code{DynamicLineSpanner}
327 @item Dynamikzeichen (horizontal) @tab @code{DynamicText}
328 @item Bindebögen @tab @code{Tie}
329 @item Phrasierungsbögen @tab @code{Slur}
330 @item Artikulationszeichen @tab @code{Script}
331 @item Fingersatz @tab @code{Fingering}
332 @item Text, z. B. @code{^"text"} @tab @code{TextScript}
333 @item Übungs-/Textmarken @tab @code{RehearsalMark}
337 @node Real music example
338 @subsection Real music example
343 @c DEPRECATED SECTION
345 @section Common tweaks
347 Bestimmte Korrekturen sind so häufig, dass für sie schon fertige
348 angepasste Befehle bereitgestellt sind, so etwa
349 @code{\slurUp} um einen Bindebogen oberhalb anzuzeigen oder
350 @code{\stemDown} um den Notenhals nach unten zu zwingen. Diese
351 Befehle sind im Teil Alles über die Notation unter dem
352 entsprechenden Abschnitt erklärt.
354 Eine vollständige Liste aller Veränderungen, die für jeden Objekttypen
355 (etwa Bögen oder Balken) zur Verfügung stehen, ist in der Programmreferenz
356 dargestellt. Viele Layoutobjekte benutzen jedoch gleiche Eigenschaften,
357 die benutzt werden können, um eigene Einstellungen vorzunehmen.
365 @code{padding}-Eigenschaft kann gesetzt werden, um den Abstand zwischen
366 Symbolen über oder unter den Noten zu vergrößern oder zu verkleinern.
367 Das gilt für alle Objekte, die ein @code{side-position-interface}
368 besitzen, also unterscheiden, auf welcher Seite der Note sie sich befinden.
370 @lilypond[quote,fragment,relative=1,verbatim]
372 \override Script #'padding = #3
376 @lilypond[quote,fragment,relative=1,verbatim]
377 % This will not work, see below:
378 \override MetronomeMark #'padding = #3
382 \override Score.MetronomeMark #'padding = #3
387 Im zweiten Beispiel ist es sehr wichtig zu wissen, welcher Kontext
388 für bestimmte Objekte zuständig ist. Weil das
389 @code{MetronomeMark}-Objekt vom @code{Score}-Kontext gesetzt
390 wird, werden Veränderungen innerhalb des @code{Voice}-Kontextes
391 nicht berücksichtigt. Genauere Details im Kapitel
392 @ruser{The \override command}.
395 @cindex zusätzlicher Abstand
396 @cindex Abstand, zusätzlicher
399 Die @code{extra-offset}-Eigenschaft verschiebt Objekte, hier ist ein
400 Zahlenpaar zur Angabe der Positionierung erforderlich. Die erste Nummer bestimmt
401 die horizontale Bewegung, eine positive Zahl bewegt das Objekt nach rechts.
402 Die zweite Zahl bestimmt die vertikale Bewegung, eine positive Zahl bewegt
403 das Objekt nach oben. Die
404 @code{extra-offset}-Eigenschaft läuft auf unterster Ebene ab: Die
405 Formatierungsmaschine ist sich der Veränderungen nicht bewusst.
407 Im folgenden Beispiel wird die zweite Fingersatzbezeichnung etwas nach
408 links verschoben und 1,8 Notenzeilenabstände nach unten:
410 @lilypond[quote,fragment,relative=1,verbatim]
413 \once \override Fingering
414 #'extra-offset = #'(-0.3 . -1.8)
419 Die Verwendung der @code{transparent}-Eigenschaft druckt das entsprechende Objekt
420 mit @qq{unsichtbarer Druckerschwärze}: Das Objekt wird nicht angezeigt, aber
421 sein Verhalten bleibt bestehen. Das Objekt nimmt weiterhin Platz ein, es nimmt
422 teil an Überschneidungen und deren Auflösung durch das Programm, Bögen und Balken
423 können daran angebunden werden.
425 @cindex transparente Objekte
426 @cindex Entfernen von Objekten
427 @cindex Verstecken von Objekten
428 @cindex unsichtbare Objekte
429 Das nächste Beispiel zeigt, wie man unterschiedliche Stimmen mit
430 Bindebögen verbinden kann. Normalerweise können Bindebögen nur
431 zwei Noten der selben Stimme verbinden. Indem aber ein Bogen in einer
432 anderen Stimme erstellt wird,
434 @lilypond[quote,fragment,relative=2]
443 und dann der erste Hals nach oben unsichtbar gemacht wird, scheint der
444 Bindebogen die Stimme zu wechseln:
447 @lilypond[quote,fragment,relative=2,verbatim]
449 \once \override Stem #'transparent = ##t
456 Damit der Hals den Bogen nicht zu sehr verkleinert, wird seine
457 Länge (@code{length}) auf den Wert @code{8} gesetzt:
460 @lilypond[quote,fragment,relative=2,verbatim]
462 \once \override Stem #'transparent = ##t
463 \once \override Stem #'length = #8
472 @cindex Veränderungen von Abständen
473 @cindex Optimierung von Abständen
476 Abstände in LilyPond werden in Notenzeilenabständen
477 (@code{staff-space}) gemessen, während die meisten Dicke-Eigenschaften
478 auf mit der Notenliniendicke korrespondieren. Eine Eigenschaften
479 verhalten sich anders, etwa die Dicke von Balken ist an die
480 Notenzeilenabstände gekoppelt. Mehr Information findet sich
481 im relevanten Teil der Programmreferenz.
483 @node Further tweaking
484 @section Further tweaking
487 * Other uses for tweaks::
488 * Using variables for tweaks::
489 * Other sources of information::
490 * Avoiding tweaks with slower processing::
491 * Advanced tweaks with Scheme::
494 @node Other uses for tweaks
495 @subsection Other uses for tweaks
499 @node Using variables for tweaks
500 @subsection Using variables for tweaks
504 @node Other sources of information
505 @subsection Other sources of information
507 Die Programmreferenz enthält sehr viel Information über LilyPond, aber
508 noch mehr Information findet sich in den internen
511 Eine Standardeinstellungen (wie die Definitionen für den Kopf (@code{\header}
512 sind als @code{.ly}-Datei gespeichert. Andere Einstellungen
513 (wie die Definition für Beschriftung (@code{markup}) sind
514 als @code{.scm} (Scheme)-Datei gespeichert. Eine nähere Erklärung
515 geht über den Rahmen dieses Handbuches hinaus. Der Hinweis
516 scheint aber angebracht, dass es grundlegende technische
517 Kenntnis und sehr viel Zeit erfordert, diese Dateien zu verstehen.
521 @item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
524 @file{@var{installdir}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
525 Um diese Ordner anzuschauen, wechseln Sie entweder mit @code{cd} im Terminal
526 zu der Adresse oder klicken Sie mit der rechten Maustaste auf das LilyPond-Symbol
527 und wählen Sie @q{Show Package Contents}.
529 @item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
533 Die @file{ly/} und @file{scm/}-Ordner sind von besonderem Interesse.
534 Dateien wie @file{ly/property-init.ly} und
535 @file{ly/declarations-init.ly} definieren alle häufig vorkommenden Veränderungen.
538 @node Avoiding tweaks with slower processing
539 @subsection Avoiding tweaks with slower processing
541 LilyPond kann einige zusätzliche Tests durchführen, während
542 die Noten gesetzt werden. Dadurch braucht das Programm länger,
543 um den Notensatz zu produzieren, aber üblicherweise werden
544 weniger nachträgliche Anpassungen nötig sein.
547 %% Um sicher zu gehen, dass Texte und Liedtext
548 %% innerhalb der Papierränder bleiben
549 \override Score.PaperColumn #'keep-inside-line = ##t
553 @node Advanced tweaks with Scheme
554 @subsection Advanced tweaks with Scheme
556 Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert
557 werden kann, indem man Befehle wie
558 @code{\override TextScript #'extra-offset = ( 1 . -1)} benutzt. Aber
559 noch mehr Einfluss auf die Formatierung kann durch den Einsatz von
560 Scheme genommen werden. Eine vollständige Erklärung findet sich in der
561 @ref{Scheme tutorial} und den
562 @ruser{Interfaces for programmers}.
564 Scheme kann benutzt werden, um einfach nur Befehle zu @qq{überschreiben}
567 @lilypond[quote,verbatim,ragged-right]
568 padText = #(define-music-function (parser location padding) (number?)
570 \once \override TextScript #'padding = #$padding
578 c4^"piu mosso" fis a g
582 Hiermit können aber auch neue Befehle erstellt werden:
584 @lilypond[quote,verbatim,ragged-right]
585 tempoMark = #(define-music-function (parser location padding marktext)
588 \once \override Score . RehearsalMark #'padding = $padding
589 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
590 \mark \markup { \bold $marktext }
595 \tempoMark #3.0 #"Allegro"
600 Sogar ganze musikalische Ausdrücke können eingefügt werden:
602 @lilypond[quote,verbatim,ragged-right]
603 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
610 \pattern {d16 dis} { ais16-> b\p }