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