]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/de/user/tweaks.itely
Merge branch 'master' of ssh://kainhofer@git.sv.gnu.org/srv/git/lilypond into dev...
[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 @ifhtml
35 UNTRANSLATED NODE: IGNORE ME
36 @end ifhtml
37
38 @menu
39 * Introduction to tweaks::      
40 * Objects and interfaces::      
41 * Naming conventions of objects and properties::  
42 * Tweaking methods::            
43 @end menu
44
45 @node Introduction to tweaks
46 @subsection Introduction to tweaks
47
48 @ifhtml
49 UNTRANSLATED NODE: IGNORE ME
50 @end ifhtml
51
52 @node Objects and interfaces
53 @subsection Objects and interfaces
54
55 @ifhtml
56 UNTRANSLATED NODE: IGNORE ME
57 @end ifhtml
58
59 @node Naming conventions of objects and properties
60 @subsection Naming conventions of objects and properties
61
62 @ifhtml
63 UNTRANSLATED NODE: IGNORE ME
64 @end ifhtml
65
66 @node Tweaking methods
67 @subsection Tweaking methods
68
69 @ifhtml
70 UNTRANSLATED NODE: IGNORE ME
71 @end ifhtml
72
73 @node The Internals Reference manual
74 @section The Internals Reference manual
75
76 @ifhtml
77 UNTRANSLATED NODE: IGNORE ME
78 @end ifhtml
79
80 @menu
81 * Properties of layout objects::  
82 * Properties found in interfaces::  
83 * Types of properties::         
84 @end menu
85
86 @node Properties of layout objects
87 @subsection Properties of layout objects
88
89 @ifhtml
90 UNTRANSLATED NODE: IGNORE ME
91 @end ifhtml
92
93 @node Properties found in interfaces
94 @subsection Properties found in interfaces
95
96 @ifhtml
97 UNTRANSLATED NODE: IGNORE ME
98 @end ifhtml
99
100 @node Types of properties
101 @subsection Types of properties
102
103 @ifhtml
104 UNTRANSLATED NODE: IGNORE ME
105 @end ifhtml
106
107 @node Appearance of objects
108 @section Appearance of objects
109
110 @ifhtml
111 UNTRANSLATED NODE: IGNORE ME
112 @end ifhtml
113
114 @menu
115 * Visibility and color of objects::  
116 * Size of objects::             
117 * Length and thickness of objects::  
118 @end menu
119
120 @node Visibility and color of objects
121 @subsection Visibility and color of objects
122
123 @ifhtml
124 UNTRANSLATED NODE: IGNORE ME
125 @end ifhtml
126
127 @node Size of objects
128 @subsection Size of objects
129
130 @ifhtml
131 UNTRANSLATED NODE: IGNORE ME
132 @end ifhtml
133
134 @node Length and thickness of objects
135 @subsection Length and thickness of objects
136
137 @ifhtml
138 UNTRANSLATED NODE: IGNORE ME
139 @end ifhtml
140
141 @node Placement of objects
142 @section Placement of objects
143
144 @ifhtml
145 UNTRANSLATED NODE: IGNORE ME
146 @end ifhtml
147
148 @menu
149 * Automatic behavior::          
150 * Within-staff objects::        
151 * Outside staff objects::       
152 @end menu
153
154 @node Automatic behavior
155 @subsection Automatic behavior
156
157 @ifhtml
158 UNTRANSLATED NODE: IGNORE ME
159 @end ifhtml
160
161 @node Within-staff objects
162 @subsection Within-staff objects
163
164 @ifhtml
165 UNTRANSLATED NODE: IGNORE ME
166 @end ifhtml
167
168 @node Outside staff objects
169 @subsection Outside staff objects
170
171 @ifhtml
172 UNTRANSLATED NODE: IGNORE ME
173 @end ifhtml
174
175
176 @node Collisions of objects
177 @section Collisions of objects
178
179 @menu
180 * Moving objects::              
181 * Fixing overlapping notation::  
182 * Real music example::          
183 @end menu
184
185 @node Moving objects
186 @subsection Moving objects
187
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
191 korrigiert werden.
192
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.
200
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
205 @end lilypond
206
207 @cindex Abstände füllen
208
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.
216
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
222 @end lilypond
223
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.
229
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:
236
237 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
238   % temporary code to break this example:
239   \override TextScript #'outside-staff-priority = ##f
240 c4^"piu mosso" b a b
241 \once \override TextScript #'padding = #4.6
242 c4^"piu mosso" d e f
243 \once \override TextScript #'staff-padding = #4.6
244 c4^"piu mosso" fis a g
245 \break
246 c'4^"piu mosso" b a b
247 \once \override TextScript #'padding = #4.6
248 c4^"piu mosso" d e f
249 \once \override TextScript #'staff-padding = #4.6
250 c4^"piu mosso" fis a g
251 @end lilypond
252
253 @cindex Abstand, zusätzlicher
254 @cindex extra-offset
255
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.
263
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
269 @end lilypond
270
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:
275
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
281 @end lilypond
282
283 @noindent
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.
287
288 Eine letzte Warnung: in diesem Kapitel haben wir den Befehl 
289
290 @example
291 \once \override TextScript @dots{}
292 @end example
293
294 @noindent 
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.
303
304 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
305   % temporary code to break this example:
306   \override TextScript #'outside-staff-priority = ##f
307 c4^"piu mosso" b
308 \once \override TextScript #'padding = #4.6
309   a4 b
310 c4^"piu mosso" d e f
311 \once \override TextScript #'padding = #4.6
312 c4^"piu mosso" d e f
313 c4^"piu mosso" d e f
314 \break
315 \override TextScript #'padding = #4.6
316 c4^"piu mosso" d e f
317 c4^"piu mosso" d e f
318 \revert TextScript #'padding
319 c4^"piu mosso" d e f
320 @end lilypond
321
322 @seealso
323
324 @ruser{The \override command}, @ref{Common tweaks}.
325
326
327 @node Fixing overlapping notation
328 @subsection Fixing overlapping notation
329
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 
334 ersetzt werden.
335
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:
339
340 @quotation
341 @seealso
342
343 Programmreferenz: @rinternals{DynamicText}, @rinternals{Hairpin}.
344 Vertikale Positionierung dieser Symbole wird mit
345 @rinternals{DynamicLineSpanner} erreicht.
346 @end quotation
347
348 @noindent
349 Um also Dynamik-Zeichen zu verschieben, muss
350
351 @example
352 \override DynamicLineSpanner #'padding = #2.0
353 @end example
354
355 benutzt werden. Es ist nicht genügend Platz, um jedes Objekt aufzulisten,
356 aber die gebräuchlichsten finden sich hier:
357
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}
368 @end multitable
369
370
371 @node Real music example
372 @subsection Real music example
373
374 @ifhtml
375 UNTRANSLATED NODE: IGNORE ME
376 @end ifhtml
377
378
379 @c DEPRECATED SECTION
380 @node Common tweaks
381 @section Common tweaks
382
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.
389
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.
394
395 @itemize @bullet
396
397 @cindex padding
398 @cindex Füllung
399
400 @item
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.
405
406 @lilypond[quote,fragment,relative=1,verbatim]
407 c2\fermata
408 \override Script #'padding = #3
409 b2\fermata
410 @end lilypond
411
412 @lilypond[quote,fragment,relative=1,verbatim]
413 % This will not work, see below:
414 \override MetronomeMark #'padding = #3
415 \tempo 4=120
416 c1
417 % This works:
418 \override Score.MetronomeMark #'padding = #3
419 \tempo 4=80
420 d1
421 @end lilypond
422
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}.
429
430 @cindex extra-offset
431 @cindex zusätzlicher Abstand
432 @cindex Abstand, zusätzlicher
433
434 @item
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.
442
443 Im folgenden Beispiel wird die zweite Fingersatzbezeichnung etwas nach 
444 links verschoben und 1,8 Notenzeilenabstände nach unten:
445
446 @lilypond[quote,fragment,relative=1,verbatim]
447 \stemUp
448 f-5
449 \once \override Fingering
450     #'extra-offset = #'(-0.3 . -1.8)
451 f-5
452 @end lilypond
453
454 @item
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.
460
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,
469
470 @lilypond[quote,fragment,relative=2]
471 << {
472   b8~ b8\noBeam
473 } \\ {
474   b[ g8]
475 } >>
476 @end lilypond
477
478 @noindent
479 und dann der erste Hals nach oben unsichtbar gemacht wird, scheint der 
480 Bindebogen die Stimme zu wechseln:
481
482
483 @lilypond[quote,fragment,relative=2,verbatim]
484 << {
485   \once \override Stem #'transparent = ##t
486   b8~ b8\noBeam
487 } \\ {
488   b[ g8]
489 } >>
490 @end lilypond
491
492 Damit der Hals den Bogen nicht zu sehr verkleinert, wird seine 
493 Länge (@code{length}) auf den Wert @code{8} gesetzt:
494
495
496 @lilypond[quote,fragment,relative=2,verbatim]
497 << {
498   \once \override Stem #'transparent = ##t
499   \once \override Stem #'length = #8
500   b8~ b8\noBeam
501 } \\ {
502   b[ g8]
503 } >>
504 @end lilypond
505
506 @end itemize
507
508 @cindex Veränderungen von Abständen
509 @cindex Optimierung von Abständen
510 @cindex Abstände
511
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.
518
519 @node Further tweaking
520 @section Further tweaking
521
522 @menu
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::  
528 @end menu
529
530 @node Other uses for tweaks
531 @subsection Other uses for tweaks
532
533 @ifhtml
534 UNTRANSLATED NODE: IGNORE ME
535 @end ifhtml
536
537 @node Using variables for tweaks
538 @subsection Using variables for tweaks
539
540 @ifhtml
541 UNTRANSLATED NODE: IGNORE ME
542 @end ifhtml
543
544 @node Other sources of information
545 @subsection Other sources of information
546
547 Die Programmreferenz enthält sehr viel Information über LilyPond, aber 
548 noch mehr Information findet sich in den internen 
549 LilyPond-Dateien.
550
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.
558
559 @itemize @bullet
560
561 @item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
562
563 @item OS X:
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}.
568
569 @item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
570
571 @end itemize
572
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.
576
577
578 @node Avoiding tweaks with slower processing
579 @subsection Avoiding tweaks with slower processing
580
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.
585
586 @example
587 %%  Um sicher zu gehen, dass Texte und Liedtext 
588 %%  innerhalb der Papierränder bleiben
589 \override Score.PaperColumn #'keep-inside-line = ##t 
590 @end example
591
592
593 @node Advanced tweaks with Scheme
594 @subsection Advanced tweaks with Scheme
595
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}.
603
604 Scheme kann benutzt werden, um einfach nur Befehle zu @qq{überschreiben} 
605 (@code{\override}):
606
607 @lilypond[quote,verbatim,ragged-right]
608 padText = #(define-music-function (parser location padding) (number?)
609 #{
610   \once \override TextScript #'padding = #$padding
611 #})
612
613 \relative c''' {
614   c4^"piu mosso" b a b
615   \padText #1.8
616   c4^"piu mosso" d e f
617   \padText #2.6
618   c4^"piu mosso" fis a g
619 }
620 @end lilypond
621
622 Hiermit können aber auch neue Befehle erstellt werden:
623
624 @lilypond[quote,verbatim,ragged-right]
625 tempoMark = #(define-music-function (parser location padding marktext)
626                                     (number? string?)
627 #{
628   \once \override Score . RehearsalMark #'padding = $padding
629   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
630   \mark \markup { \bold $marktext }
631 #})
632
633 \relative c'' {
634   c2 e
635   \tempoMark #3.0 #"Allegro"
636   g c
637 }
638 @end lilypond
639
640 Sogar ganze musikalische Ausdrücke können eingefügt werden:
641
642 @lilypond[quote,verbatim,ragged-right]
643 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
644 #{
645   $x e8 a b $y b a e
646 #})
647
648 \relative c''{
649   \pattern c8 c8\f
650   \pattern {d16 dis} { ais16-> b\p }
651 }
652 @end lilypond
653