From 6d9394a4e3f7f7d6855626a41cc1ffbdaaa7c577 Mon Sep 17 00:00:00 2001 From: Till Paala Date: Tue, 31 Aug 2010 17:12:05 +0300 Subject: [PATCH] Doc-de: remove unneeded files in usage --- Documentation/de/usage/converters.itely | 387 ------- Documentation/de/usage/install.itely | 91 -- Documentation/de/usage/working.itely | 1240 ----------------------- 3 files changed, 1718 deletions(-) delete mode 100644 Documentation/de/usage/converters.itely delete mode 100644 Documentation/de/usage/install.itely delete mode 100644 Documentation/de/usage/working.itely diff --git a/Documentation/de/usage/converters.itely b/Documentation/de/usage/converters.itely deleted file mode 100644 index cbdbf7fd7a..0000000000 --- a/Documentation/de/usage/converters.itely +++ /dev/null @@ -1,387 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- - -@ignore - Translation of GIT committish: 3d7ffa1f82bb44673134b28becf7898482fe7316 - - When revising a translation, copy the HEAD committish of the - version that you are working on. For details, see the Contributors' - Guide, node Updating translation committishes.. -@end ignore - -@c \version "2.12.0" - -@c Translators: Reinhold Kainhofer -@c Translation checkers: Till Paala - -@node Von anderen Formaten konvertieren -@chapter Von anderen Formaten konvertieren -@translationof Converting from other formats - -LilyPond kann auch Musik aus diversen anderen Formaten importieren. -Dieses Kapitel beschreibt die dazu mit LilyPond mitgelieferten -Hilfsprogramme. Daneben existieren natürlich auch noch weitere -Programme, die Dateien für LilyPond erstellen können, wie etwa -graphische Sequenzierprogramme und XML-Konverter. Näheres dazu -findet sich auf der @uref{http://@/lilypond@/.org,Homepage} von LilyPond. - -Die im Folgenden beschriebenen Programme sind eigenständige Hilfsprogramme -und werden üblicherweise von der Kommandozeile aufgerufen. Siehe -@ref{Benutzung auf der Kommandozeile} für weitere Informationen. Wenn Sie MacOS -10.3 oder 10.4 benutzen und Probleme mit diesen Skripten (z. B. -@code{convert-ly}) haben, lesen Sie -Einrichtung für MacOS X. -@c @ref{Einrichtung für MacOS X}. - -@knownissues -Leider haben wir nicht ausreichend viele Entwickler, um all die folgenden -Hilfsprogramme ständig zu warten. Wir stellen den aktuellen Stand zur -Verfügung, können aber leider Fehlerberichte nur selten bearbeiten. -Selbstverständlich sind Patches von Ihnen sehr willkommen! - - -@menu -* midi2ly aufrufen:: Import von MIDI. -* muscxml2ly aufrufen:: Import von MusicXML. -* abc2ly aufrufen:: Import von ABC. -* etf2ly aufrufen:: Import von (alten) Finale-Dateien. -* LilyPond-Dateien erstellen:: Grafische Benutzeroberflächen, -Musikübersetzer und Programme zur algorithmischen Komposition. -@end menu - -@node midi2ly aufrufen -@section @command{midi2ly} aufrufen -@translationof Invoking midi2ly - -@cindex MIDI - -@command{midi2ly} übersetzt eine Typ@tie{}1 MIDI-Datei in eine -Eingabedatei für LilyPond. - -MIDI (Music Instrument Digital Interface) ist ein internationaler -Standard für digitale Instrumente: Es spezifiziert die Verkabelung, -ein serielles Protokoll und ein Dateiformat. Das MIDI-Dateiformat -ist der de-facto Standard um Musik von vielen Programmen zu exportieren. -Allerdings fehlen in den MIDI-Dateien viele Ausdrucks- und -Artikulationszeichen. Dennoch kann MIDI vielfach nützlich sein, -um Musik von einem Programm zu importieren, für das kein spezielles -Hilfsprogramm den direkten Import nach LilyPond unterstützt. - -@command{midi2ly} konvertiert die MIDI-Spuren nach @rinternals{Staff} und -MIDI-Kanäle in @rinternals{Voice} Kontexte. Tonhöhen werden relativ -angegeben, Tondauern nur wenn nötig. - -MIDI-Dateien können auch direkt von einem digitalen Keyboard -aufgenommen und dann in eine @file{.ly}-Datei konvertiert werden. -Allerdings sind Musikinterpretationen von Menschen (aus gutem Grund!) -rhythmisch nicht exakt genug um die Konvertierung von MIDI nach LY -trivial zu gestalten. Wenn @command{midi2ly} mit Quantisierung -(@code{-s} und @code{-d} Kommandozeilenoptionen) aufgerufen wird, -versucht es diese Unschärfen im Zeitablauf zu korrigieren, ist -allerdings nicht sonderlich gut darin. Daher können wir diese Technik -leider nicht für die Konvertierung von MIDI-Aufnahmen empfehlen. - - -@command{midi2ly} wird von der Kommandozeile folgendermaßen aufgerufen: -@example -midi2ly [@var{Optionen}]@dots{} @var{MIDI-Datei} -@end example - -Unter @q{Kommandozeile} verstehen wir dabei die Kommandozeile des -jeweiligen Betriebssystems. Für nähere Informationen hierzu siehe -@ref{Von anderen Formaten konvertieren}. - -Die folgenden Kommandozeilenoptionen werden von @command{midi2ly} -unterstützt: - -@table @code -@item -a, --absolute-pitches -Gibt absolute Tonhöhen aus. - -@item -d, --duration-quant=@var{LÄNGE} -Quantisiert Tondauern zu Vielfachen von @var{LÄNGE}. - -@item -e, --explicit-durations -Gibt alle Tondauern explizit an. - -@item -h,--help -Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. - -@item -k, --key=@var{acc}[:@var{Moll}] -Setzt die Standard-Tonart. @math{@var{acc} > 0} gibt die Anzahl der -Kreuze an, @math{@var{acc} < 0} gibt die Anzahl der Bs der Tonart an. -Eine Moll-Tonart wird durch @code{:1} angegeben. - -@item -o, --output=@var{Datei} -Die Ausgabe wird in die Datei @var{Datei}@file{.ly} geschrieben. - -@item -s, --start-quant=@var{LÄNGE} -Quantisiert den Beginn der Noten zu Vielfachen von @var{LÄNGE}. - -@item -t, --allow-tuplet=@var{DUR}*@var{NUM}/@var{DEN} -Erlaubt Tuplet-Dauern der Form @var{DUR}*@var{NUM}/@var{DEN}. - -@item -V, --verbose -Gibt ausführliche informative Meldungen während der Konvertierung aus. - -@item -v, --version -Gibt die Versionsnummer aus. - -@item -w, --warranty -Zeigt die Lizenzbedingungen und Urheberrechtshinweise. - -@item -x, --text-lyrics -Interpretiert alle Texte als Liedtexte. -@end table - - -@knownissues - -Überlappende Noten in einem Arpeggio werden nicht korrekt dargestellt. -Nur die erste Note wird eingelesen und konvertiert, die restlichen -werden ignoriert. Als Abhilfe können Sie alle Noten auf dieselbe -Tonlänge setzen und Phrasierungszeichen oder Pedalindikatoren -hinzufügen. - - -@node muscxml2ly aufrufen -@section @command{muscxml2ly} aufrufen -@translationof Invoking musicxml2ly - -@cindex MusicXML - -@uref{http://@/www.@/musicxml@/.org/,MusicXML} ist ein XML-Dialekt -zur Darstellung von Musiknotation. - -@command{musicxml2ly} wandelt eine MusicXML-Datei nach LilyPond um, -wobei sowohl die Noten, Artikulationszeichen, Struktur der Partitur, -Liedtexte etc. einer MusicXML-Datei (im @q{part-wise}-Format) in eine -.ly-Datei um. - -@command{musicxml2ly} wird von der Kommandozeile folgendermaßen aufgerufen: -@example -musicxml2ly [@var{Optionen}]@dots{} @var{XML-Datei} -@end example - -Unter @q{Kommandozeile} verstehen wir dabei die Kommandozeile des -jeweiligen Betriebssystems. Für nähere Informationen hierzu siehe -@ref{Von anderen Formaten konvertieren}. - -Wenn als Dateiname @file{-} angegeben wird, liest @command{musicxml2ly} -Daten direkt von der Kommandozeile ein. - -Die folgenden Kommandozeilenoptionen werden von @command{musicxml2ly} -unterstützt: - -@table @code -@item -a, --absolute -Konvertiert in absolute Tonhöhen. - -@item -h,--help -Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. - -@item -l, --language=LANG -Inkludiert die Sprachdatei @var{LANG}@file{.ly} in der Ausgabe. Wird z.B. -'deutsch' angegeben, wird @file{deutsch.ly} in die .ly-Datei eingebunden -und deutsche Notenbezeichnungen benutzt. - -@item --lxml -Benutzt das lxml.etree Python-Paket für die Verarbeitung von XML (benötigt weniger Speicher und Rechenleistung) - -@item --nd --no-articulation-directions -Konvertiert keine Richtungsangaben (@code{^}, @code{_} oder @code{-}) -von Artikulations- und Lautstärkebezeichnungen. - -@item --no-beaming -Konvertiert keine Informationen über die Balkensetzung aus der -MusicXML-Datei. Stattdessen wird dies LilyPond überlassen. - -@item -o,--output=@var{Dateiname} -Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben. Wird -als @var{Dateiname} nur @file{-} angegeben, wird das Ergebnis der Konvertierung -an der Kommandozeile ausgegeben. Wird diese Option nicht angegeben, so -erfolgt die Ausgabe in die Datei @var{XML-Datei}@file{.ly}. - -@item -r,--relative -Konvertiert in relative Tonhöhen. (Standardeinstellung) - -@item -v, --verbose -Gibt ausführliche informative Meldungen während der Konvertierung aus. - -@item --version -Gibt die Versionsnummer aus. - -@item -z,--compressed -Die Eingabedatei wird als komprimierte MusicXML-Datei eingelesen. -Dies ist die Standardeinstellung für Dateien mit der Erweiterung -@file{.mxl}. -@end table - - -@node abc2ly aufrufen -@section @command{abc2ly} aufrufen -@translationof Invoking abc2ly - -@cindex ABC - -ABC ist ein relativ einfaches ASCII-basierendes Musikformat und ist -dokumentiert auf der ABC-Homepage: - -@quotation -@uref{http://@/www@/.walshaw@/.plus@/.com/@/abc/@/learn@/.html}. -@end quotation - -@command{abc2ly} konvertiert ABC-Dateien nach LilyPond und wird -von der Kommandozeile folgendermaßen aufgerufen: - -@example -abc2ly [@var{Optionen}]@dots{} @var{ABC-Datei} -@end example - -Unter @q{Kommandozeile} verstehen wir dabei die Kommandozeile des -jeweiligen Betriebssystems. Für nähere Informationen hierzu siehe -@ref{Von anderen Formaten konvertieren}. - -Die folgenden Kommandozeilenoptionen werden von @command{abc2ly} -unterstützt: - -@table @code -@item -b,--beams=None -Die Balkensetzung aus der ABC-Datei erhalten. -@item -h,--help -Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. -@item -o,--output=@var{Dateiname} -Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben. -@item -s,--strict -Strenge Auslegung einer erfolgreichen Konvertierung. -@item -v,--version -Gibt die Versionsnummer aus. -@end table - -Es existiert außerdem die Möglichkeit, LilyPond-Befehle für die -Konvertierung mit @command{abc2ly} gleich in der ABC-Datei anzugeben. -Wenn sich etwa in der ABC-Datei das Kommentar - -@example -%%LY voices \set autoBeaming = ##f -@end example - -@noindent -befindet, so wird der Text nach dem Schlüsselwort @q{voices} direkt -in die aktuelle Stimme in der LilyPond-Datei eingefügt. - -Ebenso bewirkt - -@example -%%LY slyrics more words -@end example - -@noindent -dass alles nach dem @q{slyrics} Schlüsselwort an der aktuellen Stelle -im Liedtext eingefügt wird. - - -@knownissues - -Der ABC-Standard ist eigentlich kein wirklich vollständiger Standard. -Für komplexere Notation wie etwa Polyphonie existieren verschiedene -Konventionen. - -Mehrere Lieder in einer Datei können nicht konvertiert werden. - -ABC synchronisiert den Liedtext am Anfang jeder Zeile mit den Noten, -@command{abc2ly} macht dies nicht. - -@command{abc2ly} ignoriert die Balkensetzung in der ABC-Datei. - - -@node etf2ly aufrufen -@section @command{etf2ly} aufrufen -@translationof Invoking etf2ly - -@cindex ETF -@cindex enigma -@cindex Finale -@cindex Coda Technology - -ETF (Enigma Transport Format) ist ein Dateiformat, das Coda -Music Technology in älteren Versionen des Programms Finale benutzt hat. - -@command{etf2ly} konvertiert Teile einer ETF-Datei nach LilyPond -und wird von der Kommandozeile folgendermaßen aufgerufen: - -@example -etf2ly [@var{Optionen}]@dots{} @var{ETF-Datei} -@end example - -Unter @q{Kommandozeile} verstehen wir dabei die Kommandozeile des -jeweiligen Betriebssystems. Für nähere Informationen hierzu siehe -@ref{Von anderen Formaten konvertieren}. - -Die folgenden Kommandozeilenoptionen werden von @command{etf2ly} -unterstützt: - -@table @code -@item -h,--help -Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. -@item -o,--output=@var{Dateiname} -Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben. -@item --version -Gibt die Versionsnummer aus. -@end table - - -@knownissues - -Die Liste der Artikulationszeichen is unvollständig. Leere Takte -verwirren @command{etf2ly}. Mehrfache Vorschlagnoten werden falsch -beendet. - - -@node LilyPond-Dateien erstellen -@section LilyPond-Dateien erstellen -@translationof Generating LilyPond files - -@cindex Externe Programme, LilyPond-Dateien erzeugen - -LilyPond selbst wird nur mit den oben genannten Konvertierprogrammen -ausgeliefert und unterstützt keine weiteren Formate. Es existieren -allerdings externe Hilfsprogramme, die auch LilyPond-Dateien erzeugen -können. -Diese umfassen unter anderem: - -@itemize -@item -@uref{http://@/www@/.denemo@/.org/,Denemo}, ein grafisches -Programm zum Musiksatz. -@item -@uref{http://www@/.volny@/.cz/smilauer/rumor/rumor@/.html,Rumor}, ein -MIDI-nach-LilyPond Konverter, der monophone MIDI-Eigaben in Echtzeit -konvertiert. -@item -@uref{http://nicolas@/.sceaux@/.free@/.fr/lilypond/lyqi@/.html,lyqi}, ein -Emacs-Modus. -@item -@uref{http://@/www@/.nongnu@/.org/@/xml2ly/,xml2ly}, ein Konverter für -@uref{http://@/www@/.musicxml@/.com/xml@/.html,MusicXML}, der auf -XML-Transformationen mittels XSLT basiert. -@item -@uref{http://@/noteedit@/.berlios@/.de,NoteEdit}, ein grafisches -Programm zum Notensatz, das auch -@uref{http://@/www@/.musicxml@/.com/xml@/.html,MusicXML} importieren kann. -@item -@uref{http://@/www@/.rosegardenmusic@/.com,Rosegarden}, -das MIDI importieren kann. -@item -@uref{http://@/common-lisp@/.net/project/fomus/,FOMUS}, -eine LISP-Bibliothek, um Musiknotation zu erzeugen. -@item -@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml}, -ein Notensatzprogramm mit experimentellem Export nach LilyPond. -@item -@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, ein Programm zur Erzeugung von -Gitarren-Tabulaturen, unterstützt den Export nach LilyPond. -@item -@uref{http://musescore.org/,MuseScore} unterstützt ebenfalls den -Export nach LilyPond. -@end itemize - diff --git a/Documentation/de/usage/install.itely b/Documentation/de/usage/install.itely deleted file mode 100644 index 624cb1146a..0000000000 --- a/Documentation/de/usage/install.itely +++ /dev/null @@ -1,91 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- - -@ignore - Translation of GIT committish: 131b472ff161d8181b66b110c03486b9f5b5cce9 - - When revising a translation, copy the HEAD committish of the - version that you are working on. For details, see the Contributors' - Guide, node Updating translation committishes.. -@end ignore - -@c \version "2.12.0" - -@c Translators: Till Paala, Reinhold Kainhofer - -@ifclear INSTALL -@node Installieren -@chapter Installieren -@translationof Install -@end ifclear - -Es gibt von Lilypond zwei verschiedene Typen von Versionen: stabile -Versionen und instabile Entwicklerversionen. Stabile Versionen haben -eine gerade Unter-Versionsnummer (z.B. 2.8, 2.10, 2.12, etc.). -Entwicklerversionen haben hingegen ungerade Unter-Versionsnummern (z.B. -2.7, 2.9, 2.11, etc.). - -LilyPond selbst zu kompilieren ist ein relativ komplizierter Vorgang, daher -empfehlen wir @strong{stark}, die vorkompilierten Binär-Pakete zu benutzen. - - -@menu -* Vorkompilierte Binär-Pakete:: -* Aus den Quellen übersetzen:: -@end menu - -@node Vorkompilierte Binär-Pakete -@section Vorkompilierte Binär-Pakete -@translationof Precompiled binaries - -@unnumberedsubsec Herunterladen - - -Aktuelle Informationen zu vorkompilierten Binär-Paketen für Ihre Plattform -finden Sie unter @uref{http://lilypond.org/web/install/}. Falls Ihr Betriebssystem -auf dieser allgemeinen Seite nicht behandelt wird, sehen Sie bitte in -der vollständigen Liste unter @uref{http://download.linuxaudio.org/lilypond/binaries/} -nach. - -Momentan werden Binärpakete für folgende Plattformen erstellt: - -@example -darwin-ppc - MacOS X powerpc -darwin-x86 - MacOS X intel -freebsd-64 - FreeBSD 6.x, x86_64 -freebsd-x86 - FreeBSD 4.x, x86 -linux-64 - Beliebige GNU/Linux Distribution, x86_64 -linux-ppc - Beliebige GNU/Linux Distribution, powerpc -linux-x86 - Beliebige GNU/Linux Distribution, x86 -mingw - Windows x86 -@end example - -@knownissues - -Wenn Sie MacOS 10.3 oder 10.4 benutzen und Python-Skripte wie -@command{convert-ly} und @command{lilypond-book} benutzen wollen, -lesen Sie @ref{Setup for MacOS X,,,lilypond-program,Application Usage}. - -@node Aus den Quellen übersetzen -@section Aus den Quellen übersetzen -@translationof Compiling from source - -LilyPond kann auch selbst direkt aus dem Quellcode des git-Depots -kompiliert werden. Da jedoch für die Kompilierung definitiv -Englisch-Kenntnisse vorhanden sein müssen, soll hier lediglich auf die -englische Dokumentation verwiesen werden: -@c DO NOT translate the following line at all. -@iftex -@ref{Compiling from source,,,lilypond-program,Application Usage}. -@end iftex -@ifhtml -@c Please translate the following line (but not the .html file name) -@uref{Compiling-from-source.html,Compiling from Source}. -@end ifhtml - - -@c TRANSLATORS: -@c Please **do not** translate anything below this line. Users -@c should not be compiling LilyPond themselves; if they really -@c want to do so, they should be able to read the English docs, -@c because they'll probably need to ask questions in English -@c on the -devel list. -gp diff --git a/Documentation/de/usage/working.itely b/Documentation/de/usage/working.itely deleted file mode 100644 index 7f5444c194..0000000000 --- a/Documentation/de/usage/working.itely +++ /dev/null @@ -1,1240 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- - -@ignore - Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40 - - When revising a translation, copy the HEAD committish of the - version that you are working on. For details, see the Contributors' - Guide, node Updating translation committishes.. -@end ignore - -@c \version "2.12.0" - -@node An LilyPond-Projekten arbeiten -@chapter An LilyPond-Projekten arbeiten -@translationof Working on LilyPond projects - -Dieses Kapitel erklärt, wie bestimmte häufige Probleme zu -lösen oder ganz zu vermeiden sind. Wenn Sie schon -Programmiererfahrung mitbringen, erscheinen diese Hinweise -vielleicht überflüssig, aber es wird dennoch empfohlen, dieses Kapitel -zu lesen. - - -@menu -* Vorschläge, wie LilyPond-Eingabe-Dateien geschrieben werden sollen:: -* Wenn etwas nicht funktioniert:: -* Partituren und Stimmen:: -* Make und Makefiles:: -@end menu - - -@node Vorschläge, wie LilyPond-Eingabe-Dateien geschrieben werden sollen -@section Vorschläge, wie LilyPond-Eingabe-Dateien geschrieben werden sollen -@translationof Suggestions for writing LilyPond input files - -Jetzt sind Sie so weit, größere Stücke mit LilyPond zu schreiben -- -nicht nur die kleinen Beispiele aus der Übung, sondern ganze Stücke. -Aber wie geht man das am besten an? - -Solange LilyPond Ihre Dateien versteht und die Noten so setzt, -wie Sie das wollen, spielt es eigentlich keine Rolle, wie Ihre -Dateien aussehen. Es gibt aber trotzdem ein paar Dinge, die man -beim Schreiben von LilyPond-Code berücksichtigen sollte. - -@itemize @bullet -@item Was ist, wenn Sie einen Fehler machen? Die Struktur einer -LilyPond-Datei kann es erleichtern (oder erschweren), bestimmte -Fehler zu finden. - -@item Was ist, wenn Sie Ihre Dateien mit jemandem austauschen -wollen? Oder Ihre Dateien nach einige Jahren noch einmal überarbeiten -wollen? Manche LilyPond-Dateien versteht man auf den ersten Blick, -über anderen muss man eine Stunde grübeln, um die Struktur zu ahnen. - -@item Was ist, wenn sie Ihre Dateien auf eine neuere LilyPond-Version -aktualisieren wollen? Die Syntax der Eingabesprache verändert sich -allmählich mit Verbesserungen im Programm. Die meisten Veränderungen -können automatisch durch @code{convert-ly} gelöst werden, aber -bestimmte Änderungen brauchen Handarbeit. LilyPond-Dateien können -strukturiert werden, damit sie einfacher aktualisierbar sind. -@end itemize - -@menu -* Allgemeine Vorschläge:: -* Das Kopieren von bereits vorhandener Musik:: -* Große Projekte:: -* Tipparbeit sparen durch Bezeichner und Funktionen:: -* Stil-Dateien:: -@end menu - - -@node Allgemeine Vorschläge -@subsection Allgemeine Vorschläge -@translationof General suggestions - -Hier einige Vorschläge, wie Sie Probleme vermeiden oder lösen können: - -@itemize @bullet -@item @strong{Schreiben Sie immer mit @code{\version} die -Versionsnummer -in jede Datei}. Beachten Sie, dass in allen Vorlagen die Versionsnummer -@code{\version "2.12.0"} eingetragen ist. Es empfiehlt sich, in alle -Dateien, unabhängig von ihrer Größe, den @code{\version}-Befehl -einzufügen. Persönliche Erfahrung hat gezeigt, dass es ziemlich -frustrierend sein kann zu erinnern, welche Programmversion man etwa -vor einem Jahr verwendet hat. Auch @code{convert-ly} benötigt die -Versionsnummer. - -@item @strong{Benutzen Sie Überprüfungen}: @ruser{Oktavenüberprüfung}, und -@ruser{Takt- und Taktzahlüberprüfung}. Wenn Sie hier und da diese -Überprüfungen einfügen, finden Sie einen möglichen Fehler weit -schneller. Wie oft aber ist @qq{hier und da}? Das hängt von der -Komplexität der Musik ab. ei einfachen Stücken reicht es vielleicht -ein- oder zweimal, in sehr komplexer Musik sollte man sie vielleicht -in jeden Takt einfügen. - -@item @strong{Ein Takt pro Textzeile}. Wenn irgendetwas kompliziertes -vorkommt, entweder in der Musik selber oder in der Anpassung der -Ausgabe, -empfiehlt es sich oft, nur einen Takt pro Zeile zu schreiben. -Bildschirmplatz zu sparen, indem Sie acht Takte in eine Zeile zwängen, -hilft nicht weiter, wenn Sie ihre Datei @qq{debuggen} müssen. - -@item @strong{Kommentieren Sie ihre Dateien}. Benutzen Sie entweder -Taktnummern (in regelmäßigen Abständen) oder Verweise auf musikalische -Themen (@qq{Zweites Thema in den Geigen}, @qq{vierte Variation} usw.). -Sie brauchen diese Kommentare vielleicht noch nicht, wenn Sie das Stück -notieren, aber spätestens wenn Sie nach ein paar Jahren etwas -verändern -wollen oder Sie den Quelltext an einen Freund weitergeben wollen, -ist es weitaus komplizierter, die Dateistruktur ohne Kommentare zu -verstehen, als wenn Sie sie rechtzeitig eingefügt hätten. - -@item @strong{Schreiben Sie Klammern mit Einrückung}. Viele -Probleme entstehen durch ungerade Anzahl von @code{@{} und -@code{@}}-Klammern. - -@item @strong{Schreiben Sie Tondauerangaben} am Anfang von -Abschnitten und Bezeichnern. Wenn Sie beispielsweise - @code{c4 d e} am Anfang eines Abschnittes schreiben, -ersparen Sie sich viele Probleme, wenn Sie ihre Musik -eines Tages umarrangieren wollen. - -@item @strong{Trennen Sie Einstellungen} von den eigentlichen -Noten. Siehe auch @ref{Tipparbeit sparen durch Bezeichner und Funktionen} -und -@ref{Stil-Dateien}. - -@end itemize - - -@node Das Kopieren von bereits vorhandener Musik -@subsection Das Kopieren von bereits vorhandener Musik -@translationof Typesetting existing music - -Wenn Sie Musik aus einer fertigen Partitur kopieren (z. B. die -LilyPond-Eingabe einer gedruckten Partitur): - -@itemize @bullet - -@item Schreiben Sie ein System ihrer Quelle nach dem anderen -(aber trotzdem nur einen Takt pro Textzeile) und überprüfen -Sie jedes System, nachdem Sie es fertig kopiert haben. Mit dem -@code{showLastLength}- oder @code{showFirstLenght}-Befehl können Sie den Übersetzungsprozess -beschleunigen. Siehe auch -@ruser{Korrigierte Musik überspringen}. - -@item Definieren Sie @code{mBreak = @{ \break @}} und schreiben Sie - @code{\mBreak} in der Quelldatei immer dann, wenn im Manuskript -ein Zeilenumbruch vorkommt. Das macht es einfacher, die gesetzte -Zeile mit den ursprünglichen Noten zu vergleichen. Wenn Sie die -Partitur fertig gestellt haben, könne Sie @code{mBreak = @{ @}}, -also leer definieren, um diese manuellen Zeilenumbrüche zu entfernen. -Damit kann dann LilyPond selber entscheiden, wohin es passende -Zeilenumbrüche platziert. - -@item Wenn Sie eine Stimme für ein transponierendes Instrument als eine -Variable notieren, wird empfohlen, dass die Noten von - -@example -\transpose c klingende-Tonhöhe @{...@} -@end example - -eingefasst werden (wobei @code{klingende-Tonhöhe} die klingende Tonhöhe -des Instruments ist), sodass die Noten innerhalb der Variable für klingendes C -geschrieben sind. Sie können die Variable zurücktransponieren, wenn es -nötig ist, aber Sie müssen es nicht tun. Fehler in Transpositionen sind -treten seltener auf, wenn alle Noten in den Variablen für die gleiche -Ausgangstonhöhe geschrieben werden. - -Denken Sie auch daran, dass Sie nur von/nach C transponieren. Das heißt, -dass die einzigen anderen Tonhöhen, die Sie in Transpositionen benutzen, -die Tonhöhen der Instrumente sind, für die Sie schreiben: @code{bes} für -eine B-Trompete oder @code{aes} für eine As-Klarinette usw. - -@end itemize - - -@node Große Projekte -@subsection Große Projekte -@translationof Large projects - -Besonders wenn Sie an größeren Projekten arbeiten, ist es -unumgänglich, dass Sie ihre LilyPond-Dateien klar strukturieren. - -@itemize @bullet - -@item @strong{Verwenden Sie Variablen für jede Stimme}, innerhalb -der Definition sollte so wenig Struktur wie möglich sein. Die -Struktur des @code{\score}-Abschnittes verändert sich am ehesten, -während die @code{violine}-Definition sich wahrscheinlich mit einer -neuen Programmversion nicht verändern wird. - -@example -violine = \relative c'' @{ -g4 c'8. e16 -@} -... -\score @{ - \new GrandStaff @{ - \new Staff @{ - \violine - @} - @} -@} -@end example - -@item @strong{Trennen Sie Einstellungen von den Noten}. Diese -Empfehlung wurde schon im Abschnitt @ref{Allgemeine Vorschläge} gegeben, -aber für große Projekte ist es unumgänglich. Muss z. B. die -Definition für @code{fdannp} verändert werden, so braucht -man es nur einmal vorzunehmen und die Noten in der Geigenstimme, -@code{violin}, bleiben unberührt. - -@example -fdannp = _\markup@{ - \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @} -violin = \relative c'' @{ -g4\fdannp c'8. e16 -@} -@end example - -@end itemize - - -@node Tipparbeit sparen durch Bezeichner und Funktionen -@subsection Tipparbeit sparen durch Bezeichner und Funktionen -@translationof Saving typing with variables and functions - -@cindex Variable -@cindex Bezeichner - -Bis jetzt haben Sie immer etwa solche Noten gesehen: - -@lilypond[quote,verbatim,ragged-right] -hornNotes = \relative c'' { c4 b dis c } -\score { - { - \hornNotes - } -} -@end lilypond - -Das könnte auch nützlich in Minimal-Music sein: - -@lilypond[quote,verbatim,ragged-right] -fragmentA = \relative c'' { a4 a8. b16 } -fragmentB = \relative c'' { a8. gis16 ees4 } -violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA } -\score { - { - \violin - } -} -@end lilypond - -Sie können diese Bezeichner oder Variablen aber auch für -(eigene) Einstellungen verwenden: - -@lilypond[quote,verbatim,ragged-right] -dolce = \markup{ \italic \bold dolce } -padText = { \once \override TextScript #'padding = #5.0 } -fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } -violin = \relative c'' { - \repeat volta 2 { - c4._\dolce b8 a8 g a b | - \padText - c4.^"hi there!" d8 e' f g d | - c,4.\fthenp b8 c4 c-. | - } -} -\score { - { - \violin - } -\layout{ragged-right=##t} -} -@end lilypond - -Die Variablen haben in diesem Beispiel deutlich die -Tipparbeit erleichtert. Aber es lohnt sich, sie zu -einzusetzen, auch wenn man sie nur einmal anwendet, -denn sie vereinfachen die Struktur. -Hier ist das vorangegangene Beispiel ohne -Variablen. Es ist sehr viel komplizierter zu lesen, -besonders die letzte Zeile. - -@example -violin = \relative c'' @{ - \repeat volta 2 @{ - c4._\markup@{ \italic \bold dolce @} b8 a8 g a b | - \once \override TextScript #'padding = #5.0 - c4.^"hi there!" d8 e' f g d | - c,4.\markup@{ \dynamic f \italic \small @{ 2nd @} - \hspace #0.1 \dynamic p @} b8 c4 c-. | - @} -@} -@end example - -@c TODO Replace the following with a better example -td -@c Skylining handles this correctly without padText - -Bis jetzt wurde nur statische Substitution vorgestellt --- wenn LilyPond den Befehl @code{\padText} findet, wird -er ersetzt durch durch unsere vorherige Definition (alles, -was nach dem @code{padtext =} kommt). - -LilyPond kennt aber auch nicht-statische Substitutionen (man -kann sie sich als Funktionen vorstellen). - -@lilypond[quote,verbatim,ragged-right] -padText = -#(define-music-function (parser location padding) (number?) - #{ - \once \override TextScript #'padding = #$padding - #}) - -\relative c''' { - c4^"piu mosso" b a b - \padText #1.8 - c4^"piu mosso" d e f - \padText #2.6 - c4^"piu mosso" fis a g -} -@end lilypond - -Die Benutzung von Variablen hilft auch, viele Schreibarbeit zu -vermeiden, wenn die Eingabesyntax von LilyPond sich verändert -(siehe auch @ref{Alte Dateien aktualisieren}). Wenn nur eine einzige -Definition (etwa @code{\dolce}) für alle Dateien verwendet wird -(vgl. @ref{Stil-Dateien}), muss nur diese einzige Definition -verändert werden, wenn sich die Syntax ändert. Alle Verwendungen -des Befehles beziehen sich dann auf die neue Definition. - -@node Stil-Dateien -@subsection Stil-Dateien -@translationof Style sheets - -Die Ausgabe, die LilyPond erstellt, kann sehr stark modifiziert -werden, siehe @ref{Die Ausgabe verändern} für Einzelheiten. Aber wie -kann man diese Änderungen auf eine ganze Serie von Dateien -anwenden? Oder die Einstellungen von den Noten trennen? Das -Verfahren ist ziemlich einfach. - -Hier ist ein Beispiel. Es ist nicht schlimm, wenn Sie nicht auf -Anhieb die Abschnitte mit den ganzen @code{#()} verstehen. Das -wird im Kapitel @ref{Fortgeschrittene Optimierungen mit Scheme} erklärt. - -@lilypond[quote,verbatim,ragged-right] -mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0) - #:line(#:dynamic "mp" #:text #:italic "dolce" ))) - -inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) - -\relative c'' { - \tempo 4=50 - a4.\mpdolce d8 cis4--\glissando a | b4 bes a2 - \inst "Clarinet" - cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 -} -@end lilypond - -Es treten einige Probleme mit überlappenden Symbolen auf. Sie -werden beseitigt mit den Tricks aus dem Kapitel @ref{Verschieben von Objekten}. -Aber auch die @code{mpdolce} und @code{inst}-Definitionen -können verbessert werden. Sie produzieren das Ergebnis, das -gewünscht ist, aber es wäre schön, sie auch in anderen Stücken -verwenden zu können. Man könnte sie natürlich einfach kopieren -und in die anderen Dateien einfügen, aber das ist lästig. Die -Definitionen verbleiben auch in der Notendatei und diese @code{#()} -sehen nicht wirklich schön aus. Sie sollen in einer anderen -Datei versteckt werden: - -@example -%%% speichern in einer Datei "definitions.ily" -mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0) - #:line(#:dynamic "mp" #:text #:italic "dolce" ))) - -inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) -@end example - -Auf diese Datei kann dann später mit dem @code{\include}-Befehl -im oberen Teil der LilyPond-Datei zurückgegriffen werden. (Die -Erweiterung @code{.ily} wird benutzt, um diese eingefügte Datei, -die nicht alleine kompiliert werden kann, von der Hauptdatei zu -unterscheiden.) -Jetzt muss natürlich noch die Notendatei angepasst werden (gespeichert -unter dem Namen @file{"music.ly"}). - -@c We have to do this awkward example/lilypond-non-verbatim -@c because we can't do the \include stuff in the manual. - -@example -\include "definitions.ily" - -\relative c'' @{ - \tempo 4=50 - a4.\mpdolce d8 cis4--\glissando a | b4 bes a2 - \inst "Clarinet" - cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 -@} -@end example - -@lilypond[quote,ragged-right] -mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0) - #:line(#:dynamic "mp" #:text #:italic "dolce" ))) - -inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) - -\relative c'' { - \tempo 4=50 - a4.\mpdolce d8 cis4--\glissando a | b4 bes a2 - \inst "Clarinet" - cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 -} -@end lilypond - -Das sieht schon besser aus, aber es sind noch einige Verbesserungen -möglich. -Das Glissando ist schwer zu sehen, also soll es etwas dicker erscheinen -und dichter an den Notenköpfen gesetzt werden. Das Metronom-Zeichen -soll über dem Schlüssel erscheinen, nicht über der ersten Note. Und -schließlich kann unser Kompositionsprofessor @qq{C}-Taktangaben -überhaupt nicht leiden, also -müssen sie in @qq{4/4} verändert werden. - -Diese Veränderungen sollten Sie aber nicht in der @file{music.ly}-Datei -vornehmen. Ersetzen Sie die @file{definitions.ily}-Datei hiermit: - -@example -%%% definitions.ily -mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0) - #:line( #:dynamic "mp" #:text #:italic "dolce" ))) - -inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) - -\layout@{ - \context @{ \Score - \override MetronomeMark #'extra-offset = #'(-9 . 0) - \override MetronomeMark #'padding = #'3 - @} - \context @{ \Staff - \override TimeSignature #'style = #'numbered - @} - \context @{ \Voice - \override Glissando #'thickness = #3 - \override Glissando #'gap = #0.1 - @} -@} -@end example - -@lilypond[quote,ragged-right] -mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0) - #:line( #:dynamic "mp" #:text #:italic "dolce" ))) - -inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) - -\layout{ - \context { \Score - \override MetronomeMark #'extra-offset = #'(-9 . 0) - \override MetronomeMark #'padding = #'3 - } - \context { \Staff - \override TimeSignature #'style = #'numbered - } - \context { \Voice - \override Glissando #'thickness = #3 - \override Glissando #'gap = #0.1 - } -} - -\relative c'' { - \tempo 4=50 - a4.\mpdolce d8 cis4--\glissando a | b4 bes a2 - \inst "Clarinet" - cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 -} -@end lilypond - -Das sieht schon besser aus! Aber angenommen Sie möchten dieses -Stück jetzt veröffentlichen. Ihr Kompositionsprofessor mag -die @qq{C}-Taktangaben nicht, aber Sie finden sie irgendwie -schöner. Also kopieren Sie die Datei @file{definitions.ily} nach -@file{web-publish.ily} und verändern diese. Weil die Noten -in einer PDF-Datei auf dem Bildschirm angezeigt werden sollen, -bietet es sich auch an, die gesamte Ausgabe zu vergrößern. - -@example -%%% definitions.ily -mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0) - #:line( #:dynamic "mp" #:text #:italic "dolce" ))) - -inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) - -#(set-global-staff-size 23) -\layout@{ - \context @{ \Score - \override MetronomeMark #'extra-offset = #'(-9 . 0) - \override MetronomeMark #'padding = #'3 - @} - \context @{ \Staff - @} - \context @{ \Voice - \override Glissando #'thickness = #3 - \override Glissando #'gap = #0.1 - @} -@} -@end example - -@lilypond[quote,ragged-right] -mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0) - #:line( #:dynamic "mp" #:text #:italic "dolce" ))) - -inst = #(define-music-function (parser location string) (string?) - (make-music - 'TextScriptEvent - 'direction UP - 'text (markup #:bold (#:box string)))) - -#(set-global-staff-size 23) -\layout{ - \context { \Score - \override MetronomeMark #'extra-offset = #'(-9 . 0) - \override MetronomeMark #'padding = #'3 - } - \context { \Voice - \override Glissando #'thickness = #3 - \override Glissando #'gap = #0.1 - } -} - -\relative c'' { - \tempo 4=50 - a4.\mpdolce d8 cis4--\glissando a | b4 bes a2 - \inst "Clarinet" - cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 -} -@end lilypond - -In der Notendatei muss jetzt nur noch @code{\include "definitions.ily"} -durch @code{\include "web-publish.ily"} ausgetauscht werden. -Das könnte man natürlich noch weiter vereinfachen. Also -eine Datei @file{definitions.ily}, die nur die Definitionen -von @code{mpdolce} und @code{inst} enthält, eine Datei -@file{web-publish.ily}, die alle die Änderungen für den -@code{\layout}-Abschnitt enthält und eine Datei @file{university.ily} -für eine Ausgabe, die den Wünschen des Professors entspricht. -Der Anfang der @file{music.ly}-Datei würde dann so aussehen: - -@example -\include "definitions.ily" - -%%% Nur eine der beiden Zeilen auskommentieren! -\include "web-publish.ily" -%\include "university.ily" -@end example - -Durch diese Herangehensweise kann auch bei der Erstellung -von nur einer Ausgabeversion Arbeit gespart werden. Ich -benutze ein halbes Dutzend verschiedener Stilvorlagen -für meine Projekte. Jede Notationsdatei fängt an mit -@code{\include "../global.ily"}, welches folgenden Inhalt hat: - - -@example -%%% global.ly -\version "2.12.0" -#(ly:set-option 'point-and-click #f) -\include "../init/init-defs.ily" -\include "../init/init-layout.ily" -\include "../init/init-headers.ily" -\include "../init/init-paper.ily" -@end example - - -@node Wenn etwas nicht funktioniert -@section Wenn etwas nicht funktioniert -@translationof When things don't work - -@menu -* Alte Dateien aktualisieren:: -* Fehlersuche (alles auseinandernehmen):: -* Minimalbeispiele:: -@end menu - -@node Alte Dateien aktualisieren -@subsection Alte Dateien aktualisieren -@translationof Updating old files - -Die Syntax von LilyPond verändert sich ab und zu. Wenn LilyPond -besser wird, muss auch die Syntax (Eingabesprache) entsprechend -angepasst werden. Teilweise machen diese Veränderungen die -Eingabesprache einfacher lesbar, teilweise dienen sie dazu, neue -Eigenschaften des Programmes benutzbar zu machen. - -LilyPond stellt ein Programm bereit, das Aktualisierungen -vereinfacht: @code{convert-ly}. Einzelheiten zur Programmbenutzung -finden sich in @rprogram{Dateien mit convert-ly aktualisieren}. - -Leider kann @code{convert-ly} nicht alle Veränderungen der Syntax -berücksichtigen. Hier werden einfache @qq{Suchen und -Ersetzen}-Veränderungen vorgenommen (wie etwa @code{raggedright} zu -@code{ragged-right}), aber einige Veränderungen sind zu -kompliziert. Die Syntax-Veränderungen, die das Programm nicht -berücksichtigt, sind im Kapitel @rprogram{Dateien mit convert-ly aktualisieren} aufgelistet. - -Zum Beispiel wurden in LilyPond 2.4 und früheren Versionen -Akzente und Umlaute mit LaTeX-Befehlen eingegeben, ein -@qq{No\"el} etwa ergäbe das französische Wort für Weihnachten. -In LilyPond 2.6 und höher müssen diese Sonderzeichen direkt -als utf-8-Zeichen eingegeben werden, in diesem Fall also @qq{ë}. -@code{convert-ly} kann nicht alle dieser LaTeX-Befehle -verändern, das muss manuell vorgenommen werden. - - -@node Fehlersuche (alles auseinandernehmen) -@subsection Fehlersuche (alles auseinandernehmen) -@translationof Troubleshooting (taking it all apart) - -Früher oder später werden Sie in die Lage kommen, -dass LilyPond Ihre Datei nicht kompilieren will. Die -Information, die LilyPond während der Übersetzung -gibt, können Ihnen helfen, den Fehler zu finden, aber -in vielen Fällen müssen Sie nach der Fehlerquelle -auf die Suche gehen. - -Die besten Hilfsmittel sind in diesem Fall das Zeilen- -und Blockkommentar (angezeigt durch @code{%} bzw. -@code{%@{ ... %@}}). Wenn Sie nicht bestimmen können, -wo sich das Problem befindet, beginnen Sie damit, große -Teile des Quelltextes auszukommentieren. Nachdem Sie -einen Teil auskommentiert haben, versuchen Sie, die Datei -erneut zu übersetzen. Wenn es jetzt funktioniert, muss -sich das Problem innerhalb der Kommentare befinden. -Wenn es nicht funktioniert, müssen Sie weitere Teile -auskommentieren bis sie eine Version haben, die funktioniert. - -In Extremfällen bleibt nur noch solch ein Beispiel übrig: - -@example -\score @{ - << - % \melody - % \harmony - % \bass - >> - \layout@{@} -@} -@end example - -@noindent -(also eine Datei ohne Noten). - -Geben Sie nicht auf, wenn das vorkommen sollte. Nehmen -Sie das Kommentarzeichen von einem Teil wieder weg, sagen -wir der Bassstimme, und schauen Sie, ob es funktioniert. -Wenn nicht, dann kommentieren Sie die gesamte Bassstimme -aus, aber nicht den @code{\bass}-Befehl in dem - @code{\score}-Abschnitt: - -@example -bass = \relative c' @{ -%@{ - c4 c c c - d d d d -%@} -@} -@end example - -Jetzt beginnen Sie damit, langsam Stück für Stück der -Bassstimme wieder hineinzunehmen, bis Sie die problematische -Zeile finden. - -Eine andere nützliche Technik zur Problemlösung ist es, -@ref{Minimalbeispiele} zu konstruieren. - - -@node Minimalbeispiele -@subsection Minimalbeispiele -@translationof Minimal examples - -Ein Minimalbeispiel ist eine Beispieldatei, die so klein wie -möglich ist. Diese Beispiele sind sehr viel einfacher zu -verstehen als die langen Originaldateien. Minimalbeispiele -werden benutzt, um - - -@itemize -@item Fehlerberichte zu erstellen, -@item eine Hilfeanfrage an die E-Mail-Liste zu schicken, -@item Ein Beispiel zur @uref{http://lsr@/.dsi@/.unimi@/.it/,LilyPond -Schnipselsammlung} hinzuzufügen. -@end itemize - -Um ein Beispiel zu konstruieren, das so klein wie möglich ist, -gibt es eine einfache Regel: Alles nicht Notwendige entfernen. -Wenn Sie unnötige Teile einer Datei entfernen, bietet es sich an, -sie auszukommentieren und nicht gleich zu löschen. Auf diese Weise -können Sie eine Zeile leicht wieder mit aufnehmen, sollten Sie sie -doch brauchen, anstatt sie von Anfang an neu zu schreiben. - -Es gibt zwei Ausnahmen dieser @qq{So klein wie möglich}-Regel: - -@itemize -@item Fügen Sie immer einen @code{\version}Befehl ein. -@item Wenn es möglich ist, benutzen Sie @code{\paper@{ ragged-right = ##t @}} -am Beginn des Beispiels. -@end itemize - -Der Sinn der Minimalbeispiele ist, dass sie einfach lesbar sind: - -@itemize -@item Vermeiden Sie es, komplizierte Noten, Schlüssel oder Taktangaben -zu verwenden, es sei denn, Sie wollen genau an diesen Elementen -etwas demonstrieren. -@item Benutzen Sie keine @code{\override}-Befehle, wenn sie nicht der -Zweck des Beispieles sind. -@end itemize - - -@node Partituren und Stimmen -@section Partituren und Stimmen -@translationof Scores and parts - -Orchesternoten werden alle zweimal gesetzt. Erstens als Stimmen für -die Musiker, und dann als große Partitur für den Dirigenten. Mit -Variablen -kann hier doppelte Arbeit erspart werden. Die Musik muss nur einmal -eingegeben werden und wird in einer Variable abgelegt. Der Inhalt -dieser -Variable wird dann benutzt, um sowohl die Stimme als auch die Partitur -zu erstellen. - -Es bietet sich an, die Noten in eigenen Dateien zu speichern. Sagen wir -beispielsweise, dass in der Datei @file{Horn-Noten.ly} die folgenden -Noten eines Duetts für Horn und Fagott gespeichert sind: - -@example -HornNoten = \relative c @{ - \time 2/4 - r4 f8 a cis4 f e d -@} -@end example - -@noindent -Daraus wird dann eine eigene Stimme gemacht, indem folgende Datei -erstellt -wird: - -@example -\include "Horn-Noten.ly" -\header @{ - instrument = "Horn in F" -@} - -@{ - \transpose f c' \HornNoten -@} -@end example - -Die Zeile - -@example -\include "Horn-Noten.ly" -@end example - -@noindent -setzt den Inhalt der Datei @file{Horn-Noten.ly} an die Stelle des -Befehls in die aktuelle Datei. Damit besteht also eine Definition -für @code{HornNoten}, so dass die Variable verwendet werden kann. -Der Befehl @code{\transpose f@tie{}c'} zeigt an, dass das Argument, -also @code{\HornNoten}, um eine Quinte nach oben transponiert wird. -Klingendes @q{f} wird also als @code{c'} notiert. Das entspricht -der Notation eines Waldhorns in F. Die Transposition zeigt die folgende -Ausgabe: - -@lilypond[quote,ragged-right] -\transpose f c' \relative c { - \time 2/4 - r4 f8 a cis4 f e d -} -@end lilypond - -In der Musik für mehrere Instrumente kommt es oft vor, dass eine Stimme -für mehrere Takte nicht spielt. Das wird mit einer besonderen Pause -angezeigt, dem Pausenzeichen für mehrere Takte (engl. multi-measure -rest). Sie wird mit dem @emph{großen} Buchstaben @samp{R} eingegeben, -gefolgt von einer Dauer (@code{1}@tie{}für eine Ganze, @code{2}@tie{} -für eine Halbe usw.). Indem man die Dauer multipliziert, können längere -Pausen erstellt werden. Z. B. dauert diese Pause drei Takte eines -2/4-Taktes: - -@example -R2*3 -@end example - -Wenn die Stimme gedruckt wird, müssen diese Pausen zusammengezogen -werden. -Das wird durch eine Variable erreicht: - -@example -\set Score.skipBars = ##t -@end example - -@noindent -Dieser Befehl setzt die Eigenschaft des @code{skipBars} (@qq{überspringe -Takte}) auf wahr (@code{##t}). Wenn diese Option und die Pause -zu der Musik des Beispiels gesetzt wird, erhält man folgendes Ergebnis: - -@lilypond[quote,ragged-right] -\transpose f c' \relative c { - \time 2/4 - \set Score.skipBars = ##t - R2*3 - r4 f8 a cis4 f e d -} -@end lilypond - -Die Partitur wird erstellt, indem alle Noten zusammengesetzt werden. -Angenommen, die andere Stimme trägt den Namen @code{FagottNoten} - und ist in der Datei @file{Fagott-Noten.ly} gespeichert. Die -Partitur sieht dann folgendermaßen aus: - -@example -\include "Fagott-Noten.ly" -\include "Horn-Noten.ly" - -<< - \new Staff \HornNoten - \new Staff \FagottNoten ->> -@end example - -@noindent -Und mit LilyPond übersetzt: - -@lilypond[quote,ragged-right] -\relative c << - \new Staff { - \time 2/4 R2*3 - r4 f8 a cis4 f e d - } - \new Staff { - \clef bass - r4 d,8 f | gis4 c | b bes | - a8 e f4 | g d | gis f - } ->> -@end lilypond - - -@node Make und Makefiles -@section Make und Makefiles -@translationof Make and Makefiles - -@cindex Makefile -@cindex Make-Dateien -@cindex make - -Fast alle Betriebssysteme, auf denen LilyPond benutzt werden kann, -unterstützen ein Programm mit dem Namen @code{make}. Dieses Programm -liest eine besondere Datei mit der Bezeichnung @code{Makefile}, -die definiert, welche Dateien von welchen anderen Dateien abhängen und -welche Befehle für das Betriebssystem nötig sind, um eine Datei aus -einer anderen zu erstellen. Ein Makefile könnte etwa erklären, wie -@code{ballad.pdf} und @code{ballad.midi} aus @code{ballad.ly} -erstellt werden können, indem LilyPond aufgerufen wird. - -Es gibt Fällen, wenn es sich sehr stark empfiehlt, ein @code{Makefile} -für das aktuelle Projekt zu erstellen, entweder zur eigenen Bequemlichkeit, -oder aber auch als Hilfe für andere, die vielleicht einmal die -Quelldateien lesen und verstehen wollen. Insbesondere bei großen Projekten -mit vielen eingefügten Dateien und unterschiedlichen Ausgabeoptionen -(etwa Partitur, einzelne Stimmen, Dirigierpartitur, Klavierauszug usw.), -aber auch bei Projekten, die komplizierte Programmaufrufe zur Verarbeitung -erfordern (wenn man etwa mit @code{lilypond-book} arbeitet), lohnt -sich die Erstellung einer Make-Datei. Diese Dateien können sehr -unterschiedliche ausfallen, und ihre Komplexität und Flexibilität kann -den Bedürfnissen aber auch Kenntnissen des Schreibers angepasst werden. -Das Programm GNU Make ist auf GNU/Linux Distributionen und MacOS X -installiert, aber es ist auch für Windows erhältlich. - -Das @strong{GNU Make Manual} gibt eine vollständige Anleitung, wie -@code{make} benutzt werden kann.  Hier sollen nur einige kleine -Blicke auf die vielfältigen Möglichkeiten geworfen werden. - -Die Befehle, um Regeln in einer Make-Datei zu erstellen, unterscheidet -sich zwischen den Betriebssystemen. Die verschiedenen Linuxe und -MacOS X benutzen @code{bash}, während unter Windows @code{cmd} eingesetzt -wird. Unter MacOS X muss man das System so konfigurieren, dass -die Kommandozeile benutzt wird. Hier einige Beispiele für Make-Dateien, -mit Versionen für Linux/MacOS und Windows. - -Das erste Beispiel ist für ein Orchesterstück in vier Stätzen unt mit -der folgenden Dateistruktur: - -@example -Symphony/ -|-- MIDI/ -|-- Makefile -|-- Notes/ -| |-- cello.ily -| |-- figures.ily -| |-- horn.ily -| |-- oboe.ily -| |-- trioString.ily -| |-- viola.ily -| |-- violinOne.ily -| `-- violinTwo.ily -|-- PDF/ -|-- Parts/ -| |-- symphony-cello.ly -| |-- symphony-horn.ly -| |-- symphony-oboes.ly -| |-- symphony-viola.ly -| |-- symphony-violinOne.ly -| `-- symphony-violinTwo.ly -|-- Scores/ -| |-- symphony.ly -| |-- symphonyI.ly -| |-- symphonyII.ly -| |-- symphonyIII.ly -| `-- symphonyIV.ly -`-- symphonyDefs.ily -@end example - -Die @code{.ly}-Dateien un den Verzeichnissen @code{Scores} und -@code{Parts} erhalten ihrere Noten aus @code{.ily}-Dateien, die -sich im @code{Notes}-Verzeichnis befinden: - -@example -%%% Kopfzeile der Datei "symphony-cello.ly" -\include ../definitions.ily -\include ../Notes/cello.ily -@end example - -Die Make-Datei hat die Ziele @code{score} (das gesamte Stück als -große Partitur), @code{movements} (die einzelnen Sätze als große -Partitur) und @code{parts} (die einzelnen Stimmen für die Spieler). -Es gibt auch das Ziel @code{archive}, welches ein Tar-Archiv -der Quelldateien erstellt, etwa um die Quellen über das Internet -oder per E-Mail zu verteilen. Hier die Make-Datei für GNU/Linux -oder MacOS X. Sie sollte unter dem Namen @code{Makefile} im obersten -Verzeichnis des Projektes gespeichert werden: - -@warning{Wenn ein Ziel oder eine Musterregel definiert ist, müssen -die folgenden Zeilen mit Tabulatoren, nicht mit Leerzeichen beginnen.} - -@example -# Namensstamm der Ausgabedateien -piece = symphony -# finde heraus, wieviele Prozessoren vorhanden sind -CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//` -# Der Befehl, um lilypond aufzurufen -LILY_CMD = lilypond -ddelete-intermediate-files \ - -dno-point-and-click -djob-count=$(CPU_CORES) - -# Die Endungen, die im Makefile benutzt werden -.SUFFIXES: .ly .ily .pdf .midi - -# Eingabe- und Ausgabedateien werden in den Verzeichnissen durchsucht, -# die sich in der VPATH-Variable befinden. Alle sind Unterverzeichnisse -# des aktuellen Verzeichnisses (angegeben durch die GNU make-Variable -# `CURDIR'). -VPATH = \ - $(CURDIR)/Scores \ - $(CURDIR)/PDF \ - $(CURDIR)/Parts \ - $(CURDIR)/Notes - -# Die Musterregel, um PDF und MIDI-Dateien aus der LY-Eingabedatei -# zu erstellen. Die .pdf-Ausgabedateien werden in das -# `PDF'-Unterverzeichnis abgelegt, die .midi-Dateien in das -# `MIDI'-Unterverzeichnis. -%.pdf %.midi: %.ly - $(LILY_CMD) $<; \ # this line begins with a tab - if test -f "$*.pdf"; then \ - mv "$*.pdf" PDF/; \ - fi; \ - if test -f "$*.midi"; then \ - mv "$*.midi" MIDI/; \ - fi - -notes = \ - cello.ily \ - horn.ily \ - oboe.ily \ - viola.ily \ - violinOne.ily \ - violinTwo.ily - -# Abhängigkeiten der einzelnen Sätze. -$(piece)I.pdf: $(piece)I.ly $(notes) -$(piece)II.pdf: $(piece)II.ly $(notes) -$(piece)III.pdf: $(piece)III.ly $(notes) -$(piece)IV.pdf: $(piece)IV.ly $(notes) - -# Abhängigkeiten der großen Partitur. -$(piece).pdf: $(piece).ly $(notes) - -# Abhängigkeiten der Stimmen. -$(piece)-cello.pdf: $(piece)-cello.ly cello.ily -$(piece)-horn.pdf: $(piece)-horn.ly horn.ily -$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily -$(piece)-viola.pdf: $(piece)-viola.ly viola.ily -$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily -$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily - -# `make score' eintippen, um die große Partitur mit allen vier -# Sätzen als eine Datei zu erstellen. -.PHONY: score -score: $(piece).pdf - -# `make parts' tippen, um alle Stimmen zu erstellen. -# `make foo.pdf' tippen, um die Stimme für das Instrument `foo' zu erstellen. -# Beispiel: `make symphony-cello.pdf'. -.PHONY: parts -parts: $(piece)-cello.pdf \ - $(piece)-violinOne.pdf \ - $(piece)-violinTwo.pdf \ - $(piece)-viola.pdf \ - $(piece)-oboes.pdf \ - $(piece)-horn.pdf - -# `make movements' tippen um Dateien für die vier Sätze einzeln zu erstellen. -.PHONY: movements -movements: $(piece)I.pdf \ - $(piece)II.pdf \ - $(piece)III.pdf \ - $(piece)IV.pdf - -all: score parts movements - -archive: - tar -cvvf stamitz.tar \ # this line begins with a tab - --exclude=*pdf --exclude=*~ \ - --exclude=*midi --exclude=*.tar \ - ../Stamitz/* -@end example - -Unter Windows ergeben sich bestimmte Komplikationen. Nachdem man -GNU Make für Windows heruntergeladen und installiert hat, muss -man den richtigen Pfad in den Umgebungsvariablen des Systems setzen, -damit die DOS-Kommandozeile das Make-Programm finden kann. Um das -vorzunehmen, kann mit der rechten Maustaste auf "Arbeitsplatz" -klicken, dann @code{Eigenschaften} und @code{Erweitert} geklickt -werden. Hier wählt man @code{Umgebungsvariablen}. In der -Liste @code{Systemvariablen} wählt man @code{Path} und mit -einem Klick auf @code{Bearbeiten} kann man den Pfad zu der -@code{.exe}-Datei von GNU Make hinzufügen, der etwa wie -folgt aussieht: - -@example -C:\Program Files\GnuWin32\bin -@end example - -Die Make-Datei selber muss auch angepasst werden, um unterschiedliche -Shell-Befehle zu verwenden und mit Leerzeichen umgehen zu können, -die sich in einigen Standardverzeichnissen unter Windows befinden. -Das @code{archive}-Ziel wird entfernt, da Windows den -@code{tar}-Befehl nicht kennt, und Windows benutzt auch eine -andere Dateiendung für midi-Dateien. - - -@example -## WINDOWS VERSION -## -piece = symphony -LILY_CMD = lilypond -ddelete-intermediate-files \ - -dno-point-and-click \ - -djob-count=$(NUMBER_OF_PROCESSORS) - -# 8.3 Bezeichnung für CURDIR erhalten (Workaround wg. Leerzeichen in PATH) -workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \ - do @@echo %%~sb) - -.SUFFIXES: .ly .ily .pdf .mid - -VPATH = \ - $(workdir)/Scores \ - $(workdir)/PDF \ - $(workdir)/Parts \ - $(workdir)/Notes - -%.pdf %.mid: %.ly - $(LILY_CMD) $< # diese Zeile beginnt mit Tabulator - if exist "$*.pdf" move /Y "$*.pdf" PDF/ # begin with tab - if exist "$*.mid" move /Y "$*.mid" MIDI/ # begin with tab - -notes = \ - cello.ily \ - figures.ily \ - horn.ily \ - oboe.ily \ - trioString.ily \ - viola.ily \ - violinOne.ily \ - violinTwo.ily - -$(piece)I.pdf: $(piece)I.ly $(notes) -$(piece)II.pdf: $(piece)II.ly $(notes) -$(piece)III.pdf: $(piece)III.ly $(notes) -$(piece)IV.pdf: $(piece)IV.ly $(notes) - -$(piece).pdf: $(piece).ly $(notes) - -$(piece)-cello.pdf: $(piece)-cello.ly cello.ily -$(piece)-horn.pdf: $(piece)-horn.ly horn.ily -$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily -$(piece)-viola.pdf: $(piece)-viola.ly viola.ily -$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily -$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily - -.PHONY: score -score: $(piece).pdf - -.PHONY: parts -parts: $(piece)-cello.pdf \ - $(piece)-violinOne.pdf \ - $(piece)-violinTwo.pdf \ - $(piece)-viola.pdf \ - $(piece)-oboes.pdf \ - $(piece)-horn.pdf - -.PHONY: movements -movements: $(piece)I.pdf \ - $(piece)II.pdf \ - $(piece)III.pdf \ - $(piece)IV.pdf - -all: score parts movements -@end example - -Die nächste Make-Datei ist für ein @command{lilypond-book}-Dokument, -das in LaTeX gesetzt wird. Das Projekt hat einen Index, welcher -erfordert, dass der Befehl @command{latex} zweimal aufgerufen wird, -um die Verweise zu aktualisieren. Ausgabedateien werden in einem -@code{out}-Verzeichnis für die .pdf-Dateien gespeichert und in -@code{htmlout} für die html-Dateien. - -@example -SHELL=/bin/sh -FILE=myproject -OUTDIR=out -WEBDIR=htmlout -VIEWER=acroread -BROWSER=firefox -LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex -LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex -PDF=cd $(OUTDIR) && pdflatex $(FILE) -HTML=cd $(WEBDIR) && latex2html $(FILE) -INDEX=cd $(OUTDIR) && makeindex $(FILE) -PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf & - -all: pdf web keep - -pdf: - $(LILYBOOK_PDF) # begin with tab - $(PDF) # begin with tab - $(INDEX) # begin with tab - $(PDF) # begin with tab - $(PREVIEW) # begin with tab - -web: - $(LILYBOOK_HTML) # begin with tab - $(HTML) # begin with tab - cp -R $(WEBDIR)/$(FILE)/ ./ # begin with tab - $(BROWSER) $(FILE)/$(FILE).html & # begin with tab - -keep: pdf - cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # begin with tab - -clean: - rm -rf $(OUTDIR) # begin with tab - -web-clean: - rm -rf $(WEBDIR) # begin with tab - -archive: - tar -cvvf myproject.tar \ # begin this line with tab - --exclude=out/* \ - --exclude=htmlout/* \ - --exclude=myproject/* \ - --exclude=*midi \ - --exclude=*pdf \ - --exclude=*~ \ - ../MyProject/* -@end example - -TODO: soll auch unter Windows funktionieren - -Die vorige Make-Datei funktioniert nicht unter Windows. Als Alternative -für Windows-Benutzer könnte man eine einfache batch-Datei erstellen, -welche die erforderlichen Befehl enthält. Sie kümmert sich nicht -um Abhängigkeiten, wie es eine Make-Datei kann, aber wenigstens -wird die Kompilation auf einen einzigen Befehl beschränkt. Das folgende -kann als Datei @command{build.bat} oder @command{build.cmd} gespeichert -werden. Die Batch-Datei kann auf der Kommandozeile aufgerufen werden -oder einfach doppelt angeklickt werden. - -@example -lilypond-book --output=out --pdf myproject.lytex -cd out -pdflatex myproject -makeindex myproject -pdflatex myproject -cd .. -copy out\myproject.pdf MyProject.pdf -@end example - - -@seealso -Programmbenutzung: -@rprogram{Einrichtung für MacOS X}, -@rprogram{Benutzung auf der Kommandozeile}, -@rprogram{LilyPond-book} -- 2.39.2