]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/de/user/tweaks.itely
Merge branch 'lilypond/translation' of ssh://trettig@git.sv.gnu.org/srv/git/lilypond...
[lilypond.git] / Documentation / de / user / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond-learning.tely
3 @ignore
4     Translation of GIT committish: 3121682025660b6c85fbf3f22bb9cd8396699ad1
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.11.51"
11
12 @node Tweaking output
13 @chapter Tweaking output
14
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.
18
19
20 @menu
21 * Tweaking basics::             
22 * The Internals Reference manual::  
23 * Appearance of objects::       
24 * Placement of objects::        
25 * Collisions of objects::       
26 * Common tweaks::               
27 * Further tweaking::            
28 @end menu
29
30
31 @node Tweaking basics
32 @section Tweaking basics
33
34 @menu
35 * Introduction to tweaks::      
36 * Objects and interfaces::      
37 * Naming conventions of objects and properties::  
38 * Tweaking methods::            
39 @end menu
40
41 @node Introduction to tweaks
42 @subsection Introduction to tweaks
43
44 @qq{Optimierung} (engl. tweaking) ist ein LilyPond-Begriff für die
45 verschiedenen Methoden, die Aktionen zu beeinflussen, die während
46 der Kompilation einer Notationsdatei vorgenommen werden sowie auf
47 das Notenbild einzuwirken. Einige dieser Opitmierungen sind sehr 
48 einfach, andere dagegen recht komplex. Aber insgesamt erlaubt das
49 System an Optimierungen so gut wie alle möglichen Erscheindungsformen
50 für die Notenausgabe.
51
52 In diesem Abschnitt werden die grundlegenden Konzepte vorgestellt,
53 um die Optimierung zu verstehen. Später soll eine Anzahl von fertigen
54 Befehlen bereitgestellt werden, die einfach in die Quelldatei
55 kopiert werden können um den selben Effekt wie im Beispiel
56 zu erhalten. Gleichzeitig zeigen diese Beispiele, wie die Befehle
57 konstruiert werden, so dass Sie in der Lage sein werden, eigene
58 Befehle auf dieser Grundlage zu entwickeln.
59
60 Bevor Sie mit diesem Kapitel beginnen, könnte Sie ein Blick in den
61 Abschnitt @ref{Contexts and engravers} interessieren, dann
62 Kontexte und Engraver sowie die Eigenschaften, die mit ihnen 
63 verknüpft sind, sind die Voraussetzung, um die Funktionsweise
64 von Optimierungen verstehen zu können.
65
66
67 @node Objects and interfaces
68 @subsection Objects and interfaces
69
70 @untranslated
71
72 @node Naming conventions of objects and properties
73 @subsection Naming conventions of objects and properties
74
75 @untranslated
76
77 @node Tweaking methods
78 @subsection Tweaking methods
79
80 @untranslated
81
82 @node The Internals Reference manual
83 @section The Internals Reference manual
84
85 @untranslated
86
87 @menu
88 * Properties of layout objects::  
89 * Properties found in interfaces::  
90 * Types of properties::         
91 @end menu
92
93 @node Properties of layout objects
94 @subsection Properties of layout objects
95
96 @untranslated
97
98 @node Properties found in interfaces
99 @subsection Properties found in interfaces
100
101 @untranslated
102
103 @node Types of properties
104 @subsection Types of properties
105
106 @untranslated
107
108 @node Appearance of objects
109 @section Appearance of objects
110
111 @untranslated
112
113 @menu
114 * Visibility and color of objects::  
115 * Size of objects::             
116 * Length and thickness of objects::  
117 @end menu
118
119 @node Visibility and color of objects
120 @subsection Visibility and color of objects
121
122 @untranslated
123
124 @node Size of objects
125 @subsection Size of objects
126
127 @untranslated
128
129 @node Length and thickness of objects
130 @subsection Length and thickness of objects
131
132 @untranslated
133
134 @node Placement of objects
135 @section Placement of objects
136
137 @untranslated
138
139 @menu
140 * Automatic behavior::          
141 * Within-staff objects::        
142 * Outside staff objects::       
143 @end menu
144
145 @node Automatic behavior
146 @subsection Automatic behavior
147
148 @untranslated
149
150 @node Within-staff objects
151 @subsection Within-staff objects
152
153 @untranslated
154
155 @node Outside staff objects
156 @subsection Outside staff objects
157
158 @untranslated
159
160
161 @node Collisions of objects
162 @section Collisions of objects
163
164 @menu
165 * Moving objects::              
166 * Fixing overlapping notation::  
167 * Real music example::          
168 @end menu
169
170 @node Moving objects
171 @subsection Moving objects
172
173 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht 
174 perfekt. Einige Notationselemente können sich überschneiden. Das 
175 ist nicht schön, kann aber (in den meisten Fällen) sehr einfach
176 korrigiert werden.
177
178 @c  FIXME: find a better example for 5.1 Moving Objects.  -gp
179 @c  yes, I want this TODO to be visible to end-users.  It's better
180 @c  than having nothing at all.
181 TODO: Mit den neuen Abstandseigenschaften seit Version 2.12 sind die
182 jeweiligen Beispiele nicht mehr relevant. Sie zeigen jedoch immer noch 
183 machtvolle Eigenschaften von LilyPond und verbleiben deshalb in der 
184 Dokumentation, bis jemand bessere Beispiel zur Verfügung stellt.
185
186 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
187   % temporary code to break this example:
188   \override TextScript #'outside-staff-priority = ##f
189 e4^\markup{ \italic ritenuto } g b e
190 @end lilypond
191
192 @cindex Abstände füllen
193
194 Die einfachste Lösung ist es, Abstände zwischen Objekt und Note zu vergrößern 
195  (genauso auch für Fingersätze oder Dynamikzeichen). In 
196 LilyPond wird das durch Veränderung der @code{padding} (Füllungs)-Eigenschaft
197 erreicht, ihre Maßeinheit sind Notenzeilenabstände. Für die meisten 
198 Objekte ist der Wert etwa 1.0 oder weniger (das unterscheidet sich 
199 von Objekt zu Objekt). Hier soll der Abstand vergrößert werden, also
200 scheint 1.5 eine gute Wahl.
201
202 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
203   % temporary code to break this example:
204   \override TextScript #'outside-staff-priority = ##f
205 \once \override TextScript #'padding = #1.5
206 e4^\markup{ \italic ritenuto } g b e
207 @end lilypond
208
209 Das sieht besser aus, ist aber noch nicht groß genug. Nach einigen
210 Experimenten wird darum 2.3 genommen für diesen Fall. Diese Zahl
211 ist aber nur das Resultat einigen Probierens und persönlicher
212 Geschmack. Probieren Sie selber ein wenig herum und entscheiden 
213 Sie nach eigenem Geschmack.
214
215 Die @code{staff-padding}-Eigenschaft ist der vorigen sehr ähnlich. 
216  @code{padding} entscheidet über den minimalen Abstand zwischen einem
217 Objekt und dem nächsten anderen Objekt (meistens eine Note oder 
218 Notenzeile); @code{staff-padding} entscheidet über den minimalen
219 Abstand zwischen einem Objekt und dem Notensystem. Das ist nur ein 
220 kleiner Unterschied, aber hier wird das Verhalten demonstriert:
221
222 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
223   % temporary code to break this example:
224   \override TextScript #'outside-staff-priority = ##f
225 c4^"piu mosso" b a b
226 \once \override TextScript #'padding = #4.6
227 c4^"piu mosso" d e f
228 \once \override TextScript #'staff-padding = #4.6
229 c4^"piu mosso" fis a g
230 \break
231 c'4^"piu mosso" b a b
232 \once \override TextScript #'padding = #4.6
233 c4^"piu mosso" d e f
234 \once \override TextScript #'staff-padding = #4.6
235 c4^"piu mosso" fis a g
236 @end lilypond
237
238 @cindex Abstand, zusätzlicher
239 @cindex extra-offset
240
241 Eine andere Lösung ermöglicht vollständige Kontrolle über die Positionierung
242 eines Objektes sowohl horizontal als auch vertikal. Das wird mit der 
243 @code{extra-offset} (Zusätzlicher-Abstand)-Eigenschaft erreicht. Das 
244 ist etwas komplizierter und kann andere Probleme mit sich ziehen. Wenn 
245 Objekte mit dieser Eigenschaft verschoben werden, heißt das, dass 
246 LilyPond sie erst setzt, nachdem alle anderen Objekte positioniert 
247 worden sind. Deshalb können sich die Objekte am Ende überlagern.
248
249 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
250   % temporary code to break this example:
251   \override TextScript #'outside-staff-priority = ##f
252 \once \override TextScript #'extra-offset = #'( 1.0 . -1.0 )
253 e4^\markup{ \italic ritenuto } g b e
254 @end lilypond
255
256 Bei Verwendung von @code{extra-offset} bestimmt die erste Zahl über die
257 horizontale Verschiebung (nach links ist negativ), die zweite Zahl 
258 bestimmt die vertikale Verschiebung (nach oben ist positiv). Nach einigen 
259 Experimenten wurden hier folgende Werte für gut befunden:
260
261 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
262   % temporary code to break this example:
263   \override TextScript #'outside-staff-priority = ##f
264 \once \override TextScript #'extra-offset = #'( -1.6 . 1.0 )
265 e4^\markup{ \italic ritenuto } g b e
266 @end lilypond
267
268 @noindent
269 Auch diese Zahlen sind nur Resultat einigen Herumprobierens und Vergleichens 
270 der Ergebnisse. Sie wollen den Text vielleicht etwas höher oder etwas mehr 
271 nach links setzen. Versuchen Sie es selber und vergleichen Sie das Ergebnis.
272
273 Eine letzte Warnung: in diesem Kapitel haben wir den Befehl 
274
275 @example
276 \once \override TextScript @dots{}
277 @end example
278
279 @noindent 
280 benutzt. Dieser Befehl verändert die Anzeige des Textes für die nächste 
281 Note. Wenn die Note keinen Text zugeordnet hat, wird auch nichts 
282 verändert (und es wird @strong{nicht} nach dem nächsten Text gesucht). 
283 Um das Verhalten zu verändern, so dass alles, was nach dem Befehl
284 kommt, verändert wird, müssen Sie den Befehl @code{\once} weglassen. 
285 Um die Veränderung zu stoppen, benutzen Sie den Befehl @code{\revert}.
286 Das wird genauer im Kapitel
287 @ruser{The \override command} erklärt.
288
289 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
290   % temporary code to break this example:
291   \override TextScript #'outside-staff-priority = ##f
292 c4^"piu mosso" b
293 \once \override TextScript #'padding = #4.6
294   a4 b
295 c4^"piu mosso" d e f
296 \once \override TextScript #'padding = #4.6
297 c4^"piu mosso" d e f
298 c4^"piu mosso" d e f
299 \break
300 \override TextScript #'padding = #4.6
301 c4^"piu mosso" d e f
302 c4^"piu mosso" d e f
303 \revert TextScript #'padding
304 c4^"piu mosso" d e f
305 @end lilypond
306
307 @seealso
308
309 @ruser{The \override command}, @ref{Common tweaks}.
310
311
312 @node Fixing overlapping notation
313 @subsection Fixing overlapping notation
314
315 Im Kapitel @ref{Moving objects} wurde gezeigt, wie man Texte 
316 (@code{TextScript}-Objekte) verschiebt. Mit der gleichen 
317 Technik können auch andere Objektklassen verschoben werden, 
318 @code{TextScript} muss dann nur durch den Namen des Objektes 
319 ersetzt werden.
320
321 Um den Objektnamen zu finden, siehe die @q{@strong{see also}}-Hinweise 
322 am Ende des jeweiligen Abschnittes. Zum Beispiel am Ende des
323 Kapitels  @ruser{Dynamics} findet sich:
324
325 @quotation
326 @seealso
327
328 Programmreferenz: @rinternals{DynamicText}, @rinternals{Hairpin}.
329 Vertikale Positionierung dieser Symbole wird mit
330 @rinternals{DynamicLineSpanner} erreicht.
331 @end quotation
332
333 @noindent
334 Um also Dynamik-Zeichen zu verschieben, muss
335
336 @example
337 \override DynamicLineSpanner #'padding = #2.0
338 @end example
339
340 benutzt werden. Es ist nicht genügend Platz, um jedes Objekt aufzulisten,
341 aber die gebräuchlichsten finden sich hier:
342
343 @multitable @columnfractions .33 .66
344 @headitem Objekttyp           @tab Objektbezeichnung
345 @item Dynamikzeichen (vertikal)     @tab @code{DynamicLineSpanner}
346 @item Dynamikzeichen (horizontal)   @tab @code{DynamicText}
347 @item Bindebögen                      @tab @code{Tie}
348 @item Phrasierungsbögen                     @tab @code{Slur}
349 @item Artikulationszeichen             @tab @code{Script}
350 @item Fingersatz                @tab @code{Fingering}
351 @item Text, z. B. @code{^"text"}  @tab @code{TextScript}
352 @item Übungs-/Textmarken    @tab @code{RehearsalMark}
353 @end multitable
354
355
356 @node Real music example
357 @subsection Real music example
358
359 @untranslated
360
361
362 @c DEPRECATED SECTION
363 @node Common tweaks
364 @section Common tweaks
365
366 Bestimmte Korrekturen sind so häufig, dass für sie schon fertige 
367 angepasste Befehle bereitgestellt sind, so etwa 
368  @code{\slurUp} um einen Bindebogen oberhalb anzuzeigen oder 
369 @code{\stemDown} um den Notenhals nach unten zu zwingen. Diese 
370 Befehle sind im Teil Alles über die Notation unter dem
371 entsprechenden Abschnitt erklärt.
372
373 Eine vollständige Liste aller Veränderungen, die für jeden Objekttypen 
374 (etwa Bögen oder Balken) zur Verfügung stehen, ist in der Programmreferenz
375 dargestellt. Viele Layoutobjekte benutzen jedoch gleiche Eigenschaften, 
376 die benutzt werden können, um eigene Einstellungen vorzunehmen.
377
378 @itemize @bullet
379
380 @cindex padding
381 @cindex Füllung
382
383 @item
384 @code{padding}-Eigenschaft kann gesetzt werden, um den Abstand zwischen 
385 Symbolen über oder unter den Noten zu vergrößern oder zu verkleinern. 
386 Das gilt für alle Objekte, die ein @code{side-position-interface} 
387 besitzen, also unterscheiden, auf welcher Seite der Note sie sich befinden.
388
389 @lilypond[quote,fragment,relative=1,verbatim]
390 c2\fermata
391 \override Script #'padding = #3
392 b2\fermata
393 @end lilypond
394
395 @lilypond[quote,fragment,relative=1,verbatim]
396 % This will not work, see below:
397 \override MetronomeMark #'padding = #3
398 \tempo 4=120
399 c1
400 % This works:
401 \override Score.MetronomeMark #'padding = #3
402 \tempo 4=80
403 d1
404 @end lilypond
405
406 Im zweiten Beispiel ist es sehr wichtig zu wissen, welcher Kontext 
407 für bestimmte Objekte zuständig ist. Weil das 
408  @code{MetronomeMark}-Objekt vom @code{Score}-Kontext gesetzt 
409 wird, werden Veränderungen innerhalb des @code{Voice}-Kontextes 
410 nicht berücksichtigt. Genauere Details im Kapitel
411 @ruser{The \override command}.
412
413 @cindex extra-offset
414 @cindex zusätzlicher Abstand
415 @cindex Abstand, zusätzlicher
416
417 @item
418 Die @code{extra-offset}-Eigenschaft verschiebt Objekte, hier ist ein 
419 Zahlenpaar zur Angabe der Positionierung erforderlich. Die erste Nummer bestimmt 
420 die horizontale Bewegung, eine positive Zahl bewegt das Objekt nach rechts.
421 Die zweite Zahl bestimmt die vertikale Bewegung, eine positive Zahl bewegt 
422 das Objekt nach oben. Die 
423 @code{extra-offset}-Eigenschaft läuft auf unterster Ebene ab: Die 
424 Formatierungsmaschine ist sich der Veränderungen nicht bewusst.
425
426 Im folgenden Beispiel wird die zweite Fingersatzbezeichnung etwas nach 
427 links verschoben und 1,8 Notenzeilenabstände nach unten:
428
429 @lilypond[quote,fragment,relative=1,verbatim]
430 \stemUp
431 f-5
432 \once \override Fingering
433     #'extra-offset = #'(-0.3 . -1.8)
434 f-5
435 @end lilypond
436
437 @item
438 Die Verwendung der @code{transparent}-Eigenschaft druckt das entsprechende Objekt 
439 mit @qq{unsichtbarer Druckerschwärze}: Das Objekt wird nicht angezeigt, aber 
440 sein Verhalten bleibt bestehen. Das Objekt nimmt weiterhin Platz ein, es nimmt 
441 teil an Überschneidungen und deren Auflösung durch das Programm, Bögen und Balken 
442 können daran angebunden werden.
443
444 @cindex transparente Objekte
445 @cindex Entfernen von Objekten
446 @cindex Verstecken von Objekten
447 @cindex unsichtbare Objekte
448 Das nächste Beispiel zeigt, wie man unterschiedliche Stimmen mit 
449 Bindebögen verbinden kann. Normalerweise können Bindebögen nur 
450 zwei Noten der selben Stimme verbinden. Indem aber ein Bogen in einer 
451 anderen Stimme erstellt wird,
452
453 @lilypond[quote,fragment,relative=2]
454 << {
455   b8~ b8\noBeam
456 } \\ {
457   b[ g8]
458 } >>
459 @end lilypond
460
461 @noindent
462 und dann der erste Hals nach oben unsichtbar gemacht wird, scheint der 
463 Bindebogen die Stimme zu wechseln:
464
465
466 @lilypond[quote,fragment,relative=2,verbatim]
467 << {
468   \once \override Stem #'transparent = ##t
469   b8~ b8\noBeam
470 } \\ {
471   b[ g8]
472 } >>
473 @end lilypond
474
475 Damit der Hals den Bogen nicht zu sehr verkleinert, wird seine 
476 Länge (@code{length}) auf den Wert @code{8} gesetzt:
477
478
479 @lilypond[quote,fragment,relative=2,verbatim]
480 << {
481   \once \override Stem #'transparent = ##t
482   \once \override Stem #'length = #8
483   b8~ b8\noBeam
484 } \\ {
485   b[ g8]
486 } >>
487 @end lilypond
488
489 @end itemize
490
491 @cindex Veränderungen von Abständen
492 @cindex Optimierung von Abständen
493 @cindex Abstände
494
495 Abstände in LilyPond werden in Notenzeilenabständen
496 (@code{staff-space}) gemessen, während die meisten Dicke-Eigenschaften 
497 auf mit der Notenliniendicke korrespondieren. Eine Eigenschaften 
498 verhalten sich anders, etwa die Dicke von Balken ist an die 
499 Notenzeilenabstände gekoppelt. Mehr Information findet sich 
500 im relevanten Teil der Programmreferenz.
501
502 @node Further tweaking
503 @section Further tweaking
504
505 @menu
506 * Other uses for tweaks::       
507 * Using variables for tweaks::  
508 * Other sources of information::  
509 * Avoiding tweaks with slower processing::  
510 * Advanced tweaks with Scheme::  
511 @end menu
512
513 @node Other uses for tweaks
514 @subsection Other uses for tweaks
515
516 @untranslated
517
518 @node Using variables for tweaks
519 @subsection Using variables for tweaks
520
521 @untranslated
522
523 @node Other sources of information
524 @subsection Other sources of information
525
526 Die Programmreferenz enthält sehr viel Information über LilyPond, aber 
527 noch mehr Information findet sich in den internen 
528 LilyPond-Dateien.
529
530 Eine Standardeinstellungen (wie die Definitionen für den Kopf (@code{\header} 
531 sind als @code{.ly}-Datei gespeichert. Andere Einstellungen 
532 (wie die Definition für Beschriftung (@code{markup}) sind 
533 als @code{.scm} (Scheme)-Datei gespeichert. Eine nähere Erklärung 
534 geht über den Rahmen dieses Handbuches hinaus. Der Hinweis 
535 scheint aber angebracht, dass es grundlegende technische 
536 Kenntnis und sehr viel Zeit  erfordert, diese Dateien zu verstehen.
537
538 @itemize @bullet
539
540 @item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
541
542 @item OS X:
543 @file{@var{installdir}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
544 Um diese Ordner anzuschauen, wechseln Sie entweder mit @code{cd} im Terminal 
545 zu der Adresse oder klicken Sie mit der rechten Maustaste auf das LilyPond-Symbol 
546 und wählen Sie @q{Show Package Contents}.
547
548 @item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
549
550 @end itemize
551
552 Die @file{ly/} und @file{scm/}-Ordner sind von besonderem Interesse.
553 Dateien wie @file{ly/property-init.ly} und
554 @file{ly/declarations-init.ly} definieren alle häufig vorkommenden Veränderungen.
555
556
557 @node Avoiding tweaks with slower processing
558 @subsection Avoiding tweaks with slower processing
559
560 LilyPond kann einige zusätzliche Tests durchführen, während 
561 die Noten gesetzt werden. Dadurch braucht das Programm länger, 
562 um den Notensatz zu produzieren, aber üblicherweise werden 
563 weniger nachträgliche Anpassungen nötig sein.
564
565 @example
566 %%  Um sicher zu gehen, dass Texte und Liedtext 
567 %%  innerhalb der Papierränder bleiben
568 \override Score.PaperColumn #'keep-inside-line = ##t 
569 @end example
570
571
572 @node Advanced tweaks with Scheme
573 @subsection Advanced tweaks with Scheme
574
575 Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert 
576 werden kann, indem man Befehle wie 
577 @code{\override TextScript #'extra-offset = ( 1 . -1)} benutzt. Aber 
578 noch mehr Einfluss auf die Formatierung kann durch den Einsatz von 
579 Scheme genommen werden. Eine vollständige Erklärung findet sich in der 
580  @ref{Scheme tutorial} und den
581 @ruser{Interfaces for programmers}.
582
583 Scheme kann benutzt werden, um einfach nur Befehle zu @qq{überschreiben} 
584 (@code{\override}):
585
586 @lilypond[quote,verbatim,ragged-right]
587 padText = #(define-music-function (parser location padding) (number?)
588 #{
589   \once \override TextScript #'padding = #$padding
590 #})
591
592 \relative c''' {
593   c4^"piu mosso" b a b
594   \padText #1.8
595   c4^"piu mosso" d e f
596   \padText #2.6
597   c4^"piu mosso" fis a g
598 }
599 @end lilypond
600
601 Hiermit können aber auch neue Befehle erstellt werden:
602
603 @lilypond[quote,verbatim,ragged-right]
604 tempoMark = #(define-music-function (parser location padding marktext)
605                                     (number? string?)
606 #{
607   \once \override Score . RehearsalMark #'padding = $padding
608   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
609   \mark \markup { \bold $marktext }
610 #})
611
612 \relative c'' {
613   c2 e
614   \tempoMark #3.0 #"Allegro"
615   g c
616 }
617 @end lilypond
618
619 Sogar ganze musikalische Ausdrücke können eingefügt werden:
620
621 @lilypond[quote,verbatim,ragged-right]
622 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
623 #{
624   $x e8 a b $y b a e
625 #})
626
627 \relative c''{
628   \pattern c8 c8\f
629   \pattern {d16 dis} { ais16-> b\p }
630 }
631 @end lilypond
632