]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/de/user/tweaks.itely
b9df747938fef50d7fe2febda80f9bcb9dc893c8
[lilypond.git] / Documentation / de / user / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.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 @untranslated
35
36 @menu
37 * Introduction to tweaks::      
38 * Objects and interfaces::      
39 * Naming conventions of objects and properties::  
40 * Tweaking methods::            
41 @end menu
42
43 @node Introduction to tweaks
44 @subsection Introduction to tweaks
45
46 @untranslated
47
48 @node Objects and interfaces
49 @subsection Objects and interfaces
50
51 @untranslated
52
53 @node Naming conventions of objects and properties
54 @subsection Naming conventions of objects and properties
55
56 @untranslated
57
58 @node Tweaking methods
59 @subsection Tweaking methods
60
61 @untranslated
62
63 @node The Internals Reference manual
64 @section The Internals Reference manual
65
66 @untranslated
67
68 @menu
69 * Properties of layout objects::  
70 * Properties found in interfaces::  
71 * Types of properties::         
72 @end menu
73
74 @node Properties of layout objects
75 @subsection Properties of layout objects
76
77 @untranslated
78
79 @node Properties found in interfaces
80 @subsection Properties found in interfaces
81
82 @untranslated
83
84 @node Types of properties
85 @subsection Types of properties
86
87 @untranslated
88
89 @node Appearance of objects
90 @section Appearance of objects
91
92 @untranslated
93
94 @menu
95 * Visibility and color of objects::  
96 * Size of objects::             
97 * Length and thickness of objects::  
98 @end menu
99
100 @node Visibility and color of objects
101 @subsection Visibility and color of objects
102
103 @untranslated
104
105 @node Size of objects
106 @subsection Size of objects
107
108 @untranslated
109
110 @node Length and thickness of objects
111 @subsection Length and thickness of objects
112
113 @untranslated
114
115 @node Placement of objects
116 @section Placement of objects
117
118 @untranslated
119
120 @menu
121 * Automatic behavior::          
122 * Within-staff objects::        
123 * Outside staff objects::       
124 @end menu
125
126 @node Automatic behavior
127 @subsection Automatic behavior
128
129 @untranslated
130
131 @node Within-staff objects
132 @subsection Within-staff objects
133
134 @untranslated
135
136 @node Outside staff objects
137 @subsection Outside staff objects
138
139 @untranslated
140
141
142 @node Collisions of objects
143 @section Collisions of objects
144
145 @menu
146 * Moving objects::              
147 * Fixing overlapping notation::  
148 * Real music example::          
149 @end menu
150
151 @node Moving objects
152 @subsection Moving objects
153
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
157 korrigiert werden.
158
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.
166
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
171 @end lilypond
172
173 @cindex Abstände füllen
174
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.
182
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
188 @end lilypond
189
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.
195
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:
202
203 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
204   % temporary code to break this example:
205   \override TextScript #'outside-staff-priority = ##f
206 c4^"piu mosso" b a b
207 \once \override TextScript #'padding = #4.6
208 c4^"piu mosso" d e f
209 \once \override TextScript #'staff-padding = #4.6
210 c4^"piu mosso" fis a g
211 \break
212 c'4^"piu mosso" b a b
213 \once \override TextScript #'padding = #4.6
214 c4^"piu mosso" d e f
215 \once \override TextScript #'staff-padding = #4.6
216 c4^"piu mosso" fis a g
217 @end lilypond
218
219 @cindex Abstand, zusätzlicher
220 @cindex extra-offset
221
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.
229
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
235 @end lilypond
236
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:
241
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
247 @end lilypond
248
249 @noindent
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.
253
254 Eine letzte Warnung: in diesem Kapitel haben wir den Befehl 
255
256 @example
257 \once \override TextScript @dots{}
258 @end example
259
260 @noindent 
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.
269
270 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
271   % temporary code to break this example:
272   \override TextScript #'outside-staff-priority = ##f
273 c4^"piu mosso" b
274 \once \override TextScript #'padding = #4.6
275   a4 b
276 c4^"piu mosso" d e f
277 \once \override TextScript #'padding = #4.6
278 c4^"piu mosso" d e f
279 c4^"piu mosso" d e f
280 \break
281 \override TextScript #'padding = #4.6
282 c4^"piu mosso" d e f
283 c4^"piu mosso" d e f
284 \revert TextScript #'padding
285 c4^"piu mosso" d e f
286 @end lilypond
287
288 @seealso
289
290 @ruser{The \override command}, @ref{Common tweaks}.
291
292
293 @node Fixing overlapping notation
294 @subsection Fixing overlapping notation
295
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 
300 ersetzt werden.
301
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:
305
306 @quotation
307 @seealso
308
309 Programmreferenz: @rinternals{DynamicText}, @rinternals{Hairpin}.
310 Vertikale Positionierung dieser Symbole wird mit
311 @rinternals{DynamicLineSpanner} erreicht.
312 @end quotation
313
314 @noindent
315 Um also Dynamik-Zeichen zu verschieben, muss
316
317 @example
318 \override DynamicLineSpanner #'padding = #2.0
319 @end example
320
321 benutzt werden. Es ist nicht genügend Platz, um jedes Objekt aufzulisten,
322 aber die gebräuchlichsten finden sich hier:
323
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}
334 @end multitable
335
336
337 @node Real music example
338 @subsection Real music example
339
340 @untranslated
341
342
343 @c DEPRECATED SECTION
344 @node Common tweaks
345 @section Common tweaks
346
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.
353
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.
358
359 @itemize @bullet
360
361 @cindex padding
362 @cindex Füllung
363
364 @item
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.
369
370 @lilypond[quote,fragment,relative=1,verbatim]
371 c2\fermata
372 \override Script #'padding = #3
373 b2\fermata
374 @end lilypond
375
376 @lilypond[quote,fragment,relative=1,verbatim]
377 % This will not work, see below:
378 \override MetronomeMark #'padding = #3
379 \tempo 4=120
380 c1
381 % This works:
382 \override Score.MetronomeMark #'padding = #3
383 \tempo 4=80
384 d1
385 @end lilypond
386
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}.
393
394 @cindex extra-offset
395 @cindex zusätzlicher Abstand
396 @cindex Abstand, zusätzlicher
397
398 @item
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.
406
407 Im folgenden Beispiel wird die zweite Fingersatzbezeichnung etwas nach 
408 links verschoben und 1,8 Notenzeilenabstände nach unten:
409
410 @lilypond[quote,fragment,relative=1,verbatim]
411 \stemUp
412 f-5
413 \once \override Fingering
414     #'extra-offset = #'(-0.3 . -1.8)
415 f-5
416 @end lilypond
417
418 @item
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.
424
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,
433
434 @lilypond[quote,fragment,relative=2]
435 << {
436   b8~ b8\noBeam
437 } \\ {
438   b[ g8]
439 } >>
440 @end lilypond
441
442 @noindent
443 und dann der erste Hals nach oben unsichtbar gemacht wird, scheint der 
444 Bindebogen die Stimme zu wechseln:
445
446
447 @lilypond[quote,fragment,relative=2,verbatim]
448 << {
449   \once \override Stem #'transparent = ##t
450   b8~ b8\noBeam
451 } \\ {
452   b[ g8]
453 } >>
454 @end lilypond
455
456 Damit der Hals den Bogen nicht zu sehr verkleinert, wird seine 
457 Länge (@code{length}) auf den Wert @code{8} gesetzt:
458
459
460 @lilypond[quote,fragment,relative=2,verbatim]
461 << {
462   \once \override Stem #'transparent = ##t
463   \once \override Stem #'length = #8
464   b8~ b8\noBeam
465 } \\ {
466   b[ g8]
467 } >>
468 @end lilypond
469
470 @end itemize
471
472 @cindex Veränderungen von Abständen
473 @cindex Optimierung von Abständen
474 @cindex Abstände
475
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.
482
483 @node Further tweaking
484 @section Further tweaking
485
486 @menu
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::  
492 @end menu
493
494 @node Other uses for tweaks
495 @subsection Other uses for tweaks
496
497 @untranslated
498
499 @node Using variables for tweaks
500 @subsection Using variables for tweaks
501
502 @untranslated
503
504 @node Other sources of information
505 @subsection Other sources of information
506
507 Die Programmreferenz enthält sehr viel Information über LilyPond, aber 
508 noch mehr Information findet sich in den internen 
509 LilyPond-Dateien.
510
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.
518
519 @itemize @bullet
520
521 @item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
522
523 @item OS X:
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}.
528
529 @item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
530
531 @end itemize
532
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.
536
537
538 @node Avoiding tweaks with slower processing
539 @subsection Avoiding tweaks with slower processing
540
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.
545
546 @example
547 %%  Um sicher zu gehen, dass Texte und Liedtext 
548 %%  innerhalb der Papierränder bleiben
549 \override Score.PaperColumn #'keep-inside-line = ##t 
550 @end example
551
552
553 @node Advanced tweaks with Scheme
554 @subsection Advanced tweaks with Scheme
555
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}.
563
564 Scheme kann benutzt werden, um einfach nur Befehle zu @qq{überschreiben} 
565 (@code{\override}):
566
567 @lilypond[quote,verbatim,ragged-right]
568 padText = #(define-music-function (parser location padding) (number?)
569 #{
570   \once \override TextScript #'padding = #$padding
571 #})
572
573 \relative c''' {
574   c4^"piu mosso" b a b
575   \padText #1.8
576   c4^"piu mosso" d e f
577   \padText #2.6
578   c4^"piu mosso" fis a g
579 }
580 @end lilypond
581
582 Hiermit können aber auch neue Befehle erstellt werden:
583
584 @lilypond[quote,verbatim,ragged-right]
585 tempoMark = #(define-music-function (parser location padding marktext)
586                                     (number? string?)
587 #{
588   \once \override Score . RehearsalMark #'padding = $padding
589   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
590   \mark \markup { \bold $marktext }
591 #})
592
593 \relative c'' {
594   c2 e
595   \tempoMark #3.0 #"Allegro"
596   g c
597 }
598 @end lilypond
599
600 Sogar ganze musikalische Ausdrücke können eingefügt werden:
601
602 @lilypond[quote,verbatim,ragged-right]
603 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
604 #{
605   $x e8 a b $y b a e
606 #})
607
608 \relative c''{
609   \pattern c8 c8\f
610   \pattern {d16 dis} { ais16-> b\p }
611 }
612 @end lilypond
613