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
35 UNTRANSLATED NODE: IGNORE ME
39 * Introduction to tweaks::
40 * Objects and interfaces::
41 * Naming conventions of objects and properties::
45 @node Introduction to tweaks
46 @subsection Introduction to tweaks
49 UNTRANSLATED NODE: IGNORE ME
52 @node Objects and interfaces
53 @subsection Objects and interfaces
56 UNTRANSLATED NODE: IGNORE ME
59 @node Naming conventions of objects and properties
60 @subsection Naming conventions of objects and properties
63 UNTRANSLATED NODE: IGNORE ME
66 @node Tweaking methods
67 @subsection Tweaking methods
70 UNTRANSLATED NODE: IGNORE ME
73 @node The Internals Reference manual
74 @section The Internals Reference manual
77 UNTRANSLATED NODE: IGNORE ME
81 * Properties of layout objects::
82 * Properties found in interfaces::
83 * Types of properties::
86 @node Properties of layout objects
87 @subsection Properties of layout objects
90 UNTRANSLATED NODE: IGNORE ME
93 @node Properties found in interfaces
94 @subsection Properties found in interfaces
97 UNTRANSLATED NODE: IGNORE ME
100 @node Types of properties
101 @subsection Types of properties
104 UNTRANSLATED NODE: IGNORE ME
107 @node Appearance of objects
108 @section Appearance of objects
111 UNTRANSLATED NODE: IGNORE ME
115 * Visibility and color of objects::
117 * Length and thickness of objects::
120 @node Visibility and color of objects
121 @subsection Visibility and color of objects
124 UNTRANSLATED NODE: IGNORE ME
127 @node Size of objects
128 @subsection Size of objects
131 UNTRANSLATED NODE: IGNORE ME
134 @node Length and thickness of objects
135 @subsection Length and thickness of objects
138 UNTRANSLATED NODE: IGNORE ME
141 @node Placement of objects
142 @section Placement of objects
145 UNTRANSLATED NODE: IGNORE ME
149 * Automatic behavior::
150 * Within-staff objects::
151 * Outside staff objects::
154 @node Automatic behavior
155 @subsection Automatic behavior
158 UNTRANSLATED NODE: IGNORE ME
161 @node Within-staff objects
162 @subsection Within-staff objects
165 UNTRANSLATED NODE: IGNORE ME
168 @node Outside staff objects
169 @subsection Outside staff objects
172 UNTRANSLATED NODE: IGNORE ME
176 @node Collisions of objects
177 @section Collisions of objects
181 * Fixing overlapping notation::
182 * Real music example::
186 @subsection Moving objects
188 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht
189 perfekt. Einige Notationselemente können sich überschneiden. Das
190 ist nicht schön, kann aber (in den meisten Fällen) sehr einfach
193 @c FIXME: find a better example for 5.1 Moving Objects. -gp
194 @c yes, I want this TODO to be visible to end-users. It's better
195 @c than having nothing at all.
196 TODO: Mit den neuen Abstandseigenschaften seit Version 2.12 sind die
197 jeweiligen Beispiele nicht mehr relevant. Sie zeigen jedoch immer noch
198 machtvolle Eigenschaften von LilyPond und verbleiben deshalb in der
199 Dokumentation, bis jemand bessere Beispiel zur Verfügung stellt.
201 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
202 % temporary code to break this example:
203 \override TextScript #'outside-staff-priority = ##f
204 e4^\markup{ \italic ritenuto } g b e
207 @cindex Abstände füllen
209 Die einfachste Lösung ist es, Abstände zwischen Objekt und Note zu vergrößern
210 (genauso auch für Fingersätze oder Dynamikzeichen). In
211 LilyPond wird das durch Veränderung der @code{padding} (Füllungs)-Eigenschaft
212 erreicht, ihre Maßeinheit sind Notenzeilenabstände. Für die meisten
213 Objekte ist der Wert etwa 1.0 oder weniger (das unterscheidet sich
214 von Objekt zu Objekt). Hier soll der Abstand vergrößert werden, also
215 scheint 1.5 eine gute Wahl.
217 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
218 % temporary code to break this example:
219 \override TextScript #'outside-staff-priority = ##f
220 \once \override TextScript #'padding = #1.5
221 e4^\markup{ \italic ritenuto } g b e
224 Das sieht besser aus, ist aber noch nicht groß genug. Nach einigen
225 Experimenten wird darum 2.3 genommen für diesen Fall. Diese Zahl
226 ist aber nur das Resultat einigen Probierens und persönlicher
227 Geschmack. Probieren Sie selber ein wenig herum und entscheiden
228 Sie nach eigenem Geschmack.
230 Die @code{staff-padding}-Eigenschaft ist der vorigen sehr ähnlich.
231 @code{padding} entscheidet über den minimalen Abstand zwischen einem
232 Objekt und dem nächsten anderen Objekt (meistens eine Note oder
233 Notenzeile); @code{staff-padding} entscheidet über den minimalen
234 Abstand zwischen einem Objekt und dem Notensystem. Das ist nur ein
235 kleiner Unterschied, aber hier wird das Verhalten demonstriert:
237 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
238 % temporary code to break this example:
239 \override TextScript #'outside-staff-priority = ##f
241 \once \override TextScript #'padding = #4.6
243 \once \override TextScript #'staff-padding = #4.6
244 c4^"piu mosso" fis a g
246 c'4^"piu mosso" b a b
247 \once \override TextScript #'padding = #4.6
249 \once \override TextScript #'staff-padding = #4.6
250 c4^"piu mosso" fis a g
253 @cindex Abstand, zusätzlicher
256 Eine andere Lösung ermöglicht vollständige Kontrolle über die Positionierung
257 eines Objektes sowohl horizontal als auch vertikal. Das wird mit der
258 @code{extra-offset} (Zusätzlicher-Abstand)-Eigenschaft erreicht. Das
259 ist etwas komplizierter und kann andere Probleme mit sich ziehen. Wenn
260 Objekte mit dieser Eigenschaft verschoben werden, heißt das, dass
261 LilyPond sie erst setzt, nachdem alle anderen Objekte positioniert
262 worden sind. Deshalb können sich die Objekte am Ende überlagern.
264 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
265 % temporary code to break this example:
266 \override TextScript #'outside-staff-priority = ##f
267 \once \override TextScript #'extra-offset = #'( 1.0 . -1.0 )
268 e4^\markup{ \italic ritenuto } g b e
271 Bei Verwendung von @code{extra-offset} bestimmt die erste Zahl über die
272 horizontale Verschiebung (nach links ist negativ), die zweite Zahl
273 bestimmt die vertikale Verschiebung (nach oben ist positiv). Nach einigen
274 Experimenten wurden hier folgende Werte für gut befunden:
276 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
277 % temporary code to break this example:
278 \override TextScript #'outside-staff-priority = ##f
279 \once \override TextScript #'extra-offset = #'( -1.6 . 1.0 )
280 e4^\markup{ \italic ritenuto } g b e
284 Auch diese Zahlen sind nur Resultat einigen Herumprobierens und Vergleichens
285 der Ergebnisse. Sie wollen den Text vielleicht etwas höher oder etwas mehr
286 nach links setzen. Versuchen Sie es selber und vergleichen Sie das Ergebnis.
288 Eine letzte Warnung: in diesem Kapitel haben wir den Befehl
291 \once \override TextScript @dots{}
295 benutzt. Dieser Befehl verändert die Anzeige des Textes für die nächste
296 Note. Wenn die Note keinen Text zugeordnet hat, wird auch nichts
297 verändert (und es wird @strong{nicht} nach dem nächsten Text gesucht).
298 Um das Verhalten zu verändern, so dass alles, was nach dem Befehl
299 kommt, verändert wird, müssen Sie den Befehl @code{\once} weglassen.
300 Um die Veränderung zu stoppen, benutzen Sie den Befehl @code{\revert}.
301 Das wird genauer im Kapitel
302 @ruser{The \override command} erklärt.
304 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
305 % temporary code to break this example:
306 \override TextScript #'outside-staff-priority = ##f
308 \once \override TextScript #'padding = #4.6
311 \once \override TextScript #'padding = #4.6
315 \override TextScript #'padding = #4.6
318 \revert TextScript #'padding
324 @ruser{The \override command}, @ref{Common tweaks}.
327 @node Fixing overlapping notation
328 @subsection Fixing overlapping notation
330 Im Kapitel @ref{Moving objects} wurde gezeigt, wie man Texte
331 (@code{TextScript}-Objekte) verschiebt. Mit der gleichen
332 Technik können auch andere Objektklassen verschoben werden,
333 @code{TextScript} muss dann nur durch den Namen des Objektes
336 Um den Objektnamen zu finden, siehe die @q{@strong{see also}}-Hinweise
337 am Ende des jeweiligen Abschnittes. Zum Beispiel am Ende des
338 Kapitels @ruser{Dynamics} findet sich:
343 Programmreferenz: @rinternals{DynamicText}, @rinternals{Hairpin}.
344 Vertikale Positionierung dieser Symbole wird mit
345 @rinternals{DynamicLineSpanner} erreicht.
349 Um also Dynamik-Zeichen zu verschieben, muss
352 \override DynamicLineSpanner #'padding = #2.0
355 benutzt werden. Es ist nicht genügend Platz, um jedes Objekt aufzulisten,
356 aber die gebräuchlichsten finden sich hier:
358 @multitable @columnfractions .33 .66
359 @headitem Objekttyp @tab Objektbezeichnung
360 @item Dynamikzeichen (vertikal) @tab @code{DynamicLineSpanner}
361 @item Dynamikzeichen (horizontal) @tab @code{DynamicText}
362 @item Bindebögen @tab @code{Tie}
363 @item Phrasierungsbögen @tab @code{Slur}
364 @item Artikulationszeichen @tab @code{Script}
365 @item Fingersatz @tab @code{Fingering}
366 @item Text, z. B. @code{^"text"} @tab @code{TextScript}
367 @item Übungs-/Textmarken @tab @code{RehearsalMark}
371 @node Real music example
372 @subsection Real music example
375 UNTRANSLATED NODE: IGNORE ME
379 @c DEPRECATED SECTION
381 @section Common tweaks
383 Bestimmte Korrekturen sind so häufig, dass für sie schon fertige
384 angepasste Befehle bereitgestellt sind, so etwa
385 @code{\slurUp} um einen Bindebogen oberhalb anzuzeigen oder
386 @code{\stemDown} um den Notenhals nach unten zu zwingen. Diese
387 Befehle sind im Teil Alles über die Notation unter dem
388 entsprechenden Abschnitt erklärt.
390 Eine vollständige Liste aller Veränderungen, die für jeden Objekttypen
391 (etwa Bögen oder Balken) zur Verfügung stehen, ist in der Programmreferenz
392 dargestellt. Viele Layoutobjekte benutzen jedoch gleiche Eigenschaften,
393 die benutzt werden können, um eigene Einstellungen vorzunehmen.
401 @code{padding}-Eigenschaft kann gesetzt werden, um den Abstand zwischen
402 Symbolen über oder unter den Noten zu vergrößern oder zu verkleinern.
403 Das gilt für alle Objekte, die ein @code{side-position-interface}
404 besitzen, also unterscheiden, auf welcher Seite der Note sie sich befinden.
406 @lilypond[quote,fragment,relative=1,verbatim]
408 \override Script #'padding = #3
412 @lilypond[quote,fragment,relative=1,verbatim]
413 % This will not work, see below:
414 \override MetronomeMark #'padding = #3
418 \override Score.MetronomeMark #'padding = #3
423 Im zweiten Beispiel ist es sehr wichtig zu wissen, welcher Kontext
424 für bestimmte Objekte zuständig ist. Weil das
425 @code{MetronomeMark}-Objekt vom @code{Score}-Kontext gesetzt
426 wird, werden Veränderungen innerhalb des @code{Voice}-Kontextes
427 nicht berücksichtigt. Genauere Details im Kapitel
428 @ruser{The \override command}.
431 @cindex zusätzlicher Abstand
432 @cindex Abstand, zusätzlicher
435 Die @code{extra-offset}-Eigenschaft verschiebt Objekte, hier ist ein
436 Zahlenpaar zur Angabe der Positionierung erforderlich. Die erste Nummer bestimmt
437 die horizontale Bewegung, eine positive Zahl bewegt das Objekt nach rechts.
438 Die zweite Zahl bestimmt die vertikale Bewegung, eine positive Zahl bewegt
439 das Objekt nach oben. Die
440 @code{extra-offset}-Eigenschaft läuft auf unterster Ebene ab: Die
441 Formatierungsmaschine ist sich der Veränderungen nicht bewusst.
443 Im folgenden Beispiel wird die zweite Fingersatzbezeichnung etwas nach
444 links verschoben und 1,8 Notenzeilenabstände nach unten:
446 @lilypond[quote,fragment,relative=1,verbatim]
449 \once \override Fingering
450 #'extra-offset = #'(-0.3 . -1.8)
455 Die Verwendung der @code{transparent}-Eigenschaft druckt das entsprechende Objekt
456 mit @qq{unsichtbarer Druckerschwärze}: Das Objekt wird nicht angezeigt, aber
457 sein Verhalten bleibt bestehen. Das Objekt nimmt weiterhin Platz ein, es nimmt
458 teil an Überschneidungen und deren Auflösung durch das Programm, Bögen und Balken
459 können daran angebunden werden.
461 @cindex transparente Objekte
462 @cindex Entfernen von Objekten
463 @cindex Verstecken von Objekten
464 @cindex unsichtbare Objekte
465 Das nächste Beispiel zeigt, wie man unterschiedliche Stimmen mit
466 Bindebögen verbinden kann. Normalerweise können Bindebögen nur
467 zwei Noten der selben Stimme verbinden. Indem aber ein Bogen in einer
468 anderen Stimme erstellt wird,
470 @lilypond[quote,fragment,relative=2]
479 und dann der erste Hals nach oben unsichtbar gemacht wird, scheint der
480 Bindebogen die Stimme zu wechseln:
483 @lilypond[quote,fragment,relative=2,verbatim]
485 \once \override Stem #'transparent = ##t
492 Damit der Hals den Bogen nicht zu sehr verkleinert, wird seine
493 Länge (@code{length}) auf den Wert @code{8} gesetzt:
496 @lilypond[quote,fragment,relative=2,verbatim]
498 \once \override Stem #'transparent = ##t
499 \once \override Stem #'length = #8
508 @cindex Veränderungen von Abständen
509 @cindex Optimierung von Abständen
512 Abstände in LilyPond werden in Notenzeilenabständen
513 (@code{staff-space}) gemessen, während die meisten Dicke-Eigenschaften
514 auf mit der Notenliniendicke korrespondieren. Eine Eigenschaften
515 verhalten sich anders, etwa die Dicke von Balken ist an die
516 Notenzeilenabstände gekoppelt. Mehr Information findet sich
517 im relevanten Teil der Programmreferenz.
519 @node Further tweaking
520 @section Further tweaking
523 * Other uses for tweaks::
524 * Using variables for tweaks::
525 * Other sources of information::
526 * Avoiding tweaks with slower processing::
527 * Advanced tweaks with Scheme::
530 @node Other uses for tweaks
531 @subsection Other uses for tweaks
534 UNTRANSLATED NODE: IGNORE ME
537 @node Using variables for tweaks
538 @subsection Using variables for tweaks
541 UNTRANSLATED NODE: IGNORE ME
544 @node Other sources of information
545 @subsection Other sources of information
547 Die Programmreferenz enthält sehr viel Information über LilyPond, aber
548 noch mehr Information findet sich in den internen
551 Eine Standardeinstellungen (wie die Definitionen für den Kopf (@code{\header}
552 sind als @code{.ly}-Datei gespeichert. Andere Einstellungen
553 (wie die Definition für Beschriftung (@code{markup}) sind
554 als @code{.scm} (Scheme)-Datei gespeichert. Eine nähere Erklärung
555 geht über den Rahmen dieses Handbuches hinaus. Der Hinweis
556 scheint aber angebracht, dass es grundlegende technische
557 Kenntnis und sehr viel Zeit erfordert, diese Dateien zu verstehen.
561 @item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
564 @file{@var{installdir}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
565 Um diese Ordner anzuschauen, wechseln Sie entweder mit @code{cd} im Terminal
566 zu der Adresse oder klicken Sie mit der rechten Maustaste auf das LilyPond-Symbol
567 und wählen Sie @q{Show Package Contents}.
569 @item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
573 Die @file{ly/} und @file{scm/}-Ordner sind von besonderem Interesse.
574 Dateien wie @file{ly/property-init.ly} und
575 @file{ly/declarations-init.ly} definieren alle häufig vorkommenden Veränderungen.
578 @node Avoiding tweaks with slower processing
579 @subsection Avoiding tweaks with slower processing
581 LilyPond kann einige zusätzliche Tests durchführen, während
582 die Noten gesetzt werden. Dadurch braucht das Programm länger,
583 um den Notensatz zu produzieren, aber üblicherweise werden
584 weniger nachträgliche Anpassungen nötig sein.
587 %% Um sicher zu gehen, dass Texte und Liedtext
588 %% innerhalb der Papierränder bleiben
589 \override Score.PaperColumn #'keep-inside-line = ##t
593 @node Advanced tweaks with Scheme
594 @subsection Advanced tweaks with Scheme
596 Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert
597 werden kann, indem man Befehle wie
598 @code{\override TextScript #'extra-offset = ( 1 . -1)} benutzt. Aber
599 noch mehr Einfluss auf die Formatierung kann durch den Einsatz von
600 Scheme genommen werden. Eine vollständige Erklärung findet sich in der
601 @ref{Scheme tutorial} und den
602 @ruser{Interfaces for programmers}.
604 Scheme kann benutzt werden, um einfach nur Befehle zu @qq{überschreiben}
607 @lilypond[quote,verbatim,ragged-right]
608 padText = #(define-music-function (parser location padding) (number?)
610 \once \override TextScript #'padding = #$padding
618 c4^"piu mosso" fis a g
622 Hiermit können aber auch neue Befehle erstellt werden:
624 @lilypond[quote,verbatim,ragged-right]
625 tempoMark = #(define-music-function (parser location padding marktext)
628 \once \override Score . RehearsalMark #'padding = $padding
629 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
630 \mark \markup { \bold $marktext }
635 \tempoMark #3.0 #"Allegro"
640 Sogar ganze musikalische Ausdrücke können eingefügt werden:
642 @lilypond[quote,verbatim,ragged-right]
643 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
650 \pattern {d16 dis} { ais16-> b\p }