1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.tely
4 Translation of GIT committish: 550152ed5d5015d13abf2af83b2e040f996a66a4
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 input files::
24 * When things don't work::
29 @node Suggestions for writing LilyPond input files
30 @section Suggestions for writing LilyPond input 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 versteht 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ä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.
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.61"} 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
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. ei einfachen Stücken reicht es vielleicht
90 ein- oder zweimal, in sehr komplexer Musik sollte man sie vielleicht
91 in jeden Takt einfügen.
93 @item @strong{Ein Takt pro Textzeile}. Wenn irgendetwas kompliziertes
94 vorkommt, entweder in der Musik selber oder in der Anpassung der
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.
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
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.
110 @item @strong{Schreiben Sie Klammern mit Einrückung}. Viele
111 Probleme entstehen durch ungerade Anzahl von @code{@{} and
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.
120 @item @strong{Trennen Sie Einstellungen} von den eigentlichen
121 Noten. Siehe auch @ref{Saving typing with variables and functions}
128 @node Typesetting existing music
129 @subsection Typesetting existing music
131 Wenn Sie Musik aus einer fertigen Partitur kopieren (z. B. die
132 LilyPond-Eingabe einer gedruckten Partitur):
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}.
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.
156 @subsection Large projects
158 Besonders wenn Sie an größeren Projekten arbeiten, ist es
159 unumgänglich, dass Sie ihre LilyPond-Dateien klar strukturieren.
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{violine}-Definition sich wahrscheinlich mit einer
167 neuen Programmversion nicht verändern wird.
170 violine = \relative c'' @{
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.
192 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
193 violin = \relative c'' @{
201 @node Saving typing with variables and functions
202 @subsection Saving typing with variables and functions
207 Bis jetzt haben Sie immer etwa solche Noten gesehen:
209 @lilypond[quote,verbatim,ragged-right]
210 hornNotes = \relative c'' { c4 b dis c }
218 Das könnte auch nützlich in Minimal-Music sein:
220 @lilypond[quote,verbatim,ragged-right]
221 fragmentA = \relative c'' { a4 a8. b16 }
222 fragmentB = \relative c'' { a8. gis16 ees4 }
223 violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
231 Sie können diese Bezeichner oder Variablen aber auch für
232 (eigene) Einstellungen verwenden:
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'' {
240 c4._\dolce b8 a8 g a b |
242 c4.^"hi there!" d8 e' f g d |
243 c,4.\fthenp b8 c4 c-. |
250 \layout{ragged-right=##t}
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.
263 violin = \relative c'' @{
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-. |
274 @c TODO Replace the following with a better example -td
275 @c Skylining handles this correctly without padText
277 Bis jetzt wurde nur statische Substitution vorgestellt
278 -- wenn LilyPond den Befehl @code{\padText} findet, wird
279 er ersetzt durch durch unsere vorherige Definition (alles,
280 was nach dem @code{padtext =} kommt).
282 LilyPond kennt aber auch nicht-statische Substitutionen (man
283 kann sie sich als Funktionen vorstellen).
285 @lilypond[quote,verbatim,ragged-right]
287 #(define-music-function (parser location padding) (number?)
289 \once \override TextScript #'padding = #$padding
297 c4^"piu mosso" fis a g
301 Die Benutzung von Variablen hilft auch, viele Schreibarbeit zu
302 vermeiden, wenn die Eingabesyntax von LilyPond sich verändert
303 (siehe auch @ref{Updating old files}). Wenn nur eine einzige
304 Definition (etwa @code{\dolce}) für alle Dateien verwendet wird
305 (vgl. @ref{Style sheets}), muss nur diese einzige Definition
306 verändert werden, wenn sich die Syntax ändert. Alle Verwendungen
307 des Befehles beziehen sich dann auf die neue Definition.
310 @subsection Style sheets
312 Die Ausgabe, die LilyPond erstellt, kann sehr stark modifiziert
313 werden, siehe @ref{Tweaking output} für Einzelheiten. Aber wie
314 kann man diese Änderungen auf eine ganze Serie von Dateien
315 anwenden? Oder die Einstellungen von den Noten trennen? Das
316 Verfahren ist ziemlich einfach.
318 Hier ist ein Beispiel. Es ist nicht schlimm, wenn Sie nicht auf
319 Anhieb die Abschnitte mit den ganzen @code{#()} verstehen. Das
320 wird im Kapitel @ref{Advanced tweaks with Scheme} erklärt.
322 @lilypond[quote,verbatim,ragged-right]
323 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
324 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
325 tempoMark = #(define-music-function (parser location markp) (string?)
327 \once \override Score . RehearsalMark #'self-alignment-X = #left
328 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
329 \mark \markup { \bold $markp }
334 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
335 \tempoMark "Poco piu mosso"
336 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
340 Es treten einige Probleme mit überlappenden Symbolen auf. Sie
341 werden beseitigt mit den Tricks aus dem Kapitel @ref{Moving objects}.
342 Aber auch die @code{mpdolce} und @code{tempoMark}-Definitionen
343 können verbessert werden. Sie produzieren das Ergebnis, das
344 gewünscht ist, aber es wäre schön, sie auch in anderen Stücken
345 verwenden zu können. Man könnte sie natürlich einfach kopieren
346 und in die anderen Dateien einfügen, aber das ist lästig. Die
347 Definitionen verbleiben auch in der Notendatei und diese @code{#()}
348 sehen nicht wirklich schön aus. Sie sollen in einer anderen
349 Datei versteckt werden:
352 %%% speichern in einer Datei "definitions.ly"
353 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
354 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
355 tempoMark = #(define-music-function (parser location markp) (string?)
357 \once \override Score . RehearsalMark #'self-alignment-X = #left
358 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
359 \mark \markup @{ \bold $markp @}
363 Jetzt muss natürlich noch die Notendatei angepasst werden (gespeichert
364 unter dem Namen @file{"music.ly"}).
366 @c We have to do this awkward example/lilypond-non-verbatim
367 @c because we can't do the \include stuff in the manual.
370 \include "definitions.ly"
374 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
375 \once \override Score.RehearsalMark #'padding = #2.0
376 \tempoMark "Poco piu mosso"
377 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
381 @lilypond[quote,ragged-right]
382 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
383 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
384 tempoMark = #(define-music-function (parser location markp) (string?)
386 \once \override Score . RehearsalMark #'self-alignment-X = #left
387 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
388 \mark \markup { \bold $markp }
393 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
394 \once \override Score.RehearsalMark #'padding = #2.0
395 \tempoMark "Poco piu mosso"
396 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
400 Das sieht schon besser aus, aber es sind noch einige Verbesserungen
402 Das Glissando ist schwer zu sehen, also soll es etwas dicker erscheinen
403 und dichter an den Notenköpfen gesetzt werden. Das Metronom-Zeichen
404 soll über dem Schlüssel erscheinen, nicht über der ersten Note. Und
405 schließlich kann unser Kompositionsprofessor @qq{C}-Taktangaben
406 überhaupt nicht leiden, also
407 müssen sie in @qq{4/4} verändert werden.
409 Diese Veränderungen sollten Sie aber nicht in der @file{music.ly}-Datei
410 vornehmen. Ersetzen Sie die @file{definitions.ly}-Datei hiermit:
414 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
415 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
416 tempoMark = #(define-music-function (parser location markp) (string?)
418 \once \override Score . RehearsalMark #'self-alignment-X = #left
419 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
420 \mark \markup @{ \bold $markp @}
425 \override MetronomeMark #'extra-offset = #'(-9 . 0)
426 \override MetronomeMark #'padding = #'3
429 \override TimeSignature #'style = #'numbered
432 \override Glissando #'thickness = #3
433 \override Glissando #'gap = #0.1
438 @lilypond[quote,ragged-right]
439 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
440 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
441 tempoMark = #(define-music-function (parser location markp) (string?)
443 \once \override Score . RehearsalMark #'self-alignment-X = #left
444 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
445 \mark \markup { \bold $markp }
450 \override MetronomeMark #'extra-offset = #'(-9 . 0)
451 \override MetronomeMark #'padding = #'3
454 \override TimeSignature #'style = #'numbered
457 \override Glissando #'thickness = #3
458 \override Glissando #'gap = #0.1
464 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
465 \once \override Score.RehearsalMark #'padding = #2.0
466 \tempoMark "Poco piu mosso"
467 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
471 Das sieht schon besser aus! Aber angenommen Sie möchten dieses
472 Stück jetzt veröffentlichen. Ihr Kompositionsprofessor mag
473 die @qq{C}-Taktangaben nicht, aber Sie finden sie irgendwie
474 schöner. Also kopieren Sie die Datei @file{definitions.ly} nach
475 @file{web-publish.ly} und verändern diese. Weil die Noten
476 in einer PDF-Datei auf dem Bildschirm angezeigt werden sollen,
477 bietet es sich auch an, die gesamte Ausgabe zu vergrößern.
481 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
482 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
483 tempoMark = #(define-music-function (parser location markp) (string?)
485 \once \override Score . RehearsalMark #'self-alignment-X = #left
486 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
487 \mark \markup @{ \bold $markp @}
490 #(set-global-staff-size 23)
493 \override MetronomeMark #'extra-offset = #'(-9 . 0)
494 \override MetronomeMark #'padding = #'3
499 \override Glissando #'thickness = #3
500 \override Glissando #'gap = #0.1
505 @lilypond[quote,ragged-right]
506 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
507 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
508 tempoMark = #(define-music-function (parser location markp) (string?)
510 \once \override Score . RehearsalMark #'self-alignment-X = #left
511 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
512 \mark \markup { \bold $markp }
515 #(set-global-staff-size 23)
518 \override MetronomeMark #'extra-offset = #'(-9 . 0)
519 \override MetronomeMark #'padding = #'3
522 \override Glissando #'thickness = #3
523 \override Glissando #'gap = #0.1
529 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
530 \once \override Score.RehearsalMark #'padding = #2.0
531 \tempoMark "Poco piu mosso"
532 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
536 In der Notendatei muss jetzt nur noch @code{\include "definitions.ly"}
537 durch @code{\include "web-publish.ly"} ausgetauscht werden.
538 Das könnte man natürlich noch weiter vereinfachen. Also
539 eine Datei @file{definitions.ly}, die nur die Definitionen
540 von @code{mpdolce} und @code{tempoMark} enthält, eine Datei
541 @file{web-publish.ly}, die alle die Änderungen für den
542 @code{\layout}-Abschnitt enthält und eine Datei @file{university.ly}
543 für eine Ausgabe, die den Wünschen des Professors entspricht.
544 Der Anfang der @file{music.ly}-Datei würde dann so aussehen:
547 \include "definitions.ly"
549 %%% Nur eine der beiden Zeilen auskommentieren!
550 \include "web-publish.ly"
551 %\include "university.ly"
554 Durch diese Herangehensweise kann auch bei der Erstellung
555 von nur einer Ausgabeversion Arbeit gespart werden. Ich
556 benutze ein halbes Dutzend verschiedener Stilvorlagen
557 für meine Projekte. Jede Notationsdatei fängt an mit
558 @code{\include "../global.ly"}, welches folgenden Inhalt hat:
564 #(ly:set-option 'point-and-click #f)
565 \include "../init/init-defs.ly"
566 \include "../init/init-layout.ly"
567 \include "../init/init-headers.ly"
568 \include "../init/init-paper.ly"
572 @node When things don't work
573 @section When things don't work
576 * Updating old files::
577 * Troubleshooting (taking it all apart)::
581 @node Updating old files
582 @subsection Updating old files
584 Die Syntax von LilyPond verändert sich ab und zu. Wenn LilyPond
585 besser wird, muss auch die Syntax (Eingabesprache) entsprechend
586 angepasst werden. Teilweise machen diese Veränderungen die
587 Eingabesprache einfacher lesbar, teilweise dienen sie dazu, neue
588 Eigenschaften des Programmes benutzbar zu machen.
590 LilyPond stellt ein Programm bereit, das Aktualisierungen
591 vereinfacht: @code{convert-ly}. Einzelheiten zur Programmbenutzung
592 finden sich in @rprogram{Updating files with convert-ly}.
594 Leider kann @code{convert-ly} nicht alle Veränderungen der Syntax
595 berücksichtigen. Hier werden einfache @qq{Suchen und
596 Ersetzen}-Veränderungen vorgenommen (wie etwa @code{raggedright} zu
597 @code{ragged-right}), aber einige Veränderungen sind zu
598 kompliziert. Die Syntax-Veränderungen, die das Programm nicht
599 berücksichtigt, sind im Kapitel @rprogram{Updating files with
600 convert-ly} aufgelistet.
602 Zum Beispiel wurden in LilyPond 2.4 und früheren Versionen
603 Akzente und Umlaute mit LaTeX-Befehlen eingegeben, ein
604 @qq{No\"el} etwa ergäbe das französische Wort für Weihnachten.
605 In LilyPond 2.6 und höher müssen diese Sonderzeichen direkt
606 als utf-8-Zeichen eingegeben werden, in diesem Fall also @qq{ë}.
607 @code{convert-ly} kann nicht alle dieser LaTeX-Befehle
608 verändern, das muss manuell vorgenommen werden.
611 @node Troubleshooting (taking it all apart)
612 @subsection Troubleshooting (taking it all apart)
614 Früher oder später werden Sie in die Lage kommen,
615 dass LilyPond Ihre Datei nicht kompilieren will. Die
616 Information, die LilyPond während der Übersetzung
617 gibt, können Ihnen helfen, den Fehler zu finden, aber
618 in vielen Fällen müssen Sie nach der Fehlerquelle
621 Die besten Hilfsmittel sind in diesem Fall das Zeilen-
622 und Blockkommentar (angezeigt durch @code{%} bzw.
623 @code{%@{ ... %@}}). Wenn Sie nicht bestimmen können,
624 wo sich das Problem befindet, beginnen Sie damit, große
625 Teile des Quelltextes auszukommentieren. Nachdem Sie
626 einen Teil auskommentiert haben, versuchen Sie, die Datei
627 erneut zu übersetzen. Wenn es jetzt funktioniert, muss
628 sich das Problem innerhalb der Kommentare befinden.
629 Wenn es nicht funktioniert, müssen Sie weitere Teile
630 auskommentieren bis sie eine Version haben, die funktioniert.
632 In Extremfällen bleibt nur noch solch ein Beispiel übrig:
646 (also eine Datei ohne Noten).
648 Geben Sie nicht auf, wenn das vorkommen sollte. Nehmen
649 Sie das Kommentarzeichen von einem Teil wieder weg, sagen
650 wir der Bassstimme, und schauen Sie, ob es funktioniert.
651 Wenn nicht, dann kommentieren Sie die gesamte Bassstimme
652 aus, aber nicht den @code{\bass}-Befehl in dem
653 @code{\score}-Abschnitt:
656 bass = \relative c' @{
664 Jetzt beginnen Sie damit, langsam Stück für Stück der
665 Bassstimme wieder hineinzunehmen, bis Sie die problematische
668 Eine andere nützliche Technik zur Problemlösung ist es,
669 @ref{Minimal examples} zu konstruieren.
672 @node Minimal examples
673 @subsection Minimal examples
675 Ein Minimalbeispiel ist eine Beispieldatei, die so klein wie
676 möglich ist. Diese Beispiele sind sehr viel einfacher zu
677 verstehen als die langen Originaldateien. Minimalbeispiele
682 @item Fehlerberichte zu erstellen,
683 @item eine Hilfeanfrage an die E-Mail-Liste zu schicken,
684 @item Ein Beispiel zur @uref{http://lsr@/.dsi@/.unimi@/.it/,LilyPond
685 Schnipselsammlung} hinzuzufügen.
688 Um ein Beispiel zu konstruieren, das so klein wie möglich ist,
689 gibt es eine einfache Regel: Alles nicht Notwendige entfernen.
690 Wenn Sie unnötige Teile einer Datei entfernen, bietet es sich an,
691 sie auszukommentieren und nicht gleich zu löschen. Auf diese Weise
692 können Sie eine Zeile leicht wieder mit aufnehmen, sollten Sie sie
693 doch brauchen, anstatt sie von Anfang an neu zu schreiben.
695 Es gibt zwei Ausnahmen dieser @qq{So klein wie möglich}-Regel:
698 @item Fügen Sie immer einen @code{\version}Befehl ein.
699 @item Wenn es möglich ist, benutzen Sie @code{\paper@{ ragged-right = ##t @}}
700 am Beginn des Beispiels.
703 Der Sinn der Minimalbeispiele ist, dass sie einfach lesbar sind:
706 @item Vermeiden Sie es, komplizierte Noten, Schlüssel oder Taktangaben
707 zu verwenden, es sei denn, Sie wollen genau an diesen Elementen
709 @item Benutzen Sie keine @code{\override}-Befehle, wenn sie nicht der
710 Zweck des Beispieles sind.
714 @node Scores and parts
715 @section Scores and parts
717 Orchesternoten werden alle zweimal gesetzt. Erstens als Stimmen für
718 die Musiker, und dann als große Partitur für den Dirigenten. Mit
720 kann hier doppelte Arbeit erspart werden. Die Musik muss nur einmal
721 eingegeben werden und wird in einer Variable abgelegt. Der Inhalt
723 Variable wird dann benutzt, um sowohl die Stimme als auch die Partitur
726 Es bietet sich an, die Noten in eigenen Dateien zu speichern. Sagen wir
727 beispielsweise, dass in der Datei @file{Horn-Noten.ly} die folgenden
728 Noten eines Duetts für Horn und Fagott gespeichert sind:
731 HornNoten = \relative c @{
738 Daraus wird dann eine eigene Stimme gemacht, indem folgende Datei
743 \include "Horn-Noten.ly"
745 instrument = "Horn in F"
749 \transpose f c' \HornNoten
756 \include "Horn-Noten.ly"
760 setzt den Inhalt der Datei @file{Horn-Noten.ly} an die Stelle des
761 Befehls in die aktuelle Datei. Damit besteht also eine Definition
762 für @code{HornNoten}, so dass die Variable verwendet werden kann.
763 Der Befehl @code{\transpose f@tie{}c'} zeigt an, dass das Argument,
764 also @code{\HornNoten}, um eine Quinte nach oben transponiert wird.
765 Klingendes @q{f} wird also als @code{c'} notiert. Das entspricht
766 der Notation eines Waldhorns in F. Die Transposition zeigt die folgende
769 @lilypond[quote,ragged-right]
770 \transpose f c' \relative c {
776 In der Musik für mehrere Instrumente kommt es oft vor, dass eine Stimme
777 für mehrere Takte nicht spielt. Das wird mit einer besonderen Pause
778 angezeigt, dem Pausenzeichen für mehrere Takte (engl. multi-measure
779 rest). Sie wird mit dem @emph{großen} Buchstaben @samp{R} eingegeben,
780 gefolgt von einer Dauer (@code{1}@tie{}für eine Ganze, @code{2}@tie{}
781 für eine Halbe usw.). Indem man die Dauer multipliziert, können längere
782 Pausen erstellt werden. Z. B. dauert diese Pause drei Takte eines
789 Wenn die Stimme gedruckt wird, müssen diese Pausen zusammengezogen
791 Das wird durch eine Variable erreicht:
794 \set Score.skipBars = ##t
798 Dieser Befehl setzt die Eigenschaft des @code{skipBars} (@qq{überspringe
799 Takte}) auf wahr (@code{##t}). Wenn diese Option und die Pause
800 zu der Musik des Beispiels gesetzt wird, erhält man folgendes Ergebnis:
802 @lilypond[quote,ragged-right]
803 \transpose f c' \relative c {
805 \set Score.skipBars = ##t
811 Die Partitur wird erstellt, indem alle Noten zusammengesetzt werden.
812 Angenommen, die andere Stimme trägt den Namen @code{FagottNoten}
813 und ist in der Datei @file{Fagott-Noten.ly} gespeichert. Die
814 Partitur sieht dann folgendermaßen aus:
817 \include "Fagott-Noten.ly"
818 \include "Horn-Noten.ly"
821 \new Staff \HornNoten
822 \new Staff \FagottNoten
827 Und mit LilyPond übersetzt:
829 @lilypond[quote,ragged-right]
837 r4 d,8 f | gis4 c | b bes |
838 a8 e f4 | g d | gis f