1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.tely
4 Translation of GIT committish: 3121682025660b6c85fbf3f22bb9cd8396699ad1
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
12 @node Working on LilyPond projects
13 @chapter Working on LilyPond projects
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
23 * Suggestions for writing LilyPond files::
24 * When things don't work::
29 @node Suggestions for writing LilyPond files
30 @section Suggestions for writing LilyPond files
32 Jetzt sind Sie so weit, größere Stücke mit LilyPond zu schreiben --
34 nur die kleinen Beispiele aus der Übung, sondern ganze Stücke.
35 Aber wie geht man das am besten an?
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.
43 @item Was ist, wenn Sie einen Fehler machen? Die Struktur einer
44 LilyPond-Datei kann es erleichtern (oder erschweren), bestimmte
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 vesteht man auf den ersten Blick,
50 über anderen muss man eine Stunde grübeln, um die Struktur zu ahnen.
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ändernungen
55 können automatisch durch @code{convert-ly} gelöst werden, aber
56 bestimmte Änderungen brauchen Hanbarbeit. LilyPond-Dateien können
57 strukturiert werden, damit sie einfacher aktualisierbar sind.
61 * General suggestions::
62 * Typesetting existing music::
64 * Saving typing with variables and functions::
69 @node General suggestions
70 @subsection General suggestions
72 Hier einige Vorschläge, wie Sie Probleme vermeiden oder lösen können:
75 @item @strong{Schreiben Sie immer mit @code{\version} die
77 in jede Datei}. Beachten Sie, dass in allen Vorlagen die Versionsnummer
78 @code{\version "2.11.38"} eingetragen ist. Es empfielt 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
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
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.
94 @item @strong{Ein Takt pro Textzeile}. Wenn irgendetwas kompliziertes
95 vorkommt, entweder in der Musik selber oder in der Anpassung der
97 empfielt 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.
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
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.
111 @item @strong{Schreiben Sie Klammern mit Einrückung}. Viele
112 Probleme entstehen durch ungerade Anzahl von @code{@{} and
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.
121 @item @strong{Trennen Sie Einstellungen} von den eigentlichen
122 Noten. Siehe auch @ruser{Saving typing with identifiers and functions}
124 @ruser{Style sheets}.
129 @node Typesetting existing music
130 @subsection Typesetting existing music
132 Wenn Sie Musik aus einer fertigen Partitur kopieren (z. B. die
133 LilyPond-Eingabe einer gedruckten Partitur):
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}.
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 plaziert.
157 @subsection Large projects
159 Besonders wenn Sie an größeren Projekten arbeiten, ist es
160 unumgänglich, dass Sie ihre LilyPond-Dateien klar strukturieren.
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.
171 violin = \relative c'' @{
184 @item @strong{Trennen Sie Einstellungen von den Noten}. Diese
185 Empfehlung wurde schon im Abschnitt @ruser{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.
193 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
194 violin = \relative c'' @{
202 @node Saving typing with variables and functions
203 @subsection Saving typing with variables and functions
208 Bis jetzt haben Sie immer etwa solche Noten gesehen:
210 @lilypond[quote,verbatim,ragged-right]
211 hornNotes = \relative c'' { c4 b dis c }
219 Das könnte auch nützlich in Minimal-Music sein:
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 }
232 Sie können diese Bezeichner oder Variablen aber auch für
233 (eigene) Einstellungen verwenden:
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'' {
241 c4._\dolce b8 a8 g a b |
243 c4.^"hi there!" d8 e' f g d |
244 c,4.\fthenp b8 c4 c-. |
251 \layout{ragged-right=##t}
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.
264 violin = \relative c'' @{
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-. |
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).
280 LilyPond kennt aber auch nicht-statische Substitutionen (man
281 kann sie sich als Funktionen vorstellen).
283 @lilypond[quote,verbatim,ragged-right]
285 #(define-music-function (parser location padding) (number?)
287 \once \override TextScript #'padding = #$padding
295 c4^"piu mosso" fis a g
299 Die Benutzung von Variablen hilft auch, viele Schreibarbeit zu
300 vermeiden, wenn die Eingabesyntax von LilyPond sich verändert
301 (siehe auch @ruser{Updating old files}). Wenn nur eine einzige
302 Definition (etwa @code{\dolce}) für alle Dateien verwendet wird
303 (vgl. @ruser{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.
308 @subsection Style sheets
310 Die Ausgabe, die LilyPond erstellt, kann sehr start modifiziert
311 werden, siehe @ruser{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.
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 @ruser{Advanced tweaks with Scheme} erklärt.
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?)
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 }
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
338 Es treten einige Probleme mit überlappenden Symbolen auf. Sie
339 werden beseitigt mit den Tricks aus dem Kapitel @ruser{Moving objects}.
340 Aber auch die @code{mpdolce} und @code{tempoMark}-Defintiionen
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 Defintionen verbleiben auch in der Notendatei und diese @code{#()}
346 sehen nicht wirklich schön aus. Sie sollen in einer anderen
347 Datei versteckt werden:
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?)
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 @}
361 Jetzt muss natürlich noch die Notendatei angepasst werden (gespeichert
362 unter dem Namen @file{"music.ly"}).
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.
368 \include "definitions.ly"
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
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?)
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 }
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
398 Das sieht schon besser aus, aber es sind noch einige Verbesserungen
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.
407 Diese Veränderungen sollten Sie aber nicht in der @file{music.ly}-Datei
408 vornehmen. Ersetzen Sie die @file{definitions.ly}-Datei hiermit:
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?)
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 @}
423 \override MetronomeMark #'extra-offset = #'(-9 . 0)
424 \override MetronomeMark #'padding = #'3
427 \override TimeSignature #'style = #'numbered
430 \override Glissando #'thickness = #3
431 \override Glissando #'gap = #0.1
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?)
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 }
448 \override MetronomeMark #'extra-offset = #'(-9 . 0)
449 \override MetronomeMark #'padding = #'3
452 \override TimeSignature #'style = #'numbered
455 \override Glissando #'thickness = #3
456 \override Glissando #'gap = #0.1
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
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änderen diese. Weil die Noten
474 in einer PDF-Datei auf dem Bilschirm angezeigt werden sollen,
475 bietet es sich auch an, die gesamte Ausgabe zu vergrößern.
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?)
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 @}
488 #(set-global-staff-size 23)
491 \override MetronomeMark #'extra-offset = #'(-9 . 0)
492 \override MetronomeMark #'padding = #'3
497 \override Glissando #'thickness = #3
498 \override Glissando #'gap = #0.1
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?)
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 }
513 #(set-global-staff-size 23)
516 \override MetronomeMark #'extra-offset = #'(-9 . 0)
517 \override MetronomeMark #'padding = #'3
520 \override Glissando #'thickness = #3
521 \override Glissando #'gap = #0.1
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
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:
545 \include "definitions.ly"
547 %%% Nur eine der beiden Zeilen auskommentieren!
548 \include "web-publish.ly"
549 %\include "university.ly"
552 Durch diese Herangehensweise kann auch bei der Erstellung
553 von nur einer Ausgabeversion Arbeit gespart werden. Ich
554 benutze ein halbes Dutzent verschidener Stilvorlagen
555 für meine Projekte. Jede Notationsdatei fängt an mit
556 @code{\include "../global.ly"}, welches folgenden Inhalt hat:
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"
570 @node When things don't work
571 @section When things don't work
574 * Updating old files::
575 * Troubleshooting (taking it all apart)::
579 @node Updating old files
580 @subsection Updating old files
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.
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}.
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.
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.
609 @node Troubleshooting (taking it all apart)
610 @subsection Troubleshooting (taking it all apart)
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
619 Die besten Hilfmittel 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.
630 In Extremfällen bleibt nur noch solch ein Beispiel übrig:
644 (also eine Datei ohne Noten).
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:
654 bass = \relative c' @{
662 Jetzt beginnen Sie damit, langsam Stück für Stück der
663 Bassstimme wieder hineinzunehmen, bis Sie die problematische
666 Eine andere nützliche Technik zur Problemlösung ist es,
667 @ruser{Minimal examples} zu konstruieren.
670 @node Minimal examples
671 @subsection Minimal examples
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
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.
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.
693 Es gibt zwei Ausnahmen dieser @qq{So klein wie möglich}-Regel:
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.
701 Der Sinn der Minimalbeispiele ist, dass sie einfach lesbar sind:
704 @item Vermeiden Sie es, komplizierte Noten, Schlüssel oder Taktangaben
705 zu verwenden, es sei denn, Sie wollen genau an diesen Elementen
707 @item Benutzen Sie keine @code{\override}-Befehle, wenn sie nicht der
708 Zweck des Beispieles sind.
712 @node Scores and parts
713 @section Scores and parts
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
718 kann hier doppelte Arbeit erspart werden. Die Musik muss nur einmal
719 eingegeben werden und wird in einer Variable abgelegt. Der Inhalt
721 Variable wird dann benutzt, um sowohl die Stimme als auch die Partitur
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:
729 HornNoten = \relative c @{
736 Daraus wird dann eine eigene Stimme gemacht, indem folgende Datei
741 \include "Horn-Noten.ly"
743 instrument = "Horn in F"
747 \transpose f c' \HornNoten
754 \include "Horn-Noten.ly"
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
767 @lilypond[quote,ragged-right]
768 \transpose f c' \relative c {
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
787 Wenn die Stimme gedruckt wird, müssen diese Pausen zusammengezogen
789 Das wird durch eine Variable erreicht:
792 \set Score.skipBars = ##t
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:
800 @lilypond[quote,ragged-right]
801 \transpose f c' \relative c {
803 \set Score.skipBars = ##t
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:
815 \include "Fagott-Noten.ly"
816 \include "Horn-Noten.ly"
819 \new Staff \HornNoten
820 \new Staff \FagottNoten
825 Und mit LilyPond übersetzt:
827 @lilypond[quote,ragged-right]
835 r4 d,8 f | gis4 c | b bes |
836 a8 e f4 | g d | gis f
841 Tiefer gehende Information darüber, wie Stimmauszüge und Partituren
842 erstellt werden, finden sich im Notationshandbuch, siehe
843 @ruser{Orchestral music}.
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.