]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/de/user/working.itely
de14bd0139c688f11f4badb422aa6d190cb0455d
[lilypond.git] / Documentation / de / user / working.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 Working on LilyPond projects
13 @chapter Working on LilyPond projects
14
15 Dieses Kapitel erklärt, wie bestimmte häufige Probleme zu 
16 lösen oder ganz zu vermeiden sind. Wenn Sie schon 
17 Programmiererfahrung mitbringen, erscheinen diese Hinweise 
18 vielleicht überflüssig, aber es wird dennoch empfohlen, dieses Kapitel 
19 zu lesen.
20
21
22 @menu
23 * Suggestions for writing LilyPond input files::  
24 * When things don't work::      
25 * Scores and parts::            
26 @end menu
27
28
29 @node Suggestions for writing LilyPond input files
30 @section Suggestions for writing LilyPond input files
31
32 Jetzt sind Sie so weit, größere Stücke mit LilyPond zu schreiben -- 
33 nicht 
34 nur die kleinen Beispiele aus der Übung, sondern ganze Stücke.
35 Aber wie geht man das am besten an?
36
37 Solange LilyPond Ihre Dateien versteht und die Noten so setzt, 
38 wie Sie das wollen, spielt es eigentlich keine Rolle, wie Ihre 
39 Dateien aussehen. Es gibt aber trotzdem ein paar Dinge, die man 
40 beim Schreiben von LilyPond-Code berücksichtigen sollte.
41
42 @itemize @bullet
43 @item Was ist, wenn Sie einen Fehler machen? Die Struktur einer 
44 LilyPond-Datei kann es erleichtern (oder erschweren), bestimmte 
45 Fehler zu finden.
46
47 @item Was ist, wenn Sie Ihre Dateien mit jemandem austauschen 
48 wollen? Oder Ihre Dateien nach einige Jahren noch einmal überarbeiten 
49 wollen? Manche LilyPond-Dateien versteht man auf den ersten Blick, 
50 über anderen muss man eine Stunde grübeln, um die Struktur zu ahnen.
51
52 @item Was ist, wenn sie Ihre Dateien auf eine neuere LilyPond-Version 
53 aktualisieren wollen? Die Syntax der Eingabesprache verändert sich 
54 allmählich mit Verbesserungen im Programm. Die meisten Veränderungen 
55 können automatisch durch @code{convert-ly} gelöst werden, aber 
56 bestimmte Änderungen brauchen Handarbeit. LilyPond-Dateien können 
57 strukturiert werden, damit sie einfacher aktualisierbar sind.
58 @end itemize
59
60 @menu
61 * General suggestions::         
62 * Typesetting existing music::  
63 * Large projects::              
64 * Saving typing with variables and functions::  
65 * Style sheets::                
66 @end menu
67
68
69 @node General suggestions
70 @subsection General suggestions
71
72 Hier einige Vorschläge, wie Sie Probleme vermeiden oder lösen können:
73
74 @itemize @bullet
75 @item @strong{Schreiben Sie immer mit @code{\version} die 
76 Versionsnummer 
77 in jede Datei}. Beachten Sie, dass in allen Vorlagen die Versionsnummer  
78 @code{\version "2.11.51"} eingetragen ist. Es empfiehlt sich, in alle 
79 Dateien, unabhängig von ihrer Größe, den @code{\version}-Befehl 
80 einzufügen. Persönliche Erfahrung hat gezeigt, dass es ziemlich 
81 frustrierend sein kann zu erinnern, welche Programmversion man etwa 
82 vor einem Jahr verwendet hat. Auch @code{convert-ly} benötigt die 
83 Versionsnummer.
84
85 @item @strong{Benutzen Sie Überprüfungen}: @ruser{Octave checks}, und
86 @ruser{Bar and bar number checks}.  Wenn Sie hier und da diese
87 Überprüfungen einfügen, finden Sie einen möglichen Fehler weit
88 schneller. Wie oft aber ist @qq{hier und da}?  Das hängt von der
89 Komplexität der Musik ab. Bei einfachen Stücken reicht es vielleicht
90 ein- oder zweimal, in sehr komplexer Musik sollte man sie vielleicht
91 in jeden Takt einfügen.
92
93 @item @strong{Ein Takt pro Textzeile}. Wenn irgendetwas kompliziertes 
94 vorkommt, entweder in der Musik selber oder in der Anpassung der 
95 Ausgabe,
96 empfiehlt es sich oft, nur einen Takt pro Zeile zu schreiben. 
97 Bildschirmplatz zu sparen, indem Sie acht Takte in eine Zeile zwängen, 
98 hilft nicht weiter, wenn Sie ihre Datei @qq{debuggen} müssen.
99
100 @item @strong{Kommentieren Sie ihre Dateien}.  Benutzen Sie entweder 
101 Taktnummern (in regelmäßigen Abständen) oder Verweise auf musikalische 
102 Themen (@qq{Zweites Thema in den Geigen}, @qq{vierte Variation} usw.). 
103 Sie brauchen diese Kommentare vielleicht noch nicht, wenn Sie das Stück  
104 notieren, aber spätestens wenn Sie nach ein paar Jahren etwas 
105 verändern 
106 wollen oder Sie den Quelltext an einen Freund weitergeben wollen, 
107 ist es weitaus komplizierter, die Dateistruktur ohne Kommentare zu 
108 verstehen, als wenn Sie sie rechtzeitig eingefügt hätten.
109
110 @item @strong{Schreiben Sie Klammern mit Einrückung}.  Viele 
111 Probleme entstehen durch ungerade Anzahl von  @code{@{} and 
112 @code{@}}-Klammern.
113
114 @item @strong{Schreiben Sie Tondauerangaben} am Anfang von 
115 Abschnitten und Bezeichnern. Wenn Sie beispielsweise 
116  @code{c4 d e} am Anfang eines Abschnittes schreiben, 
117 ersparen Sie sich viele Probleme, wenn Sie ihre Musik 
118 eines Tages umarrangieren wollen.
119
120 @item @strong{Trennen Sie Einstellungen} von den eigentlichen 
121 Noten. Siehe auch @ref{Saving typing with variables and functions} 
122 und
123 @ref{Style sheets}.
124
125 @end itemize
126
127
128 @node Typesetting existing music
129 @subsection Typesetting existing music
130
131 Wenn Sie Musik aus einer fertigen Partitur kopieren (z. B. die 
132 LilyPond-Eingabe einer gedruckten Partitur):
133
134 @itemize @bullet
135
136 @item Schreiben Sie ein System ihrer Quelle nach dem anderen 
137 (aber trotzdem nur einen Takt pro Textzeile) und überprüfen 
138 Sie jedes System, nachdem Sie es fertig kopiert haben. Mit dem 
139 @code{showLastLength}-Befehl können Sie den Übersetzungsprozess 
140 beschleunigen. Siehe auch 
141 @ruser{Skipping corrected music}.
142
143 @item Definieren Sie @code{mBreak = @{ \break @}} und schreiben Sie
144  @code{\mBreak} in der Quelldatei immer dann, wenn im Manuskript 
145 ein Zeilenumbruch vorkommt. Das macht es einfacher, die gesetzte 
146 Zeile mit den ursprünglichen Noten zu vergleichen. Wenn Sie die 
147 Partitur fertig gestellt haben, könne Sie  @code{mBreak = @{ @}}, 
148 also leer definieren, um diese manuellen Zeilenumbrüche zu entfernen. 
149 Damit kann dann LilyPond selber entscheiden, wohin es passende 
150 Zeilenumbrüche platziert.
151
152 @end itemize
153
154
155 @node Large projects
156 @subsection Large projects
157
158 Besonders wenn Sie an größeren Projekten arbeiten, ist es 
159 unumgänglich, dass Sie ihre LilyPond-Dateien klar strukturieren.
160
161 @itemize @bullet
162
163 @item @strong{Verwenden Sie Variablen für jede Stimme}, innerhalb 
164 der Definition sollte so wenig Struktur wie möglich sein. Die 
165 Struktur des @code{\score}-Abschnittes verändert sich am ehesten, 
166 während die @code{violin}-Definition sich wahrscheinlich mit einer 
167 neuen Programmversion nicht verändern wird.
168
169 @example
170 violin = \relative c'' @{
171 g4 c'8. e16
172 @}
173 ...
174 \score @{
175   \new GrandStaff @{
176     \new Staff @{
177       \violin
178     @}
179   @}
180 @}
181 @end example
182
183 @item @strong{Trennen Sie Einstellungen von den Noten}.  Diese 
184 Empfehlung wurde schon im Abschnitt @ref{General suggestions} gegeben, 
185 aber für große Projekte ist es unumgänglich. Muss z. B. die 
186 Definition für @code{fdannp} verändert werden, so braucht 
187 man es nur einmal vorzunehmen und die Noten in der Geigenstimme, 
188 @code{violin}, bleiben unberührt.
189
190 @example
191 fdannp = _\markup@{
192   \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
193 violin = \relative c'' @{
194 g4\fdannp c'8. e16
195 @}
196 @end example
197
198 @end itemize
199
200
201 @node Saving typing with variables and functions
202 @subsection Saving typing with variables and functions
203
204 @cindex Variable
205 @cindex Bezeichner
206
207 Bis jetzt haben Sie immer etwa solche Noten gesehen:
208
209 @lilypond[quote,verbatim,ragged-right]
210 hornNotes = \relative c'' { c4 b dis c }
211 \score {
212   {
213     \hornNotes
214   }
215 }
216 @end lilypond
217
218 Das könnte auch nützlich in Minimal-Music sein:
219
220 @lilypond[quote,verbatim,ragged-right]
221 fragA = \relative c'' { a4 a8. b16 }
222 fragB = \relative c'' { a8. gis16 ees4 }
223 violin = \new Staff { \fragA \fragA \fragB \fragA }
224 \score {
225   {
226     \violin
227   }
228 }
229 @end lilypond
230
231 Sie können diese Bezeichner oder Variablen aber auch für 
232 (eigene) Einstellungen verwenden:
233
234 @lilypond[quote,verbatim,ragged-right]
235 dolce = \markup{ \italic \bold dolce }
236 padText = { \once \override TextScript #'padding = #5.0 }
237 fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
238 violin = \relative c'' {
239   \repeat volta 2 {
240     c4._\dolce b8 a8 g a b |
241     \padText
242     c4.^"hi there!" d8 e' f g d |
243     c,4.\fthenp b8 c4 c-. |
244   }
245 }
246 \score {
247   {
248     \violin
249   }
250 \layout{ragged-right=##t}
251 }
252 @end lilypond
253
254 Die Variablen haben in diesem Beispiel deutlich die 
255 Tipparbeit erleichtert. Aber es lohnt sich, sie zu 
256 einzusetzen, auch wenn man sie nur einmal anwendet, 
257 denn sie vereinfachen die Struktur. 
258 Hier ist das vorangegangene Beispiel ohne 
259 Variablen. Es ist sehr viel komplizierter zu lesen, 
260 besonders die letzte Zeile. 
261
262 @example
263 violin = \relative c'' @{
264   \repeat volta 2 @{
265     c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
266     \once \override TextScript #'padding = #5.0
267     c4.^"hi there!" d8 e' f g d |
268     c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
269       \hspace #0.1 \dynamic p @} b8 c4 c-. |
270   @}
271 @}
272 @end example
273
274 Bis jetzt wurde nur statische Substitution vorgestellt 
275 -- wenn LilyPond den Befehl @code{\padText} findet, wird 
276 er ersetzt durch durch unsere vorherige Definition (alles, 
277 was nach dem @code{padtext =} kommt).
278
279 LilyPond kennt aber auch nicht-statische Substitutionen (man 
280 kann sie sich als Funktionen vorstellen).
281
282 @lilypond[quote,verbatim,ragged-right]
283 padText =
284 #(define-music-function (parser location padding) (number?)
285   #{
286     \once \override TextScript #'padding = #$padding
287   #})
288
289 \relative c''' {
290   c4^"piu mosso" b a b
291   \padText #1.8
292   c4^"piu mosso" d e f
293   \padText #2.6
294   c4^"piu mosso" fis a g
295 }
296 @end lilypond
297
298 Die Benutzung von Variablen hilft auch, viele Schreibarbeit zu 
299 vermeiden, wenn die Eingabesyntax von LilyPond sich verändert 
300 (siehe auch @ref{Updating old files}). Wenn nur eine einzige 
301 Definition (etwa @code{\dolce}) für alle Dateien verwendet wird 
302 (vgl. @ref{Style sheets}), muss nur diese einzige Definition 
303 verändert werden, wenn sich die Syntax ändert. Alle Verwendungen 
304 des Befehles beziehen sich dann auf die neue Definition.
305
306 @node Style sheets
307 @subsection Style sheets
308
309 Die Ausgabe, die LilyPond erstellt, kann sehr stark modifiziert 
310 werden, siehe @ref{Tweaking output} für Einzelheiten. Aber wie 
311 kann man diese Änderungen auf eine ganze Serie von Dateien 
312 anwenden? Oder die Einstellungen von den Noten trennen? Das 
313 Verfahren ist ziemlich einfach.
314
315 Hier ist ein Beispiel. Es ist nicht schlimm, wenn Sie nicht auf 
316 Anhieb die Abschnitte mit den ganzen @code{#()} verstehen. Das 
317 wird im Kapitel @ref{Advanced tweaks with Scheme} erklärt.
318
319 @lilypond[quote,verbatim,ragged-right]
320 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
321   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
322 tempoMark = #(define-music-function (parser location markp) (string?)
323 #{
324   \once \override Score . RehearsalMark #'self-alignment-X = #left
325   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
326   \mark \markup { \bold $markp }
327 #})
328
329 \relative c'' {
330   \tempo 4=50
331   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
332   \tempoMark "Poco piu mosso"
333   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
334 }
335 @end lilypond
336
337 Es treten einige Probleme mit überlappenden Symbolen auf. Sie 
338 werden beseitigt mit den Tricks aus dem Kapitel @ref{Moving objects}.
339 Aber auch die @code{mpdolce} und @code{tempoMark}-Definitionen 
340 können verbessert werden. Sie produzieren das Ergebnis, das 
341 gewünscht ist, aber es wäre schön, sie auch in anderen Stücken 
342 verwenden zu können. Man könnte sie natürlich einfach kopieren 
343 und in die anderen Dateien einfügen, aber das ist lästig. Die 
344 Definitionen verbleiben auch in der Notendatei und diese @code{#()} 
345 sehen nicht wirklich schön aus. Sie sollen in einer anderen 
346 Datei versteckt werden:
347
348 @example
349 %%% speichern in einer Datei "definitions.ly"
350 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
351   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
352 tempoMark = #(define-music-function (parser location markp) (string?)
353 #@{
354   \once \override Score . RehearsalMark #'self-alignment-X = #left
355   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
356   \mark \markup @{ \bold $markp @}
357 #@})
358 @end example
359
360 Jetzt muss natürlich noch die Notendatei angepasst werden (gespeichert 
361 unter dem Namen @file{"music.ly"}).
362
363 @c  We have to do this awkward example/lilypond-non-verbatim
364 @c  because we can't do the \include stuff in the manual.
365
366 @example
367 \include "definitions.ly"
368
369 \relative c'' @{
370   \tempo 4=50
371   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
372   \once \override Score.RehearsalMark #'padding = #2.0
373   \tempoMark "Poco piu mosso"
374   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
375 @}
376 @end example
377
378 @lilypond[quote,ragged-right]
379 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
380   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
381 tempoMark = #(define-music-function (parser location markp) (string?)
382 #{
383   \once \override Score . RehearsalMark #'self-alignment-X = #left
384   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
385   \mark \markup { \bold $markp }
386 #})
387
388 \relative c'' {
389   \tempo 4=50
390   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
391   \once \override Score.RehearsalMark #'padding = #2.0
392   \tempoMark "Poco piu mosso"
393   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
394 }
395 @end lilypond
396
397 Das sieht schon besser aus, aber es sind noch einige Verbesserungen 
398 möglich. 
399 Das Glissando ist schwer zu sehen, also soll es etwas dicker erscheinen 
400 und dichter an den Notenköpfen gesetzt werden. Das Metronom-Zeichen 
401 soll über dem Schlüssel erscheinen, nicht über der ersten Note. Und 
402 schließlich kann unser Kompositionsprofessor @qq{C}-Taktangaben 
403 überhaupt nicht leiden, also 
404 müssen sie in @qq{4/4} verändert werden.
405
406 Diese Veränderungen sollten Sie aber nicht in der @file{music.ly}-Datei 
407 vornehmen. Ersetzen Sie die @file{definitions.ly}-Datei hiermit:
408
409 @example
410 %%%  definitions.ly
411 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
412   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
413 tempoMark = #(define-music-function (parser location markp) (string?)
414 #@{
415   \once \override Score . RehearsalMark #'self-alignment-X = #left
416   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
417   \mark \markup @{ \bold $markp @}
418 #@})
419
420 \layout@{
421   \context @{ \Score
422     \override MetronomeMark #'extra-offset = #'(-9 . 0)
423     \override MetronomeMark #'padding = #'3
424   @}
425   \context @{ \Staff
426     \override TimeSignature #'style = #'numbered
427   @}
428   \context @{ \Voice
429     \override Glissando #'thickness = #3
430     \override Glissando #'gap = #0.1
431   @}
432 @}
433 @end example
434
435 @lilypond[quote,ragged-right]
436 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
437   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
438 tempoMark = #(define-music-function (parser location markp) (string?)
439 #{
440   \once \override Score . RehearsalMark #'self-alignment-X = #left
441   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
442   \mark \markup { \bold $markp }
443 #})
444
445 \layout{
446   \context { \Score
447     \override MetronomeMark #'extra-offset = #'(-9 . 0)
448     \override MetronomeMark #'padding = #'3
449   }
450   \context { \Staff
451     \override TimeSignature #'style = #'numbered
452   }
453   \context { \Voice
454     \override Glissando #'thickness = #3
455     \override Glissando #'gap = #0.1
456   }
457 }
458
459 \relative c'' {
460   \tempo 4=50
461   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
462   \once \override Score.RehearsalMark #'padding = #2.0
463   \tempoMark "Poco piu mosso"
464   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
465 }
466 @end lilypond
467
468 Das sieht schon besser aus! Aber angenommen Sie möchten dieses 
469 Stück jetzt veröffentlichen. Ihr Kompositionsprofessor mag 
470 die @qq{C}-Taktangaben nicht, aber Sie finden sie irgendwie 
471 schöner. Also kopieren Sie die Datei @file{definitions.ly} nach 
472 @file{web-publish.ly} und verändern diese. Weil die Noten 
473 in einer PDF-Datei auf dem Bildschirm angezeigt werden sollen, 
474 bietet es sich auch an, die gesamte Ausgabe zu vergrößern.
475
476 @example
477 %%%  definitions.ly
478 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
479   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
480 tempoMark = #(define-music-function (parser location markp) (string?)
481 #@{
482   \once \override Score . RehearsalMark #'self-alignment-X = #left
483   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
484   \mark \markup @{ \bold $markp @}
485 #@})
486
487 #(set-global-staff-size 23)
488 \layout@{
489   \context @{ \Score
490     \override MetronomeMark #'extra-offset = #'(-9 . 0)
491     \override MetronomeMark #'padding = #'3
492   @}
493   \context @{ \Staff
494   @}
495   \context @{ \Voice
496     \override Glissando #'thickness = #3
497     \override Glissando #'gap = #0.1
498   @}
499 @}
500 @end example
501
502 @lilypond[quote,ragged-right]
503 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
504   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
505 tempoMark = #(define-music-function (parser location markp) (string?)
506 #{
507   \once \override Score . RehearsalMark #'self-alignment-X = #left
508   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
509   \mark \markup { \bold $markp }
510 #})
511
512 #(set-global-staff-size 23)
513 \layout{
514   \context { \Score
515     \override MetronomeMark #'extra-offset = #'(-9 . 0)
516     \override MetronomeMark #'padding = #'3
517   }
518   \context { \Voice
519     \override Glissando #'thickness = #3
520     \override Glissando #'gap = #0.1
521   }
522 }
523
524 \relative c'' {
525   \tempo 4=50
526   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
527   \once \override Score.RehearsalMark #'padding = #2.0
528   \tempoMark "Poco piu mosso"
529   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
530 }
531 @end lilypond
532
533 In der Notendatei muss jetzt nur noch @code{\include "definitions.ly"}
534 durch @code{\include "web-publish.ly"} ausgetauscht werden. 
535 Das könnte man natürlich noch weiter vereinfachen. Also 
536 eine Datei @file{definitions.ly}, die nur die Definitionen 
537 von @code{mpdolce} und @code{tempoMark} enthält, eine Datei 
538 @file{web-publish.ly}, die alle die Änderungen für den 
539 @code{\layout}-Abschnitt enthält und eine Datei @file{university.ly} 
540 für eine Ausgabe, die den Wünschen des Professors entspricht. 
541 Der Anfang der @file{music.ly}-Datei würde dann so aussehen:
542
543 @example
544 \include "definitions.ly"
545
546 %%%  Nur eine der beiden Zeilen auskommentieren!
547 \include "web-publish.ly"
548 %\include "university.ly"
549 @end example
550
551 Durch diese Herangehensweise kann auch bei der Erstellung 
552 von nur einer Ausgabeversion Arbeit gespart werden. Ich 
553 benutze ein halbes Dutzend verschiedener Stilvorlagen 
554 für meine Projekte. Jede Notationsdatei fängt an mit 
555 @code{\include "../global.ly"}, welches folgenden Inhalt hat:
556
557
558 @example
559 %%%   global.ly
560 \version "2.11.51"
561 #(ly:set-option 'point-and-click #f)
562 \include "../init/init-defs.ly"
563 \include "../init/init-layout.ly"
564 \include "../init/init-headers.ly"
565 \include "../init/init-paper.ly"
566 @end example
567
568
569 @node When things don't work
570 @section When things don't work
571
572 @menu
573 * Updating old files::          
574 * Troubleshooting (taking it all apart)::  
575 * Minimal examples::            
576 @end menu
577
578 @node Updating old files
579 @subsection Updating old files
580
581 Die Syntax von LilyPond verändert sich ab und zu. Wenn LilyPond 
582 besser wird, muss auch die Syntax (Eingabesprache) entsprechend 
583 angepasst werden. Teilweise machen diese Veränderungen die 
584 Eingabesprache einfacher lesbar, teilweise dienen sie dazu, neue 
585 Eigenschaften des Programmes benutzbar zu machen.
586
587 LilyPond stellt ein Programm bereit, das Aktualisierungen 
588 vereinfacht: @code{convert-ly}. Einzelheiten zur Programmbenutzung 
589 finden sich in @rprogram{Updating files with convert-ly}.
590
591 Leider kann @code{convert-ly} nicht alle Veränderungen der Syntax
592 berücksichtigen. Hier werden einfache @qq{Suchen und
593 Ersetzen}-Veränderungen vorgenommen (wie etwa @code{raggedright} zu
594 becoming @code{ragged-right}), aber einige Veränderungen sind zu
595 kompliziert. Die Syntax-Veränderungen, die das Programm nicht
596 berücksichtigt, sind im Kapitel @rprogram{Updating files with
597 convert-ly} aufgelistet.
598
599 Zum Beispiel wurden in LilyPond 2.4 und früheren Versionen 
600 Akzente und Umlaute mit LaTeX-Befehlen eingegeben, ein 
601 @qq{No\"el} etwa ergäbe das französische Wort für Weihnachten.
602 In LilyPond 2.6 und höher müssen diese Sonderzeichen direkt 
603 als utf-8-Zeichen eingegeben werden, in diesem Fall also @qq{ë}. 
604 @code{convert-ly} kann nicht alle dieser LaTeX-Befehle 
605 verändern, das muss manuell vorgenommen werden.
606
607
608 @node Troubleshooting (taking it all apart)
609 @subsection Troubleshooting (taking it all apart)
610
611 Früher oder später werden Sie in die Lage kommen, 
612 dass LilyPond Ihre Datei nicht kompilieren will. Die 
613 Information, die LilyPond während der Übersetzung 
614 gibt, können Ihnen helfen, den Fehler zu finden, aber 
615 in vielen Fällen müssen Sie nach der Fehlerquelle 
616 auf die Suche gehen.
617
618 Die besten Hilfsmittel sind in diesem Fall das Zeilen- 
619 und Blockkommentar (angezeigt durch @code{%} bzw. 
620 @code{%@{ ... %@}}). Wenn Sie nicht bestimmen können, 
621 wo sich das Problem befindet, beginnen Sie damit, große 
622 Teile des Quelltextes auszukommentieren. Nachdem Sie 
623 einen Teil auskommentiert haben, versuchen Sie, die Datei 
624 erneut zu übersetzen. Wenn es jetzt funktioniert, muss 
625 sich das Problem innerhalb der Kommentare befinden. 
626 Wenn es nicht funktioniert, müssen Sie weitere Teile 
627 auskommentieren bis sie eine Version haben, die funktioniert.
628
629 In Extremfällen bleibt nur noch solch ein Beispiel übrig:
630
631 @example
632 \score @{
633   <<
634     % \melody
635     % \harmony
636     % \bass
637   >>
638   \layout@{@}
639 @}
640 @end example
641
642 @noindent
643 (also eine Datei ohne Noten).
644
645 Geben Sie nicht auf, wenn das vorkommen sollte. Nehmen 
646 Sie das Kommentarzeichen von einem Teil wieder weg, sagen 
647 wir der Bassstimme, und schauen Sie, ob es funktioniert. 
648 Wenn nicht, dann kommentieren Sie die gesamte Bassstimme 
649 aus, aber nicht den @code{\bass}-Befehl in dem 
650  @code{\score}-Abschnitt:
651
652 @example
653 bass = \relative c' @{
654 %@{
655   c4 c c c
656   d d d d
657 %@}
658 @}
659 @end example
660
661 Jetzt beginnen Sie damit, langsam Stück für Stück der 
662 Bassstimme wieder hineinzunehmen, bis Sie die problematische 
663 Zeile finden.
664
665 Eine andere nützliche Technik zur Problemlösung ist es, 
666 @ref{Minimal examples} zu konstruieren.
667
668
669 @node Minimal examples
670 @subsection Minimal examples
671
672 Ein Minimalbeispiel ist eine Beispieldatei, die so klein wie 
673 möglich ist. Diese Beispiele sind sehr viel einfacher zu 
674 verstehen als die langen Originaldateien. Minimalbeispiele 
675 werden benutzt, um
676
677
678 @itemize
679 @item Fehlerberichte zu erstellen,
680 @item eine Hilfeanfrage an die E-Mail-Liste zu schicken,
681 @item Ein Beispiel zur @uref{http://lsr@/.dsi@/.unimi@/.it/,LilyPond
682 Schnipselsammlung}hinzuzufügen.
683 @end itemize
684
685 Um ein Beispiel zu konstruieren, das so klein wie möglich ist, 
686 gibt es eine einfache Regel: Alles nicht Notwendige entfernen. 
687 Wenn Sie unnötige Teile einer Datei entfernen, bietet es sich an, 
688 sie auszukommentieren und nicht gleich zu löschen. Auf diese Weise 
689 können Sie eine Zeile leicht wieder mit aufnehmen, sollten Sie sie 
690 doch brauchen, anstatt sie von Anfang an neu zu schreiben.
691
692 Es gibt zwei Ausnahmen dieser @qq{So klein wie möglich}-Regel:
693
694 @itemize
695 @item Fügen Sie immer einen @code{\version}Befehl ein.
696 @item Wenn es möglich ist, benutzen Sie @code{\paper@{ ragged-right = ##t @}}
697 am Beginn des Beispiels.
698 @end itemize
699
700 Der Sinn der Minimalbeispiele ist, dass sie einfach lesbar sind:
701
702 @itemize
703 @item Vermeiden Sie es, komplizierte Noten, Schlüssel oder Taktangaben 
704 zu verwenden, es sei denn, Sie wollen genau an diesen Elementen 
705 etwas demonstrieren.
706 @item Benutzen Sie keine @code{\override}-Befehle, wenn sie nicht der 
707 Zweck des Beispieles sind.
708 @end itemize
709
710
711 @node Scores and parts
712 @section Scores and parts
713
714 Orchesternoten werden alle zweimal gesetzt. Erstens als Stimmen für 
715 die Musiker, und dann als große Partitur für den Dirigenten. Mit 
716 Variablen 
717 kann hier doppelte Arbeit erspart werden. Die Musik muss nur einmal 
718 eingegeben werden und wird in einer Variable abgelegt. Der Inhalt 
719 dieser 
720 Variable wird dann benutzt, um sowohl die Stimme als auch die Partitur 
721 zu erstellen.
722
723 Es bietet sich an, die Noten in eigenen Dateien zu speichern. Sagen wir 
724 beispielsweise, dass in der Datei @file{Horn-Noten.ly} die folgenden 
725 Noten eines Duetts für Horn und Fagott gespeichert sind:
726
727 @example
728 HornNoten = \relative c @{
729   \time 2/4
730   r4 f8 a cis4 f e d
731 @}
732 @end example
733
734 @noindent
735 Daraus wird dann eine eigene Stimme gemacht, indem folgende Datei 
736 erstellt 
737 wird:
738
739 @example
740 \include "Horn-Noten.ly"
741 \header @{
742   instrument = "Horn in F"
743 @}
744
745 @{
746  \transpose f c' \HornNoten
747 @}
748 @end example
749
750 Die Zeile
751
752 @example
753 \include "Horn-Noten.ly"
754 @end example
755
756 @noindent
757 setzt den Inhalt der Datei @file{Horn-Noten.ly} an die Stelle des 
758 Befehls in die aktuelle Datei. Damit besteht also eine Definition 
759 für @code{HornNoten}, so dass die Variable verwendet werden kann. 
760 Der Befehl @code{\transpose f@tie{}c'} zeigt an, dass das Argument, 
761 also @code{\HornNoten}, um eine Quinte nach oben transponiert wird.
762 Klingendes @q{f} wird also als @code{c'} notiert. Das entspricht 
763 der Notation eines Waldhorn in F. Die Transposition zeigt die folgende 
764 Ausgabe:
765
766 @lilypond[quote,ragged-right]
767 \transpose f c' \relative c {
768   \time 2/4
769   r4 f8 a cis4 f e d
770 }
771 @end lilypond
772
773 In Musik für mehrere Instrumente kommt es oft vor, dass eine Stimme 
774 für mehrere Takte nicht spielt. Das wird mit einer besonderen Pause 
775 angezeigt, dem Pausenzeichen für mehrere Takte (engl. multi-measure 
776 rest). Sie wird mit dem @emph{großen} Buchstaben @samp{R} eingegeben, 
777 gefolgt von einer Dauer (@code{1}@tie{}für eine Ganze, @code{2}@tie{}
778 für eine Halbe usw.). Indem man die Dauer multipliziert, können längere  
779 Pausen erstellt werden. Z. B. dauert diese Pause drei Takte eines 
780 2/4-Taktes:
781
782 @example
783 R2*3
784 @end example
785
786 Wenn die Stimme gedruckt wird, müssen diese Pausen zusammengezogen 
787 werden. 
788 Das wird durch eine Variable erreicht:
789
790 @example
791 \set Score.skipBars = ##t
792 @end example
793
794 @noindent
795 Dieser Befehl setzt die Eigenschaft des @code{skipBars} (@qq{überspringe 
796 Takte}) auf wahr (@code{##t}).  Wenn diese Option und die Pause 
797 zu der Musik des Beispiels gesetzt wird, erhält man folgendes Ergebnis:
798
799 @lilypond[quote,ragged-right]
800 \transpose f c' \relative c {
801   \time 2/4
802   \set Score.skipBars = ##t
803   R2*3
804   r4 f8 a cis4 f e d
805 }
806 @end lilypond
807
808 Die Partitur wird erstellt, indem alle Noten zusammengesetzt werden. 
809 Angenommen, die andere Stimme trägt den Namen @code{FagottNoten} 
810  und ist in der Datei @file{Fagott-Noten.ly} gespeichert. Die
811 Partitur sieht dann folgendermaßen aus:
812
813 @example
814 \include "Fagott-Noten.ly"
815 \include "Horn-Noten.ly"
816
817 <<
818   \new Staff \HornNoten
819   \new Staff \FagottNoten
820 >>
821 @end example
822
823 @noindent
824 Und mit LilyPond übersetzt:
825
826 @lilypond[quote,ragged-right]
827 \relative c <<
828   \new Staff {
829     \time 2/4 R2*3
830     r4 f8 a cis4 f e d
831   }
832   \new Staff {
833     \clef bass
834     r4 d,8 f | gis4 c | b bes |
835     a8 e f4 | g d | gis f
836   }
837 >>
838 @end lilypond
839
840 Tiefer gehende Information darüber, wie Stimmauszüge und Partituren 
841 erstellt werden, finden sich im Notationshandbuch, siehe 
842 @ref{Scores and parts}.
843
844 Das Setzen der Variablen, die das Verhalten von LilyPond beeinflussen 
845 (@q{properties}), wird im Kapitel
846 @ref{Modifying context properties} besprochen.
847