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