From 993c219c1e03849dfbaba14bb3ec8e1f03e4841e Mon Sep 17 00:00:00 2001 From: Francisco Vila Date: Fri, 11 Feb 2011 12:33:55 +0100 Subject: [PATCH] Doc-cs: Essay, Learning, Usage and others. --- Documentation/cs/essay/literature.itely | 103 + Documentation/cs/learning.tely | 2 +- Documentation/cs/learning/fundamental.itely | 3474 ++++++++++++++ Documentation/cs/learning/tutorial.itely | 18 +- Documentation/cs/learning/tweaks.itely | 4558 +++++++++++++++++++ Documentation/cs/macros.itexi | 2 +- Documentation/cs/usage/external.itely | 662 +++ Documentation/cs/usage/lilypond-book.itely | 1312 ++++++ Documentation/cs/usage/running.itely | 878 ++++ Documentation/cs/usage/setup.itely | 357 ++ Documentation/cs/usage/suggestions.itely | 638 +++ Documentation/cs/usage/updating.itely | 270 ++ Documentation/cs/web/download.itexi | 1 + Documentation/cs/web/manuals.itexi | 502 +- 14 files changed, 12532 insertions(+), 245 deletions(-) create mode 100755 Documentation/cs/essay/literature.itely mode change 100644 => 100755 Documentation/cs/learning.tely create mode 100755 Documentation/cs/learning/fundamental.itely mode change 100644 => 100755 Documentation/cs/learning/tutorial.itely create mode 100755 Documentation/cs/learning/tweaks.itely mode change 100644 => 100755 Documentation/cs/macros.itexi create mode 100755 Documentation/cs/usage/external.itely create mode 100755 Documentation/cs/usage/lilypond-book.itely create mode 100755 Documentation/cs/usage/running.itely create mode 100755 Documentation/cs/usage/setup.itely create mode 100755 Documentation/cs/usage/suggestions.itely create mode 100755 Documentation/cs/usage/updating.itely mode change 100644 => 100755 Documentation/cs/web/download.itexi mode change 100644 => 100755 Documentation/cs/web/manuals.itexi diff --git a/Documentation/cs/essay/literature.itely b/Documentation/cs/essay/literature.itely new file mode 100755 index 0000000000..b286732aa6 --- /dev/null +++ b/Documentation/cs/essay/literature.itely @@ -0,0 +1,103 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- + +@ignore + Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437 + + 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.13.36" + +@c Translators: Pavel Fric + + +@node Seznam literatury +@chapter Seznam literatury +@translationof Literature list + +Zde je seznam literatury, die in LilyPond benutzt wurde: + +@menu +* Krátký seznam literatury:: +* Dlouhý seznam literatury:: +@end menu + +@node Krátký seznam literatury +@section Krátký seznam literatury +@translationof Short literature list + +Wenn Sie mehr über Notation und den Notenstich erfahren wollen, sind +hier einige interessante Titel gesammelt. + + +@table @cite + +@item Ignatzek 1995 +Klaus Ignatzek, Die Jazzmethode für Klavier. Schott's Söhne +1995. Mainz, Germany ISBN 3-7957-5140-3. + +Eine praktische Einführung zum Spielen von Jazz auf dem Klavier. Eins der +ersten Kapitel enthält einen Überblick über die Akkorde, die im Jazz +verwendet werden. + +@item Gerou 1996 + +Tom Gerou and Linda Lusk, Essential Dictionary of Music +Notation. Alfred Publishing, Van Nuys CA ISBN 0-88284-768-6. + +Eine ausführliche, alphabetische Liste vieler Belange des Musiksatzes +und der Notation; die üblichen Fälle werden behandelt. + +@item Read 1968 +Gardner Read, Music Notation: A Manual of Modern Practice. +Taplinger Publishing, New York (2nd edition). + +Ein Klassiker für die Musiknotation. + +@item Ross 1987 +Ted Ross, Teach yourself the art of music engraving and processing. +Hansen House, Miami, Florida 1987. + +Dieses Buch handelt vom Musiksatz, also vom professionellen Notenstich. +Hier sind Anweisungen über Stempel, die Benutzung von Stiften und +nationale Konventionen versammelt. Die Kapitel zu Reproduktionstechniken +und der historische Überblick sind auch interessant. + +@item Schirmer 2001 +The G.Schirmer/AMP Manual of Style and Usage. G.Schirmer/AMP, NY, 2001. + +Dieses Handbuch setzt den Fokus auf die Herstellung von Drucksachen für den +Schirmer-Verlag. Hier werden viele Details behandelt, die sich in anderen +Notationshandbüchern nicht finden. Es gibt auch einen guten Überblick, was +nötig ist, um Drucke in publikationstauglicher Qualität zu produzieren. + +@item Stone 1980 + +Kurt Stone, Music Notation in the Twentieth Century. +Norton, New York 1980. + +Dieses Buch enthält einen Überblick über die Notation von moderner E-Musik, +beginnt aber mit einem Überblick über bereits existente Praktiken. + +@end table + + +@node Dlouhý seznam literatury +@section Dlouhý seznam literatury +@translationof Long literatur list + +@subheading Colorado + +@include colorado.itexi + +@subheading Computernotation + +@include computer-notation.itexi + +@subheading Notensatz + +@include engravingbib.itexi + + diff --git a/Documentation/cs/learning.tely b/Documentation/cs/learning.tely old mode 100644 new mode 100755 index c18fc2fe29..f027471301 --- a/Documentation/cs/learning.tely +++ b/Documentation/cs/learning.tely @@ -78,7 +78,7 @@ naleznete kopii tohoto a dalších souborů s dokumentací. * Cvičení:: Cvičení na úvod. * Běžný notový zápis:: Nejčastější případy notového zápisu. * Základní pojmy:: Základní pojmy, které jsou potřeba kvůli přečtení zbytku této příručky. -* Doladění výstupu:: Úvod do ovlivňování obrazu notového zápisu. +* Ladění výstupu:: Úvod do ovlivňování obrazu notového zápisu. * Práce na projektech LilyPondu:: Používání programu ve skutečném životě. diff --git a/Documentation/cs/learning/fundamental.itely b/Documentation/cs/learning/fundamental.itely new file mode 100755 index 0000000000..19feea396f --- /dev/null +++ b/Documentation/cs/learning/fundamental.itely @@ -0,0 +1,3474 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*- + +@ignore + Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f + + 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.13.42" +@c Translators: Pavel Fric + +@node Základní pojmy +@chapter Základní pojmy +@translationof Fundamental concepts + +Nachdem im Tutorial gezeigt wurde, wie aus einfachen Text-Dateien +wunderschön formatierte Musiknoten erzeugt werden können, stellt +dieses Kapitel die Konzepte und Techniken vor, wie auch komplexere +Partituren erstellt werden können. + +@menu +* Jak pracují vstupní soubory LilyPondu:: +* Hlasy obsahují noty:: +* Souvislosti a rytci:: +* Rozšíření příkladů:: +@end menu + +@node Jak pracují vstupní soubory LilyPondu +@section Jak pracují vstupní soubory LilyPondu +@translationof How LilyPond input files work + +Das LilyPond Eingabeformat hat eine ziemlich freie Form, so dass +für erfahrene Benutzer viel Freiheit besteht, die Struktur ihrer +Quelldateien anzulegen. Für Neulinge kann diese Flexibilität aber +erst einmal verwirrend sein. In diesem Kapitel soll darum ein Teil +dieser Strukturen dargestellt werden, vieles aber zur Vereinfachung +auch weggelassen werden. Für eine komplette Beschreibung des Eingabeformats +siehe @ruser{Die Dateistruktur}. + +Die meisten Beispiele in diesem Handbuch sind kleine Schnipsel, wie +etwa dieser: + +@example +c4 a b c +@end example + +Wie hoffentlich bekannt ist, lässt sich solch ein Schnipsel nicht +in dieser Form übersetzen. Diese Beispiele sind also nur Kurzformen +von wirklichen Beispielen. Sie müssen wenigstens zusätzlich in +geschweifte Klammern gesetzt werden. + +@example +@{ + c4 a b c +@} +@end example + +Die meisten Beispiele benutzen auch den @code{\relative c'}-Befehl. +Der ist nicht nötig, um die Dateien zu übersetzen, aber in den meisten +Fällen sieht der Notensatz seltsam aus, wenn man den Befehl +weglässt. + +@lilypond[quote,fragment,ragged-right,verbatim] +\relative c'' { + c4 a b c +} +@end lilypond + +Eine komplette Definition des Eingabeformats findet sich +im Kapitel @ruser{Die Dateistruktur}. + +@menu +* Uvedení do stavby souboru v LilyPondu:: +* Notový zápis je jedním (jediným) složeným hudebním výrazem:: +* Naskládání hudebních výrazů do sebe:: +* O ne-naskládatelnosti závorek a ligatur:: +@end menu + +@node Uvedení do stavby souboru v LilyPondu +@subsection Uvedení do stavby souboru v LilyPondu +@translationof Introduction to the LilyPond file structure + +@cindex Eingabeformat +@cindex Dateistruktur +@cindex Struktur, Datei + +Ein grundlegendes Beispiel einer Eingabedatei für LilyPond lautet: + +@example +\version @w{"@version{}"} + +\header @{ @} + +\score @{ + @var{...zusammengesetzter Musik-Ausdruck...} % Die gesamten Noten kommen hier hin! + \layout @{ @} + \midi @{ @} +@} +@end example + +@noindent +Aufgrund der Flexibilität von LilyPond gibt es viele Variationen dieses +Schemas, aber dieses Beispiel dient als einfacher Ausgangspunkt. + +@funindex \book +@funindex \score +@funindex book +@funindex score +@cindex book +@cindex score + +Bisher hat noch keines der Beispiele den @code{\score@{@}}-Befehl +benutzt, da Lilypond derartige zusätzliche Befehle automatisch +bei Bedarf einfügt, wenn die Eingabedatei eine einfache Struktur +hat. + +Sehen wir uns als ein solches einfaches Beispiel an: + +@example +\relative c'' @{ + c4 a d c +@} +@end example + +@noindent +Im Hintergrund kommen hier noch einige Ebenen dazu: LilyPond-Code +in der obigen Form ist in Wirklichkeit eine Abkürzung. Auch wenn man so +Dateien schreiben kann und sie auch korrekt gesetzt werden, heißt +der vollständige Code, der hier gemeint ist, eigentlich: + +@example +\book @{ + \score @{ + \new Staff @{ + \new Voice @{ + \relative c'' @{ + c4 a b c + @} + @} + @} + \layout @{ @} + @} +@} +@end example + +@noindent +Mit anderen Worten: Wenn die Eingabedatei einen einfachen Musik-Ausdruck +enthält, wird LilyPond die Datei so interpretieren, als ob dieser +Ausdruck in den oben gezeigten Befehlen eingegeben wurde. Diese nötige +Struktur wird automatisch im Speicher beim Aufruf von LilyPond erzeugt, +ohne dass der Benutzer davon etwas bemerkt. + +@cindex Implizite Kontexte +@cindex Kontexte, implizit + +@strong{Ein Wort der Warnung ist jedoch angebracht!} Viele der Beispiele +in der Dokumentation von LilyPond lassen die @code{\new Staff} und @code{\new Voice} +Befehle zur Erzeugung einer Notenzeile und einer Stimme (beides ist in +LilyPond ein sogenannter Kontext) bewusst aus, +damit sie implizit von LilyPond im Speicher erzeugt werden. +Für einfache Dokumente funktioniert das im Allgemeinen sehr gut, für +komplexere Partituren können dadurch aber unerwartete Ergebnisse +entstehen, teilweise sogar unerwartete leere Notenzeilen. Um +die entsprechenden Kontexte in diesem Fall explizit zu erzeugen, +siehe @ref{Souvislosti a rytci,,souvislosti a rytce}. + +@warning{Wenn mehr als ein paar Zeilen an Musik eingegeben werden, +empfiehlt es sich, die Notenzeilen und die Stimmen immer explizit +mit @code{\new Staff} und @code{\new Voice} zu erzeugen.} + +Im Moment wollen wir aber zu unserem ersten Beispiel zurückkehren und +nur den @code{\score}-Befehl näher betrachten. + +Eine Partitur (@code{\score}) muss immer mit einem musikalischen Ausdruck +beginnen. Das ist letztendlich alle Musik, angefangen bei einer +einzelnen +Note bis hin zu einer riesigen Partitur mit vielen Notensystemen +(bezeichnet hier durch @code{GrandStaff}): + +@example +@{ + \new GrandStaff << + @var{...hier die gesamte Partitur...} + >> +@} +@end example + +@noindent +Da sich alles innerhalb der geschweiften Klammern @code{@{ ... @}} +befindet, wird es wie ein einziger musikalischer Ausdruck behandelt. + + +Ein @code{\score} auch andere Dinge enthalten, wie etwa + +@example +\score @{ + @{ c'4 a b c' @} + \layout @{ @} + \midi @{ @} + \header @{ @} +@} +@end example + +@funindex \header +@funindex \layout +@funindex \midi +@funindex header +@funindex layout +@funindex midi +@cindex header +@cindex midi +@cindex Layout +@cindex Kopfzeile + +@noindent +Wie man sieht, sind die drei Befehle @code{\header}, @code{\layout} und +@code{\midi} von spezieller Natur: Im Gegensatz zu vielen Anderen Befehlen, +die auch mit einem @code{\} beginnen, liefern sie @emph{keinen} Musikausdruck +und sind auch nicht Teil eines musikalischen Ausdrucks. Daher können sie +sowohl innerhalb eines @code{\score}-Blocks als auch außerhalb plaziert +werden. Tatsächlich werden einige dieser Befehle meist außerhalb des +@code{\score}-Blocksgesetzt, zum Beispiel findet sich der @code{\header} +sehr oft oberhalb der @code{\score}-Umgebung. Das +funktioniert genauso gut. + +Zwei bisher noch nicht aufgetauchte Befehle sind +@code{\layout @{ @}} und @code{\midi @{@}}. Wenn sie in einer +Datei vorkommen, führt dies dazu, dass Lilypond eine druckfähige PDF-Datei +bzw. eine MIDI-Datei erzeugt. Genauer beschrieben werden sie im +Benutzerhandbuch -- @ruser{Partiturlayout} und +@ruser{MIDI-Dateien erstellen}. + +@cindex Partituren, mehrfache +@cindex book-Abschnitte, implizit +@cindex implizite book-Umgebung +@funindex \book +@funindex book + +Ihr LilyPond Code kann auch mehrere @code{\score}-Blöcke enthalten. +Jeder davon wird als eigenständige Partitur interpretiert, die +allerdings alle in dieselbe Ausgabedatei plaziert werden. +Ein @code{\book}-Befehl ist nicht explizit notwendig -- er wird +implizit erzeugt. Wenn jedoch für jeden @code{\score}-Block in einer +einzigen @file{.ly}-Datei eine eigene Ausgabe-Datei erzeugt werden soll, +dann muss jeder dieser Blöcke in einen eigenen @code{\book}-Block +gesetzt werden: Jeder @code{\book}-Block erzeugt dann eine +eigene Ausgabedatei. + +Zusammenfassung: + +Jeder @code{\book}-Block erzeugt eine eigene Ausgabedatei (z.B. eine +PDF-Datei). Wenn Sie keinen derartigen Block explizit angegeben haben, +setzt LilyPond den gesamten Dateiinhalt innerhalb eines einzigen +impliziten @code{\book}-Blocks. + +Jeder @code{\score}-Block beschreibt ein eigenständiges Musikstück +innerhalb des @code{\book}-Blocks. + +@cindex Layout-Umgebung, Platzierung +@cindex Platzierung von layout-Umgebung + +Jeder @code{\layout}-Block wirkt sich auf den @code{\score}- oder +@code{\book}-Block aus, in dem er auftritt. So wirkt z.B. ein +@code{\layout}-Block innerhalb eines @code{\score}-Blocks nur auf +diesen einen Block und seinen gesamten Inhalt, ein @code{\layout}-Block +außerhalb eines @code{\score}-Blocks (und daher innerhalb des implizit +erzeugten oder explizit angegebenen @code{\book}-Blocks) jedoch auf +alle @code{\score}-Blocks innerhalb dieses @code{\book}-Blocks. + +Nähere Details finden sich im Abschnitt @ruser{Mehrere Partituren in einem Buch}. + +@cindex Variablen +@cindex Bezeichner + +Eine gute Möglichkeit zur Vereinfachung sind selbst definierte Variablen, wie auch gezeigt in @ref{Stücke durch Bezeichner organisieren}. +Alle Vorlagen verwenden diese Möglichkeit: + +@example +melodie = \relative c' @{ + c4 a b c +@} + +\score @{ + @{ \melodie @} +@} +@end example + +Wenn LilyPond diese Datei analysiert, nimmt es den Inhalt +von @code{melodie} (alles nach dem Gleichheitszeichen) und +fügt ihn immer dann ein, wenn ein @code{\melodie} +vorkommt. Die Namen sind frei wählbar, die Variable kann genauso +gut @code{melodie}, @code{GLOBAL}, @code{rechteHandKlavier}, +oder @code{foofoobarbaz} heißen. +Als Variablenname kann fast jeder beliebige Name benutzt werden, +allerdings dürfen nur Buchstaben vorkommen (also keine Zahlen, Unterstriche, +Sonderzeichen, etc.) und er darf nicht wie ein LilyPond-Befehl +lauten. Für mehr Information siehe +@ref{Úspora psaní na stroji pomocí proměnných a funkcí,,úsporu psaní na stroji pomocí proměnných a funkcí}. Die genauen +Einschränkungen sind beschrieben in @ruser{Die Dateistruktur}. + + +@seealso +Eine vollständige Definition des Eingabeformats findet sich in +@ruser{Die Dateistruktur}. + + +@node Notový zápis je jedním (jediným) složeným hudebním výrazem +@subsection Notový zápis je jedním (jediným) složeným hudebním výrazem +@translationof Score is a (single) compound musical expression + +@funindex \score +@funindex score +@cindex score +@cindex Partitur +@cindex Musikstück +@cindex zusammengesetzter Musikausdruck +@cindex Musikausdruck, zusammengesetzter + + +Im vorigen Kapitel, @ref{Uvedení do stavby souboru v LilyPondu}, +wurde die allgemeine Struktur einer LilyPond-Quelldatei +beschrieben. Aber anscheinend haben wir die wichtigste +Frage ausgelassen, nämlich wie man herausfindet, was nach +dem @code{\score} geschrieben werden soll. + +In Wirklichkeit ist das aber gar kein Geheimnis. Diese +Zeile ist die Antwort: + +@quotation +@emph{Eine Partitur fängt immer mit @code{\score} an, gefolgt +von einem einzelnen musikalischen Ausdruck.} +@end quotation + +@noindent +Vielleicht wollen Sie noch einmal +@ref{Musikalische Ausdrücke erklärt} überfliegen. In diesem +Kapitel wurde gezeigt, wie sich große musikalische Ausdrücke +aus kleinen Teilen zusammensetzen. Noten können zu Akkorden +verbunden werden usw. Jetzt gehen wir aber in die andere Richtung +und betrachten, wie sich ein großer musikalischer Ausdruck +zerlegen lässt. Zur Einfachheit soll nur ein Sänger und Klavier +in unserem Beispiel eingesetzt werden. Wir brauchen +keine Systemgruppe (StaffGroup), die einfach nur bewirkt, +dass die Systeme mit einer Klammer zusammengefasst werden; sie +wird also entfernt. Wir @emph{brauchen} aber einen Sänger und ein Klavier. + +@example +\score @{ + @{ + << + \new Staff = "Sänger" << + >> + \new PianoStaff = "Klavier" << + >> + >> + @} + \layout @{ @} +@} +@end example + +Hier wurden die Systeme (Staff) benannt: @qq{Sänger} und +@qq{Klavier}. Das ist nicht direkt notwendig in diesem Fall, +aber es ist gut, sich diese Schreibweise anzugewöhnen, damit man +immer sofort erkennt, um welches System es sich handelt. + +Zur Erinnerung: mit @code{<<} und @code{>>} werden Noten gleichzeitig +gesetzt. Dadurch werden Vokalstimme und Klaviersysteme übereinander +ausgegeben. Die @code{<< ... >>}-Konstruktion ist für das +Sänger-System nicht notwendig, wenn hier nur die Noten einer +einzigen Stimme eingefügt werden sollen, aber @code{<< ... >>} +anstelle von geschwungenen Klammern sind notwendig, +sobald mehr als eine Stimme oder etwa eine Notenstimme und +Gesangstext eingefügt werden sollen. In unserem Fall soll eine +Stimme mit Gesangstext notiert werden, sodass die spitzen Klammern +benötigt werden. Die Noten sollen erst später hinzugefügt werden, +hier also erstmal nur ein paar Platzhalternoten und Text. Wenn +Sie sich nicht erinnern, wie man Gesangstext notiert, lesen +Sie noch einmal @code{\addlyrics} in @ref{Setting simple songs}. + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right] +\score { + << + \new Staff = "Sänger" << + \new Voice = "Singstimme" { c'1 } + \addlyrics { And } + >> + \new PianoStaff = "Klavier" << + \new Staff = "oben" { } + \new Staff = "unten" { } + >> + >> + \layout { } +} +@end lilypond + +Jetzt haben wir viel mehr Details. Wir haben ein System (engl. staff) +für einen Sänger, in dem sich wieder eine Stimme (engl. voice) +befindet. @code{Voice} bedeutet für LilyPond eine Stimme (sowohl +gesungen als auch gespielt) und evtl. zusätzlich einen Text. Zusätzlich +werden zwei Notensysteme für das Klavier mit dem Befehl @code{\new +PianoStaff} gesetzt. @code{PianoStaff} bezeichnet die Piano-Umgebung (etwa +durchgehende Taktstriche und die geschweifte Klammer am Anfang), in der +dann wiederum zwei eigene Systeme ("oben" für die rechte Hand und +"unten" +für die linke) erstellt werden, auch wenn das untere System noch +einen Bassschlüssel erhalten muss. + +Jetzt könnte man in diese Umgebung Noten einfügen. Innerhalb der +geschweiften Klammern neben @code{\new Voice = "Singstimme"} +könnte man + +@example +\relative c'' @{ + r4 d8\noBeam g, c4 r +@} +@end example + +@noindent +schreiben. Aber wenn man seine Datei so direkt schreibt, wird +der @code{\score}-Abschnitt sehr lang und es wird ziemlich schwer zu +verstehen, wie alles zusammenhängt. Darum bietet es sich an, Bezeichner +(oder Variablen) zu verwenden. Sie wurden zu Beginn des vorigen +Abschnitts erklärt, erinnern Sie sich? Damit wir sicher gehen +können, dass der Inhalt der @code{text}-Variable als Gesangstext +interpretiert wird, wird ihm @code{\lyricmode} vorangesetzt. Wie +@code{\addlyrics} wird hiermit in den Eingabemodus für Gesangstext +gewechselt. Ohne diesen Befehl würde LilyPond versuchen, den Inhalt +der Variable als Noten zu interpretieren und dabei eine Menge +Fehler produzieren. (Einige andere Eingabemodi sind außerdem noch +verfügbar, siehe @ruser{Input modes}.) + +Also haben wir, wenn wir ein paar Noten und einen Bassschlüssel +für die linke Hand hinzufügen, folgendes Beispiel: + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right] +melodie = \relative c'' { r4 d8\noBeam g, c4 r } +text = \lyricmode { And God said, } +oben = \relative c'' { 2~ } +unten = \relative c { b2 e } + +\score { + << + \new Staff = "Sänger" << + \new Voice = "Singstimme" { \melodie } + \addlyrics { \text } + >> + \new PianoStaff = "Klavier" << + \new Staff = "oben" { \oben } + \new Staff = "unten" { + \clef "bass" + \unten + } + >> + >> + \layout { } +} +@end lilypond + +Beim Schreiben (oder Lesen) einer @code{\score}-Umgebung +sollte man langsam und sorgfältig vorgehen. Am besten fängt +man mit dem größten Gebilde an und definiert dann die darin +enthaltenen kleineren der Reihe nach. Es hilft auch, sehr +genau mit den Einzügen zu sein, so dass jede Zeile, die +der gleichen Ebene angehört, wirklich horizontal an der +gleichen Stelle beginnt. + + +@seealso +Benutzerhandbuch: @ruser{Struktur einer Partitur}. + + +@node Naskládání hudebních výrazů do sebe +@subsection Naskládání hudebních výrazů do sebe +@translationof Nesting music expressions + +@cindex Notenzeilen, temporäre +@cindex Ossia +@cindex temporäre Notenzeilen + +Notenzeilen (die @q{Staff}-Kontexte) müssen nicht unbedingt gleich +zu Beginn erzeugt werden -- sie können auch zu einem späteren +Zeitpunkt eingeführt weden. Das ist vor allem nützlich, um +@rglosnamed{ossia,Ossias} zu erzeugen. Hier folgt ein kurzes Beispiel, +wie eine zusätzliche temporäre Notenzeile für nur drei Noten erzeugt +werden kann: + +@lilypond[verbatim,quote,ragged-right] +\new Staff { + \relative g' { + r4 g8 g c4 c8 d | + e4 r8 + << + { f8 c c } + \new Staff { + f8 f c + } + >> + r4 | + } +} +@end lilypond + +@noindent +Wie man sieht, ist die Größe des Notenschlüssels dieselbe, wie sie +auch bei einer Schlüsseländerung auftritt -- etwas kleiner als +der Schlüssel am Beginn einer Notenzeile. Dies ist normal für +Notenschlüssel, die innerhalb einer Notenzeile gesetzt werden. + +@cindex Notenzeile, Positionierung +@cindex Positionierung einer Notenzeile + +Der Ossia-Abschnitt kann auch oberhalb der Hauptnotenzeile +gesetzt werden: + +@c KEEP LY +@lilypond[verbatim,quote,ragged-right] +\new Staff = "Hauptzeile" { + \relative g' { + r4 g8 g c4 c8 d | + e4 r8 + << + { f8 c c } + \new Staff \with { + alignAboveContext = #"Hauptzeile" + }{ f8 f c } + >> + r4 | + } +} +@end lilypond + +Dieses Beispiel benutzt den @code{\with}-Befehl, der später noch +genauer erklärt wird. Damit kann das Standardverhalten einer +einzelnen Notenzeile geändert werden: Hier wird einfach angegeben, +dass die neue Notenzeile oberhalb der bereits existierenden Zeile +mit Namen @qq{Hauptzeile} plaziert werden soll, anstatt +standardmäßig unterhalb. + + +@seealso +Ossia werden oft ohne Notenschlüssel und Taktangabe gedruckt, meist +auch etwas kleiner als die anderen Notenzeilen. Dies ist natürlich +auch in LilyPond möglich, benötigt aber Befehle, die bisher noch +nicht vorgestellt wurden. Siehe @ref{Größe von Objekten} +und @ruser{Ossia-Systeme}. + + +@node O ne-naskládatelnosti závorek a ligatur +@subsection O ne-naskládatelnosti závorek a ligatur +@translationof On the un-nestedness of brackets and ties + +@cindex Klammern, geschachtelt +@cindex Schachtelung von Klammern +@cindex Klammer-Typen + +Sie haben bisher zahlreiche verschiedene Arten von Klammern +und Klammer-artigen Konstruktionen beim Schreiben von Musik mit +LilyPond kennengelernt. Diese folgen verschiedenen Regeln, die zu +Beginn vielleicht verwirrend wirken. Bevor die genauen Regeln +vorgestellt werden, wollen wir die diversen Klammerarten und Arten +von Klammer-artigen Konstrukten kurz rekapitulieren: + +@c attempt to force this onto a new page +@need 50 +@multitable @columnfractions .3 .7 +@headitem Klammerart + @tab Funktion +@item @code{@{ .. @}} + @tab Umschließt ein sequenzielles Musiksegment +@item @code{< .. >} + @tab Umschließt die Noten eines Akkords +@item @code{<< .. >>} + @tab Umschließt parallele Musikausdrücke +@item @code{( .. )} + @tab Markiert den Beginn und das Ende eines Haltebogens +@item @code{\( .. \)} + @tab Markiert den Beginn und das Ende eines Phasierungsbogens +@item @code{[ .. ]} + @tab Markiert den Beginn und das Ende eines manuell erzeugten Balkens +@end multitable + +Zusätzlich sollten vielleicht noch einige weiter Konstruktionen +erwähnt werden, die Noten auf irgendeine Art und Weise verbinden: +Haltebögen (durch eine Tilde @code{~} markiert), +Triolen (als @code{\times x/y @{..@}} geschrieben) und +Vorschlagnoten (als @code{\grace@{..@}} notiert). + +Außerhalb von LilyPond fordert die übliche Benutzung von +Klammern, dass die entsprechenden Arten korrekt verschachtelt +werden, wie z.B. in @code{<< [ @{ ( .. ) @} ] >>}. Die +schließenden Klammern kommen dabei in der umgekehrten Reihenfolge +wie die öffnenden Klammern vor. Dies ist auch in LilyPond +ein @strong{Muss} für die drei Klammerarten, die in obiger +Tabelle mit dem Wort @q{Umschließt} beschrieben werden -- sie +müssen korrekt geschachtelt werden. +Die restlichen Klammer-artigen Konstruktionen (durch @q{Markiert} +in der Tabelle oben beschrieben), die Haltebögen und die Triolen +brauchen jedoch mit +den anderen Klammern oder Klammer-artigen Konstrukten @strong{nicht} +unbedingt korrekt geschachtelt werden. Tatsächlich sind sie auch +keine Klammern in dem Sinn, dass sie etwas umschließen, sondern +viel mehr Indikatoren, an welcher Stelle ein bestimmtes +musikalisches Objekt beginnt oder endet. + +So kann also z.B. einen Phrasierungsbogen vor einem manuellen +Balken beginn, jedoch schon vor dem Ende des Balkens enden. +Dies mag zwar musikalisch wenig Sinn ergeben, ist aber in LilyPond +auch möglich: + +@lilypond[quote,verbatim,ragged-right,relative=2] +{ g8\( a b[ c b\) a] g4 } +@end lilypond + +Im Allgemeinen können die verschiedenen Klammerarten, +Klammer-artigen Konstruktionen, Haltebögen, +Triolen und Vorschlagnoten beliebig kombiniert werden. +Das folgende Beispiel zeigt einen Balken, der in eine Triole reicht +(Zeile 1), eine Bindebogen, der ebenfalls in eine Triole +reicht (Zeile 2), einen Balken und einen Bindeboden in eine Triole, +ein Haltebogen, der über zwei Triolen läuft, sowie einen +Phrasierungsbogen, der in einer Triole beginnt (Zeilen 3 und 4). + +@lilypond[quote,verbatim,ragged-right] +{ +r16[ g \times 2/3 { r16 e'8] } +g16( a \times 2/3 { b16 d) e' } +g8[( a \times 2/3 { b8 d') e'~] } | +\times 4/5 { e'32\( a b d' e' } a'4.\) +} +@end lilypond + + +@node Hlasy obsahují noty +@section Hlasy obsahují noty +@translationof Voices contain music + +Sänger brauchen Stimmen zum Singen, und LilyPond braucht sie auch: +in der Tat sind alle Noten für alle Instrumente in einer Partitur +innerhalb von Stimmen gesetzt. Die Stimme ist das grundlegendste Prinzip +von LilyPond. + +@menu +* Slyším hlasy:: +* Přímé začátky hlasů:: +* Hlasy a zpěvy:: +@end menu + +@node Slyším hlasy +@subsection Slyším hlasy +@translationof I'm hearing Voices + +@cindex Polyphonie +@cindex Ebenen +@cindex mehrere Stimmen +@cindex Stimmen, mehrere +@cindex Voice context +@cindex context, Voice +@cindex Kontext, Stimme +@cindex Stimmenkontext +@cindex gleichzeitige Noten +@cindex Stimmen versus Akkorde +@cindex Akkorde versus Stimmen +@cindex Noten gleichzeitig + +Die grundlegendsten und innersten Ebenen ein einer LilyPond-Partitur +werden @qq{Voice context} (Stimmenkontext) oder auch nur @qq{Voice} +(Stimme) genannt. Stimmen werden in anderen Notationsprogrammen +manchmal auch als @qq{layer} (Ebene) bezeichnet. + +Tatsächlich ist die Stimmenebene die einzige, die wirklich Noten +enthalten kann. Wenn kein Stimmenkontext explizit erstellt wird, +wird er automatisch erstellt, wie am Anfang dieses Kapitels +gezeigt. Manche Instrumente wie etwa die Oboe können nur eine +Note gleichzeitig spielen. Noten für solche Instrumente sind +monophon und brauchen nur eine einzige Stimme. Instrumente, die +mehrere Noten gleichzeitig spielen können, wie das Klavier, brauchen +dagegen oft mehrere Stimmen, um die verschiedenen gleichzeitig +erklingenden Noten mit oft unterschiedlichen Rhythmen darstellen +zu können. + +Eine einzelne Stimme kann natürlich auch vielen Noten in einem Akkord +enthalten -- wann also braucht man dann mehrere Stimmen? Schauen wir +uns zuerst dieses Beispiel mit vier Akkorden an: + +@lilypond[quote,verbatim,ragged-right,relative=1] +\key g \major +4 +@end lilypond + +Das kann ausgedrückt werden, indem man die einfachen spitzen Klammern +@code{< ... >} benützt, um Akkorde anzuzeigen. Hierfür braucht man +nur eine Stimme. Aber gesetzt der Fall das Fis sollte eigentlich +eine Achtelnote sein, gefolgt von einer Achtelnote G (als Durchgangsnote +hin zum A)? Hier haben wir also zwei Noten, die zur gleichen Zeit +beginnen, aber unterschiedliche Dauern haben: die Viertelnote D und die +Achtelnote Fis. Wie können sie notiert werden? Als Akkord kann man sie +nicht schreiben, weil alle Noten in einem Akkord die gleiche Länge besitzen +müssen. Sie können auch nicht als aufeinanderfolgende Noten geschrieben +werden, denn sie beginnen ja zur selben Zeit. In diesem Fall also brauchen +wir zwei Stimmen. + +Wie aber wird das in der LilyPond-Syntax ausgedrückt? + +@funindex << \\ >> +@funindex \\ + +Die einfachste Art, Fragmente mit mehr als einer Stimme auf einem System +zu notieren, ist, die Stimmen nacheinander (jeweils mit den Klammern +@code{@{ ... @}}) zu schreiben und dann mit den spitzen Klammern +(@code{<<...>>}) simultan zu kombinieren. Die beiden Fragmente müssen +zusätzlich noch mit zwei Backslash-Zeichen (@code{\\}) voneinander +getrennt werden, damit sie als zwei unterschiedliche Stimmen erkannt +werden. Ohne diese Trenner würden sie als eine einzige Stimme notiert +werden. Diese Technik ist besonders dann angebracht, wenn es sich bei +den Noten um hauptsächlich homophone Musik handelt, in der hier und da +polyphone Stellen vorkommen. + +So sieht es aus, wenn die Akkorde in zwei Stimmen aufgeteilt werden +und zur Durchgangsnote noch ein Bogen hinzugefügt wird: + +@lilypond[quote,verbatim,ragged-right,relative=2] +\key g \major +% Voice "1" Voice "2" +<< { g4 fis8( g) a4 g } \\ { d4 d d d } >> +@end lilypond + +Beachte, dass die Hälse der zweiten Stimme nun nach unten zeigen. + +Hier ein anderes Beispiel: + +@lilypond[quote,verbatim,ragged-right,relative=2] +\key d \minor +% Voice "1" Voice "2" +<< { r4 g g4. a8 } \\ { d,2 d4 g } >> +<< { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> +<< { a2. r4 } \\ { fis2. s4 } >> +@end lilypond + +Es ist nicht notwendig, für jeden Takt eine eigene +@code{<< \\ >>}-Konstruktion zu benutzen. Bei Musik mit nur wenigen +Noten pro Takt kann es die Quelldatei besser lesbar machen, aber +wenn in einem Takt viele Noten vorkommen, kann man die gesamten Stimmen +separat schreiben, wie hier: + +@lilypond[quote,verbatim,ragged-right,relative=2] +\key d \minor +<< { + % Voice "1" + r4 g g4. a8 | + bes4 bes c bes | + a2. r4 | +} \\ { + % Voice "2" + d,2 d4 g | + g4 g g8( a) g4 | + fis2. s4 | +} >> +@end lilypond + +Dieses Beispiel hat nur zwei Stimmen, aber die gleiche Konstruktion kann +angewendet werden, wenn man drei oder mehr Stimmen hat, indem man weitere +Backslash-Trenner hinzufügt. + +Die Stimmenkontexte tragen die Namen @code{"1"}, @code{"2"} usw. In jedem +dieser Kontexte wird die vertikale Ausrichtung von Hälsen, Bögen, Dynamik-Zeichen +usw. entsprechend ausgerichtet. + +@lilypond[quote,verbatim] +\new Staff \relative c' { + % Main voice + c16 d e f + % Voice "1" Voice "2" Voice "3" + << { g4 f e } \\ { r8 e4 d c8~ } >> | + << { d2 e } \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> | +} +@end lilypond + +Diese Stimmen sind alle getrennt von der Hauptstimme, die die Noten +außerhalb der @code{<< .. >>}-Konstruktion beinhaltet. Lassen wir es +uns die @emph{simultane Konstruktion} nennen. Bindebögen und Legatobögen +können nur Noten in der selben Stimmen miteinander verbinden und können +also somit nicht aus der simultanen Konstruktion hinausreichen. Umgekehrt +gilt, dass parallele Stimmen aus eigenen simultanen Konstruktionen auf +dem gleichen Notensystem die gleiche Stimme sind. Auch andere, mit dem +Stimmenkontext verknüpfte Eigenschaften erstrecken sich auf alle +simultanen Konstrukte. Hier das gleiche Beispiel, aber mit unterschiedlichen Farben für die Notenköpfe der unterschiedlichen Stimmen. +Beachten Sie, dass Änderungen in einer Stimme sich nicht auf die anderen +Stimmen erstrecken, aber sie sind weiterhin in der selben Stimme vorhanden, +auch noch später im Stück. Beachten Sie auch, dass übergebundene Noten +über die gleiche Stimme in zwei Konstrukten verteilt werden können, wie +hier an der blauen Dreieckstimme gezeigt. + +@lilypond[quote,verbatim] +\new Staff \relative c' { + % Main voice + c16 d e f + << % Bar 1 + { + \voiceOneStyle + g4 f e + } + \\ + { + \voiceTwoStyle + r8 e4 d c8~ + } + >> | + << % Bar 2 + % Voice 1 continues + { d2 e } + \\ + % Voice 2 continues + { c8 b16 a b8 g~ g2 } + \\ + { + \voiceThreeStyle + s4 b c2 + } + >> | +} +@end lilypond + +@funindex \voiceOneStyle +@funindex \voiceTwoStyle +@funindex \voiceThreeStyle +@funindex \voiceFourStyle +@funindex \voiceNeutralStyle + +Die Befehle @code{\voiceXXXStyle} sind vor allem dazu da, um in +pädagogischen Dokumenten wie diesem hier angewandt zu werden. +Sie verändern die Farbe des Notenkopfes, des Halses und des Balkens, und +zusätzlich die Form des Notenkopfes, damit die einzelnen Stimmen +einfach auseinander gehalten werden können. Die erste Stimme ist als +rote Raute definiert, die zweite Stimme als blaue Dreiecke, die dritte +Stimme als grüne Kreise mit Kreuz und die vierte Stimme (die hier nicht +benutzt wird) hat dunkelrote Kreuze. @code{\voiceNeutralStyle} (hier auch +nicht benutzt) macht diese Änderungen rückgängig. Später soll gezeigt +werden, wie Befehle wie diese vom Benutzer selber erstellt werden +können. Siehe auch @ref{Sichtbarkeit und Farbe von Objekten} und +@ref{Variablen für Optimierungen einsetzen}. + +@cindex Polyphonie und relativer Notationsmodus +@cindex relativer Notationsmodus und Polyphonie + +Polyphonie ändert nicht die Verhältnisse der Noten innerhalb eines +@code{\relative}-Blocks. Jede Note wird weiterhin relativ zu +der vorherigen Note errechnet, oder relativ zur ersten Note des vorigen +Akkords. So ist etwa hier + +@example +\relative c' @{ NoteA << < NoteB NoteC > \\ NoteD >> NoteE @} +@end example + +@noindent +@code{NoteB} bezüglich @code{NoteA} @* +@code{NoteC} bezüglich @code{NoteB}, nicht @code{noteA}; @* +@code{NoteD} bezüglich @code{NoteB}, nicht @code{NoteA} oder +@code{NoteC}; @* +@code{NoteE} bezüglich @code{NoteD}, nicht @code{NoteA} errechnet. + +Eine andere Möglichkeit ist, den @code{\relative}-Befehl vor jede +Stimme zu stellen. Das bietet sich an, wenn die Stimmen weit voneinander +entfernt sind. + +@example +\relative c' @{ NoteA ... @} +<< + \relative c'' @{ < NoteB NoteC > ... @} +\\ + \relative g' @{ NoteD ... @} +>> +\relative c' @{ NoteE ... @} +@end example + +Zum Schluss wollen wir die Stimmen in einem etwas komplizierteren Stück +analysieren. Hier die Noten der ersten zwei Takte von Chopins +@notation{Deux Nocturnes}, Op. 32. Dieses Beispiel soll später in diesem +und dem nächsten Kapitel benutzt werden, um verschiedene Techniken, +Notation zu erstellen, zu demonstrieren. Ignorieren Sie deshalb an diesem +Punkt alles in folgendem Code, das Ihnen seltsam vorkommt, und konzentrieren +Sie sich auf die Noten und die Stimmen. Die komplizierten Dinge werden +in späteren Abschnitten erklärt werden. + +@c The following should appear as music without code +@lilypond[quote,ragged-right] +\new Staff \relative c'' { + \key aes \major + << % Voice one + { c2 aes4. bes8 } + \\ % Voice two + { aes2 f4 fes } + \\ % No voice three + \\ % Voice four + { + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'force-hshift = #0 + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 + } + >> | + 1 | +} +@end lilypond + +Die Richtung der Hälse wird oft benutzt, um anzuzeigen, dass zwei +gleichzeitige Melodien sich fortsetzen. Hier zeigen die Hälse aller +oberen Noten nach oben und die Hälse aller unteren Noten nach unten. +Das ist der erste Anhaltspunkt, dass mehr als eine Stimme benötigt +wird. + +Aber die wirkliche Notwendigkeit für mehrere Stimmen tritt erst +dann auf, wenn unterschiedliche Noten gleichzeitig erklingen, aber +unterschiedliche Dauern besitzen. Schauen Sie sich die Noten +auf dem dritten Schlag im ersten Takt an. Das As ist eine punktierte +Viertel, das F ist eine Viertel und das Des eine Halbe. Sie können +nicht als Akkord geschrieben werden, denn alle Noten in einem Akkord +besitzen die gleiche Dauer. Sie können aber auch nicht nacheinander +geschrieben werden, denn sie beginnen auf der gleichen Taktzeit. Dieser +Taktabschnitt benötigt drei Stimmen, und normalerweise schreibt man +drei Stimmen für den ganzen Takt, wie im Beispiel unten zu sehen ist; +hier sind unterschiedliche Köpfe und Farben für die verschiedenen Stimmen +eingesetzt. Noch einmal: der Quellcode für dieses Beispiel wird später +erklärt werden, deshalb ignorieren Sie alles, was Sie hier nicht +verstehen können. + +@c The following should appear as music without code +@c The three voice styles should be defined in -init +@lilypond[quote,ragged-right] +\new Staff \relative c'' { + \key aes \major + << + { % Voice one + \voiceOneStyle + c2 aes4. bes8 + } + \\ % Voice two + { \voiceTwoStyle + aes2 f4 fes + } + \\ % No Voice three (we want stems down) + \\ % Voice four + { \voiceThreeStyle + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'force-hshift = #0 + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 + } + >> + 1 +} +@end lilypond + +Versuchen wir also, diese Musik selber zu notieren. Wie wir sehen +werden, beinhaltet das einige Schwierigkeiten. Fangen wir an, wie +wir es gelernt haben, indem wir mit der @code{<< \\ >>}-Konstruktion +die drei Stimmen des ersten Taktes notieren: + +@lilypond[quote,verbatim,ragged-right] +\new Staff \relative c'' { + \key aes \major + << + { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { 2 des } + >> | + 1 | +} +@end lilypond + +@cindex Hals nach unten +@cindex Hals nach oben +@cindex Notenhals, Richtung +@cindex Richtung des Notenhalses +@cindex Notenhalsrichtung +@cindex Stimmen und Notenhalsrichtung +@cindex Notenhalsrichtung in Stimmen + +Die Richtung des Notenhalses wird automatisch zugewiesen; die ungeraden +Stimmen tragen Hälse nach oben, die gerade Hälse nach unten. Die Hälse +für die Stimmen 1 und 2 stimmen, aber die Hälse in der dritten Stimme +sollen in diesem Beispiel eigentlich nach unten zeigen. Wir können das +korrigieren, indem wir die dritte Stimme einfach auslassen und die +Noten in die vierte Stimme verschieben. Das wird einfach vorgenommen, +indem noch ein Paar @code{\\}-Stimmen hinzugefügt wird. + +@c KEEP LY +@lilypond[quote,verbatim,ragged-right] +\new Staff \relative c'' { + \key aes \major + << % erste Stimme + { c2 aes4. bes8 } + \\ % zweite Stimme + { aes2 f4 fes } + \\ % Stimme drei auslassen + \\ % vierte Stimme + { 2 des } + >> + 1 +} +@end lilypond + +@noindent +Wie zu sehen ist, ändert das die Richtung der Hälse, aber zeigt ein +anderes Problem auf, auf das man manchmal bei mehreren Stimmen stößt: +Die Hälse einer Stimme können mit den Hälsen anderer Stimmen kollidieren. +LilyPond erlaubt Noten in verschiedenen Stimmen sich auf der gleichen +vertikalen Position zu befinden, wenn die Hälse in entgegengesetzte +Richtungen zeigen, und positioniert die dritte und vierte Stimme dann +so, dass Zusammenstöße möglichst vermieden werden. Das funktioniert +gewöhnlich recht gut, aber in diesem Beispiel sind die Noten der untersten +Stimme eindeutig standardmäßig schlecht positioniert. LilyPond bietet +verschiedene Möglichkeiten, die horizontale Position von Noten +anzupassen. Wir sind aber noch nicht so weit, dass wir diese Funktionen +anwenden könnten. Darum heben wir uns das Problem für einen späteren Abschnitt auf; siehe @code{force-hshift}-Eigenschaft in +@ref{Überlappende Notation in Ordnung bringen}. + + +@seealso +Notationsreferenz: @ruser{Mehrere Stimmen}. + + +@node Přímé začátky hlasů +@subsection Přímé začátky hlasů +@translationof Explicitly instantiating voices + +@funindex \voiceOne +@funindex voiceOne +@funindex \voiceTwo +@funindex voiceTwo +@funindex \voiceThree +@funindex voiceThree +@funindex \voiceFour +@funindex voiceFour +@funindex \oneVoice +@funindex oneVoice +@funindex \new Voice +@cindex Voice context, erstellen von +@cindex Stimmenkontexte, erstellen von + +Voice-Kontexte können auch manuell innerhalb +eines @code{<< >>}-Abschnittes initiiert werden. Mit den Befehlen +@code{\voiceOne} bis hin zu @code{\voiceFour} kann jeder Stimme +entsprechendes Verhalten von vertikaler Verschiebung und Richtung +von Hälsen und anderen Objekten hinzugefügt werden. In längeren +Partituren können die Stimmen damit besser auseinander gehalten +werden. + +Die @code{<< \\ >>}-Konstruktion, die wir im vorigen Abschnitt +verwendet haben: + +@example +\new Staff @{ + \relative c' @{ + << @{ e4 f g a @} \\ @{ c,4 d e f @} >> + @} +@} +@end example + +@noindent +ist identisch mit + +@example +\new Staff << + \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @} + \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @} +>> +@end example + +Beide würden folgendes Notenbild erzeugen: + +@c The following example should not display the code +@lilypond[ragged-right,quote] +\new Staff << + \new Voice = "1" { \voiceOne \relative c' { e4 f g a } } + \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } } +>> +@end lilypond + +@cindex Stimmen, mehrere zu einer zusammenführen +@cindex eine Stimme wiederherstellen + +Der @code{\voiceXXX}-Befehl setzt die Richtung von Hälsen, +Bögen, Artikulationszeichen, Text, Punktierungen und Fingersätzen. +@code{\voiceOne} und @code{\voiceThree} lassen diese Objekte +nach oben zeigen, @code{\voiceTwo} und @code{\voiceFour} +dagegen lassen sie abwärts zeigen. Diese Befehle erzeugen eine +horizontale Verschiebung, wenn es erforderlich ist, um Zusammenstöße +zu vermeiden. Der Befehl +@code{\oneVoice} stellt wieder auf das normale Verhalten um. + +Schauen wir uns in einigen einfachen Beispielen an, was genau +die Befehle @code{\oneVoice}, @code{\voiceOne} und @code{voiceTwo} +mit Text, Bögen und Dynamikbezeichnung anstellen: + +@lilypond[quote,ragged-right,verbatim] +\relative c' { + % Default behavior or behavior after \oneVoice + c4 d8~ d e4( f | g4 a) b-> c | +} +@end lilypond + +@lilypond[quote,ragged-right,verbatim] +\relative c' { + \voiceOne + c4 d8~ d e4( f | g4 a) b-> c | + \oneVoice + c,4 d8~ d e4( f | g4 a) b-> c | +} +@end lilypond + +@lilypond[quote,ragged-right,verbatim] +\relative c' { + \voiceTwo + c4 d8~ d e4( f | g4 a) b-> c | + \oneVoice + c,4 d8~ d e4( f | g4 a) b-> c | +} +@end lilypond + +Schauen wir und nun drei unterschiedliche Arten an, den gleichen +Abschnitt polyphoner Musik zu notieren, jede Art mit ihren +Vorteilen in unterschiedlichen Situationen. Wir benutzen dabei +das Beispiel vom vorherigen Abschnitt. + +Ein Ausdruck, der direkt innerhalb einer @code{<< >>}-Umgebung +auftritt, gehört der Hauptstimme an. Das ist nützlich, wenn zusätzliche +Stimme auftreten, während die Hauptstimme sich fortsetzt. Hier also +eine bessere Version des Beispiels aus dem vorigen Abschnitt. Die +farbigen Kreuz-Notenköpfe zeigen, dass die Hauptstimme sich jetzt in +einem einzigen Stimmen (@code{voice})-Kontext befindet. Somit kann ein +Phrasierungsbogen ober sie gesetzt werden. + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' { + \voiceOneStyle + % The following notes are monophonic + c16^( d e f + % Start simultaneous section of three voices + << + % Continue the main voice in parallel + { g4 f e | d2 e) | } + % Initiate second voice + \new Voice { + % Set stems, etc., down + \voiceTwo + r8 e4 d c8~ | c8 b16 a b8 g~ g2 | + } + % Initiate third voice + \new Voice { + % Set stems, etc, up + \voiceThree + s2. | s4 b4 c2 | + } + >> +} +@end lilypond + +@cindex Verschachteln von musikalischen Ausdrücken +@cindex Verschachteln von gleichzeitigen Ausdrücken +@cindex Ausdrücke, Verschachteln von +@cindex Stimmen, temporär +@cindex Stimmen, Verschachteln von +@cindex Verschachteln von Stimmen +@cindex temporäre Stimmen + +Tiefer verschachtelte polyphone Konstrukte sind möglich, und +wenn eine Stimme nur kurz auftaucht, kann das der bessere Weg +sein, Noten zu setzen: + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' { + c16^( d e f + << + { g4 f e | d2 e2) | } + \new Voice { + \voiceTwo + r8 e4 d c8~ + << + { c8 b16 a b8 g~ g2 | } + \new Voice { + \voiceThree + s4 b4 c2 | + } + >> + } + >> +} +@end lilypond + +@cindex Platzhalternoten +@cindex unsichtbare Noten +@cindex Noten verstecken + +Diese Methode, neue Stimmen kurzzeitig zu verschachteln, bietet sich +an, wenn nur sehr kleine Abschnitte polyphonisch gesetzt sind. Wenn +aber die ganze Partitur polyphon ist, ist es meistens klarer, direkt +unterschiedliche Stimmen über die gesamte Partitur hinweg einzusetzen. +Hierbei kann man mit unsichtbaren Noten dann die Stellen überspringen, +an denen die Stimme nicht auftaucht, wie etwa hier: + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' << + % Initiate first voice + \new Voice { + \voiceOne + c16^( d e f g4 f e | d2 e) | + } + % Initiate second voice + \new Voice { + % Set stems, etc, down + \voiceTwo + s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 | + } + % Initiate third voice + \new Voice { + % Set stems, etc, up + \voiceThree + s1 | s4 b c2 | + } +>> +@end lilypond + +@subsubheading Notenkolumnen + +@cindex Notenkolumne +@cindex Notenkollision +@cindex Zusammenstöße von Noten +@cindex Kollisionen von Noten +@cindex Vertikale Position +@cindex shift-Befehle +@cindex Verschieben von Noten +@funindex \shiftOff +@funindex \shiftOn +@funindex \shiftOnn +@funindex \shiftOnnn +@funindex shiftOff +@funindex shiftOn +@funindex shiftOnn +@funindex shiftOnnn + +Dicht notierte Noten in einem Akkord, oder Noten auf der gleichen +Taktzeit aber in unterschiedlichen Stimmen, werden in zwei, manchmal +auch mehreren Kolumnen gesetzt, um die Noten am Überschneiden zu +hindern. Wir bezeichnen sie als Notenkolumnen. Jede Stimme hat +eine eigene Kolumne, und ein stimmenabhängiger Verschiebunsbefehl (engl. +shift) wird eingesetzt, wenn eine Kollision auftreten könnte. +Das zeigt das Beispiel oben. Im zweiten Takt wird das C der zweiten +Stimme nach rechts verschoben, relativ gesehen zum D der ersten Stimme, +und im letzten Akkord wird das C der dritten Stimme auch nach +rechts verschoben im Verhältnis zu den anderen Stimmen. + +Die Befehle @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn} und +@code{\shiftOff} bestimmen den Grad, zu dem Noten und Akkorde +verschoben werden sollen, wenn sich sonst eine Kollision nicht +vermeiden ließe. Die Standardeinstellung ist, dass die äußeren +Stimmen (also normalerweise Stimme 1 und 2) @code{\shiftOff} +eingestellt haben, während für die inneren Stimmen (3 und 4) +@code{\shiftOn} eingeschaltet ist. Wenn eine Verschiebung +auftritt, werden Stimmen 1 und 3 nach rechts und Stimmen 2 und 4 +nach links verschoben. + +@code{\shiftOnn} und @code{\shiftOnnn} definieren weitere +Verschiebungsebenen, die man kurzzeitig anwählen kann, um +Zusammenstöße in komplexen Situationen aufzulösen, siehe auch +@ref{Beispiele aus dem Leben}. + +Eine Notenkolumne kann nur eine Note (oder einen Akkord) von +einer Stimme mit Hälsen nach oben und eine Note (oder einen +Akkord) von einer Stimme mit Hälsen nach unten tragen. Wenn +Noten von zwei Stimmen mit den Hälsen in die gleiche Richtung +an der selben Stelle auftreten und in beiden Stimmen ist +keine Verschiebung oder die gleiche Verschiebungsebene +definiert, wird die Fehlermeldung +@qq{zu viele kollidierende Notenspalten werden ignoriert} +ausgegeben. + + +@seealso +Notationsreferenz: @ruser{Mehrere Stimmen}. + + +@node Hlasy a zpěvy +@subsection Hlasy a zpěvy +@translationof Voices and vocals + +Die Notation von Vokalmusik ihre eigene Schwierigkeit, nämlich +die Kombination von zwei Ausdrücken: den Noten und dem Text. +Achtung: Der Gesangstext wird auf Englisch @qq{lyrics} genannt. + + +@funindex \new Lyrics +@funindex \lyricsto +@funindex lyricsto +@funindex Lyrics +@cindex Lyrics context, erstellen +@cindex Gesangtext, Verbindung mit Noten + +Wir haben schon den @code{\addlyrics@{@}}-Befehl betrachtet, +mit dem einfache Partituren gut erstellt werden können. +Diese Methode ist jedoch recht eingeschränkt. Wenn der Notensatz +komplexer wird, muss der Gesangstext mit einem neuen +@code{Lyrics}-Kontext begonnen werden (mit dem Befehl +@code{\new Lyrics}) und durch den Befehl @code{\lyricsto@{@}} +mit einer bestimmten Stimme verknüpft werden, indem die +Bezeichnung der Stimme benutzt wird. + +@lilypond[quote,verbatim] +<< + \new Voice = "one" { + \relative c'' { + \autoBeamOff + \time 2/4 + c4 b8. a16 | g4. f8 | e4 d | c2 | + } + } + \new Lyrics \lyricsto "one" { + No more let | sins and | sor -- rows | grow. | + } +>> +@end lilypond + +Beachten Sie, dass der Notentext nur mit einem @code{Voice}-Kontext +verknüpft werden kann, nicht mit einem @code{Staff}-Kontext. +In diesem Fall also müssen Sie ein System (@code{Staff}) und +eine Stimme (@code{Voice}) explizit erstellen, damit alles +funktioniert. + +@cindex Gesangstext und Balken +@cindex Text und Balken +@cindex Balken und Text +@funindex \autoBeamOff +@funindex autoBeamOff + +Die automatischen Balken, die LilyPond in der Standardeinstellung +setzt, eignen sich sehr gut für instrumentale Musik, aber nicht +so gut für Musik mit Text, wo man entweder gar keine Balken +benutzt oder sie einsetzt, um Melismen zu verdeutlichen. +Im Beispiel oben wird deshalb der Befehl @code{\autoBeamOff} +eingesetzt um die automatischen Balken (engl. beam) auszuschalten. + +@funindex \new ChoirStaff +@funindex \lyricmode +@funindex ChoirStaff +@funindex lyricmode +@cindex Vokalpartitur, Aufbau +@cindex Chorpartitur, Aufbau + +Wir wollen das frühere Beispiel von @notation{Judas Maccabæus} +benutzen, um diese flexiblere Technik für Gesangstexte +zu illustrieren. Das Beispiel wurde so umgeformt, dass jetzt +Variablen eingesetzt werden, um den Text und die Noten +von der Partiturstruktur zu trennen. Es wurde zusätzlich +eine Chorpartiturklammer hinzugefügt. Der Gesangtext muss mit +@code{\lyricmode} eingegeben werden, damit er als Text und +nicht als Noten interpretiert werden kann. + +@lilypond[quote,verbatim] +global = { \key f \major \time 6/8 \partial 8 } + +SopOneMusic = \relative c'' { + c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 +} +SopOneLyrics = \lyricmode { + Let | flee -- cy flocks the | hills a -- dorn, __ +} +SopTwoMusic = \relative c' { + r8 | r4. r4 c8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes' +} +SopTwoLyrics = \lyricmode { + Let | flee -- cy flocks the | hills a -- dorn, +} + +\score { + \new ChoirStaff << + \new Staff << + \new Voice = "SopOne" { + \global + \SopOneMusic + } + \new Lyrics \lyricsto "SopOne" { + \SopOneLyrics + } + >> + \new Staff << + \new Voice = "SopTwo" { + \global + \SopTwoMusic + } + \new Lyrics \lyricsto "SopTwo" { + \SopTwoLyrics + } + >> + >> +} +@end lilypond + +Dies ist die Grundstruktur für alle Chorpartituren. Mehr +Systeme können hinzugefügt werden, wenn sie gebraucht werden, mehr +Stimmen können zu jedem System hinzugefügt werden, mehr +Strophen können zum Text hinzugefügt werden, und schließlich +können die Variablen schnell in eine eigene Datei verschoben +werden, wenn sie zu lang werden sollten. + +@cindex Choralnotation +@cindex Hymnus-Notation +@cindex SATB-Partitur +@cindex mehrere Strophen +@cindex Strophen, mehrere +@cindex Choral mit mehreren Strophen + +Hier ein Beispiel der ersten Zeile eines Chorals mit vier +Strophen für gemischten Chor. In diesem Fall ist der Text +für alle vier Stimmen identisch. Beachten Sie, wie die +Variablen eingesetzt werden, um Inhalt (Noten und Text) und Form +(die Partitur) voneinander zu trennen. Eine Variable wurde +eingesetzt, um die Elemente, die auf beiden Systemen auftauchen, +aufzunehmen, nämlich Taktart und Tonart. Solch eine +Variable wird oft auch mit @qq{global} bezeichnet. + +@lilypond[quote,verbatim] +keyTime = { \key c \major \time 4/4 \partial 4 } + +SopMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g } +AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e } +TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 } +BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 } + +VerseOne = + \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, } +VerseTwo = + \lyricmode { O | Christ, whose voice the | wa -- ters heard, } +VerseThree = + \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood } +VerseFour = + \lyricmode { O | Tri -- ni -- ty of | love and pow'r } + +\score { + \new ChoirStaff << + \new Staff << + \clef "treble" + \new Voice = "Sop" { \voiceOne \keyTime \SopMusic } + \new Voice = "Alto" { \voiceTwo \AltoMusic } + \new Lyrics \lyricsto "Sop" { \VerseOne } + \new Lyrics \lyricsto "Sop" { \VerseTwo } + \new Lyrics \lyricsto "Sop" { \VerseThree } + \new Lyrics \lyricsto "Sop" { \VerseFour } + >> + \new Staff << + \clef "bass" + \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic } + \new Voice = "Bass" { \voiceTwo \BassMusic } + >> + >> +} +@end lilypond + + +@seealso +Notation Reference: @ruser{Notation von Gesang}. + + +@node Souvislosti a rytci +@section Souvislosti a rytci +@translationof Contexts and engravers + +Souvislosti a rytci (@qq{Stempel}) sind in den vorherigen +Abschnitten schon aufgetaucht; hier wollen wir uns ihnen +nun etwas ausführlicher widmen, denn sie sind sehr +wichtig, um Feineinstellungen in der LilyPond-Notenausgabe +vornehmen zu können. + +@menu +* Vysvětlení souvislostí:: +* Vytvoření souvislostí:: +* Vysvětlení rytců:: +* Změna souvisejících vlastností:: +* Přidání a odstranění rytců:: +@end menu + +@node Vysvětlení souvislostí +@subsection Vysvětlení souvislostí +@translationof Contexts explained + +@cindex Kontexte erklärt + +Wenn Noten gesetzt werden, müssen viele Elemente zu der Notenausgabe +hinzugefügt werden, +die im Quellcode gar nicht explizit vorkommen. Vergleichen Sie +etwa den Quellcode und die Notenausgabe des folgenden Beispiels: + +@lilypond[quote,verbatim,relative=2] +cis4 cis2. | a4 a2. | +@end lilypond + +Der Quellcode ist sehr kurz und knapp, während in der +Notenausgabe Taktlinien, Vorzeichen, ein Schlüssel und +eine Taktart hinzugefügt wurden. Während LilyPond +den Eingabetext @emph{interpretiert}, wird die +musikalische Information von rechts nach links gelesen, +in etwa, wie man eine Partitur von links nach +rechts liest. Während das Programm den Code liest, +merkt es sich, wo sich Taktgrenzen befinden und +für welche Tonhöhen Versetzungszeichen gesetzt werden +müssen. Diese Information muss auf mehreren Ebenen +gehandhabt werden, denn Versetzungszeichen etwa +beziehen sich nur auf ein System, Taktlinien dagegen +üblicherweise auf die gesamte Partitur. + +Innerhalb von LilyPond sind diese Regeln und +Informationshappen in @emph{Kontexten} (engl. +contexts) gruppiert. Der @code{Voice} (Stimmen)-Kontext +wurde schon vorgestellt. Daneben +gibt es noch die @code{Staff} (Notensystem-) und +@code{Score} (Partitur)-Kontexte. Kontexte sind +hierarchisch geschichtet um die hierarchische +Struktur einer Partitur zu spiegeln. Ein @code{Staff}-Kontext +kann zum Beispiel viele @code{Voice}-Kontexte beinhalten, +und ein @code{Score}-Kontext kann viele +@code{Staff}-Kontexte beinhalten. + +@quotation +@sourceimage{context-example,5cm,,} +@end quotation + +Jeder Kontext hat die Aufgabe, bestimmte Notationsregeln +zu erzwingen, bestimmte Notationsobjekte zu erstellen und +verbundene Elemente zu ordnen. Der @code{Voice}-Kontext +zum Beispiel kann eine Vorzeichenregel einführen und der +@code{Staff}-Kontext hält diese Regel dann aufrecht, um +einzuordnen, ob ein Versetzungszeichen gesetzt werden +muss oder nicht. + +Ein anderes Beispiel: die Synchronisation der Taktlinien ist +standardmäßig im @code{Score}-Kontext verankert. Manchmal sollen +die Systeme einer Partitur aber unterschiedliche Taktarten +enthalten, etwa in einer polymetrischen Partitur mit +4/4- und 3/4-Takt. In diesem Fall müssen also die Standardeinstellungen +der @code{Score}- und @code{Staff}-Kontexte verändert werden. + +In einfachen Partituren werden die Kontexte implizit erstellt, +und es kann sein, dass Sie sich dessen gar nicht bewusst sind. +Für etwas größere Projekte, etwa mit vielen Systemen, müssen +die Kontexte aber explizit erstellt werden, um sicher zu gehen, +dass man auch wirklich die erwünschte Zahl an Systemen in der +richtigen Reihenfolge erhält. Wenn Stücke mit spezialisierter +Notation gesetzt werden sollen, ist es üblich, die existierenden +Kontexte zu verändern oder gar gänzlich neue zu definieren. + +Zusätzlich zu den @code{Score,} @code{Staff} und +@code{Voice}-Kontexten gibt es noch Kontexte, die zwischen +der Partitur- und Systemebene liegen und Gruppen von Systemen +kontrollieren. Das sind beispielsweise der +@code{PianoStaff} und @code{ChoirStaff}-Kontext. Es gibt zusätzlich +alternative Kontexte für Systeme und Stimmen sowie eigene Kontexte +für Gesangstexte, Perkussion, Griffsymbole, Generalbass usw. + +Die Bezeichnungen all dieser Kontexte werden von einem oder mehreren +englischen +Wörtern gebildet, dabei wird jedes Wort mit einem Großbuchstaben +begonnen und direkt an das folgende ohne Bindestrich oder Unterstrich +angeschlossen, etwa +@code{GregorianTranscriptionStaff}. + + +@seealso +Notationreferenz: @ruser{Vysvětlení souvislostí}. + + +@node Vytvoření souvislostí +@subsection Vytvoření souvislostí +@translationof Creating contexts + +@funindex \new +@funindex new +@cindex Neue Kontexte +@cindex Erstellen von Kontexten +@cindex Kontexte, Erstellen + +In einer Eingabedatei enthält eine @code{Score}-Umgebung (einen +Kontext), die mit +dem Befehl @code{\score} eingeleitet wird, nur einen einzigen +musikalischen Ausdruck und mit ihm verknüpft eine Ausgabedefinition +(entweder eine @code{\layout}- oder eine @code{\midi}-Umgebung). +Üblicherweise wird der @code{Score}-Kontext automatisch von +LilyPond erstellt, wenn der musikalische Ausdruck interpretiert +wird. + +Wenn nur ein System vorhanden ist, kann man es ruhig +LilyPond überlassen, auch die @code{Voice}- und @code{Staff}-Kontexte +zu erstellen, aber für komplexere Partituren ist es notwendig, +sie mit einem Befehl zu erstellen. Der einfachste Befehl +hierzu ist @code{\new}. Er wird dem musikalischen Ausdruck +vorangestellt, etwa so: + +@example +\new @var{Typ} @var{musikalischer Ausdruck} +@end example + +@noindent +wobei @var{Typ} eine Kontextbezeichnung (wie etwa @code{Staff} oder +@code{Voice}) ist. Dieser Befehl erstellt einen neuen Kontext und +beginnt, den @var{muskalischen Ausdruck} innerhalb dieses +Kontexts auszuwerten. + +@warning{Der @bs{}@code{new Score}-Befehl sollte nicht benutzt werden, +weil der Partitur-(Score)-Kontext der obersten Ebene +normalerweise automatisch erstellt wird, wenn der musikalische Ausdruck +innerhalb der @code{\score}-Umgebung interpretiert wird. Standard-Werte +von Kontexteigenschaften, die für einen bestimmten @code{Score} gelten +sollen, können innerhalb der @bs{}@code{layout}-Umgebung definiert werden. +Siehe @ref{Změna souvisejících vlastností,,změnu souvisejících vlastností}.} + +Wir haben schon viele explizite Beispiel gesehen, in denen +neue @code{Staff}- und @code{Voice}-Kontexte erstellt wurden, aber +um noch einmal ins Gedächtnis zu rufen, wie diese Befehle benutzt +werden, hier ein kommentiertes Beispiel aus dem richtigen Leben: + +@lilypond[quote,verbatim,ragged-right] +\score { % start of single compound music expression + << % start of simultaneous staves section + \time 2/4 + \new Staff { % create RH staff + \clef "treble" + \key g \minor + \new Voice { % create voice for RH notes + \relative c'' { % start of RH notes + d4 ees16 c8. + d4 ees16 c8. + } % end of RH notes + } % end of RH voice + } % end of RH staff + \new Staff << % create LH staff; needs two simultaneous voices + \clef "bass" + \key g \minor + \new Voice { % create LH voice one + \voiceOne + \relative g { % start of LH voice one notes + g8 ees, + g8 ees, + } % end of LH voice one notes + } % end of LH voice one + \new Voice { % create LH voice two + \voiceTwo + \relative g { % start of LH voice two notes + g4 ees + g4 ees + } % end of LH voice two notes + } % end of LH voice two + >> % end of LH staff + >> % end of simultaneous staves section +} % end of single compound music expression +@end lilypond + +(Beachten Sie, dass wir hier alle Zeilen, die eine neue +Umgebung entweder mit einer geschweiften Klammer (@code{@{}) +oder doppelten spitzen Klammern (@code{<<}) öffnen, mit +jeweils zwei Leerzeichen, und die entsprechenden +schließenden Klammern mit der gleichen Anzahl Leerzeichen +eingerückt werden. Dies ist nicht erforderlich, es wird aber +zu einem großen Teil die nicht passenden Klammerpaar-Fehler +eliminieren und ist darum sehr empfohlen. Es macht es +möglich, die Struktur einer Partitur auf einen Blick zu +verstehen, und alle nicht passenden Klammern +erschließen sich schnell. Beachten Sie auch, dass das +untere Notensystem mit eckigen Klammern erstellt wird, +denn innerhalb dieses Systems brauchen wir zwei Stimmen, +um die Noten darzustellen. Das obere System braucht +nur einen einzigen musikalischen Ausdruck und ist deshalb +von geschweiften Klammern umschlossen.) + +@cindex Kontexte, Benennung +@cindex Benennung von Kontexten + +Der @code{\new}-Befehl kann einem Kontext auch einen +Namen zur Identifikation geben, um ihn von anderen Kontexten des +selben Typs zu unterscheiden: + +@example +\new @var{Typ} = @var{Name} @var{musikalischer Ausdruck} +@end example + +Beachten Sie den Unterschied zwischen der Bezeichnung des +Kontexttyps (@code{Staff}, @code{Voice}, usw.) und dem +Namen, der aus beliebigen Buchstaben bestehen kann +und vom Benutzer frei erfunden werden kann. Zahlen und +Leerzeichen können auch benutzt werden, in dem Fall +muss der Name aber von doppelten Anführungszeichen +umgeben werden, also etwa +@code{\new Staff = "Mein System 1" @var{musikalischer Ausdruck}}. +Der Name wird +benutzt, um später auf genau diesen spezifischen Kontext +zu verweisen. Dieses Vorgehen wurde schon in dem Abschnitt +zu Gesangstexten angewandt, siehe @ref{Hlasy a zpěvy,,hlasy a zpěvy}. + + +@seealso +Notationsreferenz: @ruser{Vytvoření souvislostí}. + + +@node Vysvětlení rytců +@subsection Vysvětlení rytců +@translationof Engravers explained + +@cindex Engraver +@cindex Stempel (Engraver) + +Jedes Zeichen des fertigen Notensatzes von LilyPond wird +von einem @code{Engraver} (Stempel) produziert. Es gibt +also einen Engraver, der die Systeme erstellt, einen, der die +Notenköpfe ausgibt, einen für die Hälse, einen für die +Balken usw. Insgesamt gibt es über 120 Engraver! Zum +Glück braucht man für die meisten Partituren nur ein +paar Engraver, und für einfache Partituren muss man eigentlich +überhaupt nichts über sie wissen. + +Engraver leben und wirken aus den Kontexten heraus. Engraver +wie der @code{Metronome_mark_engraver}, dessen Aktion +und Ausgabe sich auf die gesamte Partitur bezieht, wirken +in der obersten Kontextebene -- dem @code{Score}-Kontext. + +Der @code{Clef_engraver} (Schlüssel-Stempel) und der +@code{Key_engraver} (Vorzeichen-Stempel) finden sich in +jedem @code{Staff}-Kontext, denn unterschiedliche Systeme +könnten unterschiedliche Tonarten und Notenschlüssel +brauchen. + +Der @code{Note_heads_engraver} (Notenkopf-Stempel) und der +@code{Stem_engraver} (Hals-Stempel) befinden sich in jedem +@code{Voice}-Kontext, der untersten Kontextebene. + +Jeder Engraver bearbeitet die bestimmten Objekte, die mit +seiner Funktion assoziiert sind, und verwaltet die Eigenschaften +dieser Funktion. Diese Eigenschaften, wie etwa die Eigenschaften, +die mit Kontexten assoziiert sind, können verändert werden, +um die Wirkungsweise des Engravers oder das Erscheinungsbild +der von ihm produzierten Elemente in der Partitur zu ändern. + +Alle Engraver haben zusammengesetzte Bezeichnung, die aus +den (englischen) Wörtern ihrer Funktionsweise bestehen. Nur +das erste Wort hat einen Großbuchstaben, und die restlichen +Wörter werden mit einem Unterstrich angefügt. Ein +@code{Staff_symbol_engraver} verantwortet also die Erstellung +der Notenlinien, ein @code{Clef_engraver} entscheidet über die +Art der Notenschlüssel und setzt die entsprechenden Symbole; damit +wird gleichzeitig die Referenztonhöhe auf dem Notensystem festgelegt. + +Hier die meistgebräuchlichen Engraver mit ihrer Funktion. +Sie werden sehen, dass es mit etwas Englischkenntnissen +einfach ist, die Funktion eines Engravers von seiner Bezeichnung +abzuleiten. + +@multitable @columnfractions .3 .7 +@headitem Engraver + @tab Funktion +@item Accidental_engraver + @tab Erstellt Versetzungszeichen, vorgeschlagene und Warnversetzungszeichen. +@item Beam_engraver + @tab Erstellt Balken. +@item Clef_engraver + @tab Erstellt Notenschlüssel. +@item Completion_heads_engraver + @tab Teilt Noten in kleiner Werte, wenn sie über die Taktlinie reichen. +@c The old Dynamic_engraver is deprecated. -jm +@item New_dynamic_engraver + @tab Erstellt Dynamik-Klammern und Dynamik-Texte. +@item Forbid_line_break_engraver + @tab Verbietet Zeilenumbrüche, solange ein musikalisches Element aktiv ist. +@item Key_engraver + @tab Erstellt die Vorzeichen. +@item Metronome_mark_engraver + @tab Erstellt Metronom-Bezeichnungen. +@item Note_heads_engraver + @tab Erstellt Notenköpfe. +@item Rest_engraver + @tab Erstellt Pausen. +@item Staff_symbol_engraver + @tab Ersetllt die (standardmäßig) fünf Notenlinien des Systems. +@item Stem_engraver + @tab Erstellt die Notenhälse und Tremolos mit einem Hals. +@item Time_signature_engraver + @tab Erstellt die Taktartbezeichnung. +@end multitable + +@smallspace + +Es soll später gezeigt werden, wie die LilyPond-Ausgabe +verändert werden kann, indem die Wirkungsweise der +Engraver beeinflusst wird. + + +@seealso +Referenz der Interna: @rinternals{Engravers and Performers}. + + +@node Změna souvisejících vlastností +@subsection Změna souvisejících vlastností +@translationof Modifying context properties + +@cindex Kontext-Eigenschaften, Verändern +@cindex Eigenschaften von Kontexten +@cindex Verändern von Kontext-Eigenschaften +@funindex \set +@funindex \unset +@funindex set +@funindex unset + +Kontexte sind dafür verantwortlich, die Werte bestimmter +Kontext-@emph{Eigenschaften} zu speichern. Viele davon +können verändert werden, um die Interpretation der +Eingabe zu beeinflussen und die Ausgabe zu verändern. +Kontexte werden mit dem @code{\set}-Befehl geändert. +Er wird in Form + +@example +\set @var{KontextBezeichnung}.@var{eigenschaftsBezeichnung} = #@var{Wert} +@end example + +@noindent +verwendet, wobei @var{KontextBezeichnung} üblicherweise +@code{Score}, +@code{Staff} oder @code{Voice} ist. Der erste Teil kann auch +ausgelassen werden; in diesem Fall wird der aktuelle +Kontext (üblicherweise @code{Voice}) eingesetzt. + +Die Bezeichnung von Kontexten-Eigenschaften besteht +aus zwei Wörtern, die ohne Unterstrich oder Bindestrich +verbunden sind. Alle außer dem ersten werden am Anfang +groß geschrieben. Hier einige Beispiele der gebräuchlichsten +Kontext-Eigenschaften. Es gibt sehr viel mehr. + +@c attempt to force this onto a new page +@need 50 +@multitable @columnfractions .25 .15 .45 .15 +@headitem eigenschaftsBezeichnung + @tab Typ + @tab Funktion + @tab Beispiel-Wert +@item extraNatural + @tab boolescher Wert + @tab Wenn wahr, werden zusätzliche Auflösungszeichen vor Versetzungszeichen gesetzt. + @tab @code{#t}, @code{#f} +@item currentBarNumber + @tab Integer + @tab Setzt die aktuelle Taktnummer. + @tab @code{50} +@item doubleSlurs + @tab boolescher Wert + @tab Wenn wahr, werden Legatobögen über und unter die Noten gesetzt. + @tab @code{#t}, @code{#f} +@item instrumentName + @tab Text + @tab Setzt die Instrumentenbezeichnung am Anfang eines Systems. + @tab @code{"Cello I"} +@item fontSize + @tab reale Zahl + @tab Vergrößert oder verkleinert die Schriftgröße. + @tab @code{2.4} +@item stanza + @tab Text + @tab Setzt den Text zu Beginn einer Strophe. + @tab @code{"2"} +@end multitable + +@noindent +Ein boolescher Wert ist entweder wahr (@code{#t}) +oder falsch (@code{#f}), +ein Integer eine positive ganze Zahl, ein Real (reelle Zahl) eine positive +oder negative Dezimalzahl, und Text wird in doppelte +Anführungszeichen (Shift+2) eingeschlossen. Beachten Sie +das Vorkommen des Rautenzeichens +(@code{#}) an unterschiedlichen Stellen: als Teil eines +booleschen Wertes vor dem @code{t} oder @code{f}, aber +auch vor einem @emph{Wert} in der +@code{\set}-Befehlskette. Wenn ein boolescher Wert +eingegeben werden soll, braucht man also zwei +Rautenzeichen, z. B. @code{##t}. + +@cindex Eigenschaften in Kontexten +@cindex Veränderung von Eigenschaften in Kontexten + +Bevor eine Eigenschaft geändert werden kann, muss man wissen, +in welchem Kontext sie sich befindet. Manchmal versteht das +sich von selbst, aber in einigen Fällen kann es zunächst +unverständlich erscheinen. Wenn der falsche Kontext angegeben +wird, wird keine Fehlermeldung produziert, aber die +Veränderung wird einfach nicht ausgeführt. +@code{instrumentName} befindet sich offensichtlich innerhalb +von einem @code{Staff}-Kontext, denn das Notensystem soll +benannt werden. In dem folgenden Beispiel erhält das erste +System korrekt die Instrumentenbezeichnung, das zweite aber +nicht, weil der Kontext ausgelassen wurde. + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff \relative c'' { + \set Staff.instrumentName = #"Soprano" + c2 c + } + \new Staff \relative c' { + \set instrumentName = #"Alto" % Wrong! + d2 d + } +>> +@end lilypond + +Denken Sie daran, dass der Standardkontext @code{Voice} ist; in dem +zweiten @code{\set}-Befehl wird also die Eigenschaft @code{instrumentName} +im @code{Voice}-Kontext auf @qq{Alto}, gesetzt, aber weil LilyPond diese +Eigenschaft nicht im @code{Voice}-Kontext vermutet, passiert einfach +gar nichts. Das ist kein Fehler, und darum wird auch keine Fehlermeldung +produziert. + +Ebenso gibt es keine Fehlermeldung, wenn die Kontext-Bezeichnung +falsch geschrieben wird und die Änderung also nicht ausgeführt werden +kann. Tatsächlich kann eine beliebige (ausgedachte) Kontextbezeichnung +mit dem @code{\set}-Befehl eingesetzt werden, genauso wie die, die +wirklich existieren. Aber wenn LilyPond diese Bezeichnung nicht +zuordnen kann, bewirkt der Befehl einfach gar nichts. Manche Editoren, +die Unterstützung für LilyPond-Befehle mitbringen, markieren existierende +Kontextbezeichnungen mit einem Punkt, wenn man mit der Maus darüber +fährt (wie etwa JEdit mit dem LilyPondTool), oder markieren +unbekannte Bezeichnungen anders (wie ConTEXT). Wenn Sie keinen +Editor mit LilyPond-Unterstützung einsetzen, wird empfohlen, die +Bezeichnungen in der Interna-Referenz zu überprüfen: siehe +@rinternals{Tunable context properties}, oder +@rinternals{Contexts}. + +Die Eigenschaft @code{instrumentName} wird erst aktiv, wenn sie +in einem @code{Staff}-Kontext gesetzt wird, aber manche Eigenschaften +können in mehr als einem Kontext benutzt werden. Als Beispiel mag die +@code{extraNatural}-Eigenschaft dienen, die zusätzliche Erniedrigungszeichen +setzt. Die Standardeinstellung ist ##t (wahr) in allen Systemen. +Wenn sie nur in einem @code{Staff} (Notensystem) auf ##f (falsch) +gesetzt wird, wirkt sie sich auf alle Noten in diesem System aus. Wird +sie dagegen in der @code{Score}-Umgebung gesetzt, wirkt sich das +auf alle darin enthaltenen Systeme aus. + +Das also bewirkt, dass die zusätzlichen Erniedrigungszeichen in einem System +ausgeschaltet sind: + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff \relative c'' { + ais2 aes + } + \new Staff \relative c'' { + \set Staff.extraNatural = ##f + ais2 aes + } +>> +@end lilypond + +@noindent +während das dazu dient, sie in allen Systemen auszuschalten: + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff \relative c'' { + ais2 aes + } + \new Staff \relative c'' { + \set Score.extraNatural = ##f + ais2 aes + } +>> +@end lilypond + +Ein anderes Beispiel ist die Eigenschaft @code{clefOctavation}: +wenn sie im @code{Score}-Kontext gesetzt wird, ändert sich sofort +der Wert der Oktavierung in allen aktuellen Systemen und wird +auf einen neuen Wert gesetzt, der sich auf alle Systeme auswirkt. + +Der gegenteilige Befehl, @code{\unset}, entfernt die Eigenschaft +effektiv wieder von dem Kontext: in den meisten Fällen wird der +Kontext auf ihre Standardeinstellungen zurückgesetzt. +Normalerweise wird aber @code{\unset} nicht benötigt, +denn ein neues @code{\set} erledigt alles, was man braucht. + +Die @code{\set}- und @code{\unset}-Befehle könne überall im +Eingabequelltext erscheinen und werden aktiv von dem Moment, an +dem sie auftreten bis zum Ende der Partitur oder bis die Eigenschaft +mit @code{\set} oder @code{\unset} neu gesetzt wird. Versuchen +wir als Beispiel, die Schriftgröße mehrmals zu ändern, was sich unter anderem +auf die Notenköpfe auswirkt. Die Änderung bezieht sich immer auf den Standard, +nicht vom letzten gesetzten Wert. + +@lilypond[quote,verbatim,ragged-right,relative=1] +c4 d +% make note heads smaller +\set fontSize = #-4 +e4 f | +% make note heads larger +\set fontSize = #2.5 +g4 a +% return to default size +\unset fontSize +b4 c | +@end lilypond + +Wir haben jetzt gesehen, wie sich die Werte von unterschiedlichen +Eigenschaften ändern lassen. Beachten Sie, dass Integer und +Zahlen immer mit einem Rautenzeichen beginnen, während +die Werte wahr und falsch (mit @code{##t} und @code{##f} +notiert) immer mit zwei Rauten beginnen. Eine Eigenschaft, die +aus Text besteht, muss in doppelte Anführungsstriche gesetzt werden, +auch wenn wir später sehen werden, dass Text auf eine sehr viel +allgemeinere und mächtigere Art mit dem @code{\markup}-Befehl +eingegeben werden kann. + +@subsubheading Kontexteigenschaften mit @code{\with} setzen + +@funindex \with +@funindex with +@cindex Kontexteigenschaft, setzen mit \with + +Die Standardwerte von Kontexteigenschaften können zu dem Zeitpunkt +definiert werden, an welchem der Kontext erstellt wird. Manchmal +ist das eine saubere Weise, eine Eigenschaft zu bestimmen, die für +die gesamte Partitur erhalten bleichen soll. Wenn ein Kontext mit +einem @code{\new}-Befehl erstellt wird, können in einer +direkt folgenden @code{\with @{ .. @}}-Umgebung die Eigenschaften +bestimmt werden. Wenn also die zusätzlichen +Auflösungszeichen für eine ganze Partitur gelten sollen, könnte +man schreiben: + +@example +\new Staff \with @{ extraNatural = ##f @} +@end example + +@noindent +etwa so: + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff + \relative c'' { + gis4 ges aes ais + } + \new Staff \with { extraNatural = ##f } { + \relative c'' { + gis ges aes ais + } + } +>> +@end lilypond + +Eigenschaften, die auf diese Arte gesetzt werden, können immer noch +dynamisch mit dem @code{\set}-Befehl geändert werden und mit +@code{\unset} auf ihre Standardeinstellungen zurückgesetzt werden, +wie sie vorher in der @code{\with}-Umgebung definiert wurden. + +@cindex Schriftgröße, Standardeinstellung +@cindex fontSize (Schriftgröße), Standardeinstellung + +Wenn also die @code{fontSize}-Eigenschaft in einer @code{\with}-Umgebung +definiert wird, wird der Standardwert für die Schriftgröße +festgelegt. Wenn dieser Wert später mit @code{\set} verändert +wird, kann dieser neue Standardwert mit dem Befehl +@code{\unset fontSize} wieder erreicht werden. + +@subsubheading Kontexteigenschaften mit @code{\context} setzen + +@cindex Kontexteigenschaften, mit \context setzen +@cindex Eigenschaften von Kontexten, mit \context setzen +@funindex \context +@funindex context + +Die Werte von Kontext-Eigenschaften können in @emph{allen} Kontexten +eines bestimmten Typs (etwa alle @code{Staff}-Kontexte) +gleichzeitig mit einem Befehl gesetzt werden. Der Kontext wird +spezifiziert, indem seine Bezeichnung benutzt wird, also etwa +@code{Staff}, mit einem Backslash davor: @code{\Staff}. Der Befehl +für die Eigenschaft ist der gleiche, wie er auch in der +@code{\with}-Konstruktion benutzt wird, wie oben gezeigt. Er wird in +eine @code{\context}-Umgebung eingebettet, welche wiederum innerhalb +von einer @code{\layout}-Umgebung steht. Jede @code{\context}-Umgebung +wirkt sich auf alle Kontexte dieses Types aus, welche sich in der +aktuellen Partitur befinden (d. h. innerhalb einer @code{\score}- +oder @code{\book}-Umgebung). Hier ist ein Beispiel, wie man diese +Funktion anwendet: + +@lilypond[verbatim,quote] +\score { + \new Staff { + \relative c'' { + cis4 e d ces + } + } + \layout { + \context { + \Staff + extraNatural = ##t + } + } +} +@end lilypond + +Wenn die Veränderung der Eigenschaft sich auf alle Systeme einer +@code{score}-Umgebung beziehen soll: + +@lilypond[quote,verbatim] +\score { + << + \new Staff { + \relative c'' { + gis4 ges aes ais + } + } + \new Staff { + \relative c'' { + gis4 ges aes ais + } + } + >> + \layout { + \context { + \Score extraNatural = ##f + } + } +} +@end lilypond + +@noindent +Kontext-Eigenschaften, die auf diese Weise gesetzt werden, können für +bestimmten Kontexte überschrieben werden, indem die +@code{\with}-Konstruktion eingesetzt wird, oder mit @code{\set}-Befehlen +innerhalb der aktuellen Noten. + + +@seealso +Notationsreferenz: +@ruser{Die Standardeinstellungen von Kontexten ändern}, +@ruser{Der set-Befehl}. + +Referenz der Interna: +@rinternals{Contexts}, +@rinternals{Tunable context properties}. + + +@node Přidání a odstranění rytců +@subsection Přidání a odstranění rytců +@translationof Adding and removing engravers + +@cindex Engraver, Hinzufügen von +@cindex Engraver, Entfernen von +@cindex Hinzufügen von Engravern +@cindex Entfernen von Engravern + +@funindex \consists +@funindex \remove +@funindex consists +@funindex remove + +Wir haben gesehen, dass jeder Kontext eine Anzahl an Engravern +(Stempeln) beinhaltet, von denen ein jeder einen bestimmten +Teil des fertigen Notensatzes produziert, wie z. B. Taktlinien, +Notenlinien, Notenköpfe, Hälse usw. Wenn ein Engraver aus +einem Kontext entfernt wird, kann er seine Objekte nicht +länger produzieren. Das ist eine eher grobe Methode, die +Notenausgabe zu beeinflussen, aber es kann von großem +Nutzen sein. + + +@subsubheading Einen einzelnen Kontext verändern + +Um einen Engraver von einem einzelnen Kontext zu entfernen, +wir der @code{\with}-Befehl eingesetzt, direkt hinter +den Befehl zur Kontext-Erstellung geschrieben, wie +in dem vorigen Abschnitt gezeigt. + +Als ein Beispiel wollen wir das Beispiel aus dem letzten +Abschnitt produzieren, aber die Notenlinien entfernen. Erinnern +Sie sich, dass die Notenlinien vom @code{Staff_symbol_engraver} +erstellt werden. + +@lilypond[quote,verbatim,ragged-right] +\new Staff \with { + \remove Staff_symbol_engraver +} +\relative c' { + c4 d + \set fontSize = #-4 % make note heads smaller + e4 f | + \set fontSize = #2.5 % make note heads larger + g4 a + \unset fontSize % return to default size + b4 c | +} +@end lilypond + +@cindex Ambitus-Engraver + +Engraver können auch zu einem bestimmten +Kontext hinzugefügt werden. Dies geschieht +mit dem Befehl + +@code{\consists @var{Engraver_bezeichnung}} + +@noindent +welcher auch wieder innerhalb der @code{\with}-Umgebung +gesetzt wird. Einige Chorpartituren zeigen einen +Ambitus direkt zu Beginn der ersten Notenzeile, um +den Stimmumfang des Stückes anzuzeigen, siehe auch +@rglos{ambitus}. Der Ambitus wird vom +@code{Ambitus_engraver} erstellt, der normalerweise +in keinem Kontext enthalten ist. Wenn wir +ihn zum @code{Voice}-Kontext hinzufügen, errechnet +er automatisch den Stimmumfang für diese einzelne Stimme +und zeigt ihn an: + +@lilypond[quote,verbatim,ragged-right] +\new Staff << + \new Voice \with { + \consists Ambitus_engraver + } { + \relative c'' { + \voiceOne + c4 a b g + } + } + \new Voice { + \relative c' { + \voiceTwo + c4 e d f + } + } +>> +@end lilypond + +@noindent +wenn wir den Ambitus-Engraver allerdings zum +@code{Staff}-Kontext hinzufügen, wird der Stimmumfang aller +Stimmen in diesem Notensystem errechnet: + +@lilypond[quote,verbatim,ragged-right] +\new Staff \with { + \consists Ambitus_engraver +} +<< + \new Voice { + \relative c'' { + \voiceOne + c4 a b g + } + } + \new Voice { + \relative c' { + \voiceTwo + c4 e d f + } + } +>> +@end lilypond + + +@subsubheading Alle Kontexte des gleichen Typs verändern + +@funindex \layout + +Die vorigen Beispiele zeigen, wie man Engraver in einem +bestimmten Kontext hinzufügen oder entfernen kann. Es ist +auch möglich, Engraver in jedem Kontext eines bestimmten +Typs hinzuzufügen oder zu entfernen. Dazu werden die +Befehle in dem entsprechenden Kontext in einer +@code{\layout}-Umgebung gesetzt. Wenn wir also z. B. +den Ambitus für jedes Notensystem in einer Partitur +mit vier Systemen anzeigen wollen, könnte das so aussehen: + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new Staff { + \relative c'' { + c4 a b g + } + } + \new Staff { + \relative c' { + c4 a b g + } + } + \new Staff { + \clef "G_8" + \relative c' { + c4 a b g + } + } + \new Staff { + \clef "bass" + \relative c { + c4 a b g + } + } + >> + \layout { + \context { + \Staff + \consists Ambitus_engraver + } + } +} +@end lilypond + +@noindent +Die Werte der Kontext-Eigenschaften können auch für +alle Kontexte eines bestimmten Typs auf die gleiche +Weise geändert werden, indem der @code{\set}-Befehl in +einer @code{\context}-Umgebung angewendet wird. + + +@seealso +Notationsreferenz: @ruser{Umgebungs-Plugins verändern}, +@ruser{Die Standardeinstellungen von Kontexten ändern}. + +@knownissues +Die @code{Stem_engraver} und @code{Beam_engraver} fügen ihre +Objekte an Notenköpfe an. Wenn der @code{Note_heads_engraver} +entfernt wird, werden keine Notenköpfe erstellt und demzufolge auch keine +Hälse oder Bögen dargestellt. + + +@node Rozšíření příkladů +@section Rozšíření příkladů +@translationof Extending the templates + +Sie haben sich durch die Übung gearbeitet, Sie +wissen jetzt, wie Sie Notensatz produzieren, und Sie +haben die grundlegenden Konzepte verstanden. Aber wie +erhalten Sie genau die Systeme, die Sie brauchen? Es +gibt eine ganze Anzahl an fertigen Vorlagen +(siehe @ref{Vorlagen}), mit denen Sie beginnen +können. Aber was, wenn Sie nicht genau das finden, +was Sie brauchen? Lesen Sie weiter. + +@menu +* Soprán a violoncello:: +* Čtyřhlasý notový zápis SATB:: +* Vytvoření notového zápisu od základu:: +* Úspora psaní na stroji pomocí proměnných a funkcí:: +* Notové zápisy a hlasy:: +@end menu + + +@node Soprán a violoncello +@subsection Soprán a violoncello +@translationof Soprano and cello + +@cindex Template, Verändern von +@cindex Vorlage, Verändern von +@cindex Veränderung von Vorlagen + +Beginnen Sie mit der Vorlage, die Ihren Vorstellungen +am nächsten kommt. Nehmen wir einmal an, Sie wollen +ein Stück für Soprán a violoncello schreiben. In diesem +Fall könnten Sie mit der Vorlage @qq{Noten und Text} +(für die Sopran-Stimme) beginnen. + +@example +\version @w{"@version{}"} +melody = \relative c' @{ + \clef "treble" + \key c \major + \time 4/4 + a4 b c d +@} + +text = \lyricmode @{ + Aaa Bee Cee Dee +@} + +\score @{ + << + \new Voice = "one" @{ + \autoBeamOff + \melody + @} + \new Lyrics \lyricsto "one" \text + >> + \layout @{ @} + \midi @{ @} +@} +@end example + +Jetzt wollen wir die Cello-Stimme hinzufügen. Schauen wir uns das +Beispiel @qq{Nur Noten} an: + +@example +\version @w{"@version{}"} + +melody = \relative c' @{ + \clef "treble" + \key c \major + \time 4/4 + a4 b c d +@} + +\score @{ + \new Staff \melody + \layout @{ @} + \midi @{ @} +@} +@end example + +Wir brauchen den @code{\version}-Befehl nicht zweimal. Wir +brauchen aber den @code{melody}-Abschnitt. Wir wollen +keine zwei @code{\score} (Partitur)-Abschnitte -- mit zwei +@code{\score}-Abschnitten würden wir zwei Stimmen +getrennt voneinander erhalten. In diesem Fall wollen wir +sie aber zusammen, als Duett. Schließlich brauchen wir +innerhalb des @code{\score}-Abschnittes nur einmal die +Befehle @code{\layout} und @code{\midi}. + +Wenn wir jetzt einfach zwei @code{melody}-Abschnitte in +unsere Datei kopieren würden, hätten wir zwei @code{melody}-Variable. +Das würde zu keinem Fehler führen, aber die zweite von ihnen +würde für beide Melodien eingesetzt werden. Wir müssen +ihnen also andere Bezeichnungen zuweisen, um sie voneinander +zu unterscheiden. Nennen wir die Abschnitte also @code{SopranNoten} +für den Sopran und @code{CelloNoten} für die Cellostimme. Wenn +wir schon dabei sind, können wir @code{text}auch nach +@code{SoprText} umbenennen. Denken Sie daran, beide +Vorkommen der Bezeichnung zu ändern: einmal die Definition +gleich am Anfang (@code{melody = \relative c' @{ }) und +dann auch noch die Benutzung der Variable innerhalb des +@code{\score}-Abschnittes. + +Gleichzeitig können wir auch noch das Notensystem für das +Cello ändern -- das Cello hat normalerweise einen Bassschlüssel. +Wir ändern auch die Noten etwas ab. + +@example +\version @w{"@version{}"} + +SopranNoten = \relative c' @{ + \clef "treble" + \key c \major + \time 4/4 + a4 b c d +@} + +SoprText = \lyricmode @{ + Aaa Bee Cee Dee +@} + +CelloNoten = \relative c @{ + \clef "bass" + \key c \major + \time 4/4 + d4 g fis8 e d4 +@} + +\score @{ + << + \new Voice = "eins" @{ + \autoBeamOff + \SopranNoten + @} + \new Lyrics \lyricsto "eins" \Soprantext + >> + \layout @{ @} + \midi @{ @} +@} +@end example + +Das sieht schon vielversprechend aus, aber die Cello-Stimme +erscheint noch nicht im Notensatz -- wir haben vergessen, +sie in den @code{\score}-Abschnitt einzufügen. Wenn die +Cello-Stimme unterhalb des Soprans erscheinen soll, müssen +wir + +@example +\new Staff \CelloNoten +@end example + +@noindent +unter dem Befehl für den Sopran hinzufügen. Wir brauchen auch +die spitzen Klammern (@code{<<} und @code{>>}) um die +Noten, denn damit wird LilyPond mitgeteilt, dass mehr als +ein Ereignis gleichzeitig stattfindet (in diesem Fall sind es +zwei @code{Staff}-Instanzen). Der @code{\score}-Abschnitt +sieht jetzt so aus: + +@c Indentation in this example is deliberately poor +@example +\score @{ + << + << + \new Voice = "eins" @{ + \autoBeamOff + \SopranNoten + @} + \new Lyrics \lyricsto "eins" \SoprText + >> + \new Staff \CelloNoten + >> + \layout @{ @} + \midi @{ @} +@} +@end example + +@noindent +Das sieht etwas unschön aus, vor allem die Einrückung stimmt +nicht mehr. Das können wir aber schnell in Ordnung bringen. +Hier also die gesamte Vorlage für Soprán a violoncello: + +@lilypond[quote,verbatim,ragged-right,addversion] +sopranoMusic = \relative c' { + \clef "treble" + \key c \major + \time 4/4 + a4 b c d +} + +sopranoLyrics = \lyricmode { + Aaa Bee Cee Dee +} + +celloMusic = \relative c { + \clef "bass" + \key c \major + \time 4/4 + d4 g fis8 e d4 +} + +\score { + << + << + \new Voice = "one" { + \autoBeamOff + \sopranoMusic + } + \new Lyrics \lyricsto "one" \sopranoLyrics + >> + \new Staff \celloMusic + >> + \layout { } + \midi { } +} +@end lilypond + + +@seealso +Die Vorlagen, mit denen wir begonnen haben, können im +Anhang @qq{Vorlagen} gefunden werden, siehe +@ref{Ein einzelnes System}. + + +@node Čtyřhlasý notový zápis SATB +@subsection Čtyřhlasý notový zápis SATB +@translationof Four-part SATB vocal score + +@cindex Vorlage, SATB +@cindex Vorlage, Chorpartitur +@cindex SATB-Vorlage +@cindex Chorpartitur, Vorlage + +Die meisten Partituren für vierstimmigen gemischten Chor +mit Orchesterbegleitung (wie etwa Mendelssohns @notation{Elias} +oder Händels @notation{Messias}) sind so aufgebaut, dass +für jede der vier Stimmen ein eigenes System besteht und +die Orchesterbegleitung dann als Klavierauszug darunter +notiert wird. Hier ein Beispiel aus Händels @notation{Messias}: + +@c The following should appear as music without code +@lilypond[quote,ragged-right] +global = { \key d \major \time 4/4 } + +sopranoMusic = \relative c'' { + \clef "treble" + r4 d2 a4 | d4. d8 a2 | cis4 d cis2 | +} +sopranoWords = \lyricmode { + Wor -- thy | is the lamb | that was slain | +} +altoMusic = \relative a' { + \clef "treble" + r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 | +} +altoWords = \sopranoWords +tenorMusic = \relative c' { + \clef "G_8" + r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 | +} +tenorWords = \sopranoWords +bassMusic = \relative c' { + \clef "bass" + r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 | +} +bassWords = \sopranoWords +upper = \relative a' { + \clef "treble" + \global + r4 2 4 + 4. 8 2 + 4 2 +} +lower = \relative c, { + \clef "bass" + \global + 4 2 4 + 4. 8 2 + 4 2 +} + +\score { + << % combine ChoirStaff and PianoStaff in parallel + \new ChoirStaff << + \new Staff = "sopranos" << + \set Staff.instrumentName = #"Soprano" + \new Voice = "sopranos" { + \global + \sopranoMusic + } + >> + \new Lyrics \lyricsto "sopranos" { + \sopranoWords + } + \new Staff = "altos" << + \set Staff.instrumentName = #"Alto" + \new Voice = "altos" { + \global + \altoMusic + } + >> + \new Lyrics \lyricsto "altos" { + \altoWords + } + \new Staff = "tenors" << + \set Staff.instrumentName = #"Tenor" + \new Voice = "tenors" { + \global + \tenorMusic + } + >> + \new Lyrics \lyricsto "tenors" { + \tenorWords + } + \new Staff = "basses" << + \set Staff.instrumentName = #"Bass" + \new Voice = "basses" { + \global + \bassMusic + } + >> + \new Lyrics \lyricsto "basses" { + \bassWords + } + >> % end ChoirStaff + + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff = "upper" \upper + \new Staff = "lower" \lower + >> + >> +} +@end lilypond + +Keine der Vorlage bietet diesen Aufbau direkt an. Die Vorlage, die +am nächsten daran liegt, ist @qq{SATB-Partitur und automatischer +Klavierauszug}, siehe @ref{Vokalensemble}. Wir müssen diese +Vorlage aber so anpassen, dass die Noten für das Klavier nicht +automatisch aus dem Chorsatz generiert werden. Die Variablen +für die Noten und den Text des Chores sind in Ordnung, wir +müssen nun noch Variablen für die Klaviernoten hinzufügen. + +Die Reihenfolge, in welcher die Variablen in das Chorsystem +(@code{ChoirStaff}) eingefügt werden, entspricht nicht der +in dem Beispiel oben. Wir wollen sie so sortieren, dass die +Texte jeder Stimme direkt unter den Noten notiert werden. +Alle Stimmen sollten als @code{\voiceOne} notiert werden, +welches die Standardeinstellung ist; wir können also die +@code{\voiceXXX}-Befehle entfernen. Wir müssen auch noch +den Schlüssel für den Tenor ändern. Die Methode, mit der +der Text den Stimmen zugewiesen wird, ist uns noch nicht +bekannt, darum wollen wir sie umändern auf die Weise, die +wir schon kennen. Wir fügen auch noch Instrumentbezeichnungen +zu den Systemen hinzu. + +Damit erhalten wir folgenden @code{ChoirStaff}: + +@example +\new ChoirStaff << + \new Staff = "sopranos" << + \set Staff.instrumentName = #"Sopran" + \new Voice = "sopranos" @{ + \global + \sopranoMusic + @} + >> + \new Lyrics \lyricsto "sopranos" @{ + \sopranoWords + @} + \new Staff = "altos" << + \set Staff.instrumentName = #"Alt" + \new Voice = "altos" @{ + \global + \altoMusic + @} + >> + \new Lyrics \lyricsto "altos" @{ + \altoWords + @} + \new Staff = "tenors" << + \set Staff.instrumentName = #"Tenor" + \new Voice = "tenors" @{ + \global + \tenorMusic + @} + >> + \new Lyrics \lyricsto "tenors" @{ + \tenorWords + @} + \new Staff = "basses" << + \set Staff.instrumentName = #"Bass" + \new Voice = "basses" @{ + \global + \bassMusic + @} + >> + \new Lyrics \lyricsto "basses" @{ + \bassWords + @} +>> % end ChoirStaff +@end example + +Als nächstes müssen wir das Klaviersystem bearbeiten. +Das ist einfach: wir nehmen einfach den Klavierteil +aus der @qq{Piano solo}-Vorlage: + +@example +\new PianoStaff << + \set PianoStaff.instrumentName = #"Piano " + \new Staff = "oben" \oben + \new Staff = "unten" \unten +>> +@end example + +@noindent +und fügen die Variablen @code{oben} +und @code{unten} hinzu. + +Das Chorsystem und das Pianosystem müssen mit +spitzen Klammern kombiniert werden, damit beide +übereinander erscheinen: + +@example +<< % ChoirStaff und PianoStaff parallel kombinieren + \new ChoirStaff << + \new Staff = "sopranos" << + \new Voice = "sopranos" @{ + \global + \sopranoMusic + @} + >> + \new Lyrics \lyricsto "sopranos" @{ + \sopranoWords + @} + \new Staff = "altos" << + \new Voice = "altos" @{ + \global + \altoMusic + @} + >> + \new Lyrics \lyricsto "altos" @{ + \altoWords + @} + \new Staff = "tenors" << + \clef "G_8" % tenor clef + \new Voice = "tenors" @{ + \global + \tenorMusic + @} + >> + \new Lyrics \lyricsto "tenors" @{ + \tenorWords + @} + \new Staff = "basses" << + \clef "bass" + \new Voice = "basses" @{ + \global + \bassMusic + @} + >> + \new Lyrics \lyricsto "basses" @{ + \bassWords + @} + >> % end ChoirStaff + + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff = "upper" \upper + \new Staff = "lower" \lower + >> +>> +@end example + +Alles miteinander kombiniert und mit den Noten für drei +Takte sieht unser Beispiel nun so aus: + +@lilypond[quote,verbatim,ragged-right,addversion] +global = { + \key d \major + \time 4/4 +} +sopranoMusic = \relative c'' { + \clef "treble" + r4 d2 a4 | d4. d8 a2 | cis4 d cis2 | +} +sopranoWords = \lyricmode { + Wor -- thy | is the lamb | that was slain | +} +altoMusic = \relative a' { + \clef "treble" + r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 | +} +altoWords = \sopranoWords +tenorMusic = \relative c' { + \clef "G_8" + r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 | +} +tenorWords = \sopranoWords +bassMusic = \relative c' { + \clef "bass" + r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 | +} +bassWords = \sopranoWords +upper = \relative a' { + \clef "treble" + \global + r4 2 4 + 4. 8 2 + 4 2 +} +lower = \relative c, { + \clef "bass" + \global + 4 2 4 + 4. 8 2 + 4 2 +} + +\score { + << % combine ChoirStaff and PianoStaff in parallel + \new ChoirStaff << + \new Staff = "sopranos" << + \set Staff.instrumentName = #"Soprano" + \new Voice = "sopranos" { + \global + \sopranoMusic + } + >> + \new Lyrics \lyricsto "sopranos" { + \sopranoWords + } + \new Staff = "altos" << + \set Staff.instrumentName = #"Alto" + \new Voice = "altos" { + \global + \altoMusic + } + >> + \new Lyrics \lyricsto "altos" { + \altoWords + } + \new Staff = "tenors" << + \set Staff.instrumentName = #"Tenor" + \new Voice = "tenors" { + \global + \tenorMusic + } + >> + \new Lyrics \lyricsto "tenors" { + \tenorWords + } + \new Staff = "basses" << + \set Staff.instrumentName = #"Bass" + \new Voice = "basses" { + \global + \bassMusic + } + >> + \new Lyrics \lyricsto "basses" { + \bassWords + } + >> % end ChoirStaff + + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano " + \new Staff = "upper" \upper + \new Staff = "lower" \lower + >> + >> +} +@end lilypond + + +@node Vytvoření notového zápisu od základu +@subsection Vytvoření notového zápisu od základu +@translationof Building a score from scratch + +@cindex Template, eigene schreiben +@cindex Vorlagen, eigene schreiben +@cindex eigene Vorlagen erstellen +@cindex Erstellen von eigenen Vorlagen +@cindex Schreiben von eigenen Vorlagen + +Wenn Sie einige Fertigkeit im Schreiben von LilyPond-Code +gewonnen haben, werden Sie vielleicht feststellen, dass es +manchmal einfacher ist, von Grund auf anzufangen, anstatt +die fertigen Vorlagen zu verändern. Auf diese Art könne Sie +auch Ihren eigenen Stil entwickeln, und ihn der Musik anpassen, +die Sie notieren wollen. Als Beispiel wollen wir demonstrieren, +wie man die Partitur für ein Orgelpreludium von Grund auf +konstruiert. + +Beginnen wir mit dem Kopf, dem @code{header}-Abschnitt. +Hier notieren wir den Titel, den Namen des Komponisten usw. +Danach schreiben wir die einzelnen Variablen auf und +schließlich am Ende die eigentliche Partitur, den +@code{\score}-Abschnitt. Beginnen wir mit einer groben +Struktur, in die wir dann die Einzelheiten nach und nach +eintragen. + +Als Beispiel benutzen wir zwei Takte aus dem Orgelpreludium +@notation{Jesu, meine Freude} von J. S. Bach, notiert +für zwei Manuale und Pedal. Sie können die Noten am Ende +dieses Abschnittes sehen. Das obere Manual trägt zwei Stimmen, +das untere und das Pedalsystem jeweils nur eine. Wir +brauchen also vier Variablen für die Noten und eine, um +Taktart und Tonart zu definieren. + +@example +\version @w{"@version{}"} +\header @{ + title = "Jesu, meine Freude" + composer = "J. S. Bach" +@} +keyTime = @{ \key c \minor \time 4/4 @} +ManualOneVoiceOneMusic = @{ s1 @} +ManualOneVoiceTwoMusic = @{ s1 @} +ManualTwoMusic = @{ s1 @} +PedalOrganMusic = @{ s1 @} + +\score @{ +@} +@end example + +Im Moment haben wir eine unsichtbare +Note in jede Stimme eingesetzt (@code{s1}). +Die Noten werden später hinzugefügt. + +Als nächstes schauen wir uns an, was in die +Partitur (die @code{\score}-Umgebung) +kommt. Dazu wird einfach die Notensystemstruktur +konstruiert, die wir benötigen. Orgelmusik +wird meistens auf drei Systemen notiert, eins +für jedes Manual und ein drittes für die Pedalnoten. +Die Systeme für die Manuale werden mit einer +geschweiften Klammer verbunden, wir +benutzen hier also ein @code{PianoStaff}. +Das erste Manualsystem braucht zwei Stimmen, +das zweite nur eine. + +@example +\new PianoStaff << + \new Staff = "ManualOne" << + \new Voice @{ + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \ManualOneVoiceTwoMusic + @} + >> % Ende ManualOne Systemkontext + \new Staff = "ManualTwo" << + \new Voice @{ + \ManualTwoMusic + @} + >> % Ende ManualTwo Systemkontext +>> % Ende PianoStaff Kontext +@end example + +Als nächstes soll das System für das Pedal hinzugefügt +werden. Es soll unter das Klaviersystem gesetzt +werden, aber muss gleichzeitig mit ihm erscheinen. +Wir brauchen also spitze Klammern um beide +Definitionen. Sie wegzulassen würde eine Fehlermeldung +in der Log-Datei hervorrufen. Das ist ein sehr +häufiger Fehler, der wohl auch Ihnen früher +oder später unterläuft. Sie können das fertige +Beispiel am Ende des Abschnittes kopieren und die +Klammern entfernen, um zu sehen, wie die +Fehlermeldung aussehen kann, die Sie in solch +einem Fall erhalten würden. + +@example +<< % PianoStaff and Pedal Staff must be simultaneous + \new PianoStaff << + \new Staff = "ManualOne" << + \new Voice @{ + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \ManualOneVoiceTwoMusic + @} + >> % end ManualOne Staff context + \new Staff = "ManualTwo" << + \new Voice @{ + \ManualTwoMusic + @} + >> % end ManualTwo Staff context + >> % end PianoStaff context + \new Staff = "PedalOrgan" << + \new Voice @{ + \PedalOrganMusic + @} + >> +>> +@end example + +Es ist nicht notwendig, die simultane Konstruktion +@code{<< .. >>} innerhalb des zweiten Manualsystems +und des Pedalsystems zu benutzen, denn sie enthalten +nur eine Stimme. Andererseits schadet es nichts, sie +zu schreiben, und es ist eine gute Angewohnheit, immer +die spitzen Klammern nach einem @code{\new Staff} zu +schreiben, wenn mehr als eine Stimme vorkommen könnten. +Für Stimmen (@code{Voice}) dagegen gilt genau das +Gegenteil: eine neue Stimme sollte immer von +geschweiften Klammern (@code{@{ .. @}}) gefolgt +werden, falls Sie ihre Noten in mehrere Variable aufteilen, +die nacheinander gesetzt werden sollen. + +Fügen wir also diese Struktur zu der @code{\score}-Umgebung +hinzu und bringen wir die Einzüge in Ordnung. Gleichzeitig +wollen wir die richtigen Schlüssel setzen und die Richtung der +Hälse und Bögen in den Stimmen des oberen Systems +kontrollieren, indem die obere Stimme ein +@code{\voiceOne}, die untere dagegen ein @code{\voiceTwo} +erhält. Die Taktart und Tonart werden mit unserer fertigen +Variable @code{\keyTime} eingefügt. + +@example +\score @{ + << % PianoStaff and Pedal Staff must be simultaneous + \new PianoStaff << + \new Staff = "ManualOne" << + \keyTime % set time signature and key + \clef "treble" + \new Voice @{ + \voiceOne + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \voiceTwo + \ManualOneVoiceTwoMusic + @} + >> % end ManualOne Staff context + \new Staff = "ManualTwo" << + \keyTime + \clef "bass" + \new Voice @{ + \ManualTwoMusic + @} + >> % end ManualTwo Staff context + >> % end PianoStaff context + \new Staff = "PedalOrgan" << + \keyTime + \clef "bass" + \new Voice @{ + \PedalOrganMusic + @} + >> % end PedalOrgan Staff + >> +@} % end Score context +@end example + +@cindex Spreizbarkeit von Systemen +@cindex Dehnung von Systemen, vertikal +@cindex Systeme, vertikales Dehnen + +Das Layout des Orgelsystems oben ist fast perfekt, es hat jedoch einen kleinen +Fehler, den man nicht bemerken kann, wenn man nur ein einzelnes System +betrachtet: Der Abstand des Pedalsystems zum System der linken Hand +sollte in etwa der gleiche sein wie der Abstand zwischen den Systemen +der linken und rechten Hand. Die Dehnbarkeit von Systemen in einem +Klaviersystem (@code{PianoStaff})-Kontext ist beschränkt (sodass der +Abstand zwischen den Systemen der linken und rechten Hand nicht zu groß +wird), und das Pedalsystem sollte sich genauso verhalten. + +@cindex Untereigenschaft +@cindex sub-properties +@cindex graphische Objekte +@cindex Grobs +@cindex Objekte, graphische + +Die Spreizbarkeit von Systemen kann mit der @code{staff-staff-spacing}-Eigenschaft +des @code{VerticalAxisGroup}-@qq{graphischen Objekts} (üblicherweise als +@qq{Grob} innerhalb der LilyPond-Dokumentation bezeichnet) kontrolliert +werden. An dieser Stelle brauchen Sie sich um die Details nicht zu +sorgen, sie werden später erklärt. Sehr Neugierige können sich den +Abschnitt @ruser{Grundlagen zum Verändern von Eigenschaften} anschauen. Im Moment +kann man nicht nur die @code{strechability} (Spreizbarkeit)-Untereigenschaft verändern, +darum müssen hier auch die anderen Untereigenschaften kopiert werden. Die +Standardeinstellungen dieser Untereigenschaften finden sich in der Datei +@file{scm/define-grobs.scm} in den Definitionen für den +@code{VerticalAxisGroup}-Grob. Der Wert für @code{strechability} wird aus +der Definition für das Klaviersystem (@code{PianoStaff}) entnommen +(in der Datei @file{ly/engraver-init.ly}), damit die Werte identisch +sind. + +@example +\score @{ + << % PianoStaff and Pedal Staff must be simultaneous + \new PianoStaff << + \new Staff = "ManualOne" << + \keyTime % set key and time signature + \clef "treble" + \new Voice @{ + \voiceOne + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \voiceTwo + \ManualOneVoiceTwoMusic + @} + >> % end ManualOne Staff context + \new Staff = "ManualTwo" \with @{ + \override VerticalAxisGroup + #'staff-staff-spacing #'stretchability = 5 + @} << + \keyTime + \clef "bass" + \new Voice @{ + \ManualTwoMusic + @} + >> % end ManualTwo Staff context + >> % end PianoStaff context + \new Staff = "PedalOrgan" << + \keyTime + \clef "bass" + \new Voice @{ + \PedalOrganMusic + @} + >> % end PedalOrgan Staff + >> +@} % end Score context +@end example + +Damit ist das Grundgerüst fertig. Jede Orgelmusik mit drei +Systemen hat die gleiche Struktur, auch wenn die Anzahl der Stimmen +in einem System sich ändern kann. Jetzt müssen wir nur noch +die Noten einfügen und alle Teile zusammenfügen, indem wir +die Variablen mit einem Backslash in die Partitur einbauen. + +@lilypond[quote,verbatim,ragged-right,addversion] +\header { + title = "Jesu, meine Freude" + composer = "J S Bach" +} +keyTime = { \key c \minor \time 4/4 } +ManualOneVoiceOneMusic = \relative g' { + g4 g f ees | + d2 c2 | +} +ManualOneVoiceTwoMusic = \relative c' { + ees16 d ees8~ ees16 f ees d c8 d~ d c~ | + c8 c4 b8 c8. g16 c b c d | +} +ManualTwoMusic = \relative c' { + c16 b c8~ c16 b c g a8 g~ g16 g aes ees | + f16 ees f d g aes g f ees d e8~ ees16 f ees d | +} +PedalOrganMusic = \relative c { + r8 c16 d ees d ees8~ ees16 a, b g c b c8 | + r16 g ees f g f g8 c,2 | +} + +\score { + << % PianoStaff and Pedal Staff must be simultaneous + \new PianoStaff << + \new Staff = "ManualOne" << + \keyTime % set time signature and key + \clef "treble" + \new Voice { + \voiceOne + \ManualOneVoiceOneMusic + } + \new Voice { + \voiceTwo + \ManualOneVoiceTwoMusic + } + >> % end ManualOne Staff context + \new Staff = "ManualTwo" \with { + \override VerticalAxisGroup + #'staff-staff-spacing #'stretchability = 5 + } << + \keyTime + \clef "bass" + \new Voice { + \ManualTwoMusic + } + >> % end ManualTwo Staff context + >> % end PianoStaff context + \new Staff = "PedalOrgan" << + \keyTime + \clef "bass" + \new Voice { + \PedalOrganMusic + } + >> % end PedalOrgan Staff context + >> +} % end Score context +@end lilypond + +@seealso +Glossar: +@rglos{system}. + + +@node Úspora psaní na stroji pomocí proměnných a funkcí +@subsection Úspora psaní na stroji pomocí proměnných a funkcí +@translationof Saving typing with variables and functions + +@cindex Variablen + +Bis jetzt wurde immer derartige Notation vorgestellt: + +@lilypond[quote,verbatim,ragged-right] +hornNotes = \relative c'' { c4 b dis c } + +\score { + { + \hornNotes + } +} +@end lilypond + +Sie können sich vorstellen, dass das etwa für minimalistische +Musik sehr nützlich sein könnte: + +@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 + +Diese Variablen (die man auch als Makros oder Benutzer-Befehl +bezeichnet) können jedoch auch für eigene Anpassungen eingesetzt +werden: + +@c TODO Avoid padtext - not needed with skylining +@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 + +Derartige Variablen sind offensichtlich sehr nützlich, zu Tipparbeit zu ersparen. Aber es lohnt sich schon, sie zu +benutzen, wenn man sie nur einmal benutzen will, denn sie +vereinfachen die Struktur einer Datei sehr stark. Hier das +vorige Beispiel ohne jede Benutzung von Variablen. Es ist +sehr viel schwerer lesbar, 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 + +Bisher haben wir vor allem statische Ersetzungen betrachtet: +wenn LilyPond etwa @code{\padText} sieht, wird es ersetzt mit +all dem Code, mit dem wir es definiert haben (also alles, +was sich rechts von @code{padtext=} befindet). + +LilyPond kann auch nicht-statische Ersetzungen bewältigen. 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 ist auch eine gute Möglichkeit, +Arbeit zu vermeiden, wenn sich einmal die Syntax von LilyPond +ändern sollte (siehe auch @rprogram{Updating old input files +with convert-ly}). +Wenn man eine einzige Definition hat (wie etwa @code{\dolce}), +die für alle Vorkommen in der Notation eingesetzt wird, muss +man auch nur einmal diese Definition aktualisieren, anstatt +dass man sie in jeder @file{.ly}-Datei einzeln ändern müsste. + + +@node Notové zápisy a hlasy +@subsection Notové zápisy a hlasy +@translationof Scores and parts + +In Orchestermusik werden alle Noten zweimal gedruckt. Einmal +in einer Stimme für die Spieler, und einmal ein der Partitur +für den Dirigenten. Variablen können benutzen, um sich doppelte +Arbeit zu ersparen. Die Noten werden nur einmal eingegeben und +in einer Variable abgelegt. Der Inhalt der Variable wird dann +benutzt um sowohl die Stimme als auch die Partitur zu erstellen. + +Es bietet sich an, die Noten in einer extra Datei abzulegen. +Nehmen wir an, dass die Datei @file{horn-music.ly} folgende +Noten eines Horn/@/Fagott-Duos enthält: + +@example +hornNotes = \relative c @{ + \time 2/4 + r4 f8 a | cis4 f | e4 d | +@} +@end example + +@noindent +Eine Stimme wird also erstellt, indem man folgendes in eine +Datei schreibt: + +@example +\include "horn-music.ly" + +\header @{ + instrument = "Horn in F" +@} + +@{ + \transpose f c' \hornNotes +@} +@end example + +Die Zeile + +@example +\include "horn-music.ly" +@end example + +@noindent +ersetzt den Inhalt von @file{horn-music.ly} an dieser Position +in der Datei, sodass @code{hornNotes} im Folgenden definiert +ist. Der Befehl @code{\transpose f@tie{}c'} zeigt an, dass +das Argument (@code{\hornNotes}) eine Quinte nach oben transponiert +werden soll. Klingendes @code{f} wird als @code{c'}, wie es +die Stimmung eines normalen F-Hornes verlangt. Die Transposition +kann in folgender Notenausgabe gesehen werden: + +@lilypond[quote,ragged-right] +\transpose f c' \relative c { + \time 2/4 + r4 f8 a | cis4 f | e4 d | +} +@end lilypond + +In Ensemblestücken sind manche Stimmen für viele Takte stumm. +Das wird durch eine besondere Pause notiert, die Mehrtaktpause. +Sie wird mit einem großen @code{R} notiert, gefolgt von der +Dauer (@code{1}@tie{}für eine Ganze, @code{2}@tie{}für eine Halbe usw.). Indem man die Dauern multipliziert, kann man auch +längere Dauern erzeugen. Diese Pause etwa dauert drei Takte +in einem 2/4-Takt: + +@example +R2*3 +@end example + +Wenn die Stimme gesetzt wird, werden Mehrtaktpausen komprimiert. Das geschieht, indem man folgendes in die Datei +schreibt: + +@example +\set Score.skipBars = ##t +@end example + +@noindent +Dieser Befehl setzt die Eigenschaft @code{skipBars} im +@code{Score}-Kontext auf wahr (@code{##t}). Die Pause und diese Option zu der Musik von oben hinzugefügt, ergibt folgendes +Beispiel: + +@lilypond[quote,ragged-right] +\transpose f c' \relative c { + \time 2/4 + \set Score.skipBars = ##t + R2*3 | + r4 f8 a | cis4 f | e4 d | +} +@end lilypond + +Die Partitur wird erstellt, indem man alle Noten kombiniert. +Angenommen, die andere Stimme ist in @code{bassoonNotes} +in der Datei @file{bassoon-music.ly} definiert, würde eine +Partitur erstellt mit: + +@example +\include "bassoon-music.ly" +\include "horn-music.ly" + +<< + \new Staff \hornNotes + \new Staff \bassoonNotes +>> +@end example + +@noindent +woraus sich ergibt: + +@lilypond[quote,ragged-right] +\relative c << + \new Staff { + \clef "treble" + \time 2/4 + R2*3 | + r4 f8 a | cis4 f | e4 d | + } + \new Staff { + \clef "bass" + \time 2/4 + r4 d,8 f | gis4 c | b4 bes | + a8 e f4 | g4 d | gis4 f | + } +>> +@end lilypond diff --git a/Documentation/cs/learning/tutorial.itely b/Documentation/cs/learning/tutorial.itely old mode 100644 new mode 100755 index 61511685e3..806851b1ac --- a/Documentation/cs/learning/tutorial.itely +++ b/Documentation/cs/learning/tutorial.itely @@ -22,9 +22,9 @@ Tato kapitola čtenáři představuje základní práci s LilyPondem. @menu * Přeložení zdrojového souboru:: -* Práce na vstupních souborech:: +* Jak se píší vstupní soubory:: * Vypořádání se s chybami:: -* Jak se má příručka číst:: +* Jak se mají příručky číst:: @end menu @@ -92,7 +92,7 @@ vynechány také. Může se stát, že v této příručce závorky v některých příkladech chybí, ale je třeba vždy myslet na to, aby se ve vlastních souborech používaly! Více informací ke znázornění příkladů v této příručce -podává úryvek @ref{Jak se má příručka číst}.} +podává úryvek @ref{Jak se mají příručky číst}.} Dodatečně LilyPond rozlišuje @strong{Psaní velkých a malých písmen}. @w{@samp{ @{ c d e @}}} je přípustný kód, @@ -177,7 +177,7 @@ LilyPond běží o mnoho rychleji.} @node Jak se píší vstupní soubory -@section Wie werden Eingabe-Dateien geschrieben +@section Jak se píší vstupní soubory @translationof How to write input files Tento úryvek vysvětluje základní skladbu LilyPondu a pomáhá @@ -711,7 +711,7 @@ verze. @translationof Omitted material @cindex Příručka, čtení -@cindex Jak se má příručka číst +@cindex Jak se mají příručky číst @cindex Čtení příručky @cindex Příklady, klepnutelné @cindex Klepnutelné příklady @@ -723,7 +723,7 @@ verze. LilyPond-Code musí být vždy obklopen znakem @code{@{ @}} nebo @w{@code{@bs{}relative c'' @{ @dots{} @}}}, jak je to ukázáno -v @ref{Práce na vstupních souborech}. +v @ref{Práce na vstupních souborech,,práci na vstupních souborech}. Ve zbytku této příručky se toho ovšem většina příkladů vzdá. Abyste je napodobil, můžete zkopírovat odpovídající zdrojový kód a vložit jej do textového souboru, ale přitom @@ -817,17 +817,17 @@ rozumět pozdějším částem.} @strong{Předtím než @emph{cokoli} vyzkoušíte}: Přečtěte si části @ref{Cvičení} a @ref{Běžný notový zápis}. Když narazíte hudební odborné pojmy, které neznáte, -podívejte se na ně v @rglosnamed{Top, Slovníček}. +podívejte se na ně v @rglosnamed{Začátek, Slovníček}. @item @strong{Předtím než napíšete úplný kousek}: Přečtěte si část @ref{Základní pojmy} v příručce k učení se. Potom se můžete na pro váš projekt důležité části podívat -v @rusernamed{Top, Doporučení pro notový zápis}. +v @rusernamed{Začátek, Doporučení pro notový zápis}. @item @strong{Předtím než se pokusíte měnit obvyklý notový zápis}: -Přečtěte si @ref{Změna výstupu,,o změně výstupu} v příručce k učení se. +Přečtěte si @ref{Ladění výstupu,,o ladění výstupu} v příručce k učení se. @item @strong{Předtím než se pustíte do většího projektu}: Přečtěte si část diff --git a/Documentation/cs/learning/tweaks.itely b/Documentation/cs/learning/tweaks.itely new file mode 100755 index 0000000000..a49586291d --- /dev/null +++ b/Documentation/cs/learning/tweaks.itely @@ -0,0 +1,4558 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*- + +@ignore + Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f + + 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.13.36" + +@node Ladění výstupu +@chapter Ladění výstupu +@translationof Tweaking output + +In diesem Kapitel wird erklärt, wie man die Notenausgabe verändern +kann. In LilyPond kann man sehr viel konfigurieren, fast jedes +Notenfragment kann geändert werden. + + +@menu +* Základy pro ladění:: +* Vnitřní referenční příručka:: +* Vzhled předmětů:: +* Umístění předmětů:: +* Střety předmětů:: +* Další ladění:: +@end menu + + +@node Základy pro ladění +@section Základy pro ladění +@translationof Tweaking basics + +@menu +* Úvod do ladění:: +* Předměty a rozhraní:: +* Pravidla pro pojmenovávání předmětů a vlastností:: +* Postupy při ladění:: +@end menu + +@node Úvod do ladění +@subsection Úvod do ladění +@translationof Introduction to tweaks + +@qq{Optimierung} (engl. tweaking) ist ein LilyPond-Begriff für die +verschiedenen Methoden, die Aktionen zu beeinflussen, die während +der Kompilation einer Notationsdatei vorgenommen werden sowie auf +das Notenbild einzuwirken. Einige dieser Optimierungen sind sehr +einfach, andere dagegen recht komplex. Aber insgesamt erlaubt das +System an Optimierungen so gut wie alle möglichen Erscheinungsformen +für die Notenausgabe. + +In diesem Abschnitt werden die grundlegenden Konzepte vorgestellt, +um die Optimierung zu verstehen. Später soll eine Anzahl von fertigen +Befehlen bereitgestellt werden, die einfach in die Quelldatei +kopiert werden können um den selben Effekt wie im Beispiel +zu erhalten. Gleichzeitig zeigen diese Beispiele, wie die Befehle +konstruiert werden, so dass Sie in der Lage sein werden, eigene +Befehle auf dieser Grundlage zu entwickeln. + +Bevor Sie mit diesem Kapitel beginnen, könnte Sie ein Blick in den +Abschnitt @ref{Kontexte und Engraver} interessieren, dann +Kontexte und Engraver sowie die Eigenschaften, die mit ihnen +verknüpft sind, sind die Voraussetzung, um die Funktionsweise +von Optimierungen verstehen zu können. + + +@node Předměty a rozhraní +@subsection Předměty a rozhraní +@translationof Objects and interfaces + +@cindex Objekte +@cindex Grobs +@cindex Spanners +@cindex Interfaces +@cindex Strecker +@cindex Schnittstellen +@cindex graphische Objekte (Grob) +@cindex Objekteigenschaften +@cindex Layout-Objekt +@cindex Objekt, Layout- +@cindex Eigenschaften von Objekten + +Optimierung bedeutet, die internen Operationen und Strukturen +des LilyPond-Programmes zu verändern, darum sollen hier +zunächst die wichtigsten Begriffe erklärt werden, die zur +Beschreibung dieser Operationen und Strukturen benutzt werden. + +Der Begriff @qq{Objekt} ist ein allgemeiner Begriff, mit dem +die Vielzahl an internen Strukturen bezeichnet wird, die LilyPond +während der Bearbeitung des Quelltextes erstellt. Wenn etwa +ein Befehl wie @code{\new Staff} auftritt, wird ein neues Objekt +vom Typ @code{Staff} erstellt. Dieses Objekt @code{Staff} enthält +dann alle Eigenschaften, die mit diesem speziellen Notensystem +verknüpft sind, wie beispielsweise seine Bezeichnung, Tonart und +spezifische Angaben über die Engraver, die innerhalb dieses Systems +eingesetzt werden. Für alle anderen Kontexte gibt es genauso +Objekte, die deren Eigenschaften beinhalten, beispielsweise für +@code{Voice}-Objekte, @code{Score}-Objekte, @code{Lyrics}-Objekte, +aber auch für Objekte, die Notationselemente wie die Taktlinien, +Notenköpfe, Bögen und Dynamikbezeichnung enthalten. Jedes +Objekt hat eine eigene Gruppe an Eigenschaftswerten. + +Bestimmte Objekttypen tragen besondere Bezeichnungen. Objekte, die +Notationselemente der gesetzten Ausgabe repräsentieren, also +Notenköpfe, Hälse, Bögen, Fingersatz, Schlüssel usw., werden +@qq{Layout-Objekte}, oft auch @qq{Graphische Objekte} genannt. +Daraus resultiert die künstliche Abkürzung @qq{Grob}. +Diese sind auch Objekte im allgemeinen Sinn und haben genauso +Eigenschaften, die mit ihnen verknüpft sind, wie etwa Größe, Position, +Farbe usw. + +Einige Layout-Objekte sind etwas spezieller. Phrasierungsbögen, +Crescendo-Klammern, Oktavierungszeichen und viele andere +Grobs sind nicht an einer Stelle plaziert -- sie haben vielmehr +einen Anfangspunkt, einen Endpunkt und eventuell noch andere +Eigenschaften, die ihre Form bestimmen. Objekte mit solch +einer erweiterten Gestalt werden als @qq{Strecker} (engl. Spanners) +bezeichnet. + +Es bleibt uns noch übrig zu erklären, was @qq{Schnittstellen} +(engl. interface) sind. Wenn auch viele Objekte sehr unterschiedlich +sind, haben sie doch oft gemeinsame Eigenschaften, die auf +die gleiche Weise verarbeitet werden. Alle Grobs beispielsweise +haben eine Farbe, eine Größe, eine Position usw. und alle +diese Eigenschaften werden von LilyPond auf die gleiche Weise +verarbeitet, während der Quelltext in Notensatz umgesetzt wird. +Um die internen Operationen zu vereinfachen, sind alle diese +gemeinsamen Prozesse und Eigenschaften in einem Objekt +mit der Bezeichnung @code{grob-interface} (Schnittstelle eines +graphischen Objektes) zusammengefasst. Es gibt viele andere +Gruppen gemeinsamer Eigenschaften, die jede eine Bezeichnung +besitzen, welche auf @code{-interface} endet. Insgesamt +gibt es über 100 dieser Schnittstellen. Wir werden später sehen, +was es damit auf sich hat. + +Dies waren die Hauptbegriffe, die in diesem Kapitel zur Anwendung +kommen sollen. + + +@node Pravidla pro pojmenovávání předmětů a vlastností +@subsection Pravidla pro pojmenovávání předmětů a vlastností +@translationof Naming conventions of objects and properties + +@cindex Benennungskonventionen für Objekte +@cindex Benennungskonventionen für Eigenschaften +@cindex Objekte, Benennungskonventionen +@cindex Eigenschaften, Benennungskonventionen +@cindex Regeln zur Benennung von Objekten/Eigenschaften + +Es wurden schon früher einige Regeln zur Benennung von +Objekten vorgestellt, siehe +@ref{Kontexte und Engraver}. Hier eine Referenzliste der +häufigsten Objekt- und Eigenschaftsbezeichnungen mit +den Regeln für ihre Bezeichnung und +illustrierenden echten Bezeichnungen. Es wurde @qq{A} +für einen beliebigen Großbuchstaben und @qq{aaa} für eine +beliebige Anzahl an Kleinbuchstaben eingesetzt. Andere +Zeichen werden explizit angegeben. + +@multitable @columnfractions .33 .33 .33 +@headitem Objekt-/Eigenschaftstyp + @tab Naming convention + @tab Beispiele +@item Kontexte + @tab Aaaa oder AaaaAaaaAaaa + @tab Staff, GrandStaff +@item Layout-Objekte + @tab Aaaa oder AaaaAaaaAaaa + @tab Slur, NoteHead +@item Engraver + @tab Aaaa_aaa_engraver + @tab Clef_engraver, Note_heads_engraver +@item Schnittstellen + @tab aaa-aaa-interface + @tab grob-interface, break-aligned-interface +@item Kontext-Eigenschaften + @tab aaa oder aaaAaaaAaaa + @tab alignAboveContext, skipBars +@item Layout-Objekt-Eigenschaften + @tab aaa oder aaa-aaa-aaa + @tab direction, beam-thickness +@end multitable + +Es wird bald ersichtlich werden, dass die Eigenschaften von +unterschiedlichen Objekttypen mit unterschiedlichen Befehlen +geändert werden. Deshalb ist es nützlich, aus der +Schreibweise zu erkennen, um was +für ein Objekt es sich handelt, um den entsprechenden +Befehl einsetzen zu können. + + +@node Postupy při ladění +@subsection Postupy při ladění +@translationof Tweaking methods + +@cindex override-Befehl +@funindex \override +@funindex override + +@strong{Der \override-Befehl} + +Wir haben uns schon mit den Befehlen @code{\set} +und @code{\with} bekannt gemacht, mit welchen +Eigenschaften von @strong{Kontexten} verändert +und @strong{Engraver} entfernt oder hinzugefügt +werden können. Siehe dazu +@ref{Kontexteigenschaften verändern} und @ref{Engraver hinzufügen und entfernen}. Jetzt wollen wir uns weitere +wichtige Befehle anschauen. + +Der Befehl, um die Eigenschaften von @strong{Layout-Objekten} +zu ändern, ist @code{\override}. Weil dieser Befehl interne +Eigenschaften tief in der Programmstruktur von LilyPond +verändern muss, ist seine Syntax nicht so einfach wie die der +bisherigen Befehle. Man muss genau wissen, welche Eigenschaft +welches Objektes in welchem Kontext geändert werden soll, +und welches der neu zu setzende Wert dann ist. Schauen wir +uns an, wie das vor sich geht. + +Die allgemeine Syntax dieses Befehles ist: + +@example +\override @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft} = +#@var{Wert} +@end example + +@noindent +Damit wir die Eigenschaft mit der Bezeichnung @var{layout-property} +das Layout-Objektes mit der Bezeichnung@var{LayoutObject}, +welches ein Mitglied des @var{Kontext}-Kontextes ist, auf den +Wert @var{value}. + +Der @var{Kontext} kann (und wird auch normalerweise) ausgelassen +werden, wenn der benötigte Kontext eindeutig impliziert ist und einer +der untersten Kontexte ist, also etwa @code{Voice}, @code{ChordNames} +oder @code{Lyrics}. Auch in diesem Text wird der Kontext oft ausgelassen +werden. Später soll gezeigt werden, in welchen Fällen er ausdrücklich +definiert werden muss. + +Spätere Abschnitte behandeln umfassend Eigenschaften und ihre +Werte, aber um ihre Funktion und ihr Format zu demonstrieren, +werden wir hier nur einige einfache Eigenschaften und Werte einsetzen, +die einfach zu verstehen sind. + +Für den Moment könne Sie die @code{#'}-Zeichen ignorieren, die vor jeder +Layout-Eigenschaft, und die @code{#}-Zeichen, die vor jedem Wert +stehen. Sie müssen immer in genau dieser Form geschrieben werden. +Das ist der am häufigsten gebrauchte Befehl für die Optimierung, +und der größte Teil dieses Abschnittes wird dazu benutzt, seine Benutzung +zu erläutern. Hier ein einfaches Beispiel, um die Farbe des Notenkopfes +zu ändern: + +@cindex color-Eigenschaft, Beispiel +@cindex Farb-Eigenschaft, Beispiel +@cindex NoteHead, Beispiel für override +@cindex Notenkopf, Beispiel für Veränderung + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +c4 d +\override NoteHead #'color = #red +e4 f | +\override NoteHead #'color = #green +g4 a b c | +@end lilypond + + +@strong{Der \revert-Befehl} + +@cindex revert-Befehl +@funindex \revert +@funindex revert + +Wenn eine Eigenschaft einmal überschrieben wurde, wird ihr +neuer Wert so lange bewahrt, bis er noch einmal überschrieben +wird oder ein @code{\revert}-Befehl vorkommt. Der +@code{\revert}-Befehl hat die folgende Syntax und setzt den +Wert der Eigenschaft zurück auf den Standardwert, nicht +jedoch auf den vorigen Wert, wenn mehrere +@code{\override}-Befehle benutzt wurden. + +@example +\revert @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft} +@end example + +Wiederum, genauso wie der @var{Kontext} bei dem @code{\override}-Befehl, +wird @var{Kontext} oft nicht benötigt. Er wird in vielen der folgenden +Beispiele ausgelassen. Im nächsten Beispiel wird die Farbe des Notenkopfes +wieder auf den Standardwert für die letzten zwei Noten gesetzt. + +@cindex color-Eigenschaft, Beispiel +@cindex Farb-Eigenschaft, Beispiel +@cindex NoteHead, Beispiel für override +@cindex Notenkopf, Beispiel für Veränderung + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +c4 d +\override NoteHead #'color = #red +e4 f | +\override NoteHead #'color = #green +g4 a +\revert NoteHead #'color +b4 c | +@end lilypond + +@strong{\once-Präfix} + +@funindex \once +@funindex once + +Sowohl der @code{\override}-Befehl als auch der @code{\set}-Befehl können mit +dem Präfix @code{\once} (@emph{einmal}) versehen werden. Dadurch wird +der folgende @code{\override}- oder @code{\set}-Befehl nur für den aktuellen +Musik-Moment wirksam, bevor sich wieder der Standard einstellt. Am gleichen +Beispiel demonstriert, kann damit die Farbe eines einzelnen Notenkopfes +geändert werden: + +@cindex color-Eigenschaft, Beispiel +@cindex Farb-Eigenschaft, Beispiel +@cindex NoteHead, Beispiel für override +@cindex Notenkopf, Beispiel für Veränderung + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +c4 d +\once \override NoteHead #'color = #red +e4 f | +\once \override NoteHead #'color = #green +g4 a b c | +@end lilypond + + +@strong{Der \overrideProperty-Befehl} + +@cindex overrideProperty-Befehl + +@funindex \overrideProperty +@funindex overrideProperty + +Es gibt eine andere Form des @code{override}-Befehls, +@code{\overrideProperty} (überschreibe Eigenschaft), +welcher ab und zu benötigt wird. Es wird hier nur der +Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert +in @rextend{Schwierige Korrekturen}. +@c Maybe explain in a later iteration -td + + +@strong{Der \tweak-Befehl} + +@cindex tweak-Befehl +@funindex \tweak +@funindex tweak + +Der letzte Optimierungsbefehl in LilyPond ist @code{\tweak} +(engl. optimieren). Er wird eingesetzt um Eigenschaften +von Objekten zu verändern, die zum selben Musik-Moment +auftreten, wie etwa die Noten eines Akkordes. Ein +@code{\override} würde alle Noten des Akkords beeinflussen, +während mit @code{\tweak} nur das nächste Objekt der +Eingabe geändert wird. + +Hier ein Beispiel. Angenommen, die Größe des mittleren +Notenkopfes (ein E) in einem C-Dur-Akkord soll geändert +werden. Schauen wir zuerst, was wir mit +@code{\once \override} erhalten: + +@cindex Schriftgröße, Beispiel +@cindex NoteHead, Beispiel für override +@cindex Notenkopf, Beispiel für Veränderung + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +4 +\once \override NoteHead #'font-size = #-3 +4 +4 +@end lilypond + +Wie man sehen kann, beeinflusst @code{override} @emph{alle} +Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten +eines Akkordes zum selben Musik-Moment auftreten und +die Funktion von @code{\once} ist es, die Optimierung auf +an allen Objekten auszuführen, die zum selben Musik-Moment +auftreten wie der @code{\override}-Befehl. + +Der @code{\tweak}-Befehl funktioniert anders. Er bezieht sich +auf das direkt folgende Element in der Eingabe-Datei. Es wirkt +aber auch nur mit Objekten, die direkt von der Eingabe kreiert +werden, insbesondere Notenköpfe und Artikulationszeichen. +Objekte wie etwa Hälse oder Versetzungszeichen werden erst +später erstellt und lassen sich nicht auf diese Weise ändern. +Zusätzlich @emph{müssen} sich etwa Notenköpfe innerhalb +eines Akkordes befinden, d. h. sie müssen von einfachen spitzen +Klammern umschlossen sein. Um also eine einzelne Note +mit @code{\tweak} zu verändern, muss der Befehl innerhalb +der spitzen Klammern zusammen mit der Note eingegeben werden. + +Um also zu unserem Beispiel zurückzukommen, könnte man die +mittlere Note eines Akkordes auf diese Weise ändern: + +@cindex font-size-Eigenschaft, Beispiel +@cindex Schriftgröße, Beispiel +@cindex @code{\tweak}-Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +4 +4 +@end lilypond + +Beachten Sie, dass die Syntax des @code{\tweak}-Befehls sich +von der des @code{\override}-Befehls unterscheidet. Weder +Kontext noch Layout-Objekt können angegeben werden, denn +das würde zu einem Fehler führen. Beide Angaben sind +durch das folgende Element impliziert. Hier sollte auch +kein Gleichheitszeichen vorhanden sein. Die verallgemeinerte +Syntax des @code{\tweak}-Befehls ist also einfach + +@example +\tweak #'@var{layout-eigenschaft} #@var{Wert} +@end example + +Ein @code{\tweak}-Befehl kann auch benutzt werden, um nur +eine von mehreren Artikulationen zu ändern, wie im nächsten +Beispiel zu sehen ist. + +@cindex Farb-Eigenschaft, Beispiel +@cindex @code{\tweak}-Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +a4^"Black" + -\tweak #'color #red ^"Red" + -\tweak #'color #green _"Green" +@end lilypond + +@noindent +Beachten Sie, dass dem @code{\tweak}-Befehl ein Artikulationsmodifikator +vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen +wäre. + +@cindex Triolen, geschachtelt +@cindex N-tolen, geschachtelt +@cindex Klammer, Triole +@cindex Triolenklammer +@cindex N-tolenklammer +@cindex Komplizierte Rhythmen, Schachtelung von +@funindex TupletBracket + +Der @code{\tweak}-Befehl muss auch benutzt werden, wenn das +Aussehen einer vor mehreren geschachtelten Triolenklammern +geändert werden soll, die zum selben Zeitpunkt beginnen. +Im folgenden Beispiel beginnen die lange Klammer und die +erste Triolenklammer zum selben Zeitpunkt, sodass ein +@code{\override}-Befehl sich auf beide beziehen würde. +In dem Beispiel wird @code{\tweak} benutzt, um zwischen +ihnen zu unterscheiden. Der erste @code{\tweak}Befehl +gibt an, dass die lange Klammer über den Noten gesetzt +werden soll, und der zweite, dass die Zahl der rhythmischen +Aufteilung für die erste der kurzen Klammern in rot +gesetzt wird. + +@cindex Farb-Eigenschaft, Beispiel +@cindex @code{\tweak}-Beispiel +@cindex Richtungs-Eigenschaft, Beispiel +@cindex color-Eigenschaft, Beispiel +@cindex direction-Eigenschaft, Beispiel + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +\tweak #'direction #up +\times 4/3 { + \tweak #'color #red + \times 2/3 { c8[ c c] } + \times 2/3 { c8[ c c] } + \times 2/3 { c8[ c c] } +} +@end lilypond + +Wenn geschachtelte N-tolen nicht zum gleichen Zeitpunkt +beginnen, kann ihr Aussehen auf die übliche Art mit dem +@code{\override}-Befehl geändert werden: + +@cindex text-Eigenschaft, Beispiel +@cindex tuplet-number-Funktion, Beispiel +@cindex transparent-Eigenschaft, Beispiel +@cindex TupletNumber, Beispiel zur Veränderung +@cindex Triolennummer, Beispiel zur Veränderung +@cindex Triolen-Nummer-Funktion, Beispiel + +@c NOTE Tuplet brackets collide if notes are high on staff +@c See issue 509 +@lilypond[quote,ragged-right,verbatim,fragment,relative=1] +\times 2/3 { c8[ c c] } +\once \override TupletNumber + #'text = #tuplet-number::calc-fraction-text +\times 2/3 { + c8[ c] + c8[ c] + \once \override TupletNumber #'transparent = ##t + \times 2/3 { c8[ c c] } + \times 2/3 { c8[ c c] } +} +@end lilypond + + +@seealso +Notationsreferenz: +@ruser{Der tweak-Befehl}. + + +@node Vnitřní referenční příručka +@section Vnitřní referenční příručka +@translationof The Internals Reference manual + +@menu +* Vlastnosti předmětů v rozvržení:: +* Vlastnosti, jež mohou mít rozhraní:: +* Typy vlastností:: +@end menu + +@node Vlastnosti předmětů v rozvržení +@subsection Vlastnosti předmětů v rozvržení +@translationof Properties of layout objects + +@cindex Eigenschaften von Layout-Objekten +@cindex Eigenschaften von Grobs +@cindex Grobs, Eigenschaften von +@cindex Layout-Objekte, Eigenschaften von +@cindex Property (Layout-Objekte, Grobs) +@cindex Regerenz der Interna + +Angenommen, in Ihrer Partitur tritt ein Legatobogen +auf, der Ihrer Meinung nach zu dünn ausgefallen ist. +Sie würden ihn gerne etwas schwerer gezeichnet +sehen. Wie gehen Sie vor? Von den Anmerkungen in +früheren Abschnitten wissen Sie schon, dass LilyPond +sehr flexibel ist und eine derartige Modifikation +möglich sein sollte, und Sie erraten vielleicht, +dass ein @code{\override}-Befehl angebracht ist. +Aber gibt es eine Eigenschaft für die Dicke eines +Legatobogens (engl. slur), und wenn es sie gibt, +auf welche Weise lässt sie sich verändern? Hier +kommt die Referenz der Interna zur Geltung. Dort +finden sich alle Informationen, um den beschriebenen +und alle anderen @code{\override}-Befehle zu +konstruieren. + +Bevor Sie jetzt in die Referenz der Interna wechseln, ist +eine Warnung angebracht. Es handelt sich um ein +@strong{Referenz}dokument, was heißt, dass es sehr +wenig oder gar keine Erklärungen enthält: seine Aufgabe +ist es, Information klar und genau darzustellen. Das +bedeutet, dass es auf den ersten Blick entmutigend +wirkt. Die Einführung und Erklärung in diesem Abschnitt +wird Ihnen aber schnell ermöglichen, genau die Information +aus der Referenz zu entnehmen, die Sie benötigen. +@c For German users +Beachten Sie, dass die Referenz der Interna nur auf Englisch +existiert. Um die Eigenschaftsbezeichnung eines bestimmten +Objektes zu finden, können Sie das Glossar (siehe +@rglosnamed{Top,Musikglossar}) + verwenden, in dem +die englischen Begriffe in viele andere Sprachen übersetzt sind. + +@cindex Override-Beispiel +@cindex Referenz der Interna, Benutzung +@cindex IR (Referenz der Interna), Benutzung +@cindex @code{\addlyrics}-Beispiel + +Das Vorgehen soll an einem konkreten Beispiel einer echten +Komposition demonstriert werden. Hier das Beispiel: + +@c Mozart, Die Zauberflöte Nr. 7 Duett + +@lilypond[quote,verbatim,relative=2] +{ + \key es \major + \time 6/8 + { + r4 bes8 bes[( g]) g | + g8[( es]) es d[( f]) as | + as8 g + } + \addlyrics { + The man who | feels love's sweet e -- | mo -- tion + } +} +@end lilypond + +Angenommen also, wir wollen die Legatobögen etwas +dicker setzten. Ist das möglich? Die Legatobögen sind mit +Sicherheit ein Layout-Objekt, die Frage muss also lauten: +@qq{Gibt es eine Eigenschaft von Legatobögen, die die +Dicke bestimmt?} Um diese Frage zu beantworten, müssen +wir in der Referenz der Interna ( kurz IR) nachschauen. + +Die IR für die LilyPond-Version, die Sie benutzen, findet sich +auf der LilyPond-Webseite unter der Adresse +@uref{http://lilypond.org}. Gehen Sie zur Dokumentationsseite +und klicken Sie auf den Link zur Referenz der Interna. +@c Addition for German users +Die Sprache ändert sich ab hier nach englisch. Für diese Übung +sollten Sie die HTML-Version benutzen, nicht die +@qq{auf einer großen Seite} oder die PDF-Version. +Damit Sie die nächsten Absätze verstehen können, müssen Sie +genauso vorgehen, während Sie weiterlesen. + +Unter der Überschrift @strong{Top} befinden sich fünf Links. +Wählen Sie den Link zum @emph{Backend}, wo sich die Information +über Layout-Objekte befindet. Hier, unter der Überschrift +@strong{Backend}, wählen Sie den Link @emph{All layout objects}. +Die Seite, die sich öffnet, enthält ein Liste aller Layout-Objekte, +die in Ihrerer LilyPond-Version benutzt werden, in alphabetischer +Ordnung. Wählen Sie den Link @emph{Slur} und die Eigenschaften +der Legatobögen (engl. slur) werden aufgelistet. + +Eine alternative Methode, auf diese Seite zu gelangen, ist von +der Notationsreferenz aus. Auf einer der Seiten zu Legatobögen +findet sich ein Link zur Referenz der Interna. Dieser Link führt +Sie direkt auf diese Seite. Wenn Sie aber eine Ahnung haben, +wie die Bezeichnung des Layout-Objektes lauten könnte, das sie +ändern wollen, ist es oft schneller, direkt zur IR zu gehen und +dort nachzuschlagen. + +Aus der Slur-Seite in der IR könne wir entnehmen, dass +Legatobögen (Slur-Objekte) durch den Slur_engraver erstellt +werden. Dann werden die Standardeinstellungen aufgelistet. +Beachten Sie, dass diese @strong{nicht} in alphabetischer Reihenfolge +geordnet sind. Schauen Sie sich die Liste an, ob sie eine Eigenschaft +enthält, mit der die Dicke von Legatobögen kontrolliert werden kann. +Sie sollten folgendes finden: + +@example +@code{thickness} (number) + @code{1.2} + Line thickness, generally measured in @code{line-thickness} +@end example + +Das sieht ganz danach aus, als ob damit die Dicke geändert +werden kann. Es bedeutet, dass der Wert von +@code{thickness} einfach eine Zahl (@emph{number}) ist, +dass der Standardwert 1.2 ist, und dass die Einheit +für die Dicke eine andere Eigenschaft mit der +Bezeichnung @code{line-thickness} ist. + +Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen +in der IR, aber wir haben schon genug Informationen, um +zu versuchen, die Dicke eines Legatobogens zu ändern. Die +Bezeichnung des Layout-Objekts ist offensichtlich +@code{Slur} und die Bezeichnung der Eigenschaft, die geändert +werden soll +@code{thickness}. Der neue Wert sollte etwas mehr als 1.2 sein, +denn der Bogen soll ja dicker werden. + +Den benötigten @code{\override}-Befehl können wir jetzt einfach +konstruieren, indem wir die Werte für die Bezeichnungen in den +Modellbefehl einfügen und den Kontext auslassen. Setzen wir +einmal einen sehr großen Wert für die Dicke um zu sehen, ob der +Befehl auch funktioniert. Also: + +@example +\override Slur #'thickness = #5.0 +@end example + +Vergessen Sie nicht das Rautenzeichen und Apostroph +(@code{#'}) vor der Eigenschaftsbezeichnung und das +Rautenzeichen vor dem neuen Wert! + +Die nächste Frage ist nun: @qq{Wohin soll dieser Befehl geschrieben +werden?} Solange wir uns noch im Lernstadium befinden, ist +die beste Antwort: @qq{Innerhalb der Noten, vor den ersten +Legatobogen und nahe bei ihm.} Also etwa so: + +@cindex Legatobogen, Beispiel für Veränderung +@cindex thickness-Eigenschaft, Beispiel +@cindex Dicke-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,relative=2] +{ + \key es \major + \time 6/8 + { + % Increase thickness of all following slurs from 1.2 to 5.0 + \override Slur #'thickness = #5.0 + r4 bes8 bes[( g]) g | + g8[( es]) es d[( f]) as | + as8 g + } + \addlyrics { + The man who | feels love's sweet e -- | mo -- tion + } +} +@end lilypond + +@noindent +und wirklich wird der Legatobogen dicker. + +Das ist also die grundlegende Herangehensweise, +@code{\override}-Befehl zu formulieren. Es gibt einige +zusätzliche Komplikationen, denen wir uns später widmen +werden, aber Sie haben jetzt das Handwerkszeug, um Ihre +eigenen Befehle zu konstruieren -- wenn Sie auch noch etwas +Übung benötigen. Die sollen Sie durch die folgenden Übungen +erhalten. + + +@subheading Den Kontext finden + +@cindex Kontext, Finden und identifizieren + +Manchmal muss dennoch der Kontext spezifiziert werden. +Welcher aber ist der richtige Kontext? Wir könnten raten, +dass Legatobögen sich im @code{Voice}-Kontext befinden, +denn sie sind immer einzelnen Melodielinien zugewiesen. +Aber wir können uns dessen nicht sicher sein. Um unsere +Annahme zu überprüfen, gehen wir wieder zu der Seite im +IR, die die Legatobögen beschreibt und die Überschrift +@emph{Slur} hat. Dort steht: @qq{Slur objects are created +by: Slur engraver}. Legatobögen werden also in dem Kontext +erstellt, in dem sich der @code{Slur_engraver} befindet. +Folgen Sie dem Link zu der @code{Slur_engraver}-Seite. +Unten auf der Seite steht, dass der @code{Slur_engraver} +sich in fünf Stimmen-Kontexten befindet, unter anderem +auch im normalen @code{Voice}-Kontext. Unsere Annahme +war also richtig. Und weil @code{Voice} einer der Kontexte +der untersten Ebene ist, welcher eindeutig schon dadurch +definiert ist, dass wir Noten eingeben, kann er an dieser Stelle +auch weggelassen werden. + + +@subheading Nur einmal mit \override verändern + +@cindex Override nur einmal +@cindex once override +@funindex \once +@funindex once + +Im Beispiel oben wurden @emph{alle} Legatobögen dicker +gesetzt. Vielleicht wollen Sie aber nur den ersten Bogen +dicker haben. Das können Sie mit dem @code{\once}-Befehl +erreichen. Er wird direkt vor den @code{\override}-Befehl +gesetzt und bewirkt, dass nur der Bogen geändert wird, der +@strong{unmittelbar an der nächsten Note beginnt.} Wenn +die nächste Note keinen Bogenbeginn hat, dann passiert +gar nichts -- der Befehl wird nicht gespeichert, sondern einfach +vergessen. Der Befehl, mit @code{\once} zusammen benutzt, +muss also wie folgt positioniert werden: + +@cindex Legatobogen, Beispiel zur Veränderung +@cindex thickness-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,relative=2] +{ + \time 6/8 + { + \key es \major + r4 bes8 + % Increase thickness of immediately following slur only + \once \override Slur #'thickness = #5.0 + bes8[( g]) g | + g8[( es]) es d[( f]) as | + as8 g + } + \addlyrics { + The man who | feels love's sweet e -- | mo -- tion + } +} +@end lilypond + +@noindent +Jetzt bezieht er sich nur noch auf den ersten Legatobogen. + +Der @code{\once}-Befehl kann übrigens auch vor einem @code{\set}-Befehl +eingesetzt werden. + + +@subheading Rückgängig machen + +@cindex Revert +@cindex Rückgängig machen +@cindex Wiederherstellen von Standardeinstellungen +@cindex Standardeinstellungen, Wiederherstellen +@funindex \revert +@funindex revert + +Eine weitere Möglichkeit: nur die beiden ersten Legatobögen sollen +dicker gesetzt werden. Gut, wir könnten jetzt zwei Befehle benutzen, +jeden mit dem @code{\once}-Präfix und direkt vor die entsprechende +Note gestellt, an welcher der Bogen beginnt: + +@cindex Legatobogen, Beispiel zur Veränderung +@cindex thickness-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,relative=2] +{ + \key es \major + \time 6/8 + { + r4 bes8 + % Increase thickness of immediately following slur only + \once \override Slur #'thickness = #5.0 + bes[( g]) g | + % Increase thickness of immediately following slur only + \once \override Slur #'thickness = #5.0 + g8[( es]) es d[( f]) as | + as8 g + } + \addlyrics { + The man who | feels love's sweet e -- | mo -- tion + } +} +@end lilypond + +@noindent +Wir könnten aber auch den @code{\once}-Befehl weglassen und anstelle +dessen später den @code{\revert}-Befehl einsetzen, um die +@code{thickness}-Eigenschaft wieder auf ihren Standardwert zurückzusetzen: + +@cindex Legatobogen, Beispiel zur Veränderung +@cindex thickness-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,relative=2] +{ + \key es \major + \time 6/8 + { + r4 bes8 + % Increase thickness of all following slurs from 1.2 to 5.0 + \override Slur #'thickness = #5.0 + bes[( g]) g | + g8[( es]) es + % Revert thickness of all following slurs to default of 1.2 + \revert Slur #'thickness + d8[( f]) as | + as8 g + } + \addlyrics { + The man who | feels love's sweet e -- | mo -- tion + } +} +@end lilypond + +@noindent +Der @code{\revert}-Befehl kann benutzt werden, um eine beliebige +Eigenschaft, die mit @code{\override} geändert worden ist, wieder in +ihre Standardeinstellungen zurückzuversetzen. In unserem Beispiel können +Sie die Methode benutzen, die Ihnen lieber ist, beide haben das gleiche +Resultat. + +Damit endet die Einleitung in die Referenz der Interna (IR) und die +grundlegenden postupy při ladění. Einige Beispiele folgen in späteren +Abschnitten dieses Kapitel, einerseits um Sie mit weiteren Möglichkeiten +der IR bekanntzumachen, andererseits um Ihnen mehr Übungsmöglichkeiten +zu geben, die relevante Information dort zu finden. Die Beispiele werden +Schritt für Schritt immer weniger Erklärungen beinhalten. + + +@node Vlastnosti, jež mohou mít rozhraní +@subsection Vlastnosti, jež mohou mít rozhraní +@translationof Properties found in interfaces + +@cindex Interface-Eigenschaften +@cindex Eigenschaften von Interfaces +@cindex Schnittstellen, Eigenschaften von +@cindex Eigenschaften von Schnittstellen + +Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für +ein @code{\override}-Befehl wird dazu benötigt? Schauen wir +uns zunächst das Inhaltsverzeichnis in der IR an: @qq{All layout objects}, +wie auch schon zuvor. Welches Objekt könnte die Darstellung des +Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag @code{LyricText}, +das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften +an, die verändert werden können. Dazu gehört +@code{font-series} und @code{font-size}, aber nichts, womit man kursiven +Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen +Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzelnen +Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften +zusammen in einem @strong{Interface} -- einer Schnittstelle -- verortet; +in diesem Fall das +@code{font-interface}. + +Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden +und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften +benutzen. + +Schauen Sie sich noch einmal die Seite in der IR an, die @code{LyricText} +beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version +der IR) an Eigenschaften, die von @code{LyricText} unterstützt +werden. Diese Liste enthält sieben Einträge, darunter auch +@code{font-interface}. Ein Klick hierauf bringt uns zu den Eigenschaften, +die mit dieser Schnittstelle verbunden sind, also auch @code{LyricText}. + +Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann, +um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch +@code{font-shape(symbol)}, wobei @code{symbol} auf die Werte +@code{upright} (gerade), @code{italics} (kursiv) oder @code{caps} +(Kapitälchen) gesetzt werden kann. + +Sie werden gemerkt haben, dass @code{font-series} und @code{font-size} +hier auch aufgelistet sind. Es stellt sich die Frage, warum diese +allgemeinen Schriftarteigenschaften @code{font-series} und +@code{font-size} sowohl unter der Überschrift +@code{LyricText} als unter dem @code{font-interface} aufgelistet +sind, aber @code{font-shape} befindet sich nur im +@code{font-interface}? Die Antwort ist: Die globalen Einstellungen +von @code{font-series} und @code{font-size} werden geändert, wenn +ein @code{LyricText}-Objekt erstellt wird, aber @code{font-shape} +wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der +Überschrift @code{LyricText} beinhalten dann die Werte der +Standardeinstellungen dieser zwei Eigenschaften, wenn es sich +um ein @code{LyricText}-Objekt handelt. Andere Objekte, +die auch das @code{font-interface} unterstützen, setzen diese +Eigenschaften anders, wenn sie erstellt werden. + +Versuchen wir nun einen @code{\override}-Befehl zu konstruieren, +der den Gesangstext kursiv setzt. Das Objekt hat die Bezeichnung +@code{LyricText}, die Eigenschaft ist @code{font-shape} +und der Wert @code{italic}. Wie vorher schon lassen wir den +Kontext aus. + +Am Rande sei angemerkt, dass die Werte der @code{font-shape}-Eigenschaft +mit einem Apostroph (@code{'}) gekennzeichnet werden +müssen, weil es sich um Symbole handelt. Aus dem gleichen +Grund mussten auch für @code{thickness} weiter oben im +Text ein Apostroph gesetzt werden. Symbole sind besondere +Bezeichnungen, die LilyPond intern bekannt sind. Einige +sind Bezeichnungen von Eigenschaften, wie eben @code{thickness} +oder @code{font-shape}. Andere sind besondere Werte, +die an Eigenschaften übergeben werden können, wie +@code{italic}. Im Unterschied hierzu gibt es auch beliebige +Zeichenketten, die immer mit Anführungszeichen, also +als @code{"Zeichenkette"} auftreten. Für weitere +Einzelheiten zu Zeichenketten und Werten, siehe +@rextend{Scheme-Übung}. + +Gut, der @code{\override}-Befehl, mit dem der Gesangstext +kursiv gesetzt wird, lautet: + +@example +\override LyricText #'font-shape = #'italic +@end example + +@noindent +und er muss direkt vor den Text gesetzt werden, auf den er sich +bezieht, etwa so: + +@cindex font-shape-Eigenschaft, Beispiel +@cindex LyricText, Beispiel zur Veränderung +@cindex kursiv, Beispiel +@cindex @code{\addlyrics}, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \key es \major + \time 6/8 + { + r4 bes8 bes[( g]) g | + g8[( es]) es d[( f]) as | + as8 g + } + \addlyrics { + \override LyricText #'font-shape = #'italic + The man who | feels love's sweet e -- | mo -- tion + } +} +@end lilypond + +@noindent +Jetzt wird der Text kursiv gesetzt. + + +@subheading Den Kontext im Liedtextmodus bestimmen + + +@cindex Kontext im Gesangstextmodus angeben +@cindex Gesangstextmodus, Kontext angeben + +Bei Gesangstexten funktioniert der @code{\override}-Befehl +nicht mehr, wenn Sie den Kontext im oben dargestellten +Format angeben. Eine Silbe wird im Gesangtextmodus +(lyricmode) entweder von einem Leerzeichen, einer +neuen Zeile oder einer Zahl beendet. Alle anderen +Zeichen werden als Teil der Silbe integriert. Aus diesem +Grund muss auch vor der schließenden Klammer +@code{@}} ein Leerzeichen gesetzt oder eine neue +Zeile begonnen werden. Genauso müssen Leerzeichen +vor und nach einem Punkt benutzt werden, um die +Kontext-Bezeichnung von der Objekt-Bezeichnung zu +trennen, denn sonst würden beide Bezeichnungen als +ein Begriff interpretiert und von LilyPond nicht verstanden +werden. Der Befehl muss also lauten: + +@example +\override Lyrics . LyricText #'font-shape = #'italic +@end example + +@warning{Innerhalb von Gesangstext muss immer ein +Leerzeichen zwischen der letzten Silbe und der schließenden +Klammer gesetzt werden.} + +@warning{Innerhalb von @code{\override}-Befehlen in +Gesangstexten müssen Leerzeichen um Punkte zwischen +Kontext- und Objektbezeichnungen gesetzt werden.} + +@seealso +Erweitern: @rextend{Scheme-Übung}. + + +@node Typy vlastností +@subsection Typy vlastností +@translationof Types of properties + +@cindex Eigenschaftsarten + +Bis jetzt hatten wir es mit zwei Arten von Eigenschaften zu +tun: @code{number} (Zahl) und @code{symbol}. Damit +ein Befehl funktioniert, muss der Wert einer Eigenschaft +vom richtigen Typ sein und die Regeln befolgen, die +für diesen Typ gelten. Der Eigenschaftstyp ist in der +IR in Klammern hinter der Eigenschaftsbezeichnung +angegeben. Hier eine Liste der Typen, die Sie vielleicht +benötigen werden, mit den Regeln, die für den jeweiligen +Typ gelten und einigen Beispielen. Sie müssen immer +ein Rautenzeichen (@code{#}) vor den Typeintrag setzen, +wenn sie in einem @code{\override}-Befehl benutzt werden. + +@multitable @columnfractions .2 .45 .35 +@headitem Eigenschaftstyp + @tab Regeln + @tab Beispiele +@item Boolesch + @tab Entweder wahr oder falsch, dargestellt als #t oder #f + @tab @code{#t}, @code{#f} +@item Dimension (in Notenlinienabständen) + @tab Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten) + @tab @code{2.5}, @code{0.34} +@item Richtung + @tab Eine gültige Richtungskonstante oder das numerische Äquivalent + @tab @code{LEFT}, @code{CENTER}, @code{UP}, + @code{1}, @code{-1} +@item Integer + @tab Eine positive ganze Zahl + @tab @code{3}, @code{1} +@item Liste + @tab Eine eingeklammerte Anzahl von Einträgen, mit Klammern getrennt + und angeführt von einem Apostroph + @tab @code{'(left-edge staff-bar)}, @code{'(1)}, + @code{'(1.0 0.25 0.5)} +@item Textbeschriftung (markup) + @tab Beliebige gültige Beschriftung + @tab @code{\markup @{ \italic "cresc." @}} +@item Moment + @tab Ein Bruch einer ganzen Note, mit der make-moment-Funktion + konstruiert + @tab @code{(ly:make-moment 1 4)}, + @code{(ly:make-moment 3 8)} +@item Zahl + @tab Eine beliebige positive oder negative Dezimalzahl + @tab @code{3.5}, @code{-2.45} +@item Paar (Zahlenpaar) + @tab Zwei Zahlen getrennt von @qq{Leerzeichen . Leerzeichen}, eingeklammert + und angeführt von einem Apostroph + @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)} +@item Symbol + @tab Eine beliebige Anzahl von Symbolen, die für die Eigenschaft + gültig sind, angeführt von einem Apostroph + @tab @code{'italic}, @code{'inside} +@item Unbekannt + @tab Eine Prozedur oder @code{#f} (um keine Aktion hervorzurufen) + @tab @code{bend::print}, @code{ly:text-interface::print}, + @code{#f} +@item Vektor + @tab Eine Liste mit drei Einträgen, eingeklammert und mit + Apostroph-Raute ( @code{'#}) angeführt. + @tab @code{'#(#t #t #f)} +@end multitable + + +@seealso +Erweitern: @rextend{Scheme-Übung}. + + +@node Vzhled předmětů +@section Vzhled předmětů +@translationof Appearance of objects + +In diesem Abschnitt wollen wir zeigen, wie die Kenntnisse der +vorigen Abschnitte in der Praxis angewandt werden können, +um das Aussehen des Musiksatzes zu beeinflussen. + +@menu +* Viditelnost a barva předmětů:: +* Velikost předmětů:: +* Délka a tloušťka předmětů:: +@end menu + + +@node Viditelnost a barva předmětů +@subsection Viditelnost a barva předmětů +@translationof Visibility and color of objects + +In Unterrichtsmaterial für den Musikunterricht wird oft +eine Partitur dargestellt, in der bestimmte Notationselemente +fehlen, so dass der Schüler die Aufgabe bekommt, die +nachzutragen. Ein einfaches Beispiel ist etwa, die +Taktlinien zu entfernen, damit der Schüler sie selber zeichnen +kann. Aber die Tatklinien werden normalerweise automatisch +eingefügt. Wie verhindern wir, dass sie ausgegeben werden? + +Bevor wir uns hieran machen, sei daran erinnert, dass +Objekteigenschaften in sogenannten @emph{Schnittstellen} +-- engl. interface -- gruppiert sind, siehe auch +@ref{Vlastnosti, jež mohou mít rozhraní,,vlastnosti, jež mohou mít rozhraní}. Das dient ganz einfach +dazu, die Eigenschaften zusammenzufassen, die üblicherweise +zusammen benötigt werden -- wenn eine davon für ein Objekt +gilt, dann auch die anderen. Manche Objekte brauchen die +Eigenschaften von der einen Schnittstelle, andere von einer +anderen. Die Schnittstellen, die die Eigenschaften von einem +bestimmten Grob beinhalten, sind in der IR unten auf der +Seite aufgelistet, die dieses Grob beschreibt. Die Eigenschaften +können betrachtet werden, indem die Seite der entsprechenden +Schnittstelle geöffnet wird. + +Zu Information, wie man Eigenschaften von Grobs findet, siehe +@ref{Vlastnosti předmětů v rozvržení,,vlastnosti předmětů v rozvržení}. Wir benutzen also jetzt +die selbe Methode um in der IR das Layout-Objekt zu finden, +dass für die Tatklinien zuständig ist. Über die Überschriften +@emph{Backend} und @emph{All layout objects} kommen +wir zu einem Layout-Objekt mit der Bezeichnung +@code{BarLine} (engl. TaktLinie). Seine Eigenschaften +beinhalten zwei, die über die Sichtbarkeit entscheiden: +@code{break-visibility} und @code{stencil}. +@code{BarLine} unterstützt auch einige Schnittstellen, +unter anderem @code{grob-interface}, wo wir eine +@code{transparent} und eine @code{color}-Eigenschaft +finden. Alle können die Sichtbarkeit von Taktlinien (und +natürlich auch die Sichtbarkeit von vielen anderen Objekten) +beeinflussen. Schauen wir uns diese Eigenschaften eine +nach der anderen an. + +@subheading stencil (Matrize) + +@cindex Stencil-Eigenschaft +@cindex Matrizen-Eigenschaft + +Diese Eigenschaft kontrolliert die Erscheinung der Taktlinien, +indem sie das Symbol bestimmt, das ausgegeben werden soll. +Wie bei vielen anderen Eigenschaften auch, kann sie so +eingestellt werden, dass sie nichts ausgibt, indem ihr Wert +auf @code{#f} (falsch) gesetzt wird. Ein Versuch also, +wie vorher, indem wir den impliziten Kontext (@code{Voice}) +auslassen: + +@cindex Taktlinie, Beispiel zur Veränderung +@cindex stencil-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override BarLine #'stencil = ##f + c4 b8 c d16 c d8 + g,8 a16 b8 c d4 e16 | + e8 +} +@end lilypond + +Die Taktlinien werden aber immer noch angezeigt. Was ist da +falsch gelaufen? Gehen Sie zurück zur IR und schauen Sie auf +die Seite, die die Eigenschaften für @code{BarLine} angibt. +Oben auf der Seite steht: @qq{Barline objects are created +by: Bar_engraver}. Schauen Sie sich die +@code{Bar_engraver}-Seite an. Unten auf der Seite steht +eine Liste der Kontexte, in denen der Takt-Engraver +funktioniert. Alle Kontexte sind @code{Staff}-Typen (also +Notensystem-Typen). Der Grund, warum der +@code{\override}-Befehl nicht funktioniert hat, liegt +also darin, dass das Taktlinie-Objekt (@code{BarLine}) sich nicht +im @code{Voice}-Kontext befindet. Wenn der Kontext +falsch angegeben wird, bewirkt der Befehl einfach gar +nichts. Keine Fehlermeldung wird ausgegeben und auch +nichts in die Log-Datei geschrieben. Versuchen wir also, +den richtigen Kontext mit anzugeben: + +@cindex Taktlinie, Beispiel zur Veränderung +@cindex stencil-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override Staff.BarLine #'stencil = ##f + c4 b8 c d16 c d8 + g,8 a16 b8 c d4 e16 + e8 +} +@end lilypond + +@noindent +Jetzt sind die Taktlinien wirklich verschwunden. + +Es sollte jedoch beachtet werden, dass das Setzen der +@code{stencil}-Eigenschaft auf @code{#f} zu Fehlerhinweisen führen +kann, wenn die Dimensionen des Objekts für die richtige Behandlung +benötigt werden. Zum Beispiel werden Fehler ausgegeben, wenn +die @code{stencil}-Eigenschaft des @code{NoteHead}-Objekts auf +@code{#f} gesetzt wird. Wenn dieser Fall auftritt, kann anstatt +dessen die @code{point-stencil}-Funktion benutzt werden, welche +den Stencil auf ein Objekt mit der Größe Null setzt: + +@lilypond[quote,verbatim,relative=2] +{ + c4 c + \once \override NoteHead #'stencil = #point-stencil + c4 c +} +@end lilypond + + +@subheading break-visibility (unsichtbar machen) + +@cindex break-visibility-Eigenschaft +@cindex Unsichtbar machen (break-visibility) + +Aus der Beschreibung der Eigenschaften für @code{BarLine} +in der IR geht hervor, dass die @code{break-visibility}-Eigenschaft +einen Vektor mit drei Booleschen Werten benötigt. Diese +kontrollieren jeweils, ob die Taktlinien am Ende einer Zeile, +in der Mitte einer Zeile und am Anfang einer Zeile ausgegeben +werden. Wenn also alle Taktlinien unsichtbar sein sollen, wie in +unserem Beispiel, brauchen wir den Wert @code{'#(#f #f #f)}. +Versuchen wir es also, und berücksichtigen wir auch den +@code{Staff}-Kontext. Beachten Sie auch, dass Sie @code{#'#} +vor der öffnenden Klammer schreiben müssen: +@code{'#} wird benötigt als Teil des Wertes, um einen Vektor zu +signalisieren, und das erste @code{#} wird benötigt, um +den Wert in einem @code{\override}-Befehl anzuführen. + +@cindex Taktlinie, Beispiel zur Veränderung +@cindex break-visibility-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override Staff.BarLine #'break-visibility = #'#(#f #f #f) + c4 b8 c d16 c d8 | + g,8 a16 b8 c d4 e16 | + e8 +} +@end lilypond + +@noindent +Auch auf diesem Weg gelingt es, die Taktlinien unsichtbar zu machen. + + +@subheading transparent (durchsichtig) + +@cindex transparent-Eigenschaft +@cindex Durchsichtig machen (transparent) + +Aus den Eigenschaftsdefinitionen auf der @code{grob-interface}-Seite +in der IR geht hervor, dass die @code{transparent}-Eigenschaft +boolesch ist. Mit @code{#t} (wahr) wird also ein Grob durchsichtig +gemacht. Im unserem Beispiel soll jetzt die Taktart durchsichtig +gemacht werden, anstatt die Taktlinien durchsichtig zu machen. +Wir brauchen also wieder die Grob-Bezeichnung für die Taktart. +Auf der @qq{All layout objects}-Seite in der IR müssen wir die +Eigenschaften des @code{TimeSignature}-Layout-Objekts suchen +Das Objekt wird vom @code{Time_signature_engraver} erstellt, +der sich auch im @code{Staff}-Kontext befindet und genauso das +@code{grob-interface} unterstützt, wie Sie sich +überzeugen können. Der Befehl, um die Taktangabe unsichtbar zu +machen, ist also: + +@cindex Taktart, Beispiel zur Veränderung +@cindex transparent-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override Staff.TimeSignature #'transparent = ##t + c4 b8 c d16 c d8 | + g,8 a16 b8 c d4 e16 | + e8 +} +@end lilypond + +@noindent +Die Taktangabe ist verschwunden, aber mit diesem Befehl wird ein +freier Platz gelassen, wo sich die Taktangabe eigentlich befinden +würde. Das braucht man vielleicht für eine Schulaufgabe, in der +die richtige Taktangabe eingefügt werden soll, aber in anderen +Fällen ist diese Lücke nicht schön. Um auch die Lücke zu entfernen, +muss die Matrize (stencil) der Taktangabe auf @code{#f} (falsch) +gesetzt werden: + +@cindex Taktart, Beispiel zur Veränderung +@cindex stencil-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override Staff.TimeSignature #'stencil = ##f + c4 b8 c d16 c d8 | + g,8 a16 b8 c d4 e16 | + e8 +} +@end lilypond + +@noindent +Und der Unterschied wird deutlich: hiermit wird das gesamte Objekt +entfernt, während man mit @code{transparent} ein Objekt +unsichtbar machen kann, es aber an seinem Platz gelassen wird. + + +@subheading color (Farbe) + +@cindex color-Eigenschaft +@cindex Farb-Eigenschaft + +Abschließend wollen wir die Taktlinien unsichtbar machen, indem +wir sie weiß einfärben. (Es gibt hier eine Schwierigkeit: die weiße +Taktlinie übermalt manchmal die Taktlinien, wo sie sie kreuzt, +manchmal aber auch nicht. Sie können in den Beispielen unten +sehen, dass das nicht vorhersagbar ist. Die Einzelheiten dazu, warum +das passiert und wie sie es kontrollieren können, werden dargestellt +in @ruser{Objekte weiß malen}. Im Moment wollen wir lernen, wie +man mit Farbe arbeitet, akzeptieren Sie bitte an dieser Stelle die +Beschränkung.) + +Das @code{grob-interface} bestimmt, dass der Wert der Farb-Eigenschaft +eine Liste ist, aber es gibt keine Erklärung, was für eine Liste das +sein soll. Die Liste, die benötigt wird, ist eine Liste mit Werten in +internen Einheiten, aber damit Sie nicht wissen müssen, wie diese +aussehen, gibt es mehrere Wege, Farben anzugeben. Der erste +Weg ist es, @qq{normale} Farben zu benutzen, wie sie in der +Tabelle in @ruser{Liste der Farben} aufgelistet sind. Beachten Sie, +dass die Bezeichnungen auf Englisch sind. Um die Taktlinien auf +weiß zu setzen, können Sie schreiben: + +@cindex Taktlinie, Beispiel zur Veränderung +@cindex color-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override Staff.BarLine #'color = #white + c4 b8 c d16 c d8 | + g,8 a16 b8 c d4 e16 | + e8 +} +@end lilypond + +@noindent +und die Taktlinien verschwinden in der Tat. Beachten Sie, +dass @emph{white} nicht mit einem Apostroph angeführt +wird -- es ist kein Symbol, sondern eine @emph{Funktion}. +Wenn sie aufgerufen wird, stellt sie eine Liste mit internen +Werten zu Verfügung, mit welcher die Farbe auf weiß +gestellt wird. Die anderen Farben in der Liste sind auch +Funktionen. Um sich zu überzeugen, dass der Befehl auch +wirklich funktioniert, können Sie die Farbe auf eine der +anderen Funktionen dieser Liste abändern. + +@cindex Farben, X11 +@cindex X11-Farben +@funindex x11-color + +Die zweite Art die Farbe zu ändern geschieht, indem die Liste +der X11-Farbbezeichnungen einzusetzen, siehe die zweite Liste +in @ruser{Liste der Farben}. Diesen Farben muss jedoch eine +andere Funktion vorangestellt werden, die die X11-Farbbezeichnungen +in interne Werte konvertiert: +@code{x11-color}. Das geschieht wie folgt: + +@cindex Taktlinie, Beispiel zur Veränderung +@cindex color-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override Staff.BarLine #'color = #(x11-color 'white) + c4 b8 c d16 c d8 | + g,8 a16 b8 c d4 e16 | + e8 +} +@end lilypond + +@noindent +In diesem Fall hat die Funktion @code{x11-color} ein Symbol +als Argument, darum muss dem Symbol ein Apostroph vorangestellt +und beide zusammen in Klammern gesetzt werden. + +@cindex RGB-Farben +@cindex Farben, RGB +@funindex rgb-color + +Es gibt noch eine dritte Funktion, die RGB-Werte in die +internen Werte übersetzt -- die @code{rgb-color}-Funktion. Sie +braucht drei Argumente, um die Stärke von Rot, Grün und +Blau darzustellen. Die Werte befinden sich zwischen +0 und 1. Um also die Farbe Rot darzustellen, muss der +Wert der Funktion lauten: @code{(rgb-color 1 0 0)}, weiß +würde sein: @code{(rgb-color 1 1 1)}. + +@cindex Taktlinie, Beispiel zur Veränderung +@cindex color-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override Staff.BarLine #'color = #(rgb-color 1 1 1) + c4 b8 c d16 c d8 | + g,8 a16 b8 c d4 e16 | + e8 +} +@end lilypond + +Schließlich gibt es noch eine Grauskala, die zu den X11-Farben +gehört. Sie reicht von schwarz (@code{'grey0'}) bis +weiß (@code{'grey100}), in Einerschritten. Wir wollen das +illustrieren, indem alle Layout-Objekte im Beispiel +verschiede Grauschattierungen erhalten: + +@cindex StaffSymbol, Beispiel zur Veränderung +@cindex TimeSignature, Beispiel zur Veränderung +@cindex Schlüssel, Beispiel zur Veränderung +@cindex Notenhals, Beispiel zur Veränderung +@cindex Taktlinie, Beispiel zur Veränderung +@cindex Farbeigenschaft, Beispiel +@cindex x11-Farben, Beispiel +@cindex Taktlinien, Beispiel zur Veränderung +@cindex Taktart, Beispiel zur Veränderung +@cindex Clef, Beispiel zur Veränderung +@cindex Stem, Beispiel zur Veränderung +@cindex NoteHead, Beispiel zur Veränderung +@cindex Notenkopf, Beispiel zur Veränderung + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +{ + \time 12/16 + \override Staff.StaffSymbol #'color = #(x11-color 'grey30) + \override Staff.TimeSignature #'color = #(x11-color 'grey60) + \override Staff.Clef #'color = #(x11-color 'grey60) + \override Voice.NoteHead #'color = #(x11-color 'grey85) + \override Voice.Stem #'color = #(x11-color 'grey85) + \override Staff.BarLine #'color = #(x11-color 'grey10) + c4 b8 c d16 c d8 | + g,8 a16 b8 c d4 e16 | + e8 +} +@end lilypond + +@noindent +Beachten Sie die Kontexte, die mit jedem einzelnen Layout-Objekt +verbunden sind. Es ist wichtig, den richtigen Kontext einzusetzen, +damit die Befehle funktionieren. Denken Sie daran, dass der +Kontext sich daran orientiert, wo sich der entsprechende +Engraver befindet. Den Standardkontext für Engraver finden +Sie, indem Sie beim Layout-Objekt beginnen, zum Engraver +gehen, der es produziert und auf der Seite des Engravers in der +IR finden Sie Information, in welchem Kontext sich der +Engraver normalerweise befindet. + + +@node Velikost předmětů +@subsection Velikost předmětů +@translationof Size of objects + +@cindex Veränderung von Objektgrößen +@cindex Objektgrößen, verändern +@cindex Größen von Objekten verändern + +Als Startpunkt wollen wir wieder ein früheres Beispiel +wählen, siehe @ref{Musikalische Ausdrücke ineinander verschachteln}. Hier wurde +ein neues Notensystem erstellt, wie man es für ein @rglos{ossia} +braucht. + +@cindex alignAboveContext-Eigenschaft, Beispiel +@cindex über dem System anordnen, Beispiel +@cindex @code{\with}-Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +\new Staff ="main" { + \relative g' { + r4 g8 g c4 c8 d | + e4 r8 + << + { f c c } + \new Staff \with { + alignAboveContext = #"main" } + { f8 f c } + >> + r4 | + } +} +@end lilypond + +Ossia-Systeme werden normalerweise ohne Schlüssel und Taktangabe +geschrieben, und sie werden etwas kleiner als das Hauptsystem gesetzt. +Wie man Schlüssel und Taktangabe entfernt, wissen wir schon: +wir setzen den Stencil von beiden auf @code{#f}: + +@cindex alignAboveContext-Eigenschaft, Beispiel +@cindex über dem System anordnen, Beispiel +@cindex @code{\with}-Beispiel +@cindex stencil-Eigenschaft, Beispiel +@cindex Schlüssel, Beispiel zur Veränderung +@cindex Taktart, Beispiel zur Veränderung + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +\new Staff ="main" { + \relative g' { + r4 g8 g c4 c8 d + e4 r8 + << + { f8 c c } + \new Staff \with { + alignAboveContext = #"main" + } + { + \override Staff.Clef #'stencil = ##f + \override Staff.TimeSignature #'stencil = ##f + { f8 f c } + } + >> + r4 + } +} +@end lilypond + +@noindent +wobei ein zusätzliches Klammerpaar nach der @code{\with}-Konstruktion +erforderlich ist um sicherzugehen, dass die Modifikation und +die Noten sich auch auf das Ossia-System beziehen. + +Was für einen Unterschied macht es, ob man den @code{Staff}-Kontext +mit @code{\with} verändert, oder ob man die Stencils mit +@code{\override} beeinflusst? Der größte Unterschied liegt +darin, dass Änderungen, die mit @code{\with} eingeführt werden, +während der Erstellung des Kontextes miterzeugt werden und +als @strong{Standardeinstellungen} für diesen Kontext während seiner +gesamten Dauer gelten, während @code{\set}- oder @code{\override}-Befehle +dynamisch in die Noten eingebettet werden -- sie führen die +Änderungen synchron mit einem bestimmten Zeitpunkt in +der Musik aus. Wenn die Änderungen mit @code{\unset} +oder @code{\revert} rückgängig gemacht werden, werden +wieder die Standardwerte eingesetzt, die also die sind, die +mit einer @code{\with}-Konstruktion definiert wurden, oder +wenn hier keine definiert worden sind, die normalen +Standardwerte. + +Manche Kontexteigenschaften können nur ein einer +@code{\with}-Konstruktion verändert werden. Das sind +Eigenschaften, die nicht sinnvoll mitten im System geändert +werden können. @code{alignAboveContext} (Orientierung +über dem Kontext) und die Parallele, +@code{alignBelowContext} (Orientierung unter dem Kontext) +sind zwei derartige Eigenschaften -- wenn das Notensystem +einmal erstellt wurde, ist die Orientierung schon bestimmt +und es wäre nicht sinnvoll, sie später zu ändern. + +Die Standardwerte für Layout-Objekt-Eigenschaften können +auch in der @code{\with}-Konstruktion gesetzt werden. +Benutzen Sie einfach den normalen @code{\override}-Befehl +ohne den Kontext, denn der Kontext ist eindeutig definiert +durch die Stelle, an welcher sich @code{\with} befindet. +Wenn an dieser Stelle ein Kontext angegeben wird, produziert LilyPond +eine Fehlermeldung. + +Das obige Beispiel könnte also auch so aussehen: + +@cindex alignAboveContext-Eigenschaft, Beispiel +@cindex über dem System anordnen, Beispiel +@cindex @code{\with}-Beispiel +@cindex stencil-Eigenschaft, Beispiel +@cindex Schlüssel, Beispiel zur Veränderung +@cindex Taktart, Beispiel zur Veränderung + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +\new Staff ="main" { + \relative g' { + r4 g8 g c4 c8 d + e4 r8 + << + { f8 c c } + \new Staff \with { + alignAboveContext = #"main" + % Don't print clefs in this staff + \override Clef #'stencil = ##f + % Don't print time signatures in this staff + \override TimeSignature #'stencil = ##f + } + { f8 f c } + >> + r4 + } +} +@end lilypond + +Nun können wir daran gehen, auch wirklich die +Größe der Objekte zu ändern. + +Manche Layout-Objekte werden aus Glyphen erstellt, +die sich in einer Schriftartdatei befinden. Dazu gehören +die Notenköpfe, Versetzungszeichen, Text, Schlüssel, +Taktbezeichnung, Dynamik und Gesangstext. Ihre +Größe wird verändert, indem die +@code{font-size}- (Schriftgröße)-Eigenschaft geändert wird, wie +wir bald sehen werden. Andere Layout-Objekte, wie +Bögen -- oder allgemein Strecker-Objekte -- werden +individuell gezeichnet, es gibt dazu also keine +@code{font-size}, die mit ihnen verknüpft wäre. +Weitere Eigenschaften wie die Länge von Hälsen und +Taktlinien, Dicke von Balken und anderen Linien und +der Abstand der Notenlinien voneinander müssen auf +spezielle Weise verändert werden. + +In unserem Ossia-Beispiel wollen wir zuerst die +Schriftgröße verändern. Das ist auf zwei Arten möglich. +Entweder wir ändern die Schriftgröße für jede Objektart +mit einem eigenen Befehl, etwa: + +@example +\override NoteHead #'font-size = #-2 +@end example + +@noindent +oder wir ändern die Größe aller Schriftobjekte, indem wir +den Wert einer besonderen Eigenschaft, @code{fontSize}, +mit dem @code{\set}-Befehl bestimmen oder sie in +eine @code{\with}-Konstruktion (ohne @code{\set} einschließen. + +@example +\set fontSize = #-2 +@end example + +Beide Beispiele reduzieren die Schriftgröße um zwei Schritte +im Vergleich zum vorigen Wert, wobei jeder Schritt die +Schriftgröße um etwa 12% verändert. + +Setzen wir das also in unserem Ossia-Beispiel ein: + +@cindex alignAboveContext-Eigenschaft, Beispiel +@cindex über dem System anordnen, Beispiel +@cindex @code{\with}-Beispiel +@cindex stencil-Eigenschaft, Beispiel +@cindex Schlüssel, Beispiel zur Veränderung +@cindex Taktart, Beispiel zur Veränderung + +@lilypond[quote,verbatim,fragment,ragged-right,relative=2] +\new Staff ="main" { + \relative g' { + r4 g8 g c4 c8 d + e4 r8 + << + { f8 c c } + \new Staff \with { + alignAboveContext = #"main" + \override Clef #'stencil = ##f + \override TimeSignature #'stencil = ##f + % Reduce all font sizes by ~24% + fontSize = #-2 + } + { f8 f c } + >> + r4 + } +} +@end lilypond + +Das sieht aber immer noch nicht richtig aus. Die Notenköpfe +und Fähnchen sind kleiner, aber die Hälse im Vergleich +dazu zu lang und die Notenlinien zu weit auseinander. +Sie müssen auch proportional zur Schriftart verkleinert +werden. Der nächste Abschnitt behandelt diese Anpassung. + + +@node Délka a tloušťka předmětů +@subsection Délka a tloušťka předmětů +@translationof Length and thickness of objects + +@cindex Entfernungen +@cindex Dicke +@cindex Länge +@funindex magstep +@cindex Größe, verändern +@cindex Notenhalslänge, verändern +@cindex Hälse, Länge verändern +@cindex Notenlinien, Länge verändern + +Abstände und Längen werden in LilyPond üblicherweise +in Notenlinienabständen (engl. staff-spaces) gemessen. +Das ist der Abstand zwischen zwei Notenlinien im System. +Die meisten Dicken (engl. thickness) dagegen werden in +einer internen Einheit Linien-Dicke (engl. line-thickness) +gemessen. Die Linien von Dynamikklammern zum Beispiel +haben standardmäßig eine Dicke von einer Einheit +@code{line-thickness}, während die Dicke eines +Notenhalses 1,3 ist. Beachten Sie jedoch, dass sich +manche Dicken anders verhalten: die Dicke von +Balken etwa wird in Notenlinienabständen gemessen. + +Wie also werden Längen skaliert um der Schriftgröße +zu entsprechen? Das kann mit einer besonderen Funktion +@code{magstep} vorgenommen werden, die genau für +diesen Zweck vorhanden ist. Sie nimmt ein Argument auf, +die Änderung der Schriftgröße (#-2 im obigen Beispiel) +und gibt einen Skalierungsfaktor aus, der dazu dient, +Objekte proportionell zueinander zu verändern. So wird +sie benutzt: + +@cindex alignAboveContext-Eigenschaft, Beispiel +@cindex über dem System anordnen, Beispiel +@cindex @code{\with}-Beispiel +@cindex stencil-Eigenschaft, Beispiel +@cindex Schlüssel, Beispiel zur Veränderung +@cindex Taktart, Beispiel zur Veränderung +@cindex Notenlinienabstände verändern +@cindex staff-space-Eigenschaft verändern +@cindex magstep-Funktion, Beispiel +@cindex Schriftart-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,fragment,ragged-right,relative=2] +\new Staff ="main" { + \relative g' { + r4 g8 g c4 c8 d + e4 r8 + << + { f8 c c } + \new Staff \with { + alignAboveContext = #"main" + \override Clef #'stencil = ##f + \override TimeSignature #'stencil = ##f + fontSize = #-2 + % Reduce stem length and line spacing to match + \override StaffSymbol #'staff-space = #(magstep -2) + } + { f8 f c } + >> + r4 + } +} +@end lilypond + +@noindent +Da die Länge eines Halses und viele andere Längeneigenschaften +relativ zum Wert des Notenlinienabstands (@code{staff-space}) +errechnet werden, werden sie auch automatisch verkleinert. +Das wirkt sich jedoch nur auf die vertikale Skalierung des Ossias +aus -- die horizontale Skala ist durch das Layout des Haupsystems +bestimmt und wird also von diesen Größenänderungen nicht +betroffen. Wenn natürlich die Größe der gesamten Noten reduziert +würde, würde sich auch die horizontalen Abstände ändern. Dass +wird später im Layout-Abschnitt betrachtet. + +Mit dieser Änderung ist unser Ossia fertig. Die Größen und Längen +aller anderen Objekte können auf analoge Weise geändert +werden. + +Für kleine Größenänderungen, wie in dem obigen Beispiel, +braucht die Dicke der verschiedenen Linien, wie Taktlinien, +Notenlinien, Balken, Dynamikklammern usw. normalerweise +keine spezielle Anpassung. Wenn die Dicke eines bestimmten +Layout-Objektes angepasst werden muss, kann man das erreichen, +indem die entsprechende @code{thickness}-Eigenschaft des +Objekts mit @code{\override} verändert wird. Ein Beispiel, +wie man die Dicke von Bögen ändert, wurde schon gezeigt, +siehe @ref{Vlastnosti předmětů v rozvržení,,vlastnosti předmětů v rozvržení}. Die Dicke aller +gezeichneten Objekte (die also nicht aus einer Schriftart +stammen) können auf gleiche Weise geändert werden. + + +@node Umístění předmětů +@section Umístění předmětů +@translationof Placement of objects + +@menu +* Automatické chování:: +* Předměty uvnitř notové osnovy:: +* Předměty vně notové osnovy:: +@end menu + + +@node Automatické chování +@subsection Automatické chování +@translationof Automatic behavior + +@cindex within-staff-předměty +@cindex outside-staff-předměty +@cindex Předměty uvnitř notové osnovy +@cindex Předměty vně notové osnovy + +Es gibt Objekte der Notation, die zum Notensystem gehören, und +andere, die außerhalb des Systems gesetzt werden müssen. Sie +werden @code{within-staff}-Objekte bzw. +@code{outside-staff}-Objekte genannt. + +@code{within-staff}-Objekte werden innerhalb des Notensystems +(engl. staff) gesetzt: Notenköpfe, Hälse, Versetzungszeichen +usw. Ihre Position ist üblicherweise durch die notierte Musik +bestimmt -- sie werden vertikal auf bestimmten Linien notiert +oder sind an andere Objekte gebunden, die vertikal festgelegt +sind. Kollisionen von Notenköpfen, Hälsen und Versetzungszeichen +werden normalerweise automatisch vermieden. Es gibt +Befehle, um dieses automatische Verhalten zu verändern, wie +unten gezeigt werden soll. + +Objekte, die außerhalb des Notensystems gesetzt werden, sind +unter Anderem Übungsmarkierungen, Text und Dynamikzeichen. +LilyPonds Regel für ihre vertikale Positionierung lautet, sie so nah wie +möglich am Notensystem zu setzen, aber nicht so nah, dass +sie mit anderen Objekten kollidieren. Dabei wird die +@code{outside-staff-priority}-(Priorität außerhalb des Notensystems)-Eigenschaft +eingesetzt, um die Reihenfolge zu bestimmen, in denen Objekte gesetzt werden +sollen. + +Zuerst werden alle Innersystemobjekte von LilyPond gesetzt. +Dann werden die Objekte außerhalb des Systems nach +ihrer +@code{outside-staff-priority} geordnet. Die @code{outside-staff}-Objekte +werden dann nacheinander gesetzt, mit der niedrigsten +Priorität beginnend, und so gesetzt, dass sie nicht mit anderen +Objekten kollidieren, die schon gesetzt wurden. Wenn also zwei +@code{outside-staff}-Objekte um den selben Platz streiten, +wird das mit der geringeren @code{outside-staff-priority} näher +am System gesetzt werden. Wenn zwei Objekte die selbe Priorität +haben, wird das näher am System gesetzt, welches zuerst +auftritt. + +Im folgenden Beispiel haben alle Textbeschriftungen die gleiche +Priorität (weil sie nicht explizit gesetzt worden ist). Beachten Sie, +dass @qq{Text3} wieder dicht am System gesetzt wurde, weil +er unter @qq{Text2} passt. + +@cindex Textbeschriftungsbeispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +c2^"Text1" +c2^"Text2" +c2^"Text3" +c2^"Text4" +@end lilypond + +Notensysteme werden in den Standardeinstellungen auch so dicht +beieinander gesetzt wie es möglich ist (mit einem minimalen Abstand). +Wenn Noten sehr weit aus einem System herausragen, zwingen sie +das nächste System weiter weg, wenn eine Kollision drohen würde. +Im nächsten Beispiel sehen Sie, wie Noten auf zwei Systemen +@qq{ineinander greifen}. + +@lilypond[quote,ragged-right,verbatim] +<< + \new Staff { + \relative c' { c4 a, } + } + \new Staff { + \relative c'''' { c4 a, } + } +>> +@end lilypond + + +@node Předměty uvnitř notové osnovy +@subsection Předměty uvnitř notové osnovy +@translationof Within-staff objects + +Es wurde schon gezeigt, wie die Befehle @code{\voiceXXX} die Richtung +von Bögen, Fingersatz und allen anderen Objekten beeinflusst, +die von der Richtung der Notenhälsen abhängen. Diese Befehle +sind nötig, wenn polyphone Musik geschrieben wird, damit sich +die einzelnen Melodielinien klar abzeichnen. Es kann aber von Zeit +zu Zeit nötig sein, dieses automatische Verhalten zu verändern. Das +kann entweder für ganze Abschnitte, aber genauso auch nur für eine +einzelne Note vorgenommen werden. Die Eigenschaft, die die Richtung +bestimmt, ist die @code{direction}-Eigenschaft jedes Layout-Objekts. +Es soll erst erklärt werden, was sie bewirkt und dann eine Anzahl +an fertigen Befehlen für die üblicheren Situationen präsentiert werden, +mit denen Sie gleich loslegen können. + +Manche Layout-Objekte, wie Legato- und Bindebögen, biegen sich +oder zeigen entweder nach oben oder nach unten, andere, wie +Hälse und Fähnchen, verändern auch die Position rechts oder links, +je nach der Richtung, in die sie zeigen. Das wird automatisch +berücksichtigt, wenn die @code{direction}-Eigenschaft verändert +wird. + +@funindex down +@funindex up +@funindex center +@funindex neutral +@cindex hoch-Eigenschaft +@cindex runter-Eigenschaft +@cindex zentriert-Eigenschaft +@cindex neutral-Eigenschaft + +Das folgende Beispiel zeigt im ersten Takt die Standardeinstellung +für Hälse, die bei hohen Noten nach unten zeigen und bei tiefen +noten nach oben. Im nächsten Takt werden alle Hälse nach unten +gezwungen, im dritten Takt nach oben, und im vierten wird wieder +der Standard eingestellt. + +@cindex Notenhals, Beispiel zur Veränderung +@cindex Richtungseigenschaft, Beispiel + +@lilypond[quote,verbatim,relative=2] +a4 g c a +\override Stem #'direction = #DOWN +a4 g c a +\override Stem #'direction = #UP +a4 g c a +\revert Stem #'direction +a4 g c a +@end lilypond + +Hier werden die Konstanten @code{DOWN} und @code{UP} +eingesetzt. Sie haben die Werte @code{-1} bzw. @code{+1}, und +diese numerischen Werte können ebenso benutzt werden. Auch +der Wert @code{0} kann in manchen Fällen benutzt werden. Er +bedeutet für die Hälse das gleiche wie @code{UP}, für einige +andere Objekte jedoch @qq{zentriert}. Es gibt hierzu die Konstante +@code{CENTER}, die den Wert @code{0} hat. + +Es gibt aber einfachere Befehle, die normalerweise benutzt werden. +Hier eine Tabelle der häufigsten. Die Bedeutung des Befehls wird +erklärt, wenn sie nicht selbstverständlich ist. + +@multitable @columnfractions .2 .2 .25 .35 +@headitem Runter/Links + @tab Rauf/Rechts + @tab Rückgängig + @tab Wirkung +@item @code{\arpeggioArrowDown} + @tab @code{\arpeggioArrowUp} + @tab @code{\arpeggioNormal} + @tab Arpeggio mit Pfeil nach unten, oben oder ohne Pfeil +@item @code{\dotsDown} + @tab @code{\dotsUp} + @tab @code{\dotsNeutral} + @tab Richtung der Verschiebung eines Punktes, um Notenlinien zu vermeiden +@item @code{\dynamicDown} + @tab @code{\dynamicUp} + @tab @code{\dynamicNeutral} + @tab Position der Dynamik-Bezeichnung relativ zum System +@item @code{\phrasingSlurDown} + @tab @code{\phrasingSlurUp} + @tab @code{\phrasingSlurNeutral} + @tab Befehl für Richtung von Phrasierungsbögen +@item @code{\slurDown} + @tab @code{\slurUp} + @tab @code{\slurNeutral} + @tab Befehl für Richtung von Legatobögen +@item @code{\stemDown} + @tab @code{\stemUp} + @tab @code{\stemNeutral} + @tab Befehl für Richtung von Hälsen +@item @code{\textSpannerDown} + @tab @code{\textSpannerUp} + @tab @code{\textSpannerNeutral} + @tab Position von Textbeschriftungen, die als Strecker eingegeben werden +@item @code{\tieDown} + @tab @code{\tieUp} + @tab @code{\tieNeutral} + @tab Befehl für Richtung von Bindebögen +@item @code{\tupletDown} + @tab @code{\tupletUp} + @tab @code{\tupletNeutral} + @tab Befehl für Richtung von Klammern/Zahlen der N-tolen +@end multitable + +Diese vordefinierten Befehl können allerdings @strong{nicht} +zusammen mit @code{\once} benutzt werden. Wenn Sie die +Wirkung eines Befehl auf eine einzige Noten begrenzen wollen, +müssen Sie den entsprechenden +@code{\once \override}-Befehl benutzen oder den definierten +Befehl, gefolgt von dem entsprechenden neutralisierenden +@code{xxxNeutral}-Befehl nach der Note. + + +@subheading Fingersatz + +@cindex Fingersatz, Positionierung +@cindex Fingersatz, Akkorde + +Die Positionierung von Fingersatz kann auch durch den Wert +seiner @code{direction}-Eigenschaft beeinflusst werden, aber +eine Veränderung von @code{direction} hat keinen Einfluss auf +Akkorde. es gibt auch hier +besondere Befehle, mit denen der Fingersatz von einzelnen +Noten in Akkorden kontrolliert werden kann, wobei mögliche +Positionen über, unter der Note und rechts bzw. links von +ihr sind. + +Zunächst die Wirkungsweise von @code{direction} auf +den Fingersatz: im ersten Takt der Standard, dann +die Wirkung von @code{DOWN} (runter) und @code{UP} +(hinauf). + +@cindex Fingersatz, Beispiel zur Veränderung +@cindex direction-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,relative=2] +c4-5 a-3 f-1 c'-5 +\override Fingering #'direction = #DOWN +c4-5 a-3 f-1 c'-5 +\override Fingering #'direction = #UP +c4-5 a-3 f-1 c'-5 +@end lilypond + +Eine Beeinflussung der @code{direction}-Eigenschaft ist jedoch +nicht die einfachste Art, Fingersatzbezeichnungen manuell über oder +unter das System zu setzen. Normalerweise bietet es sich an, +@code{_} oder @code{^} anstelle von @code{-} vor der Fingersatz-Zahl +zu benutzen. Hier das vorherigen Beispiel mit dieser Methode: + +@cindex Fingersatz-Beispiel + +@lilypond[quote,verbatim,relative=2] +c4-5 a-3 f-1 c'-5 +c4_5 a_3 f_1 c'_5 +c4^5 a^3 f^1 c'^5 +@end lilypond + +Die @code{direction}-Eigenschaft wirkt sich nicht auf +Akkorde aus, während die Präfixe @code{_} und @code{^} funktionieren. +Standardmäßig wird der Fingersatz automatisch entweder +über oder unter dem Akkord gesetzt: + +@cindex Fingersatz-Beispiel + +@lilypond[quote,verbatim,relative=2] +4 +4 +4 +@end lilypond + +@noindent +aber das kann manuell geändert werden, um einzelne Fingersatzanweisungen +nach oben oder unten zu zwingen: + +@cindex Fingersatz-Beispiel + +@lilypond[quote,verbatim,relative=2] +4 +4 +4 +@end lilypond + +Noch bessere Kontrolle über die Positionierung von Fingersatz für +einzelne Noten in einem Akkord ist mit dem +@code{\set fingeringOrientations}-Befehl möglich. Die Syntax +lautet: + +@example +@code{\set fingeringOrientations = #'([up] [left/right] [down])} +@end example + +@noindent +@code{\set}wird benutzt, weil @code{fingeringOrientations} eine +Eigenschaft des @code{Voice}-Kontextes ist, erstellt und eingesetzt +vom @code{New_fingering_engraver}. + +Die Eigenschaft kann als Wert eine Liste mit einem bis drei Einträgen +haben. Damit wird bestimmt, ob Fingersatz oberhalb gesetzt +werden kann (wenn @code{up} in der Liste auftaucht), darunter +(wenn@code{down} auftaucht), links (wenn @code{left} auftaucht) +oder rechts (wenn @code{right} auftaucht). Wenn andererseits +ein Wert nicht auftaucht, wir auch kein Fingersatz in dieser Richtung +gesetzt. LilyPond nimmt diese Beschränkung als Bedingung und +errechnet die besten Positionen für die Noten des nächsten Akkordes. +Die seitliche Positionierung kann nur auf einer Seite des Akkordes +geschehen, nicht auf beiden gleichzeitig, es kann also nur entweder +@code{left} oder @code{right} auftreten, nicht beide gleichzeitig. + +@warning{Damit eine einzelne Note mit diesem Befehl beeinflusst werden +kann, muss sie als ein @qq{Ein-Noten-Akkord} geschrieben +werden, indem einfache spitze Klammern um die Note positioniert +werden.} + +Hier ein paar Beispiele: + +@cindex Fingersatz-Beispiel +@cindex @code{\set}, Benutzungsbeispiel +@cindex fingerOrientations-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,relative=1] +\set fingeringOrientations = #'(left) +4 +4 +\set fingeringOrientations = #'(left) +4 +4 +\set fingeringOrientations = #'(up left down) +4 +4 +\set fingeringOrientations = #'(up left) +4 +4 +\set fingeringOrientations = #'(right) +4 +4 +@end lilypond + +@noindent +Wenn die Fingersatzbezeichnung zu gedrungen aussieht, +kann auch die Schriftgröße (@code{font-size}) verringert +werden. Der Standardwert kann aus dem +@code{Fingering}-Objekt in der IR entnommen werden, +er ist @code{-5}, versuchen wir es also mit @code{-7}. + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +\override Fingering #'font-size = #-7 +\set fingeringOrientations = #'(left) +4 +4 +\set fingeringOrientations = #'(left) +4 +4 +\set fingeringOrientations = #'(up left down) +4 +4 +\set fingeringOrientations = #'(up left) +4 +4 +\set fingeringOrientations = #'(right) +4 +4 +@end lilypond + + + +@node Předměty vně notové osnovy +@subsection Předměty vně notové osnovy +@translationof Outside-staff objects + +Předměty vně notové osnovy werden automatisch gesetzt, +um Kollisionen zu vermeiden. Objekten mit einem geringeren +Prioritätswert der Eigenschaft @code{outside-staff-priority} +werden näher an das System gesetzt, und andere Objekte außerhalb +des Systems werden dann soweit vom System entfernt gesetzt, dass +Zusammenstöße vermieden werden. Die +@code{outside-staff-priority}-Eigenschaft ist im +@code{grob-interface} definiert und ist also eine Eigenschaft +von allen Layout-Objekten. Standardmäßig ist sie für alle Objekte +auf falsch (@code{#f}) gesetzt; dieser Wert wird in einen numerischen +Wert dem Objekt entsprechend geändert, wenn das Objekt für die +Notenausgabe erstellt wird. Die Tabelle unten zeigt die +Standardwerte für die meistbenutzten @code{outside-staff}-Objekte, +die den Voreinstellungen nach im @code{Staff}- oder +@code{Voice}-Kontext gesetzt werden. + +@cindex spanners +@cindex Strecker + +Achtung bei einigen ungewöhnlichen Objektbezeichnungen: Strecker-Objekte +werden automatisch erstellt, um die vertikale Position von Grobs +zu kontrollieren, die an unterschiedlichen musikalischen Momenten +beginnen und enden (könnten). Wenn also @code{outside-staff-priority} +des darunterliegenden Grobs geändert wird, hat das keine Auswirkung. +Zum Beispiel bringt das Ändern von @code{outside-staff-priority} +des @code{Hairpin}-(Dynamikklammer)-Objekts keine Änderung in der +vertikalen Position von Crescendo-Klammern -- anstatt dessen muss +@code{outside-staff-priority} des hiermit assoziierten +@code{DynamicLineSpanne}-Objekts geändert werden. Dieser +@code{\override}-Befehl muss zu Beginn des Streckers gesetzt werden, +welcher womöglich mehrere verbundene Dynamikklammern und Dynamikbezeichnung +beinhaltet. + +@multitable @columnfractions .3 .3 .3 +@headitem Layout-Objekt + @tab Priorität + @tab Kontrolliert Position von: +@item @code{MultiMeasureRestText} + @tab @code{450} + @tab Text über Ganztaktpausen +@item @code{TextScript} + @tab @code{450} + @tab Textbeschriftung +@item @code{OttavaBracket} + @tab @code{400} + @tab Ottava (Oktavierungsklammern) +@item @code{TextSpanner} + @tab @code{350} + @tab Text-Strecker +@item @code{DynamicLineSpanner} + @tab @code{250} + @tab Alle Dynamik-Bezeichnungen +@item @code{VoltaBracketSpanner} + @tab @code{100} + @tab Volta-Klammern +@item @code{TrillSpanner} + @tab @code{50} + @tab Triller-Strecker +@end multitable + +Hier ein Beispiel, das die Standardpositionierung von einigen +Objekten zeigt. + +@cindex Text-Strecker +@cindex Text-Spanner +@funindex \startTextSpan +@funindex \stopTextSpan +@funindex startTextSpan +@funindex stopTextSpan +@cindex Ottava-Klammer +@cindex Oktavierungsklammer + +@cindex TextSpanner, Beispiel zur Veränderung +@cindex bound-details-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +% Set details for later Text Spanner +\override TextSpanner #'(bound-details left text) + = \markup { \small \bold Slower } +% Place dynamics above staff +\dynamicUp +% Start Ottava Bracket +\ottava #1 +c'4 \startTextSpan +% Add Dynamic Text and hairpin +c4\pp\< +c4 +% Add Text Script +c4^Text +c4 c +% Add Dynamic Text and terminate hairpin +c4\ff c \stopTextSpan +% Stop Ottava Bracket +\ottava #0 +c,4 c c c +@end lilypond + +Dieses Beispiel zeigt auch, wie man Text-Strecker erstellt, d.h. +Text mit Bindestrichen, der sich über eine bestimmte Länge +erstreckt. Der Strecker beginnt mit dem +@code{\startTextSpan}-Befehl und endet mit dem +@code{\stopTextSpan}-Befehl, und das Format des Textes +wird mit dem @code{\override TextSpanner}-Befehl bestimmt. +Mehr Einzelheiten siehe @ruser{Text mit Verbindungslinien}. + +Im Beispiel wird auch gezeigt, wie Oktavierungsklammern +(Ottava) erstellt werden. + +@cindex Taktzahlposition verändern +@cindex Verändern der Taktzahlposition +@cindex Position der Taktzahl, verändern +@cindex Metronom-Bezeichnungsposition verändern +@cindex Verändern der Metronom-Bezeichnungsposition +@cindex Übungszeichenposition verändern +@cindex Verändern der Übungszeichenposition + +Beachten Sie, dass Taktnummern, Metronombezeichnungen +und Übungszeichen nicht gezeigt werden. Sie werden +standardmäßig im @code{Score}-(Partitur)-Kontext +erstellt und ihre @code{outside-staff-priority} wird +in Bezug auf die Layout-Objekte, die im @code{Staff}-Kontext +erstellt werden, ignoriert. Wenn Sie Taktnummern, +Metronombezeichnungen oder Übungszeichen entsprechend +ihrer Außersystem-Priorität setzen wollen, müssen Sie +die entsprechenden Engraver (@code{Bar_number_engraver}, +@code{Metronome_mark_engraver} oder @code{Mark_engraver}) +vom @code{Score}-Kontext entfernen und dem +@code{Staff}-Kontext hinzufügen. Wenn die Engraver so +geändert werden, erhalten sie folgenden Werte für +@code{outside-staff-priority}: + +@multitable @columnfractions .3 .3 +@headitem Layout-Objekt @tab Priorität +@item @code{RehearsalMark} @tab @code{1500} +@item @code{MetronomeMark} @tab @code{1000} +@item @code{BarNumber} @tab @code{ 100} +@end multitable + +Wenn die Standardwerte der @code{outside-staff-priority} nicht +die Positionierung hervorrufen, die Sie wünschen, kann die +Priorität eines jeden Objektes geändert werden. Als Beispiel +wollen wir zeigen, wie sich die Oktavierungsklammer unter +den Textstrecker des vorigen Beispiels setzen lässt. Wir müssen +nur die Priorität des +@code{OttavaBracket}-Objektes in der IR oder der Tabelle oben +herausfinden und einen kleineren Wert angeben als der Wert, den +das @code{TextSpanner}-(Strecker)-Objekt bekommt, wobei noch daran +zu denken ist, dass @code{OttavaBracket} im @code{Staff}-Kontext +erstellt wird: + +@cindex TextSpanner, Beispiel zur Veränderung +@cindex bound-details-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +% Set details for later Text Spanner +\override TextSpanner #'(bound-details left text) + = \markup { \small \bold Slower } +% Place dynamics above staff +\dynamicUp +% Place following Ottava Bracket below Text Spanners +\once \override Staff.OttavaBracket #'outside-staff-priority = #340 +% Start Ottava Bracket +\ottava #1 +c'4 \startTextSpan +% Add Dynamic Text +c4\pp +% Add Dynamic Line Spanner +c4\< +% Add Text Script +c4^Text +c4 c +% Add Dynamic Text +c4\ff c \stopTextSpan +% Stop Ottava Bracket +\ottava #0 +c,4 c c c +@end lilypond + +@cindex Legatobögen und outside-staff-priority +@cindex Legatobögen und Artikulationszeichen +@cindex Artikulationszeichen und Legatobögen + +Legatobögen werden als Innersystem-Objekte klassifiziert, aber +sie erscheinen oft auch über dem System, wenn die Noten, an die +sie verbunden sind, sehr hoch im System notiert sind. Dadurch +können Außersystem-Objekte, wie Artikulationszeichen, zu hoch +gerückt werden. Die @code{avoid-slur}-Eigenschaft hat nur +eine Auswirkung, wenn auch die @code{outside-staff-priority} +auf @code{#f} gesetzt ist. Alternativ kann die +@code{outside-staff-priority} des Legatobogens auf einen +numerischen Wert gesetzt werden, sodass er mit anderen +Außersystem-Objekten anhand dieses Wertes gesetzt wird. +Hier ein Beispiel, das die beiden Möglichkeiten veranschaulicht: + +@lilypond[quote,verbatim,relative=2] +c4( c^\markup { \tiny \sharp } d4.) c8 +c4( +\once \override TextScript #'avoid-slur = #'inside +\once \override TextScript #'outside-staff-priority = ##f +c4^\markup { \tiny \sharp } d4.) c8 +\once \override Slur #'outside-staff-priority = #500 +c4( c^\markup { \tiny \sharp } d4.) c8 +@end lilypond + +Eine Änderung der @code{outside-staff-priority} kann auch dazu +benutzt werden, die vertikale Plazierung von individuellen Objekten +zu kontrollieren, auch wenn das Ergebnis nicht immer optimal +ist. Im nächsten Beispiel soll @qq{Text3} oberhalb von @qq{Text4} +gesetzt werden, das Beispiel wurde behandelt in +@ref{Automatické chování,,automatickém chování}. Der Wert der Priorität muss also für +die Eigenschaft @code{TextScript} entweder in der IR oder in der +Tabelle oben festgestellt werden und dann die Priorität für +@qq{Text3} höher eingestellt werden: + +@cindex TextScript, Beispiel zur Veränderung +@cindex outside-staff-priority-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +c2^"Text1" +c2^"Text2" | +\once \override TextScript #'outside-staff-priority = #500 +c2^"Text3" +c2^"Text4" | +@end lilypond + +Damit wird zwar @qq{Text3} ganz richtig über @qq{Text4} +platziert, aber auch über @qq{Text2}, und @qq{Text4} +wird jetzt weiter unten gesetzt. Eigentlich sollten ja alle +diese Anmerkungen gleichweit vom System entfernt sein. +Dazu muss offensichtlich horizontal etwas Platz gemacht +werden. Das kann erreicht werden mit dem +@code{textLengthOn}-(Textlänge an)-Befehl. + +@subheading \textLengthOn (Textlänge berücksichtigen) + +@cindex Noten, durch Text gespreizt +@funindex \textLengthOn +@funindex textLengthOn +@funindex \textLengthOff +@funindex textLengthOff + +Standardmäßig wird Text, der mit dem Beschriftungsbefehl +@code{\markup} bzw. Äquivalenten erstellt wird, kein +zusätzlicher Platz in Bezug auf die Positionierung der Noten +zugestanden. Der @code{\textLengthOn}-Befehl ändert +dieses Verhalten, so dass die Noten gespreizt werden, wenn +die Breite des Textes es erfordert: + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +\textLengthOn % Cause notes to space out to accommodate text +c2^"Text1" +c2^"Text2" | +c2^"Text3" +c2^"Text4" | +@end lilypond + +Dieses Verhalten wird mit dem @code{\textLengthOff}-Befehl +rückgängig gemacht. Erinnern Sie sich, dass @code{\once} nur mit +@code{\override}, @code{\set}, @code{\revert} oder @code{unset} +funktioniert, der Befehl kann also nicht zusammen mit +@code{\textLengthOn} benutzt werden. + +@cindex Textbeschriftung, Vermeidung von Zusammenstößen +@cindex Zusammenstöße vermeiden mit Textbeschriftung + +Textbeschriftung vermeidet auch Noten, die über das System hinausstehen. +Wenn das nicht gewünscht ist, kann die automatische Verschiebung +nach oben hin auch vollständig ausgeschaltet werden, indem die +Priorität auf @code{#f} gesetzt wird. Hier ein Beispiel, wie +eine Textbeschriftung mit diesen Noten reagiert: + +@cindex Textbeschriftung, Beispiel zur Veränderung +@cindex outside-staff-priority-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +% This markup is short enough to fit without collision +c2^"Tex" c'' | +R1 | + +% This is too long to fit, so it is displaced upwards +c,,2^"Text" c'' | +R1 | + +% Turn off collision avoidance +\once \override TextScript #'outside-staff-priority = ##f +c,,2^"Long Text " c'' | +R1 | + +% Turn off collision avoidance +\once \override TextScript #'outside-staff-priority = ##f +\textLengthOn % and turn on textLengthOn +c,,2^"Long Text " % Spaces at end are honored +c''2 | +@end lilypond + + +@subheading Dynamik + +@cindex Verändern der Positionierung von Dynamikzeichen +@cindex Dynamikzeichen: Positionierung verändern + +Dynamikbezeichnung wird üblicherweise unter dem System +gesetzt, kann aber auch nach oben mit dem Befehl +@code{dynamicUp} gezwungen werden. Die Bezeichnung +wird vertikal relativ zu der Note positioniert, an die sie angefügt +wurde. Sie wird vertikal variabel gesetzt in Bezug zu +Innersystemobjekten wie Bögen oder Taktnummern. Damit +können oft recht gute Resultate erreicht werden, wie im +folgenden Beispiel: + +@lilypond[quote,fragment,ragged-right,verbatim,relative=1] +\clef "bass" +\key aes \major +\time 9/8 +\dynamicUp +bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! +ees,2.~\)\mf ees4 r8 +@end lilypond + +Wenn aber Noten und Dynamikzeichen sehr dicht beieinander +stehen, positioniert die automatische Kollisionsvermeidung +später kommende Dynamikzeichen weiter weg, was allerdings +nicht immer die beste Möglichkeit ist, wie in dem folgenden, +etwas gewollten Beispiel zu sehen ist: + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +\dynamicUp +a4\f b\mf c\mp b\p | +@end lilypond + +@noindent +Wenn eine ähnliche Situation in @qq{echter} Musik auftaucht, +kann es nötig sein, die Noten etwas zu spreizen, damit die +Dynamikzeichen alle auf der selben vertikalen Position +gesetzt werden können. Dieses Verhalten war im Falle von +Textbeschriftungen möglich mit dem @code{\textLengthOn}-Befehl, +aber es gibt keinen entsprechenden Befehl für Dynamik. Wir +müssen also unsere eigenen Befehle mit @code{\override} +konstruieren. + + +@subheading Verändern der Größe von grobs + +@cindex Grob, Größenveränderung +@cindex Größenveränderung von grobs + +Zuallererst müssen wir lernen, wie die Größe von Grobs verändert +wird. Alle Grobs besitzen einen Referenzpunkt, der +benutzt wird, um ihre Position in Relation zu ihnen übergeordneten +Objekten zu bestimmen. Dieser Punkt innerhalb des Grobs wird dann +auf einer horizontalen Position (@code{X-offset}) und einer +vertikalen Position (@code{Y-offset}) ausgerichtet, immer bezüglich +des übergeordneten Objektes. Eine horizontale Strecke wird +durch ein Zahlenpaar angegeben (@code{X-extent}), welche +die linke und rechte Grenze relativ zum übergeordneten Objekt +bezeichnen. Die vertikale Strecke wir genauso durch ein +Zahlenpaar (@code{Y-extent}) definiert. Diese Eigenschaften +gehören zu allen Grobs, die das +@code{grob-interface} unterstützen. + +@cindex @code{extra-spacing-width} + +Standardmäßig haben Außersystemobjekte eine Länge von Null, +so dass sie sich in horizontaler Richtung überlappen können. Das +geschieht, indem dem linken Rand Unendlich zugewiesen wird +und dem rechten Rand minus Unendlich (der Code der +@code{extra-spacing-width}-(zusätzliche Positionierungslänge)-Eigenschaft +lautet: @code{'(+inf.0 . -inf.0)}). +Damit sich diese Objekte also horizontal nicht überschneiden, muss +der Wert von @code{extra-spacing-width} auf +@code{'(0 . 0)} gesetzt werden, sodass die wirkliche Länge eines +Objektes zur Geltung kommt. Mit diesem Befehl wird das für +Dynamik-Zeichen erledigt: + +@example +\override DynamicText #'extra-spacing-width = #'(0 . 0) +@end example + +@noindent +Schauen wir uns an, wie es mit dem vorigen Beispiel funktioniert: + +@cindex DynamicText, Beispiel zur Veränderung +@cindex extra-spacing-width-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +\dynamicUp +\override DynamicText #'extra-spacing-width = #'(0 . 0) +a4\f b\mf c\mp b\p +@end lilypond + +@noindent +Damit werden die Dynamik-Zeichen also wirklich nebeneinander +gesetzt, aber es gibt noch zwei Probleme. Die Zeichen sollten +etwas weiter außeinander stehen und es wäre gut, wenn sie alle +den gleichen Abstand zum System hätte. Das erste Problem ist +einfach behoben. Anstatt der @code{extra-spacing-width}-Eigenschaft +Null zuzuweisen, können wir auch einen etwas größeren Wert +wählen. Die Einheit wird gemessen in dem Abstand zwischen zwei +Notenlinien, es scheint also gut, den rechten und linken +Rand eine halbe Einheit zu vergrößern: + +@cindex DynamicText, Beispiel zur Veränderung +@cindex extra-spacing-width-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +\dynamicUp +% Extend width by 1 staff space +\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5) +a4\f b\mf c\mp b\p +@end lilypond + +@noindent +Das sieht schon besser aus, aber es wäre noch besser, wenn die +Dynamik-Zeichen alle an einer Linie ausgerichtet wären, anstatt +höher und tiefer zu sitzen. Das kann mit der +@code{staff-padding}-Eigenschaft erreicht werden, +die wir uns im folgenden Abschnitt genauer anschauen werden. + + + +@node Střety předmětů +@section Střety předmětů +@translationof Collisions of objects + +@menu +* Přesouvání předmětů:: +* Oprava překrývajících se not:: +* Příklady ze života:: +@end menu + +@node Přesouvání předmětů +@subsection Přesouvání předmětů +@translationof Moving objects + +@cindex Verschieben von überschneidenden Objekten +@cindex Verschieben von Zusammenstößen +@cindex Zusammenstöße vermeiden +@cindex Objekte, verschieben von Zusammestößen +@cindex Vermeiden von Zusammenstößen + +Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht +perfekt. Einige Notationselemente können sich überschneiden. Das +ist nicht schön, aber zum Glück sehr selten. Normalerweise müssen +die Objekte zur Klarheit oder aus ästhetischen Gründen verschoben +werden -- sie könnten besser aussehen, wenn sie etwas zusätzlichen +Platz erhalten. + +Es gibt im Grunde drei Herangehensweisen, überlappende Notation +zu verbessern. Man sollte sie in der folgenden Reihenfolge +anwenden: + +@enumerate +@item +Die @strong{Richtung} eines der überlappenden Objekte kann +geändert werden, indem die vordefinierten Befehle für +Innersystemobjekte verwendet werden, wie beschrieben in +@ref{Předměty uvnitř notové osnovy,,předmětech uvnitř notové osnovy)}. Hälse, Bögen, Balken, Dynamik-Zeichen +und Triolen können auf diese Weise einfach umgeordnet +werden. Beschränkt ist diese Methode insofern, als es nur +zwei Möglichkeiten zur Veränderung gibt: oben oder unten. + +@item +Die @strong{Objekteigenschaft}, die LilyPond benutzt um die +Layout-Objekte zu platzieren, können mit dem +@code{\override}-Befehl positioniert werden. Die Vorteile +von Änderungen dieser Art sind a) dass einige Objekte +automatisch verschoben werden, wenn es nötig ist Platz zu +schaffen und b) ein einziges @code{\override} sich auf +alle Fälle eines Objekttyps bezieht. Zu diesen Eigenschaften +gehören: + +@itemize + +@item +@code{direction} (Richtung) + +Das wurde schon detailliert behandelt, siehe +@ref{Předměty uvnitř notové osnovy,,předměty uvnitř notové osnovy}. + +@item +@code{padding}, @code{right-padding}, @code{staff-padding} (Verschiebung) + +@cindex Padding-Eigenschaft +@cindex right-padding-Eigenschaft +@cindex staff-padding-Eigenschaft +@cindex Verschieben (padding) +@cindex Füllung (padding) +@cindex padding (Füllung) + +Wenn ein Objekt platziert wird, bestimmt der Wert seiner +@code{padding}-(Füllungs)-Eigenschaft die Größe des +Abstandes, der zwischen dem Objekt selber und dem +Objekt, relativ zu welchem es positioniert wird, gelassen +werden muss. Dabei zählt der @code{padding}-Wert +des Objektes, das platziert werden soll, der @code{padding}-Wert +des Objektes, das schon gesetzt wurde, wird hingegen +ignoriert. Abstände mit @code{padding} können zu +allen Objekten hinzugefügt werden, die das +@code{side-position-interface} unterstützen. + +Anstelle von @code{padding} wird die Position von +Versetzungszeichengruppen durch die Eigenschaften +@code{right-padding} bestimmt. Diese Eigenschaft wird im +@code{AccidentalPlacement}-(Versetzungszeichen-Positionierungs)-Objekt +gefunden, das sich innerhalb des @strong{Staff}-Kontexts +befindet. Während des Notensatzes werden die Notenköpfe +zuerst gesetzt und dann die Versetzungszeichen, wenn denn +welche gesetzt werden, durch die @code{right-padding}-Eigenschaft +auf die linke Seite der Notenköpfe positioniert, um die Entfernung +von den Notenköpfen und zwischen den einzelnen Versetzungszeichen zu +bestimmen. Also nur die @code{right-padding}-(Verschiebung nach rechts)-Eigenschaft +des @code{AccidentalPlacement}-Objekts hat Einfluss auf die +Positionierung der Versetzungszeichen. + +Die @code{staff-padding}-(Verschiebung zum System)-Eigenschaft +ist sehr ähnlich wie die @code{padding}-Eigenschaft: +@code{padding} bestimmt den Minimalabstand zwischen +einem Objekt, das das @code{side-position-interface} +unterstützt, und dem nächsten anderen Objekt (normalerweise +die Note oder Notenlinie); @code{staff-padding} dagegen +wirkt nur auf Objekte die immer außerhalb des Notensystems +sind -- damit wird der minimale Abstand bestimmt, der +zwischen dem Objekt und dem Notensystem gelassen werden +soll. @code{staff-padding} hat also @strong{keinen Einfluss} +auf Objekte, die relativ zu einer Note positioniert werden, sondern +nur auf solche, die zum System relativ stehen. Wenn es mit einem +anderen Objekt eingesetzt wird, erhält man keine Fehlermeldung, aber +der Befehl hat auch keine Auswirkungen. + +Um herauszufinden, welche @code{padding}-Eigenschaft für +das bestimmte Objekt nötig, ist, das Sie verschieben wollen, +müssen Sie in der IR nach den Objekt-Eigenschaften schauen. +Dabei sollten Sie bedenken, dass sich die @code{padding}-Eigenschaften +nicht unbedingt in dem Objekt selber befinden, schauen Sie +also auch in Objekten nach, die offensichtlich Ähnlichkeiten +haben. + +Alle @code{padding}-Werte werden in Notenlinienabständen +gemessen. Für die meisten Objekte ist der Wert ungefähr auf +1.0 oder weniger gesetzt (das variiert von Objekt zu Objekt). +Der Wert kann geändert werden, wenn ein größerer (oder +kleinerer) Abstand gewünscht wird. + +@item +@code{self-alignment-X} (Selbstpositionierung) + +@cindex self-alignment-X-Eigenschaft +@cindex Samoumístění předmětů +@cindex Ausrichtung von Objekten + +Diese Eigenschaft kann benutzt werden, um ein Objekt +nach links, rechts oder zentriert an dem Referenzpunkt des Objekts +auszurichten, an das es verknüpft ist. Es kann bei allen +Objekten benutzt werden, die das @code{self-alignment-interface} +unterstützen. Das sind üblicherweise Objekte, die Text +enthalten. Die möglichen Werte der Eigenschaft sind @code{LEFT}, +@code{RIGHT} oder @code{CENTER}. Alternativ kann ein +numerischer Wert zwischen @code{-1} und @code{+1} +bestimmt werden: @code{-1} heißt linksbündig, @code{+1} +rechtsbündig und Zahlen dazwischen bewegen den Text +schrittweise von links nach rechts. Zahlen größer als +@code{1} können angegeben werden, um den Text +noch weiter nach links zu bewegen, oder weniger als @code{-1}, +um ihn weiter nach rechts zu schieben. Eine Änderung +um @code{1} des Wertes entspricht einer Bewegung um +die halbe Textbreite. + +@item +@code{extra-spacing-width} (zusätzliche Breite) + +@cindex extra-spacing-width-Eigenschaft + +Diese Eigenschaft steht für alle Objekte zur Verfügung, die +das @code{item-interface} unterstützen. Es braucht zwei +Zahlen als Argument, die erste wird zur rechten Ausdehnung, +die zweite zur linken Ausdehnung hinzugerechnet. Negative +Zahlen verschieben die Ausdehnung nach rechts, positive nach +links, um also ein Objekt zu verbreitern, muss die erste +Zahl negativ und die zweite positiv sein. Allerdings beachten +nicht alle Objekte beide Zahlen. Das +@code{accidental}-(Versetzungszeichen)-Objekt etwa beachtet +nur erste Zahl für die linke Ausdehnung. + +@item +@code{staff-position} (Notensystempositionierung) + +@cindex staff-position-Eigenschaft + +@code{staff-position} ist eine Eigenschaft des +@code{staff-symbol-referencer-interface}, die von Objekten unterstützt +wird, die relativ zum Notensystem (engl. staff) positioniert werden. +Hiermit wird die vertikale Position eines Objekts relativ zur +Mittellinie des Systems in halben Notenlinienabständen angegeben. +Das ist sehr nützlich, um Zusammenstöße zwischen Layout-Objekten +wie Ganztaktpausen, Bögen und Noten in verschiedenen Stimmen +zu lösen. + +@item +@code{force-hshift} (vertikale Verschiebung erzwingen) + +@cindex force-hshift-Eigenschaft + +Eng beieinander stehende Noten in einem Akkord oder Noten, die zum +gleichen Zeitpunkt in unterschiedlichen Stimmen stehen, werden +in zwei oder manchmal auch mehr Kolumnen gesetzt, um Kollisionen +zu umgehen. Diese Kolumnen werden Notenkolumnen genannt; +ein @code{NoteColumn}-Objekt wird erstellt um die Noten in den +Kolumnen zu setzen. + +Die @code{force-hshift}-(erzwinge horizontale Verschiebung)-Eigenschaft +ist eine Eigenschaft von @code{NoteColumn} (bzw. vom +@code{note-column-interface}). Eine Veränderung dieser Eigenschaft +macht es möglich, eine Notenkolumne zu verschieben, dabei gilt als +Einheit die Breite einer Kolumne, also die Breite des Notenkopfes der +ersten Stimme. Diese Eigenschaft kann in Situationen benutzt werden, +in denen die normalen @code{\shiftOn}-Befehle (siehe auch +@ref{Stimmen explizit beginnen}) das Problem nicht beseitigen. +Diese Eigenschaft ist besser in solchen Fällen zu verwenden als die +@code{extra-offset}-Eigenschaft, weil man die richtige Entfernung nicht +in Notenlinienabständen ausrechnen muss. Wenn eine Note in eine +Notenkolumne oder aus ihr heraus geschoben wird, werden auch andere +Funktionen beeinflusst, wie etwa die Verschmelzung von Notenköpfen. + +@end itemize + +@item +Zu guter Letzt, wenn alles andere nicht funktioniert, können Objekte auch +manuell positioniert werden, entweder vertikal in Bezug auf die +Mittellinie des Systems, oder indem sie einen beliebigen Abstand weit +auf eine neue Position verschoben werden. Der Nachteil ist, dass die +richtigen Werte für eine gute Position manuell ausprobiert werden müssen, +meistens durch Herantasten an den richtigen Wert, und das für jedes +einzelne Objekt extra. Und weil diese Verschiebungen erst vorgenommen +werden, wenn LilyPond alle anderen Objekte gesetzt hat, ist man als +Notensetzer selber dafür verantwortlich, ob es Zusammenstöße gibt. +Am schwerwiegendsten ist aber die Tatsache, dass die +Verschiebungskoordinaten wahrscheinlich neu errechnet oder +ausprobiert werden müssen, wenn sich an den Noten und deren +Layout später irgend etwas ändert. Die Eigenschaften, die für diese +Arte der manuellen Verschiebung verwendet werden können, sind: + +@table @code +@item extra-offset (zusätzlicher Abstand) + +@cindex extra-offset-Eigenschaft + +Diese Eigenschaft gehört zu jedem Layout-Objekt, das das +@code{grob-interface} unterstützt. Sie braucht ein Zahlenpaar, +das die exakte Verschiebung in horizontaler und vertikaler Richtung +bezeichnet. Negative Zahlen verschieben das Objekt nach links oder +unten. Die Einheit sind Notenlinienabstände. Die zusätzliche +Positionierung wird vorgenommen, nachdem alle anderen Objekte +platziert sind, weshalb ein Objekt irgendwohin verschoben werden +kann, ohne den restlichen Satz zu beeinflussen. + +@item positions (Position) + +@cindex positions-Eigenschaft + +Diese Eigenschaft ist am sinnvollsten, um die Steigung und die +Höhe von Balken, Bögen und Triolenklammern anzupassen. +Sie braucht ein Zahlenpaar, das die Position des rechten und linken +Endes relativ zur Mittellinie des Notensystems bestimmt. Die +Einheit sind Notenlinienabstände. Bögen allerdings können nicht +beliebig weit weg positioniert werden. LilyPond erstellt zunächst eine +Liste an möglichen Positionen für den Bogen und findet normalerweise +die Version, die @qq{am besten aussieht}. Wenn die +@code{positions}-Eigenschaft verändert worden ist, wird der +Bogen aus der Liste gewählt, der der gewünschten Position am +nächsten kommt. +@end table + +@end enumerate + +Ein bestimmtes Objekt hat vielleicht nicht alle dieser Eigenschaften. +Darum ist es nötig, in der IR nachzuschlagen, welche Eigenschaften +ein bestimmtes Objekt unterstützt. + +Hier ist eine Liste an Objekten, die am wahrscheinlichsten an einer +Kollision beteiligt sind, daneben findet sich die Bezeichnung des +Objektes, mit der Sie es in der IR finden, um zu bestimmen, +welche Eigenschaften benutzt werden können, um es zu verschieben. + +@multitable @columnfractions .5 .5 +@headitem Objekttyp @tab Objektbezeichnung +@item Articulationszeichen @tab @code{Script} +@item Balken @tab @code{Beam} +@item Dynamikzeichen (vertikal) @tab @code{DynamicLineSpanner} +@item Dynamikzeichen (horizontal) @tab @code{DynamicText} +@item Fingersatz @tab @code{Fingering} +@item Übungs-/Textmarken @tab @code{RehearsalMark} +@item Legatobögen @tab @code{Slur} +@item Text z. B. @code{^"text"} @tab @code{TextScript} +@item Bindebögen @tab @code{Tie} +@item N-tolen @tab @code{TupletBracket} +@end multitable + + +@node Oprava překrývajících se not +@subsection Oprava překrývajících se not +@translationof Fixing overlapping notation + +Hier soll nun gezeigt werden, wie die Eigenschaften, die im +vorigen Abschnitt vorgestellt wurden, bei der Problemlösung +mit sich überschneidenden Notationselementen eingesetzt +werden können. + +@subheading padding (Fülleigenschafte) + +@cindex padding (Verschiebungs-Eigenschaft) +@cindex Überschneidende Notation korrigieren +@cindex Korrigieren von überschneidender Notation + +Die @code{padding}-(Verschiebungs-)Eigenschaft kann benutzt +werden, um den Abstand zwischen Symbolen zu vergößern (oder +zu verkleinern), die über oder unter den Noten gesetzt werden. + +@cindex Script, Beispiel zur Veränderung +@cindex Verschiebungs-Eigenschaft, Beispiel +@cindex padding (Verschiebuns-Eigenschaft), Beispiel + +@lilypond[quote,fragment,relative=1,verbatim] +c2\fermata +\override Script #'padding = #3 +b2\fermata +@end lilypond + +@cindex MetronomMark, Beispiel zur Veränderung +@cindex Verschiebungs-Eigenschaft, Beispiel +@cindex padding (Verschiebuns-Eigenschaft), Beispiel + +@lilypond[quote,fragment,relative=1,verbatim] +% This will not work, see below +\override MetronomeMark #'padding = #3 +\tempo 4 = 120 +c1 | +% This works +\override Score.MetronomeMark #'padding = #3 +\tempo 4 = 80 +d1 | +@end lilypond + +Im zweiten Beispiel können Sie sehen, wie wichtig es ist den richtigen +Kontext anzugeben. Weil das @code{MetronomeMark}-Objekt +sich im @code{Score}-Kontext befindet, werden Eigenschaftsänderungen +im @code{Voice}-Kontext einfach ignoriert. Für mehr Einzelheiten siehe +@ruser{Eigenschaften verändern}. + +Wenn die @code{padding}-Eigenschaft eines Objektes erhöht wird, das +sich in einem Stapel von Objekten befindet, die nach ihrer +Außersystempriorität (@code{outside-staff-priority}) positioniert werden, +werden das Objekt und alle, die sich außerhalb davon befinden, +entsprechend verschoben. + +@subheading right-padding (Verschieben nach links) + +@cindex Verschiebung nach rechts +@cindex right-padding-Eigenschaft (Verschiebung nach rechts) + +Die @code{right-padding}-Eigenschaft wirkt sich auf den Abstand +zwischen einem Versetzungszeichen und der Note, auf das sie sich +bezieht, aus. Sie wird nicht sehr oft benötigt, aber die +Standardanordnung kann für einige spezielle Versetzungszeichen-Glyphen +oder Kombinationsglyphen, +wie sie für Mikrotonale Musik benutzt werden, falsch sein. Derartige +Glyphen müssen notiert werden, indem man den Stencil des +Versetzungszeichens mit einer Textbeschriftung (Markup) ersetzt, +wie im folgenden Beispiel: + +@cindex Versetzungszeichen, Beispiel zur Veränderung +@cindex Accidental, Beispiel zur Veränderung +@cindex Text-Eigenschaft, Beispiel +@cindex stencil-Eigenschaft, Beispiel +@cindex AccidentalPlacement, Beispiel zur Veränderung +@cindex right-padding-Eigenschaft, Beispiel +@cindex Verschiebung nach rechts (rigth-padding), Beispiel + +@lilypond[quote,ragged-right,verbatim] +sesquisharp = \markup { \sesquisharp } + \relative c'' { + c4 + % This prints a sesquisharp but the spacing is too small + \once \override Accidental + #'stencil = #ly:text-interface::print + \once \override Accidental #'text = #sesquisharp + cis4 c + % This improves the spacing + \once \override Score.AccidentalPlacement #'right-padding = #0.6 + \once \override Accidental + #'stencil = #ly:text-interface::print + \once \override Accidental #'text = #sesquisharp + cis4 +} +@end lilypond + +@noindent +Dazu ist aber ein @code{\override}-Befehl für den Stencil des +Versetzungszeichens nötig, der bisher nicht behandelt wurde. +Der Typ des Stencils muss eine Prozedur sein, die hier geändert +wurde, um den Inhalt der @code{text}-Eigenschaft des +@code{Accidental} (Versetzungszeichen)-Objekts zu setzen. Die +@code{text}-Eigenschaft wiederum wird als @code{sesquisharp}-Glyph +definiert. Dieser Glyph wird dann weiter vom Notenkopf entfernt +durch die Veränderung von @code{right-padding} mit einem +@code{\override}-Befehl. + +@subheading staff-padding (Systemfüllungseigenschaft) + +@cindex staff-padding-Eigenschaft +@cindex Objekte an der Grundlinie ausrichten +@cindex Ausrichten von Objekten an der Grundlinie + +@code{staff-padding} (Verschiebung zum Notensystem) kann +verwendet werden um Objekte wie Dynamikzeichen an einer +Grundlinie auf einer bestimmten Höhe über dem System +auszurichten, sodass sie nicht von der Position der Note abhängen, +an die sie angehängt sind. Diese Verschiebung ist keine Eigenschaft +von @code{DynamicText}, sondern von @code{DynamicLineSpanner}. +Das liegt daran, dass die Grundlinie sich gleicherweise auf +@strong{alle} Dynamikzeichen beziehen soll, also auch auf die, +die als Strecker erstellt wurden. Hier also die Lösung, die Dynamikzeichen +aus dem Beispiel des vorigen Abschnitts auszurichten: + +@cindex DynamikText, Beispiel zur Veränderung +@cindex extra-spacing-width-Eigenschaft, Beispiel +@cindex DynamicLineSpanner, Beispiel zur Veränderung +@cindex staff-padding-Eigenschaft, Beispiel + +@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +\dynamicUp +% Extend width by 1 unit +\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5) +% Align dynamics to a base line 2 units above staff +\override DynamicLineSpanner #'staff-padding = #2 +a4\f b\mf c\mp b\p +@end lilypond + + +@subheading self-alignment-X (Selbstausrichtung-X-Eigenschaft) + +@cindex self-alignment-X-Eigenschaft + +Das nächste Beispiel zeigt, wie man den Zusammenstoß +einer Fingersatzbezeichnung mit einem Notenhals +verhindern kann, indem die rechte Ecke an dem +Referenzpunkt der abhängigen Note angeordnet wird: + +@cindex StringNumber, Beispiel zur Veränderung + +@lilypond[quote,fragment,ragged-right,verbatim,relative=3] +\voiceOne +< a\2 > +\once \override StringNumber #'self-alignment-X = #RIGHT +< a\2 > +@end lilypond + + +@subheading staff-position (Position innerhalb des Systems) + +@cindex staff-position-Eigenschaft +@cindex Notensystem-Position-Eigenschaft +@cindex Střety předmětů v osnově +@cindex Zusammenstöße von Objekten im System + +Vieltaktpausen in einer Stimmen können mit Noten in anderen +Stimmen kollidieren. Da diese Pausen zentriert zwischen den +Taktlinien gesetzt werden, würde es für LilyPond eine recht große +Anstrengung bedeuten herauszufinden, welche Noten mit ihnen +zusammenstoßen könnten, denn alle Kollisionsvermeidung +für Noten und Pausen funktioniert nur für Noten bzw. Pausen, die +zur selben Zeit auftreten. Hier ein typisches Beispiel für eine +Kollision dieser Art: + +@lilypond[quote,verbatim,fragment,ragged-right, relative=1] +<< { c4 c c c } \\ { R1 } >> +@end lilypond + +Die beste Lösung ist es, die Ganztaktpause nach unten zu +schieben, denn die Pause ist in der zweiten Stimme. Per +Standardeinstellung für die zweite Stimme (@code{\voiceTwo}, +also die zweite Stimme in der +@code{<<@{...@} \\ @{...@}>>}-Konstruktion) wird die +Position auf dem System (@code{staff-position}) auf -4 +für @code{MultiMeasureRest}, in unserem Beispiel muss +es also bspw. auf die Position @code{-8} gesetzt werden, +d.h. vier halbe Notenlinienabstände weiter nach unten: + +@cindex MultiMeasureRest, Beispiel zur Veränderung +@cindex Ganztaktpausen, Beispiel zur Veränderung +@cindex staff-position-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,fragment,ragged-right, relative=1] +<< + { c4 c c c } + \\ + \override MultiMeasureRest #'staff-position = #-8 + { R1 } +>> +@end lilypond + +Das ist besser, als etwa @code{extra-offset} zu benutzen, denn +in unserem Fall wird die Hilfslinie der Pause automatisch gesetzt. + + +@subheading extra-offset (Genaues Positionieren) + +@cindex extra-offset-Eigenschaft +@cindex Zusätzlicher Abstand, Positionierung +@cindex Umístění předmětů +@cindex Objekte, Positionierung + +Die @code{extra-offset}-Eigenschaft bietet vollständige Kontrolle +über die umístění předmětů in horizontaler und vertikaler +Richtung. + +Im Beispiel unten ist das zweite Fingersatzzeichen (@code{Fingering}) etwas nach +links und 1,8 Notenlinienabstände nach unten verschoben: + +@cindex Fingersatz, Beispiel zur Veränderung +@cindex extra-offset-Eigenschaft, Beispiel + +@lilypond[quote,fragment,relative=1,verbatim] +\stemUp +f4-5 +\once \override Fingering #'extra-offset = #'(-0.3 . -1.8) +f4-5 +@end lilypond + + +@subheading Ausrichtungseigenschaft + +@cindex positions-Eigenschaft +@cindex Kontrolle über Triolen, Bögen und Balken manuell +@cindex manuelle Kontrolle über Triolen, Bögen, Balken +@cindex Balken, manuelle Kontrolle +@cindex Bögen, manuelle Kontrolle +@cindex Legatobögen, manuelle Kontrolle +@cindex Phrasierungsbögen, manuelle Kontrolle +@cindex Triollen-Klammer, manuelle Kontrolle + +Die @code{positions}-Eigenschaft erlaubt die Kontrolle von Position und +Steigung von Balken, Legato- und Phrasierungsbögen sowie Triolenklammern. +Hier ein Beispiel, in der ein unschöner Phrasierungsbogen auftritt, weil +er den Bogen des Vorschlags vermeidet: + +@lilypond[quote,verbatim,fragment,ragged-right,relative=1] +r4 \acciaccatura e8\( d8 c~ c d c d\) +@end lilypond + +@noindent +Man könnte einfach den Phrasierungsbogen oberhalb der Noten setzen, und +das wäre auch die beste Lösung: + +@cindex Phrasierungsbogen, Beispiel zur Veränderung +@cindex positions-Eigenschaft, Beispiel +@cindex Positionierung, Beispiel + +@lilypond[quote,verbatim,fragment,ragged-right,relative=1] +r4 +\phrasingSlurUp +\acciaccatura e8\( d8 c~ c d c d\) +@end lilypond + +@noindent +aber wenn es einen Grund geben sollte, warum das nicht geht, könnte +man das linke Ende des Phrasierungsbogens etwas nach unten verschieben, +indem man die @code{positions}-Eigenschaft einsetzt. Damit +verschwindet auch die etwas unschöne Form: + +@lilypond[quote,verbatim,fragment,ragged-right,relative=1] +r4 +\once \override PhrasingSlur #'positions = #'(-4 . -3) +\acciaccatura e8\( d8 c~ c d c d\) +@end lilypond + +Hier noch ein weiteres Beispiel aus der Einleitung von Chopins +Prelude Op. 28 Nr. 2, das untere System. Wie zu sehen ist, +stößt der Balken mit den oberen Noten zusammen: + +@lilypond[quote,verbatim,fragment,ragged-right] +{ + \clef "bass" + << { b,8 ais, b, g, } \\ { e, g e, g } >> + << { b,8 ais, b, g, } \\ { e, g e, g } >> +} +@end lilypond + +@noindent +Das kann manuell gelöst werden, indem beide Enden des Balkens +von ihrer Position 2 Notenlinienabstände über der Mittellinie +hochgeschoben werden, etwa auf 3: + +@cindex Balken, Beispiel zur Veränderung +@cindex positions-Eigenschaft, Beispiel +@cindex Positionierung, Beispiel + +@lilypond[quote,verbatim,fragment,ragged-right] +{ + \clef "bass" + << + \override Beam #'positions = #'(3 . 3) + { b,8 ais, b, g, } + \\ + { e, g e, g } + >> + << { b,8 ais, b, g, } \\ { e, g e, g } >> +} +@end lilypond + +@noindent +Hier ist zu beobachten, dass die Veränderung sich auch auf die +weiteren Achtelbalken der ersten Stimme auswirkt, während sie keine +Auswirkung auf die Balken der zweiten Stimme hat. + +@subheading force-hshift (vertikale Verschiebunseigenschaft) + +@cindex force-hshift-Eigenschaft +@cindex Vertikale Verschiebung erzwingen + +An diesem Punkt können wir den letzten Feinschliff an unserem +Chopin-Beispiel vornehmen, das wir behandelt haben in +@ref{Ich höre Stimmen}. Wir hatten es in folgende Form +gebracht: + +@lilypond[quote,verbatim,fragment,ragged-right] +\new Staff \relative c'' { + \key aes \major + << + { c2 aes4. bes8 } + \\ + { aes2 f4 fes } + \\ + { + \voiceFour + 2 des + } + >> | + 1 | +} +@end lilypond + +@noindent +Die unteren zwei Noten des ersten Akkords (also die in der +dritten Stimme) sollten nicht aus der Notenkolumne der +oberen zwei Noten weggeschoben werden. Um das zu +korrigieren, setzen wir @code{force-hshift}, das eine +Eigenschaft von +@code{NoteColumn} ist, für diese Noten auf Null. +Die untere Note des zweiten Akkordes wird am besten +direkt rechts von den oberen Noten gesetzt. Das erreichen +wir, indem wir @code{force-hshift} für diese Note auf +0.5 setzen, also eine halbe Notenkopfbreite nach rechts von +der Kolumne der oberen Noten aus. + +Hier das Endergebnis: + +@cindex Notenkolumne, Beispiel zur Veränderung +@cindex force-hshift-Eigenschaft, Beispiel +@cindex vertikale Verschiebung, Beispiel + +@lilypond[quote,verbatim,fragment,ragged-right] +\new Staff \relative c'' { + \key aes \major + << + { c2 aes4. bes8 } + \\ + { aes2 f4 fes } + \\ + { + \voiceFour + \once \override NoteColumn #'force-hshift = #0 + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 + } + >> | + 1 | +} +@end lilypond + + +@node Příklady ze života +@subsection Příklady ze života +@translationof Real music example + +Das Kapitel zu Optimierungen soll mit einem komplizierten Beispiel +beendet werden, in dem verschiedene Optimierungen vorgenommen +werden müssen, bis das Ergebnis gut aussieht. Das Beispiel wurde +ganz bewusst gewählt um die Benutzung der Notationsreferenz +zu zeigen, wenn ungewöhnliche Notationsprobleme gelöst werden +müssen. Es ist nicht repräsentativ für normale Notationsprojekte, +lassen Sie sich also nicht durch dieses Beispiel entmutigen! Zum +Glück sind Probleme wie die hier gezeigten nicht sehr häufig. + +Das Beispiel stammt aus Chopins Premiére Ballade, Op. 23, Takte +6--9, der Übergang vom Lento der Einleitung zum Moderato. +Hier zunächst der Satz, wie er aussehen soll, allerdings ohne +Dynamik, Fingersatz und Pedalbezeichnung, um das Beispiel nicht +zu kompliziert zu machen. + +@c This example should not be indexed +@lilypond[quote,ragged-right,line-width=6\in] +rhMusic = \relative c'' { + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + bes2.^\markup { \bold "Moderato" } r8 + << + { c,8 d fis bes a } + \new Voice { + \voiceTwo + c,8~ + % Reposition the c2 to the right of the merged note + \once \override NoteColumn #'force-hshift = #1.0 + % Move the c2 out of the main note column so the merge will work + \shiftOnn + c2 + } + \new Voice { + \voiceThree + s8 + % Stem on the d2 must be down to permit merging + \stemDown + % Stem on the d2 should be invisible + \once \override Stem #'transparent = ##t + d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + \mergeDifferentlyHeadedOff + \mergeDifferentlyDottedOff + g2.\) + } +} + +lhMusic = \relative c' { + r2 2( | + 1)\arpeggio | + r2. d,,4 r4 r | + r4 +} + +\score { + \new PianoStaff << + \new Staff = "RH" << + \key g \minor + \rhMusic + >> + \new Staff = "LH" << + \key g \minor + \clef "bass" + \lhMusic + >> + >> +} +@end lilypond + +Die erste Überlegung ist, dass das System für die rechte Hand +im dritten Takt vier Stimmen braucht. Das sind die fünf +Achtelnoten mit Balken, das übergebundene C, die Halbe D, die +mit der Achtel D verschmolzen ist, und die punktierte Viertel +Fis, die auch mit einer Achtelnote verschmolzen ist. Alles +andere ist eine einzige Stimme, es ist also am einfachsten, die +zusätzlichen drei Stimmen nur zeitweise zu erstellen, wenn sie +auftreten. Wenn Sie vergessen haben, wie man das anstellt, +schauen Sie sich nochmal den Abschnitt @ref{Ich höre Stimmen} +und @ref{Stimmen explizit beginnen} an. Hier wollen wir explizit +begonnene Stimmen für die polyphone Stelle benutzen, weil LilyPond +Kollisionen besser vermeidet, wenn alle Stimmen auf diese Weise +explizit begonnen werden. + + +Wir wollen anfange, indem wir die Noten in zwei Variablen +notieren und dann die Systemstruktur in einer +@code{\score}-Umgebung erstellen. Das ist, was LilyPond +erstellt: + +@c line-width ensures no break +@lilypond[quote,verbatim,ragged-right,line-width=6\in] +rhMusic = \relative c'' { + \new Voice { r2 c4. g8 | + bes1~ | + \time 6/4 + bes2. r8 + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ c2 + } + \new Voice { + \voiceThree + s8 d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + g2. % continuation of main voice + } +} + +lhMusic = \relative c' { + r2 2 | + 1 | + r2. d,,4 r4 r | + r4 +} + +\score { + \new PianoStaff << + \new Staff = "RH" << + \key g \minor + \rhMusic + >> + \new Staff = "LH" << + \key g \minor + \clef "bass" + \lhMusic + >> + >> +} +@end lilypond + +Alle Noten sind richtig, aber die Positionierung sehr +verbesserungsbedürftig. Der Bindebogen kollidiert mit +der veränderten Taktart zusammen, einige Noten werden nicht +verschmolzen und einige Notationselemente fehlen ganz. +Behandeln wir zunächst die einfacheren Dinge. Der +Balken kann durch eine manuelle Begrenzung einfach +korrigiert werden, und auch der Legatobogen der linken +Hand und der Phrasierungsbogen der rechten Hand +sind schnell gesetzt, denn sie wurden schon in der +Übung erklärt. Damit haben wir folgendes Notenbild: + +@c line-width ensures no break +@lilypond[quote,verbatim,ragged-right,line-width=6\in] +rhMusic = \relative c'' { + \new Voice { + r2 c4.\( g8 | + bes1~ | + \time 6/4 + bes2. r8 + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ c2 + } + \new Voice { + \voiceThree + s8 d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + g2.\) % continuation of main voice + } +} + +lhMusic = \relative c' { + r2 2( | + 1) | + r2. d,,4 r4 r | + r4 +} + +\score { + \new PianoStaff << + \new Staff = "RH" << + \key g \minor + \rhMusic + >> + \new Staff = "LH" << + \key g \minor + \clef "bass" + \lhMusic + >> + >> +} +@end lilypond + +Der erste Takt stimmt jetzt schon. Der zweite Takt enthält ein +Arpeggio und wird mit einer doppelten Taktlinie beschlossen. +Wie können wir diese notieren, denn sie sind im Handbuch zum +Lernen nicht vorgekommen? Hier brauchen wir jetzt die +Notationsreferenz. Ein Blick in den Index zeigt uns die +Einträge für @qq{Arpeggio} und @qq{Taktlinien}: ein +Arpeggio also erstellt man mit dem Befehl @code{\arpeggio} +hinter einem Akkord und eine doppelte Taktlinie wird mit dem +Befehl @code{\bar "||"} erstellt. Das ist einfach. Als nächstes +muss der Zusammenstoß des Bindebogens mit der Taktartbezeichnung +gelöst werden. Das geht am besten, indem wir den Bogen nach +oben verschieben. Wie man Objekte verschiebt wurde schon +behandelt in @ref{Přesouvání předmětů,,přesouvání předmětů}, wo stand, dass Objekte +die relativ zum System positioniert werden, vertikal verschoben werden +können, indem ihre @code{staff-position}-Eigenschaft +geändert wird, die in halben Notenlinienabständen relativ +zur Mittellinie angegeben wird. Dieser @code{\override}-Befehl +also, direkt vor die erste übergebundene Note gestellt, verschiebt +den Bindebogen (@code{tie}) 3,5 halbe Notenlinienabstände +über die Mittellinie: + +@code{\once \override Tie #'staff-position = #3.5} + +Damit ist auch der zweite Takt vollständig: + +@lilypond[quote,verbatim,ragged-right,line-width=6\in] +rhMusic = \relative c'' { + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + bes2. r8 + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ c2 + } + \new Voice { + \voiceThree + s8 d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + g2.\) % continuation of main voice + } +} + +lhMusic = \relative c' { + r2 2( | + 1)\arpeggio | + r2. d,,4 r4 r | + r4 +} + +\score { + \new PianoStaff << + \new Staff = "RH" << + \key g \minor + \rhMusic + >> + \new Staff = "LH" << + \key g \minor + \clef "bass" + \lhMusic + >> + >> +} +@end lilypond + +In Takt drei beginnt der Moderato-Abschnitt. In der +Übung wurde behandelt, wie man fetten Text mit dem +@code{\markup}-Befehl eingibt, es ist also einfach, das +@qq{Moderato} in fetter Schrift hinzuzufügen. Wie aber werden Noten +verschmolzen? Hier nehmen wir wieder die Notationsreferenz +zu Hilfe. Die Suche nach @qq{Verschmelzen} (engl. merge) +im Index führt uns zu den Befehlen, um Noten mit +unterschiedlichen Köpfen und unterschiedlichen Punkten +zu verschmelzen, in @ruser{Auflösung von Zusammenstößen}. In unserem +Beispiel müssen sowohl unterschiedliche Köpfe also auch +unterschiedliche Punktierung verschmolzen werden, wir +brauchen also die Befehle + +@example +\mergeDifferentlyHeadedOn +\mergeDifferentlyDottedOn +@end example + +@noindent +aus der Notationsreferenz, die wir an den Beginn unseres +Abschnittes stellen und + +@example +\mergeDifferentlyHeadedOff +\mergeDifferentlyDottedOff +@end example + +@noindent +um das Verhalten wieder auszuschalten. Das sieht so aus: + +@cindex Bindebogen, Beispiel zur Veränderung +@cindex staff-position-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,ragged-right,line-width=6\in] +rhMusic = \relative c'' { + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + bes2.^\markup { \bold "Moderato" } r8 + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ c2 + } + \new Voice { + \voiceThree + s8 d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + \mergeDifferentlyHeadedOff + \mergeDifferentlyDottedOff + g2.\) % continuation of main voice + } +} + +lhMusic = \relative c' { + r2 2( | + 1)\arpeggio | + r2. d,,4 r4 r | + r4 +} + +\score { + \new PianoStaff << + \new Staff = "RH" << + \key g \minor + \rhMusic + >> + \new Staff = "LH" << + \key g \minor + \clef "bass" + \lhMusic + >> + >> +} +@end lilypond + +Mit diesen Veränderungen wurden die beiden Fis-Noten +verschmolzen, aber nicht die zwei Ds. Warum nicht? Die +Antwort befindet sich im gleicher Abschnitt der Notationsreferenz: +Noten, die verschmolzen werden, müssen Hälse in entgegengesetzte +Richtungen aufweisen und zwei Noten können nicht verschmolzen +werden, wenn eine dritte Noten in der gleichen Kolumne +stört. In unserem Fall weisen beide Hälse nach oben und es +befindet sich zur gleichen Zeit auch noch eine dritte Note, das C. +Wie die Richtung von Hälsen geändert wird, wissen wir schon: +mit @code{\stemDown}, und in der Notationsreferenz findet +sich auch Information, wie das C verschoben werden kann: mit +dem @code{\shift}-Befehl. Aber welcher von ihnen? Das C +befindet sich in der zweiten Stimme, die @qq{shift off} hat, +die zwei Ds sind in den Stimmen eins und drei, die @qq{shift +off} bzw. @qq{shift on} haben. Das C muss also noch eine +Stufe weiter verschoben werden mit @code{\shiftOnn}, damit +es die Verschmelzung der Ds nicht stört. Das sieht jetzt so +aus: + +@lilypond[quote,verbatim,ragged-right,line-width=6\in] +rhMusic = \relative c'' { + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + bes2.^\markup { \bold "Moderato" } r8 + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + % Move the c2 out of the main note column so the merge will work + c,8~ \shiftOnn c2 + } + \new Voice { + \voiceThree + % Stem on the d2 must be down to permit merging + s8 \stemDown d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + \mergeDifferentlyHeadedOff + \mergeDifferentlyDottedOff + g2.\) % continuation of main voice + } +} + +lhMusic = \relative c' { + r2 2( | + 1)\arpeggio | + r2. d,,4 r4 r | + r4 +} + +\score { + \new PianoStaff << + \new Staff = "RH" << + \key g \minor + \rhMusic + >> + \new Staff = "LH" << + \key g \minor + \clef "bass" + \lhMusic + >> + >> +} +@end lilypond + +Fast schon geschafft. Nur noch ein Problem ist übrig: Der Hals nach +unten des verschmolzenen sollte nicht da sein, und das C sähe +besser auf der rechten Seite des Ds aus. Beides können wir mit den +gelernten postupy při ladění erreichen. Den Hals machen +wir durchsichtig und das C verschieben wir mit der +@code{force-hshift}-Eigenschaft. Hier ist das Endergebnis: + +@cindex Notenkolumne, Beispiel zur Veränderung +@cindex force-hshift-Eigenschaft, Beispiel +@cindex Hals, Beispiel zur Veränderung +@cindex Notenhals, Beispiel zur Veränderung +@cindex transparent-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,ragged-right,line-width=6\in] +rhMusic = \relative c'' { + \new Voice { + r2 c4.\( g8 | + \once \override Tie #'staff-position = #3.5 + bes1~ | + \bar "||" + \time 6/4 + bes2.^\markup { \bold "Moderato" } r8 + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + % Start polyphonic section of four voices + << + { c,8 d fis bes a } % continuation of main voice + \new Voice { + \voiceTwo + c,8~ + % Reposition the c2 to the right of the merged note + \once \override NoteColumn #'force-hshift = #1.0 + % Move the c2 out of the main note column so the merge will work + \shiftOnn + c2 + } + \new Voice { + \voiceThree + s8 + % Stem on the d2 must be down to permit merging + \stemDown + % Stem on the d2 should be invisible + \once \override Stem #'transparent = ##t + d2 + } + \new Voice { + \voiceFour + s4 fis4. + } + >> | + \mergeDifferentlyHeadedOff + \mergeDifferentlyDottedOff + g2.\) % continuation of main voice + } +} + +lhMusic = \relative c' { + r2 2( | + 1)\arpeggio | + r2. d,,4 r4 r | + r4 +} + +\score { + \new PianoStaff << + \new Staff = "RH" << + \key g \minor + \rhMusic + >> + \new Staff = "LH" << + \key g \minor + \clef "bass" + \lhMusic + >> + >> +} +@end lilypond + + +@node Další ladění +@section Další ladění +@translationof Further tweaking + +@menu +* Jiné využití ladění:: +* Použití proměnných pro ladění:: +* Celkové formátování:: +* Více informací:: +* Vyhnutí se ladění s pomalejším překladem:: +* Pokročilá ladění se Scheme:: +@end menu + +@node Jiné využití ladění +@subsection Jiné využití ladění +@translationof Other uses for tweaks + +@cindex Transparente Objekte +@cindex Entfernen von Objekten +@cindex Verstecken von Objekten +@cindex Unsichtbare Objekte +@cindex transparent-Eigenschaft, Benutzung +@cindex Objekte unsichtbar machen +@cindex Objekte entfernen +@cindex Objekte verstecken +@cindex Noten zwischen Stimmen überbinden +@cindex Überbinden von Noten zwischen Stimmen + +@subheading Noten zwischen unterschiedlichen Stimmen überbinden + +Das nächste Beispiel zeigt, wie man Noten von verschiedenen +Stimmen miteinander verknüpfen kann, indem man Bindebögen +für Überbindungen benutzt. Normalerweise können nur zwei +Noten der gleichen Stimme übergebunden werden. Wenn +man zwei Stimmen benutzt, wobei die überbundenen Noten +sich in der selben befinden, + +@lilypond[quote,fragment,relative=2] +<< { b8~ b8\noBeam } \\ { b[ g8] } >> +@end lilypond + +@noindent +und dann den ersten Hals nach oben unsichtbar macht, +sieht es so aus, als ob die Überbindung zwischen +den Stimmen stattfindet: + +@cindex Hals, Beispiel zur Veränderung +@cindex Notenhals, Beispiel zur Veränderung +@cindex transparent-Eigenschaft, Beispiel + +@lilypond[quote,fragment,relative=2,verbatim] +<< + { + \once \override Stem #'transparent = ##t + b8~ b\noBeam + } +\\ + { b8[ g] } +>> +@end lilypond + +Um sicherzugehen, dass der unsichtbare Hals den Bindebogen +nicht zu sehr verkleinert, kann er verlängert werden, indem +seine Länge (@code{length}) auf den Wert @code{8} +gesetzt wird: + +@lilypond[quote,fragment,relative=2,verbatim] +<< + { + \once \override Stem #'transparent = ##t + \once \override Stem #'length = #8 + b8~ b\noBeam + } +\\ + { b[ g8] } +>> +@end lilypond + + +@subheading Eine Fermate in MIDI simulieren + +@cindex stencil-Eigenschaft, Benutzung +@cindex Fermate, Benutzung in MIDI +@cindex MIDI: Fermate erstellen + +Pro předměty vně notové osnovy ist es normalerweise +besser, die @code{stencil}-Eigenschaft anstelle der +@code{transparent}-Eigenschaft zu verändern, wenn man +sie vom fertigen Notensatz entfernen will. Indem die +@code{stencil}-Eigenschaft auf falsch (@code{#f}) gesetzt +wird, wird das entsprechende Objekt vollständig entfernt. +Das bedeutet, dass es die Positionierung der anderen Objekte +nicht beeinflusst. + +Auf diese Art kann etwa das Tempo geändert werden, damit +in der MIDI-Ausgabe eine Fermate zu hören ist, ohne dass +im Notensatz etwas von diesen Tempoänderungen zu sehen +ist. Die Metronombezeichnung soll auch nicht die Position +von Text an der gleichen Stelle oder die Abstände zwischen +zwei Systemen beeinflussen. Darum ist es am besten, +@code{stencil} auf @code{#f} zu setzen. Im Beispiel wird +der Unterschied zwischen einem unsichtbaren Objekt und +einem entfernten Objekt gezeigt: + +@cindex Metronom-Bezeichnung, Beispiel zur Veränderung +@cindex transparent-Eigenschaft, Beispiel + +@lilypond[quote,verbatim,ragged-right] +\score { + \relative c'' { + % Visible tempo marking + \tempo 4=120 + a4 a a + \once \override Score.MetronomeMark #'transparent = ##t + % Invisible tempo marking to lengthen fermata in MIDI + \tempo 4=80 + a4\fermata + % New tempo for next section + \tempo 4=100 + a4 a a a + } + \layout { } + \midi { } +} +@end lilypond + +@lilypond[quote,verbatim,ragged-right] +\score { + \relative c'' { + % Visible tempo marking + \tempo 4=120 + a4 a a + \once \override Score.MetronomeMark #'stencil = ##f + % Invisible tempo marking to lengthen fermata in MIDI + \tempo 4=80 + a4\fermata + % New tempo for next section + \tempo 4=100 + a4 a a a + } + \layout { } + \midi { } +} +@end lilypond + +@noindent +Mit beiden Methoden wird die Tempobezeichnung entfernt, mit +der die Fermate verlängert wird, und beide beeinflussen die +MIDI-Ausgabe wie gewünscht. Die unsichtbare Metronombezeichnung +schiebt aber die folgende Bezeichnung in die Höhe, während +das im zweiten Beispiel, in dem der @code{stencil} entfernt +wurde, nicht passiert. + +@seealso +Glossar: +@rglos{system}. + + +@node Použití proměnných pro ladění +@subsection Použití proměnných pro ladění +@translationof Using variables for tweaks + +@cindex Variablen, Benutzung zur Optimierung +@cindex Optimierung mit Variablen + +@code{\override}-Befehle sind oft lang und mühsam zu +tippen, und sie müssen immer absolut richtig sein. Wenn +derselbe Befehl mehrere Male benutzt werden muss, lohnt +es sich oft schon, eine Variable zu definieren, in der er +sich befindet. + +Als Beispiel sollen einige Worte im +Gesangstext fett und kursiv hervorgehoben werden. +Die Befehle @code{\italic} und @code{\bold} funktionieren +im Gesangstext-Kontext nur, wenn sie gleichzeitig mit den Wörtern, +auf die sie angewendet werden sollen, zusätzlich +in eine @code{\markup}-Umgebung eingeschlossen +werden. Durch diese Einbettung können einzelne Wörter nicht +einfach zu einer Variable umgeformt werden. Als +Alternative versuchen wir, einen Befehl mit +@code{\override} und @code{\revert} zu konstruieren. + +@example +@code{\override Lyrics . LyricText #'font-shape = #'italic} +@code{\override Lyrics . LyricText #'font-series = #'bold} + +@code{\revert Lyrics . LyricText #'font-shape} +@code{\revert Lyrics . LyricText #'font-series} +@end example + +Das wäre natürlich noch viel mühsamer, wenn viele Wörter eine +Hervorhebung benötigen. Anstelle dieser Befehlsketten @emph{können} +wir jedoch zwei Variablen definieren. Mit ihnen und dem entsprechenden +Wort in geschweiften Klammern erreichen wir den gewünschten Effekt. +Ein weiterer Vorteil ist, dass in diesem Fall die Leerzeichen um die +Punkte herum nicht benötigt werden, weil sie nicht innerhalb des +@code{lyricmode}-Kontextes interpretiert werden. Hier ein Beispiel; +die Bezeichnungen können natürlich auch kürzer sein, +um noch weniger schreiben zu müssen: + +@cindex LyricText, Beispiel zur Veränderung +@cindex Gesangstext, Beispiel zur Veränderung +@cindex font-shape-Eigenschaft, Beispiel +@cindex font-series-Eigenschaft, Beispiel + +@lilypond[quote,verbatim] +emphasize = { + \override Lyrics.LyricText #'font-shape = #'italic + \override Lyrics.LyricText #'font-series = #'bold +} +normal = { + \revert Lyrics.LyricText #'font-shape + \revert Lyrics.LyricText #'font-series +} + +global = { \key c \major \time 4/4 \partial 4 } + +SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g } +AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e } +TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 } +BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 } + +VerseOne = \lyrics { + E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save, +} + +VerseTwo = \lyricmode { + O | \emphasize Christ, \normal whose voice the | wa -- ters heard, +} + +VerseThree = \lyricmode { + O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood +} + +VerseFour = \lyricmode { + O | \emphasize Tri -- ni -- ty \normal of | love and pow'r +} + +\score { + \new ChoirStaff << + \new Staff << + \clef "treble" + \new Voice = "Soprano" { \voiceOne \global \SopranoMusic } + \new Voice = "Alto" { \voiceTwo \AltoMusic } + \new Lyrics \lyricsto "Soprano" { \VerseOne } + \new Lyrics \lyricsto "Soprano" { \VerseTwo } + \new Lyrics \lyricsto "Soprano" { \VerseThree } + \new Lyrics \lyricsto "Soprano" { \VerseFour } + >> + \new Staff << + \clef "bass" + \new Voice = "Tenor" { \voiceOne \TenorMusic } + \new Voice = "Bass" { \voiceTwo \BassMusic } + >> + >> +} +@end lilypond + + +@node Celkové formátování +@subsection Celkové formátování +@translationof Style sheets + +Die Ausgabe von LilyPond kann sehr stark verändert werden, siehe +zu Einzelheiten @ref{Ladění výstupu,,ladění výstupu}. Aber was ist, +wenn man mehrere Eingabedateien hat, die die gleichen Anpassungen +erfahren sollen? Oder wenn Sie einfach nur die Anpassungen von +der eigentlichen Musik trennen wollen? Das lässt sich recht einfach +erreichen. + +Schauen wir uns ein Beispiel an. Sorgen Sie sich nicht, wenn Sie +den Abschnitt mit den vielen @code{#()} nicht verstehen. Das wird +erklärt in @ref{Pokročilá ladění se Scheme,,pokročilých laděních se Scheme}. + +@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 gibt einige Probleme mit sich überschneidender Ausgabe, die wird +zurechtgerückt mit den Techniken von @ref{Přesouvání předmětů,,přesouvání předmětů}. +Aber jetzt zu den Definitionen von @code{mpdolce} und @code{inst}. +Sie erstellen die gewünschte Ausgabe, aber wir wollen sie vielleicht +auch in einem anderen Stück verwenden. Wir könnten sie immer wieder +kopieren und oben in jedes Stück einfügen, aber das ist sehr aufwändig. +Dadurch werden die Definitionen auch in der Eingabedatei belassen, +und ich finde diese @code{#()} irgendwie hässlich. Verstecken +wir sie also: + +@example +%%% in Datei "definitions.ily" speichern +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 + +Diese Datei wir mit dem @code{\include}-Befehl ziemlich weit oben +in der Datei eingefügt. (Die Erweiterung @file{.ily} wird benutzt, +um diese Datei als eine eingefügte, inkludierte zu kennzeichnen, die +man nicht alleinstehend kompilieren kann.) Jetzt ändern wir die +Noten (in der Datei @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 einige Änderungen könnten wir noch vornehmen. +Das Glissando ist kaum sichtbar, machen wir es also etwas dicker und +näher an den Notenkopf. Die Metronombezeichnung soll über dem +Schlüssel stehen, anstatt über der ersten Note. Und schließlich +mag mein Kompositionsprofessor keine @qq{C}-Taktangaben, das ändern +wir also in @qq{4/4}. + +Ändern Sie jetzt jedoch nicht @file{music.ly}. Ändern Sie die +@file{definitions.ily} mit dem Folgenden: + +@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 besser aus! Aber nehmen wir an, Ich will dieses Stück publizieren. +Mein Professor mag die @qq{C}-Taktangabe nicht, mir gefällt sie aber sehr +gut. Kopieren wir also die Datei @file{definitions.ily} nach +@file{web-publish.ily} und verändern diese. Weil die Noten als PDF +auf dem Monitor dargestellt werden sollen, wird auch die Notengröße +global geändert. + +@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 Eingabedatei muss jetzt nur noch die Zeile +@code{\include "definitions.ily"} mit +@code{\include "web-publish.ily"} ersetzt werden. Das könnte +man natürlich noch besser machen. Es könnte eine Datei +@file{definitions.ily} mit allen Definitionen (also +@code{mpdolce} und @code{inst}) geben, eine Datei +@file{web-publish.ily}, die nur die @code{\layout}-Veränderung +enthält und eine Datei @file{university.ily}, die nur die +Prozedur enthält, die Ausgabe meinem Professor angenehm zu machen. +Der Anfang von @file{music.ly} würde dann folgendermaßen aussehen: + +@example +\include "definitions.ily" + +%%% nur eine der zwei Zeilen auskommentieren! +\include "web-publish.ily" +%\include "university.ily" +@end example + +Diese Herangehensweise kann auch schon nützlich sein, wenn man +nur ein paar Stimmen schreiben will. Ich habe eine ganze Anzahl +an @qq{Stylesheets} für meine Projekte. Ich fange jede Datei mit +der Zeile @code{\include "../global.ily"} an, die etwa folgendes +einbindet: + +@example +%%% global.ily +\version @w{"@version{}"} + +#(ly:set-option 'point-and-click #f) + +\include "../init/init-defs.ly" +\include "../init/init-layout.ly" +\include "../init/init-headers.ly" +\include "../init/init-paper.ly" +@end example + + + +@node Více informací +@subsection Více informací +@translationof Other sources of information + +Die Programmreferenz enthält sehr viel Information über LilyPond, aber +noch více informací findet sich in den internen +LilyPond-Dateien. Um sie erforschen zu können, müssen Sie erst +das richtige Verzeichnis auf Ihrem System finden. Die Position +hängt a) davon ab, ob Ihre LilyPond-Installation mit der vorkompilierten +Version von der LilyPond-Internetseite vorgenommen wurde oder Sie +die Version durch Ihren Paketmanager installiert haben (also +z. B. in einer Linux-Distribution oder unter fink oder cygwin +installiert), und b) auf welchem Betriebssystem Sie das Programm +benutzen: + +@strong{Von lilypond.org heruntergeladen} + +@itemize @bullet +@item Linux + +Wechseln Sie in das Verzeichnis +@file{@var{INSTALL_VERZ}/lilypond/usr/@/share/lilypond/current/} + +@item MacOS X + +Wechseln Sie in das Verzeichnis +@file{@var{INSTALL_VERZ}/LilyPond.app/Contents/@/Resources/share/lilypond/current/} +indem Sie entweder mit dem Befehl @code{cd} vom Terminal aus +in das Verzeichnis wechseln, oder mit Control-Klick auf das +LilyPond-Programmsymbol gehen und @qq{Show Package Contents} +auswählen. + +@item Windows + +Wechseln Sie mit dem Windows Explorer ins Verzeichnis +@file{@var{INSTALL_VERZ}/LilyPond/usr/@/share/lilypond/current/} + +@end itemize + +@strong{Mit einem Paket-Manager installiert oder selber aus +den Quellen kompiliert} + +Wechseln Sie in das Verzeichnis +@file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, wobei +@var{PREFIX} bei Ihrem Paket-Manager oder dem +@code{configure}-Skript gesetzt wird, und @var{X.Y.Z} +die LilyPond-Versionsnummer. + +@smallspace + +In diesem Ordner sind die zwei interessanten Unterordner: + +@itemize +@item @file{ly/} - beinhaltet Dateien im LilyPond-Format +@item @file{scm/} - beinhaltet Dateien im Scheme-Format +@end itemize + +Schauen wir uns zuerst einige Dateien in @file{ly/} an. +Öffnen Sie @file{ly/property-init.ly} in einem Texteditor. +Der, den Sie normalerweise für @file{.ly}-Dateien benutzen, +genügt. Diese Datei enthält die Definitionen aller vordefinierten +Befehle für LilyPond, wie etwa @code{\stemUp} und +@code{\slurDotted}. Sie können sehen, dass es sich um +nichts mehr handelt als Definitionen von Variablen, die eine +oder mehrere @code{\override}-Befehle enthalten. Der +Befehl @code{/tieDotted} etwa wird folgendermaßen definiert: + +@example +tieDotted = @{ + \override Tie #'dash-period = #0.75 + \override Tie #'dash-fraction = #0.1 +@} +@end example + +Wenn Sie diese Voreinstellungen der vordefinierten Befehl nicht +mögen, können Sie sie ganz einfach umdefinieren, genauso wie +jede andere Variable auch, indem Sie sie an den Anfang Ihrer +Quelldatei schreiben. + +Hier sind die wichtigsten Dateien, die sich im Ordner +@file{ly/} befinden: + +@multitable @columnfractions .4 .6 +@headitem Dateiname + @tab Inhalt +@item @file{ly/engraver-init.ly} + @tab Definitionen von Engraver-Kontexten +@item @file{ly/paper-defaults-init.ly} + @tab Spezifikationen von Voreinstellungen für Papiermaße +@item @file{ly/performer-init.ly} + @tab Definitionen von Performer-Kontexten +@item @file{ly/property-init.ly} + @tab Definitionen aller vordefinierten Befehle +@item @file{ly/spanner-init.ly} + @tab Definitionen aller vordefinierten Strecker-Befehle +@end multitable + +Andere Einstellungen (wie die Definitionen von Beschriftungsbefehlen) +sind in @file{.scm}-(Scheme)-Dateien gespeichert. Die +Scheme-Programmiersprache wird benutzt, um eine +programmierbare Schnittstelle zu den internen Operationen von +LilyPond zu haben. Eine weitere Erklärung dieser Dateien ist +im Moment außerhalb des Rahmens dieses Handbuchs, denn +sie erfordern einige Kenntnis der Scheme-Sprache. Die Warnung +ist hier angebracht, dass des ein gutes technisches Verständnis +oder sehr viel Zeit braucht, um Scheme und diese +Dateien zu verstehen (siehe auch @rextend{Scheme-Übung}). + +Wenn Sie sich mit Scheme auskennen, sind hier mögliche +interessante Dateien: + +@multitable @columnfractions .4 .6 +@headitem Dateiname + @tab Inhalt +@item @file{scm/auto-beam.scm} + @tab Sub-Balken-Voreinstellungen +@item @file{scm/define-grobs.scm} + @tab Voreinstellungen für Grob-Eigenschaften +@item @file{scm/define-markup-commands.scm} + @tab Definition aller Markup-Beschriftungsbefehle +@item @file{scm/midi.scm} + @tab Voreinstellung für die MIDI-Ausgabe +@item @file{scm/output-lib.scm} + @tab Einstellungen mit Einfluss auf die Darstellung von Bunddiagrammen, Farben, Versetzungszeichen, Taktlinien usw. +@item @file{scm/parser-clef.scm} + @tab Definitionen der unterstützten Schlüssel +@item @file{scm/script.scm} + @tab Voreinstellungen für Artikulationszeichen +@end multitable + + +@node Vyhnutí se ladění s pomalejším překladem +@subsection Vyhnutí se ladění s pomalejším překladem +@translationof Avoiding tweaks with slower processing + +LilyPond kann einige zusätzliche Tests durchführen, während +die Noten gesetzt werden. Dadurch braucht das Programm länger, +um den Notensatz zu produzieren, aber üblicherweise werden +weniger nachträgliche Anpassungen nötig sein. Wenn eine +Textsilbe oder eine Beschriftung aus dem Rand der Partitur +ragt, wird durch diese Tests die Zeile gerade so weit komprimiert, +dass sie sich innerhalb der Ränder befindet. + +Damit diese Tests immer funktionieren, müssen sie aktiviert werden, +indem die @bs{}@code{override}-Befehle in einer @code{context}-Umgebung +innerhalb der @code{layout}-Umgebung notiert werden und nicht innerhalb +der Noten: + +@example +\score @{ + @{ @dots{}Noten@dots{} @} + \layout @{ + \context @{ + \Score + % Um sicher zu gehen, dass Texte und Liedtext + % innerhalb der Papierränder bleiben + \override PaperColumn #'keep-inside-line = ##t + \override NonMusicalPaperColumn #'keep-inside-line = ##t + @} + @} +@} +@end example + +@code{keep-inside-line} braucht jedoch sehr viel Berechnungen, +sodass es sich anbietet, diese Funktion zunächst nicht zu aktivieren +und erst einzufügen, wenn man die endgültige Version erstellt. +Auf diese Weise muss man nicht mit der Hand @code{\break}-Befehle +hinzufügen, um zu vermeiden, dass Text über den rechten Rand der +Seite hinausragt. + + +@node Pokročilá ladění se Scheme +@subsection Pokročilá ladění se Scheme +@translationof Advanced tweaks with Scheme + +Auch wenn viele Sachen mit @code{\override} und @code{\tweak} +möglich sind, gibt es eine sehr viel mächtigere Möglichkeit, die +Arbeitsweise von LilyPond mit Hilfe der programmierbaren Schnittstelle +zu beeinflussen. Code, der in der Scheme-Programmiersprache +geschrieben ist, kann direkt in die interne Satzmaschine von LilyPond +eingefügt werden. Natürlich brauchen Sie dazu wenigstens ein +grundlegendes Verständnis von Scheme. Eine Einleitung finden +Sie in der @rextend{Scheme-Übung}. + +Zur Illustration der vielen Möglichkeiten soll gezeigt werden, dass eine +Eigenschaft nicht nur auf eine Konstante, sondern auch auf eine +Scheme-Prozedur gesetzt werden kann, die dann jedes Mal +aufgerufen wird, wenn die Eigenschaft von LilyPond benutzt +wird. Die Eigenschaft kann damit dynamisch auf einen Wert +gesetzt werden, der durch die Prozedur jedes Mal neu bestimmt +wird. In diesem Beispiel wird die Farbe der Notenköpfe entsprechend +zu ihrer Position innerhalb der Tonleiter gesetzt. + +@cindex x11-Farben, Beispiel zur Benutzung +@cindex Notenkopf, Beispiel zur Veränderung +@cindex Farb-Eigenschaft, in Scheme-Prozedur gesetzt + +@lilypond[quote,verbatim,ragged-right] +#(define (color-notehead grob) + "Color the notehead according to its position on the staff." + (let ((mod-position (modulo (ly:grob-property grob 'staff-position) + 7))) + (case mod-position + ;; Return rainbow colors + ((1) (x11-color 'red )) ; for C + ((2) (x11-color 'orange )) ; for D + ((3) (x11-color 'yellow )) ; for E + ((4) (x11-color 'green )) ; for F + ((5) (x11-color 'blue )) ; for G + ((6) (x11-color 'purple )) ; for A + ((0) (x11-color 'violet )) ; for B + ))) + +\relative c' { + % Arrange to obtain color from color-notehead procedure + \override NoteHead #'color = #color-notehead + a2 b | c2 d | e2 f | g2 a | +} +@end lilypond + +Weiter Beispiele, die die Benutzung dieser programmierbaren +Schnittstelle zeigen, finden sich in @rextend{Optimierungen mit Scheme}. diff --git a/Documentation/cs/macros.itexi b/Documentation/cs/macros.itexi old mode 100644 new mode 100755 index dc582387c6..38d2dac975 --- a/Documentation/cs/macros.itexi +++ b/Documentation/cs/macros.itexi @@ -116,7 +116,7 @@ Tento dokument byl zařazen jako volně šiřitelné dílo. @c ***** Title page ***** @ifnottex -@node Top +@node Začátek @top LilyPond -- \TITLE\ @cartouche diff --git a/Documentation/cs/usage/external.itely b/Documentation/cs/usage/external.itely new file mode 100755 index 0000000000..8432c643d5 --- /dev/null +++ b/Documentation/cs/usage/external.itely @@ -0,0 +1,662 @@ +@c -*- coding: utf-8; mode: texinfo; -*- + +@ignore + Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + + 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.13.36" + +@c Translators: Pavel Fric + +@node Vnější programy +@chapter Vnější programy +@translationof External programs + +LilyPond kann mit anderen Programmen auf verschiedene Weise interagieren. + +@menu +* Ukázat a klepnout:: +* Podpora textových editorů:: +* Převod z jiných formátů:: +* Výstup LilyPondu do jiných programů:: +* Nezávislé include úryvky:: +@end menu + + +@node Ukázat a klepnout +@section Ukázat a klepnout +@translationof Point and click + +@cindex Ukázat a klepnout + +Ukázat a klepnout erlaubt es, die Noten in der Eingabedatei schnell +zu finden, indem man auf sie im PDF-Programm klickt. Das erleichtert +es, die Stellen zu finden, die Fehler in der Notation verursachen. + +Wenn diese Funktionalität aktiv ist, fügt LilyPond Hyperlinks zur +PDF-Datei hinzu. Diese Hyperlinks werden an den Webbrowser gesendet, +der einen Texteditor mit dem Cursor an der richtigen Stelle öffnet. + +Damit diese Kettenreaktion funktionieren kann, müssen Sie das +PDF-Programm dazu anweisen, Hyperlinks zu folgen, indem das Skript +@file{lilypond-invoke-editor}, welches mit LilyPond kommt, verwendet +wird. + +Für Xpdf unter UNIX sollte folgende Zeile in der Datei +@file{xpdfrc}@footnote{Unter UNIX findet man diese Datei +entweder in @file{/etc/xpdfrc} oder als @file{.xpdfrc} im +home-Verzeichnis.} stehen: + +@example +urlCommand "lilypond-invoke-editor %s" +@end example + +Das Programm @file{lilypond-invoke-editor} ist ein kleines +Hilfsprogramm. Es ruft einen Editor für besondere @code{textedit}-URIs# +auf und einen Webbrowser für andere. Es testes die Umgebungsvariable +@code{EDITOR} nach folgenden Mustern: + +@table @code +@item emacs + das ruft auf +@example +emacsclient --no-wait +@var{line}:@var{column} @var{file} +@end example +@item gvim + das ruft auf +@example +gvim --remote +:@var{line}:norm@var{column} @var{file} +@end example + +@item nedit + das ruft auf +@example + nc -noask +@var{line} @var{file}' +@end example +@end table + +Die Umgebungsvariable @code{LYEDITOR} wird benutzt, um dieses Verhalten +zu umgehen. Sie enthält die Kommandozeile, mit der der Editor aufgerufen +wird, wobei @code{%(file)s}, @code{%(column)s} und @code{%(line)s} mit +der Datei, Spalte und Zeile ersetzt wird. Die Einstellung + +@example +emacsclient --no-wait +%(line)s:%(column)s %(file)s +@end example + +@noindent +für @code{LYEDITOR} entspricht dem normalen Aufruf von emacsclient. + + +@cindex Dateigröße, PDF +@cindex Ausgabedatei, Dateigröße + +Die point-and-click-Links vergrößern die Größe des PDFs sehr stark. +Um die Größe von PDFs und auch PS-Dateien zu verkleinern, kann +ukázat a klepnout ausgeschaltet werden, indem man in der Eingabedatei + +@example +\pointAndClickOff +@end example + +@noindent +schreibt. Ukázat a klepnout kann explizit aktiviert werden mit dem Befehl + +@example +\pointAndClickOn +@end example + +Alternativ können Sie ukázat a klepnout auch mit einer Kommandozeilenoption anschalten: + +@example +lilypond -dno-point-and-click file.ly +@end example + +@warning{Sie sollten immer ukázat a klepnout ausschalten, wenn Sie LilyPond-Dateien +verteilen wollen, damit keine Informationen über Ihre Dateistrukturen in den +Dateien gespeichert werden, was ein Sicherheitsrisiko darstellen könnte.} + + +@node Podpora textových editorů +@section Podpora textových editorů +@translationof Text editor support + +@cindex Editoren +@cindex vim +@cindex emacs +@cindex Modi, Editor +@cindex Syntaxhervorhebung +@cindex Hervorhebung, Syntax +@cindex Syntax highlight + +Verschiedene Editoren unterstützen LilyPond + +@menu +* Režim Emacs:: +* Režim Vim:: +* Jiné editoryn:: +@end menu + +@node Režim Emacs +@unnumberedsubsec Režim Emacs +@translationof Emacs mode + +Emacs hat einen @file{lilypond-mode}-Modus, der Ergänzung von Befehlen, +Einrückung, Syntaxhervorhebung, die Paarung von LilyPond-Klammern, +einfache Tastaturkürzel zur Übersetzung und das Lesen von LilyPond-Dokumentation +mit Info unterstützt. Wenn @file{lilypond-mode} nicht auf Ihrem Computer +installiert ist, siehe unten. + +Režim Emacs zur Noteneingabe und zum Kompilieren mit LilyPond bfindet sich +in dem Quellarchiv im @file{elisp}-Verzeichnis. Führen Sie @command{make +install} aus, damit es nach @var{elispdir} installiert wird. Die Datei +@file{lilypond-init.el} sollte in @var{Ladepfad}@file{/site-start.d/} gespeichert +werden oder Ihrer @file{~/.emacs} bzw. @file{~/.emacs.el} hinzugefügt werden. + +Als ein Benutzer können Sie Ihren Quellpfad (z. B. @file{~/site-lisp/}) +zum @var{Ladepfad} hinzufügen, indem Sie die (veränderte) folgende +Zeile in Ihr @file{~/.emacs} kopieren: + +@c any reason we do not advise: (push "~/site-lisp" load-path) +@example +(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path)) +@end example + + +@node Režim Vim +@unnumberedsubsec Režim Vim +@translationof Vim mode + +Für @uref{http://@/www@/.vim@/.org,Vim} gibt es ein Dateiartplugin, einen +Einzugsmodus und einen Syntaxhervorhebungsmodus für LilyPond. Um alle diese +Eigenschaften zu aktivieren, erstellen (oder verändern) Sie die Datei +@file{$HOME/.vimrc}, sodass sie folgende Zeilen enthält: + +@example +filetype off +set runtimepath+=/usr/local/share/lilypond/current/vim/ +filetype on +@end example + +@noindent +Wenn LilyPond nicht in @file{/usr/local/} installiert ist, müssen Sie +den Pfad anpassen. Das wird besprochen in +@rlearning{Mehr Information}. + + +@node Jiné editory +@unnumberedsubsec Jiné editory +@translationof Other editors + +Jiné editory (sowohl Texteditoren als auch graphische Editoren) haben +Unterstützung für LilyPond, aber ihre besonderen Konfigurationsdateien werden +nicht mit LilyPond zusammen verteilt. Lesen Sie die entsprechende Dokumenation +zu näheren Fragen. Derartige Editoren finden sich unter @rweb{Leichteres Editieren}. + + +@node Převod z jiných formátů +@section Převod z jiných formátů +@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 @rweb{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 +* Vyvolání midi2ly:: Import von MIDI. +* Vyvolání musicxml2ly:: Import von MusicXML. +* Vyvolání abc2ly:: Import von ABC. +* Vyvolání etf2ly:: Import von (alten) Finale-Dateien. +* Jiné formáty:: +@end menu + +@node Vyvolání midi2ly +@subsection Vyvolání @command{midi2ly} +@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{Převod z jiných formátů,,převod z jiných formátů}. + +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 Vyvolání musicxml2ly +@subsection Vyvolání @command{muscxml2ly} +@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 +@file{.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{Převod z jiných formátů,,převod z jiných formátů}. + +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=SPRACHE +Benutzt SPRACHE für die Notenbezeichnungen, etwa "deutsch" für deutsche +Notenbezeichnungen. + +@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{.xml}. +@end table + + +@node Vyvolání abc2ly +@subsection Vyvolání @command{abc2ly} +@translationof Invoking abc2ly + +@warning{Dieses Programm ist nicht unterstützt und kann aus kommenden +LilyPond-Versionen entfernt werden.} + +@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 + +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. Gleichermaßen wird mit + +@example +%%LY slyrics more words +@end example + +@noindent +der Text, der auf das @qq{slylrics}-Schlüsselwort folgt, in die aktuelle +Gesangstextzeile eingefügt. + + +@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 Vyvolání etf2ly +@subsection Vyvolání @command{etf2ly} +@translationof Invoking etf2ly + +@warning{Dieses Programm ist nicht unterstützt und kann in kommenden +LilyPond-Versionen entfernt werden.} + +@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{Převod z jiných formátů,,převod z jiných formátů}. + +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 Jiné formáty +@subsection Jiné formáty +@translationof Other formats + +@cindex Vnější programy, LilyPond-Dateien erstellen + +LilyPond kommt nicht mit der Unterstützung für jiné formáty, aber einige +vnější programy können auch LilyPond-Dateien erstellen. Diese finden +sich unter @rweb{Leichteres Editieren}. + + + +@node Výstup LilyPondu do jiných programů +@section Výstup LilyPondu do jiných programů +@translationof LilyPond output in other programs + +Dieser Abschnitt stellt Methoden vor, wie Text und Musik auf andere +Weise kombiniert werden können als dies durch @command{lilypond-book} +automatisiert geschieht. + + +@menu +* Hodně uvozovek v dlouhém notovém zápisu:: +* Vložení not LilyPondu do OpenOffice.org:: +* Vložení not LilyPondu do jiných programů:: +@end menu + +@node Hodně uvozovek v dlouhém notovém zápisu +@subsection Hodně uvozovek v dlouhém notovém zápisu +@translationof Many quotes from a large score + +Wenn aus einer großen Partitur viele kleine Fragmente eingefügt +werden sollen, kann dazu das @q{clip systems} Feature benutzt werden. +Siehe @ruser{Notationsfragmente extrahieren}. + + +@node Vložení not LilyPondu do OpenOffice.org +@subsection Vložení not LilyPondu do OpenOffice.org +@translationof Inserting LilyPond output into OpenOffice.org + +@cindex OpenOffice.org + +Musik im LilyPond-Format kann in OpenOffice.org eingefügt werden mittels +@uref{http://@/ooolilypond@/.sourceforge@/.net@/,OOoLilyPond}. + + +@node Vložení not LilyPondu do jiných programů +@subsection Vložení not LilyPondu do jiných programů +@translationof Inserting LilyPond output into other programs + +Um die Ausgabe von LilyPond in anderen Programmen einzufügen, +sollte @code{lilypond} anstelle von @code{lilypond-book} +benutzt werden. Jedes Beispiel muss +getrennt manuell erzeugt und ins Dokument eingefügt werden; +für letzteres schlagen Sie bitte im Handbuch Ihrer +Textverarbeitungs-Software nach. Die meisten Programme +unterstützen das Einfügen von Grafiken im @file{PNG}-, @file{EPS}- +oder @file{PDF}-Format. + +Um den leeren Rand um die Notenzeilen zu verringern, können folgende +Einstellungen benutzt werden: + +@example +\paper@{ + indent=0\mm + line-width=120\mm + oddFooterMarkup=##f + oddHeaderMarkup=##f + bookTitleMarkup = ##f + scoreTitleMarkup = ##f +@} + +@{ c1 @} +@end example + +Eine @file{EPS}-Datei kann mit folgendem Befehl erzeugt werden: + +@example +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts Dateiname.ly +@end example + +@noindent +eine @file{PNG}-Datei mittels: + +@example +lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png Dateiname.ly +@end example + + +@node Nezávislé include úryvky +@section Nezávislé @code{include} úryvky +@translationof independent includes + +Einige Leute haben große (und nützliche!) Code-Abschnitte geshrieben, +die man in vielen Projekten verwenden kann. Dieser Code wird möglicherweise +auch eines Tages in LilyPond selbst integriert werden, aber bis dahin +müssen Sie ihn selber herunterladen und mit @code{\include} selber +einfügen. + + +@menu +* Artikulace MIDI:: +@end menu + + +@node Artikulace MIDI +@subsection Artikulace MIDI +@translationof MIDI articulation + +LilyPond kann benutzt werden, um MIDI-Ausgabe zu erzeugen, etwa +um hörend zu korrigieren, was man notiert hat. Jedoch werden nur +Dynamik, explizite Tempoänderungen und die Noten und Dauern selber +in der MIDI-Datei aufgenommen. + +Das @emph{articulate}-Projekt ist ein Versuch, mehr Information +in eine MIDI-Datei zu kopieren. Es funktioniert, indem man Noten, +die sich nicht unter Bögen befinden, verkürzt, um die Noten +zu @qq{artikulieren}. Die Stärke der Kürzung hängt von den +Aritkulationszeichen ab, die an die Noten gehängt werden: +Staccato halbiert den Notwert, Tenuto gibt der Note ihre gesamte Dauer +usw. Das Skript kann auch Triller und Doppelschläge in MIDI umwandeln, +und man könnte auch andere Ornamente implementieren. + +@example +@uref{http://@/www@/.nicta@/.com@/.au/@/people/@/chubbp/@/articulate} +@end example + +@knownissues + +Die größte Einschränkung ist, dass man nur die Sachen beeinflussen kann, +die man weiß: alles, was nur Textbeschriftung ist (anstelle einer Noteneigenschaft) +wird immernoch ignoriert. diff --git a/Documentation/cs/usage/lilypond-book.itely b/Documentation/cs/usage/lilypond-book.itely new file mode 100755 index 0000000000..42d0821dc8 --- /dev/null +++ b/Documentation/cs/usage/lilypond-book.itely @@ -0,0 +1,1312 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*- + +@ignore + Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + + 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.13.36" + +@c Translators: Pavel Fric + +@c Note: keep this node named so that `info lilypond-book' brings you here. +@node lilypond-book +@chapter Vyvolání @command{lilypond-book} +@translationof lilypond-book + +Wenn Sie in ein Dokument Grafiken Ihres Musiksatzes einfügen möchten, so +können Sie genauso vorgehen, wie Sie andere Grafiken einfügen würden: Die +Bilder werden getrennt vom Dokument im PostScript- oder PNG-Format erstellt +und können dann in @LaTeX{} oder HTML eingefügt werden. + +@command{lilypond-book} automatisiert diesen Prozess: Dieses +Programm extrahiert Musik-Schnipsel aus Ihrem Dokument, +ruft @command{lilypond} auf und fügt die resultierenden Bilder +in Ihr Dokument ein. Die Länge der Zeilen und die Schriftgroße +werden dabei Ihrem Dokument angepasst. + +@command{lilypond-book} ist ein eigenständiges Programm und wird +üblicherweise von der Kommandozeile aufgerufen. Nähere Informationen +hierzu finden sich in @ref{Benutzung auf der Kommandozeile}. Wenn Sie MacOS 10.3 +oder 10.4 benutzen und Probleme mit @code{lilypond-book} haben, lesen +Sie @rweb{MacOS X}. + +Dieses Vorgehen kann bei @LaTeX{}, HTML, Texinfo oder DocBook Dokumenten +angewendet werden. + +@cindex texinfo +@cindex latex +@cindex texinfo +@cindex texi +@cindex html +@cindex docbook +@cindex Dokument, Noten einfügen in +@cindex HTML, Noten in +@cindex Texinfo, Noten in +@cindex DocBook, Noten in +@cindex @LaTeX{}, Noten in + + +@menu +* Hudebněvědný text jako příklad:: +* Začlenění not do textu:: +* Volby pro hudební kousky:: +* Vyvolání lilypond-book:: +* Souborové přípony:: +* Předlohy pro lilypond-book:: +* Sdílení obsahu:: +* Náhradní způsoby míchání not a textu:: +@end menu + +@node Hudebněvědný text jako příklad +@section Hudebněvědný text jako příklad +@translationof An example of a musicological document + + +@cindex Musikwissenschaft + +Zahlreiche Texte enthalten Musikbeispiele: musikwissenschaftliche +Abhandlungen, Liederbücher oder Handbücher wie dieses. Solche +Texte können händisch erzeugt werden, indem einfach die Musikbeispiele +als Grafik (PostScript, PNG, GIF, etc.) im Textverarbeitungsprogramm +eingefügt werden. Für HTML, @LaTeX{}, Texinfo und DocBook Dokumente +existiert jedoch ein Weg, dies automatisiert durchzuführen. + +Das Programm @code{lilypond-book} extrahiert die Musikfragmente aus +dem Dokument, formatiert sie automatisiert in eine Grafik und fügt die +resultierenden Notenbeispiele dann wieder in das Dokument ein. Dies soll +hier an einem einfachen @LaTeX{}-Beispiel verdeutlicht werden. Das Beispiel +selbst enthält schon Erklärungen, sodass wir es hier nicht weiter diskutieren +müssen. + +@subheading Eingabe + +@quotation +@verbatim +\documentclass[a4paper]{article} + +\begin{document} + +Dokumente für \verb+lilypond-book+ können Musik und Text nach Belieben +kombinieren. Zum Beispiel: + +\begin{lilypond} +\relative c' { + c2 e2 \times 2/3 { f8 a b } a2 e4 +} +\end{lilypond} + +Optionen für \verb+lilypond+ werden dabei in eckige Klammern gesetzt. + +\begin{lilypond}[fragment,quote,staffsize=26,verbatim] + c'4 f16 +\end{lilypond} + +Größere Beispiele können auch in einer eigenständigen Datei gespeichert +und dann mit \verb+\lilypondfile+ eingebunden werden. + +\lilypondfile[quote,noindent]{screech-boink.ly} + +(Falls nötig kann @file{screech-boink.ly} durch eine beliebige andere +@file{.ly}-Datei im selben Verzeichnis wie diese Datei ersetzt werden.) + +\end{document} +@end verbatim +@end quotation + +@subheading Verarbeitung + +Speichern Sie den obigen @LaTeX{}-Quellcode in eine Datei @file{lilybook.lytex} +und führen Sie dann in der Kommandozeile folgende Befehle aus: + +@c keep space after @version{} so TeX doesn't choke +@example +lilypond-book --output=out --pdf lilybook.lytex +@emph{lilypond-book (GNU LilyPond) @version{} } +@emph{Reading lilybook.lytex...} +@emph{..(viele Ausgabezeilen entfernt)..} +@emph{Compiling lilybook.tex...} +cd out +pdflatex lilybook +@emph{..(viele Ausgabezeilen entfernt)..} +xpdf lilybook +@emph{(Ersetzen Sie @command{xpdf} durch Ihren PDF-Betrachter)} +@end example + +Die Ausführung von @command{lilypond-book} a @command{latex} erzeugt +zahlreiche temporäre Dateien, die das Arbeitsverzeichnis unnötig +vollstopfen würden. Daher empfiehlt sich die Benutzung der @code{--output=@var{dir}} +Option, wodurch die Dateien im Unterverzeichnis @file{dir} erzeugt werden. + +Das Endresultat des obigen @LaTeX{}-Beispiels ist im nächsten Abschnitt +zu sehen.@footnote{Da dieses Handbuch mit Texinfo erzeugt wurde, +kann sich das Aussehen des Beispiels leicht von dem mit @LaTeX{} +erzeugten unterscheiden.} + +@page + +@subheading Ausgabe + +Dokumente für @command{lilypond-book} können Musik und Text nach Belieben +kombinieren. Zum Beispiel: + +@lilypond +\relative c' { + c2 e2 \times 2/3 { f8 a b } a2 e4 +} +@end lilypond + +Optionen für @command{lilypond} werden dabei in eckige Klammern gesetzt. + +@lilypond[fragment,quote,staffsize=26,verbatim] +c'4 f16 +@end lilypond + +Größere Beispiele können auch in einer eigenständigen Datei gespeichert +und dann mit @code{\lilypondfile} eingebunden werden. + +@lilypondfile[quote,noindent]{screech-boink.ly} + + +@page + + + +@node Začlenění not do textu +@section Začlenění not do textu +@translationof Integrating music and text + +In diesem Abschnitt soll die Integration von LilyPond mit den +verschiedenen Dateiformaten detailliert erläutert werden. + +@menu +* LaTeX:: +* Texinfo:: +* HTML:: +* DocBook:: +@end menu + +@node LaTeX +@subsection @LaTeX{} +@translationof LaTeX + + +@LaTeX{} ist der de-facto Standard zur Publikation von wissenschaftlichen Texten +in Naturwissenschaft und Technik. Es basiert auf dem Schriftsetzer @TeX{}, +der die bestmögliche Typographie erzeugt. + +Siehe die @uref{http://@/www@/.ctan@/.org/@/tex@/-archive/@/info/@/lshort/@/german/, +@emph{@LaTeX{}2e-Kurzbeschreibung}} für eine Einführung in die +Benutzung von @LaTeX{}. + +Musikbeispiele können eingegeben werden als + +@example +\begin@{lilypond@}[Optionen,kommen,hierhin] + IHR LILYPOND-QUELLCODE +\end@{lilypond@} +@end example + +@noindent +oder + +@example +\lilypondfile[Optionen,kommen,hier]@{@var{Dateiname}@} +@end example + +@noindent +oder + +@example +\lilypond@{ IHR LILYPOND-QUELLCODE @} +@end example + +Zusätzlich kann mit @code{\lilypondversion} die benutzte Versionsnummer +von LilyPond angezeigt werden. Der Aufruf von @command{lilypond-book} +liefert eine Datei, die dann mit @LaTeX{} weiter verarbeitet werden kann. + +Dies soll hier an einigen Beispielen gezeigt werden. Die @code{lilypond}-Umgebung + +@example +\begin@{lilypond@}[quote,fragment,staffsize=26] + c' d' e' f' g'2 g'2 +\end@{lilypond@} +@end example + +@noindent +erzeugt + +@lilypond[quote,fragment,staffsize=26] +c' d' e' f' g'2 g'2 +@end lilypond + +Die Kurzversion + +@example +\lilypond[quote,fragment,staffsize=11]@{@} +@end example + +@noindent +erzeugt + +@lilypond[quote,fragment,staffsize=11]{} + +@noindent +Innerhalb des @code{\lilypond@{@}} Befehls dürfen keine geschwungenen +Klammern @code{@{} oder @code{@}} vorkommen, weshalb dieser Befehl +nur mit der @code{fragment}-Option Sinn macht. + +Die Standardzeilenlänge wird bestimmt, indem die Angaben in der Dokumentpräambel, +also dem Teil der @LaTeX{} Datei vor dem @code{\begin@{document@}}, +analysiert werden. Der @command{lilypond-book}-Befehl sendet diese +Angaben an @LaTeX{}, um herauszufinden, wie breit der Text tatsächlich +ist. Die Breite der Notenzeilen wird dann an diese Textbreite angepasst. +Ein derartig heuristischer Algorithmus kann natürlich auch versagen, +wobei man in diesem Fall die Breite auch explizit durch die +@code{line-width} Option des @code{\lilypond@{@}} oder @code{\begin@{lilypond@}} +Befehls angeben kann. + +@cindex Titel und lilypond-book +@cindex \header in @LaTeX{}-Dokumenten + +Jedes Musikbeispiele ruft die folgenden Makros auf, wenn sie vom Benutzer +definiert wurden: + +@itemize @bullet +@item @code{\preLilyPondExample} -- wird vor der Musik aufgerufen, + +@item @code{\postLilyPondExample} -- wird nach der Musik aufgerufen, + +@item @code{\betweenLilyPondSystem[1]} -- wird zwischen den einzelnen +Systemen aufgerufen, wenn @code{lilypond-book} das Beispiel in verschiedene +PostScript Dateien getrennt hat. Dieser @LaTeX{}-Befehl muss so definiert +werden, dass er genau ein Argument erhält, nämlich die Zahl der bereits +in @LaTeX{} eingefügten Dateien dieses Beispiels. Als Standard wird einfach +ein @code{\linebreak} eingefügt. +@end itemize + +@ignore +Broken stuff. :( + +@cindex Latex, Feta Schriftart +@cindex fetachar + +Um Zeichen wie Auflösungszeichen, Kreuze, Fermaten etc. aus der Feta-Schriftart +von LilyPond in @LaTeX{} einzufügen, muss @code{\input@{titledefs@}} benutzt werden, +wodurch dann der Befehl @code{\fetachar} zur Verfügung steht. + +@example +\documentclass[a4paper]@{article@} + +\input@{titledefs@} + +\begin@{document@} + +\fetachar\fetasharp + +\end@{document@} +@end example + +Die Namen der Symbole sind in der Datei @file{feta20.tex} definiert. Sie finden +den Pfad zu dieser Datei mit dem Befehl + +@example +kpsewhich feta20.tex +@end example + +@end ignore + +@snippets + +Manchmal ist es nötig, Musikelemente wie Halte- oder Bindebögen so darzustellen, +als ob sie am Ende des Musikausschnittes noch weitergehen würden. Eine solche +Ausgabe kann erreicht werden, indem ein Zeilenumbruch in die Notenzeile +eingefügt wird und die Ausgabe der folgenden Notenzeile unterdrückt wird. + +In @LaTeX{} wird dazu der Befehl @code{\betweenLilyPondSystem} einfach derartig +programmiert, dass die Ausgabe der einzelnen Notensysteme abgebrochen wird, +sobald die gewünschte Anzahl an Systemen erreicht ist. Da +@code{\betweenLilyPondSystem} zum ersten Mal nach dem ersten System aufgerufen +wird, ist die Ausgabe nur eines Systems trivial. + +@example +\def\betweenLilyPondSystem#1@{\endinput@} + +\begin@{lilypond@}[fragment] + c'1\( e'( c'~ \break c' d) e f\) +\end@{lilypond@} +@end example + +Um eine größere Zahl an System nötig, dann muss dementsprechend eine +@TeX{}-Bedingung vor dem @code{\endinput} benutzt werden: + +@example +\def\betweenLilyPondSystem#1@{ + \ifnum##1<2\else\endinput\fi +@} +@end example + +Dieses Beispiel bricht nach genau zwei ausgegebenen Notenzeilen ab. +Für eine andere Anzahl braucht nur @q{2} durch die entsprechende +Anzahl ersetzt werden. + +Die Definition von @code{\betweenLilyPondSystem} bleibt gültig, +bis @TeX{} die aktuelle Umgebung in @LaTeX{} verlässt oder der +Befehl durch eine neue Definition überschrieben wird. +Dies kann etwa folgendermaßen in der @LaTeX{}-Datei geschehen: + +@example +\let\betweenLilyPondSystem\undefined +@end example + +Obige Definition von @code{\betweenLilyPondSystem} kann durch die +Definition eines @TeX{}-Makros auch verallgemeinert werden, + +@example +\def\onlyFirstNSystems#1@{ + \def\betweenLilyPondSystem##1@{\ifnum##1<#1\else\endinput\fi@} +@} +@end example + +@noindent +wobei diesem Makro @code{\onlyFirstNSystems} einfach die Anzahl der +gewünschten Systeme übergeben wird: + +@example +\onlyFirstNSystems@{3@} +\begin@{lilypond@}...\end@{lilypond@} +\onlyFirstNSystems@{1@} +\begin@{lilypond@}...\end@{lilypond@} +@end example + +@seealso +@command{lilypond-book} stellt auch zahlreiche Kommandozeilen-Optionen zur +Verfügung. Für eine Liste dieser Optionen und andere hilfreiche Details zur +Verarbeitung von @LaTeX{}-Dokumenten, siehe @ref{Vyvolání lilypond-book,,vyvolání lilypond-book}. + + + + +@node Texinfo +@subsection Texinfo +@translationof Texinfo + +Texinfo ist das Standard-Dokumentationsformat des GNU Projekts. Ein Beispiel +für ein Dokument im Texinfo Format ist dieses Handbuch, wobei die HTML-, PDF- und +Info-Versionen alle aus demselben Texinfo Dokument erzeugt werden. + +In der Eingabedatei wir Musik eingegeben als + +@example +@@lilypond[Optionen,kommen,hier] + IHR LILYPOND-QUELLCODE +@@end lilypond +@end example + +@noindent +oder + +@example +@@lilypond[Optionen,kommen,hier]@{ IHR LILYPOND-QUELLCODE @} +@end example + +@noindent +oder + +@example +@@lilypondfile[Optionen,kommen,hier]@{@var{Dateiname}@} +@end example + +Zusätzlich kann mit @code{@@lilypondversion} die aktuelle Versionsnummer +von LilyPond angezeigt werden. + +Wenn @command{lilypond-book} eine derartige Datei verarbeitet, +wird eine Texinfo-Datei mit der Erweiterung @file{.texi} erzeugt, +die @code{@@image} Befehle für die Ausgabe nach HTML, Info und PDF +enthält. @command{lilypond-book} erzeugt die entsprechenden Grafiken +der Musikbeispiele im EPS- und PDF-Format für die Ausgabe nach PDF +und im PNG-Format für die Ausgabe nach HTML und Info. + +Hier sollen zwei einfache Beispiele gezeigt werden. Eine @code{lilypond} Umgebung + +@example +@@lilypond[fragment] +c' d' e' f' g'2 g' +@@end lilypond +@end example + +@noindent +erzeugt + +@lilypond[fragment] +c' d' e' f' g'2 g' +@end lilypond + +Die Kurzversion + +@example +@@lilypond[fragment,staffsize=11]@{@} +@end example + +@noindent +erzeugt + +@lilypond[fragment,staffsize=11]{} + +Im Gegensatz zu @LaTeX{} erzeugt @code{@@lilypond@{...@}} allerdings keine Grafik +im Fließtext, sondern setzt sie immer in einen eigenen Absatz. + + +@node HTML +@subsection HTML +@translationof HTML + +Noten werden eingegeben als + +@example + +\key c \minor c4 es g2 + +@end example + +@noindent +@command{lilypond-book} erzeugt dann daraus eine HTML-Datei mit den entsprechenden +@code{} Tags für die Musikbeispiele in jeweils einem eigenen Absatz. + +@lilypond[fragment,relative=2] +\key c \minor c4 es g2 +@end lilypond + +Für Grafiken im Fließtext kann @code{} benutzt werden, wobei +die Optionen durch einen Doppelpunkt von der Musik getrennt angegeben werden. + +@example +Musik in derselben Zeile. +@end example + +Um Dateien mit Musik einzubinden, kann folgendermaßen vorgegangen werden: + +@example +@var{Dateiname} +@end example + +Eine Liste der Optionen, die man mit @code{lilypond} oder @code{lilypondfile} +benutzen kann, siehe @ref{Volby pro hudební kousky,,volby pro hudební kousky} + +Zusätzlich gibt @code{} die aktuelle Versionsnummer +von LilyPond aus. + + +@node DocBook +@subsection DocBook +@translationof DocBook + + +Bei der Einbindung von Musik im LilyPond-Format in DocBook soll die +Konformität unseres DocBook Dokuments erhalten bleiben und damit +die Bearbeiten mit DocBook-Editoren sowie die Validierung weiter +möglich bleiben. Aus diesem Grund werden in DocBook keine eigenen Tags +wie in HTML benutzt, sondern die von den vorhandenen DocBook-Elementen +vorgegebenen Konventionen entsprechend benützt. + +@subheading Definitionen + +Für die Einbindung von LilyPond Code werden in allen Fällen die +@code{mediaobject} und @code{inlinemediaobject} Elemente benutzt, +die unsere Beispiele in einem eigenen Absatz oder im Fließtext +einfügen. Die Optionen zur Formatierung mit LilyPond werden dabei +in der @code{role} Eigenschaft des innersten Elements angegeben, +wie im nächsten Abschnitt gezeigt wird. Die DocBook Datei, die +dann von @command{lilypond-book} verarbeitet wird, sollte der Klarheit +halber die Dateierweiterung @file{.lyxml} (jedenfalls nicht +@file{.xml}) besitzen. + +@subheading Eine LilyPond-Datei einfügen + +Dies ist der einfachste Fall: Die LilyPond-Datei besitzt die Erweiterung +@file{.ly} und wird einfach als @code{imageobject} eingebettet: + +@example + + + + + +@end example + +Für das äußerste Element kann je nach Bedarf @code{mediaobject} oder +@code{inlinemediaobject} benutzt werden. + +@subheading LilyPond-Code einfügen + +Die Einbindung von LilyPond-Code direkt in der DocBook-Datei ist +durch die Benutzung von @code{programlisting} möglich, +wobei die Sprache auf @code{lilypond} gesetzt wird: + +@example + + + +\context Staff \with @{ + \remove Time_signature_engraver + \remove Clef_engraver@} + @{ c4( fis) @} + + + +@end example + +Das äußerste Element ist also @code{mediaobject} oder +@code{inlinemediaobject}, welches ein @code{textobject} mit dem +@code{programlisting} enthält. + +@subheading Ein DocBook-Dokument übersetzen + +Der Aufruf von @command{lilypond-book} mit der @file{.lyxml}-Datei +erzeugt ein gültiges DocBook-Dokument mit der Erweiterung @file{.xml}, +welches normal weiterverarbeitet werden kann. Bei Benutzung von +@uref{http://@/dblatex@/.sourceforge@/.net@/,dblatex} wird daraus +automatisch eine PDF-Datei erzeugt. Für die Erzeugung von HTML (HTML +Hilfe, JavaHelp, etc.) können die offiziellen DocBook XSL-Stylesheets +benutzt werden. Eventuell müssen dafür allerdings kleinere Anpassungen +vorgenommen werden. + + +@node Volby pro hudební kousky +@section Volby pro hudební kousky +@translationof Music fragment options + +Im Folgenden meint @q{LilyPond-Befehl} einen beliebigen in den vorgehenden +Abschnitten beschriebenen Befehl, der ein LilyPond-Fragment in eine Datei +einfügt und von @command{lilypond-book} verarbeitet wird. Der Einfachheit +halber werden hier alle LilyPond-Befehle in der Syntax von @LaTeX{} +dargestellt. + +Zu beachten ist, dass die Optionen eines LilyPond-Befehls von links +nach rechts verarbeitet werden. Wenn eine Option also mehrfach angegeben +wird, wird nur die letzte benutzt. + +Die folgenden Optionen können für LilyPond-Befehle benutzt werden: + +@table @code +@item staffsize=@var{ht} +Setzt die Höhe einer Notenzeile auf @var{ht}, angegeben in Punkten. + +@item ragged-right +Erzeugt Notenzeilen im Flattersatz mit natürlichem Abstand der Noten. In +anderen Worten: @code{ragged-right = ##t} wird in das Musikfragment +eingefügt. Dies ist die Standardeinstellung für den +@code{\lilypond@{@}}-Befehl, +wenn die Option @code{line-width} nicht angegeben wird. +Ebenso ist dies die Standardeinstellung für die @code{lilypond}-Umgebung, +wenn die Option @code{fragment}, aber keine Zeilenlänge +explizit angegeben ist. + +@item noragged-right +Streckt Musikfragmente mit nur einer Notenzeile auf die volle Breite, +es wird also @code{ragged-right = ##f} in das Musikfragment eingefügt. + +@item line-width +@itemx line-width=@var{Breite}\@var{Einheit} +Setzt die Breite der Notenzeilen auf @var{Breite}, gemessen in Vielfachen +der @var{Einheit}. Als Einheit können die folgenden Zeichenfolgen angegeben +werden: @code{cm}, @code{mm}, @code{in} oder @code{pt}. Diese Option hat +nur Einfluss auf die Breite von Notenzeilen und Text im Musikfragment, nicht +jedoch auf den restlichen Text des Dokuments. + +Wird diese Option ohne einen Wert angegeben, wird die Zeilenbreite auf +einen Standardwert gesetzt, der durch einen heuristischen Algorithmus +bestimmt wird. + +Wenn die @code{line-width}-Option nicht angegeben wird, versucht +@command{lilypond-book} einen geeigneten Standardwert für alle +@code{lilypond}-Umgebungen zu finden, die die @code{ragged-right}-Option +nicht benutzen. + +@item notime +Verhindert die Ausgabe der Taktangabe am Anfang des Fragments und schaltet +Taktstriche und alle Taktangaben im Fragment ab. + +@item fragment +Bewirkt, dass @command{lilypond-book} Standardcode um das Fragment herum einfügt, sodass z. B. + +@example +c'4 +@end example + +@noindent +ohne @code{\layout}, @code{\score}, etc. eingegeben werden kann. + +@item nofragment +Verhindert das Einfügen von Standardcode um das Fragment herum. Dies ist +die Standardeinstellung, insofern ist diese Option im Normalfall unnötig. + +@item indent=@var{Einzug}\@var{Einheit} +Setzt den Einzug des ersten Notensystems auf @var{Einzug}, gemessen in +Vielfachen der @var{Einheit}. Als Einheit können die folgenden Zeichenfolgen +angegeben werden: @code{cm}, @code{mm}, @code{in} oder @code{pt}. Diese +Option hat nur Einfluss auf den Einzug von Notenzeilen und Text im +Musikfragment, nicht jedoch auf den restlichen Text des Dokuments. + +@item noindent +Setzt den Einzug des ersten Notensystems auf 0. Diese +Option hat nur Einfluss auf den Einzug von Notenzeilen und Text im +Musikfragment, nicht jedoch auf den restlichen Text des Dokuments. Dies +ist die Standardeinstellung, insofern ist diese Option im Normalfall +unnötig. + +@item quote +Verringert die Zeilenlänge des Musikfragments um @math{2*0.4}@dmn{in} +und setzt das Fragment in einen Zitat-Block. Der Wert von @q{0.4@dmn{in}} +kann durch die @code{exampleindent} Option angepasst werden. + +@item exampleindent +Setzt den Betrag, um den das Fragment bei Benutzung der @code{quote} +Option eingerückt wird. + +@item relative +@itemx relative=@var{n} +Benutzt relative Oktavenbezeichnungen. Standardmäßig werden Noten relativ +zum mittleren C angegeben. Das optionale ganzzahlige Argument +gibt die Oktave der ersten Note an, wobei die Standardeinstellung von +@code{1} das mittlere C bedeutet. Die @code{relative} Option macht nur +Sinn in Verbindung mit der @code{fragment} Option, weshalb @code{fragment} +automatisch durch die Angabe der @code{relative} Option impliziert wird. +Eine explizite Angabe der @code{(no)fragment} Option hat keinen Effekt. +@end table + + +LilyPond benutzt zur Erzeugung seiner eigenen Dokumentation ebenfalls +@command{lilypond-book}. Zu diesem Zweck stehen noch zahlreiche +spezialisierte Optionen zur Verfügung: + +@table @code +@item verbatim +Der LilyPond-Code im LilyPond-Kommando wird zum einen benutzt, um das +Musikfragment in eine Grafik mit schönem Notensatz zu konvertieren, +andererseits aber auch wörtlich in das Dokument eingefügt. Dies +geschieht in einem @q{verbatim}-Block, gefolgt vom Text einer +möglicherweise angegebenen @code{intertext} Option@footnote{Die +@code{intertext} Option ist noch nicht implementiert.} und der +Grafik des tatsächlichen Notensatzes. Diese Option funktioniert nur +fehlerhaft, wenn @code{\lilypond@{@}} im Fließtext benutzt wird. + +Wird @code{verbatim} in Verbindung mit einem @code{lilypondfile}-Kommando +benutzt, so ist es auch möglich, nur ein Teil der Datei wörtlich einfügen +zu lassen: Wenn die eingebundene LilyPond-Datei ein Kommentar mit dem Inhalt +@samp{begin verbatim} (ohne Anführungszeichen) enthält, wird nur der +Dateiinhalt ab dieser Position eingefügt. Enthält die Datei mehrere +solche Kommentare, wirkt nur das letzte. Analog wird nur der Dateiinhalt +bis zu einem etwaigen Kommentar mit dem Inhalt @samp{end verbatim} +eingefügt. Im folgenden Beispiel wird das gesamte Musik für die +Erzeugung der Grafik im relativen Oktavenmodus interpretiert, der +wörtlich in das Dokument kopierte LilyPond-Code zeigt den @code{relative}-Befehl jedoch nicht. + +@example +\relative c' @{ % begin verbatim + c4 e2 g4 + f2 e % end verbatim +@} +@end example + +@noindent +erzeugt ein Zitat der Form + +@example + c4 e2 g4 + f2 e +@end example + +@noindent +Wenn Kommentare und Variablen im Zitat, aber nicht im Quelltext +übersetzt werden sollen, kann die Umgebungsvariable @code{LYDOC_LOCALEDIR} +auf einen Verzeichnispfad gesetzt werden. Das Verzeichnis sollte +einen Baum an @file{.mo}-Nachrichtenkatalogen beinhalten mit +@code{lilypond-doc} als Domain. + +@item addversion +(Nur innerhalb von Texinfo-Dateien.) Stellt @code{\version +@@w@{"@@version@{@}"@}} an den Beginn des Fragments der Ausgabe mit +@code{verbatim}. + +@item texidoc +(Nur innerhalb von Texinfo-Dateien.) Wird @command{lilypond} mit der +Kommandozeilenoption @option{--header=@/texidoc} für eine Datei +@file{foo.ly} und enthält die Datei ein @code{texidoc}-Feld im +@code{\header}-Block, so wird dessen Inhalt in die Datei +@file{foo.texidoc} ausgegeben. Die @code{texidoc} Option veranlasst +@code{lilypond-book}, den Inhalt dieser @file{.texidoc} Dateien innerhalb +eines Dokumentationsblocks direkt vor dem Musikfragment in das aktuelle +Dokument einzufügen. + +Enthält also die Datei @file{foo.ly} etwa den LilyPond-Code + +@example +\header @{ + texidoc = "Dieses Beispiel zeigt eine einzelne Note." +@} +@{ c'4 @} +@end example + +@noindent +und das Texinfo-Dokument @file{text.texinfo} + +@example +@@lilypondfile[texidoc]@{foo.ly@} +@end example + +@noindent +so liefert der folgende Aufruf von @code{lilypond-book} das gewünschte +Ergebnis: + +@example +lilypond-book --pdf --process="lilypond \ + -dbackend=eps --header=texidoc" test.texinfo +@end example + +Die meisten Test-Dateien (im @file{input/} Verzeichnis von LilyPond) +sind kleine @file{.ly} Dateien von genau dieser Form. + +Auch die Übersetzung dieser zusätzlichen Kommentare ist möglich: +Dazu muss das Texinfo-Dokument den Befehl @code{@@documentlanguage @var{LANG}} +und der @code{\header} Block in der Datei @file{foo.ly} +die Übersetzung im Feld @code{texidoc@var{LANG}} enthalten. Wird nun +@command{lilypond} mit der Option @option{--header=@/texidoc@var{LANG}} +aufgerufen, so wird der Inhalt der Datei @file{foo.texidoc@var{LANG}} +anstelle von @file{foo.texidoc} eingefügt. + +@item lilyquote +(Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt wie die +@code{quote} Option, außer dass nur das Musikfragment (und natürlich optional der +gesamte LilyPond-Code bei Benutzung von @code{verbatim}) in den Zitatblock +eingefügt wird. Dies ist nützlich, wenn Sie ein Musikfragment zitieren möchten, +nicht aber dessen @code{texidoc} Dokumentationsblock. + +@item doctitle +(Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt ähnlich wie die +@code{texidoc} Option: Wenn @command{lilypond} mit der Option +@option{--header=@/doctitle} aufgerufen wird und die Eingabedatei +@file{foo.ly} ein Feld @code{doctitle} im @code{\header}-Block enthält, +wird dessen Wert in die Datei @file{foo.doctitle} geschrieben. Wird die +@code{doctitle} Option für ein Musikfragment benutzt, so wird der Inhalt +dieser Datei, der eine einzelne Textzeile sein sollte, im Texinfo-Dokument +als @code{@@lydoctitle @var{Text}} eingefügt. @code{@@lydoctitle} muss +allerdings in Ihrem Texinfo-Dokument als Makro selbst definiert werden. +Die Übersetzung funktioniert völlig analog zu @code{texidoc}. + +@item nogettext +Nur für Texinfo-Ausgabe: Kommentare und Variablenbezeichnungen im +zitierten Quelltext des Schnipsel werden nicht übersetzt. + +@item printfilename +Wenn eine LilyPond-Datei mittels @code{\lilypondfile} und dieser Option +eingebunden wird, wird der Dateiname (ohne die Pfadangabe) unmittelbar vor +dem Musikfragment ausgegeben. In HTML-Dateien ist er außerdem ein Link +auf die LilyPond-Datei. Nur der eigentliche Name der Datei wird +ausgegeben, der Pfad wird also nicht mit angezeigt. + +@end table + + +@node Vyvolání lilypond-book +@section Vyvolání @command{lilypond-book} +@translationof Invoking lilypond-book + +@command{lilypond-book} erzeugt abhängig vom Ausgabeformat eine Datei mit +einer der folgenden Dateierweiterungen: @file{.tex}, @file{.texi}, +@file{.html} oder @file{.xml}. Alle @file{.tex}, @file{.texi} und +@file{.xml} Dateien müssen noch mit den entsprechenden Programmen (@LaTeX{}, +DocBook, etc.) weiter verarbeitet werden, um druckfähige Dateien zu erhalten. + + +@subheading Formatabhängige Anweisungen + +@subsubheading @LaTeX{} + +Es existieren zwei Methoden, Ihr @LaTeX{}-Dokument weiter zu verarbeiten, +um zu einer druck- oder publikationsfähigen Datei zu gelangen: +Zum einen die direkte Erzeugung einer PDF-Datei mit PDF@LaTeX{}, zum +anderen die Erzeugung einer DVI daraus einer PostScript-Datei mittels +@LaTeX{} und einem DVI-nach-PostScript Konverters wie @command{dvips}. +Die erste Methode ist einfacher und daher empfehlenswert.@footnote{Manchmal +kann eine Datei entweder von PDF@LaTeX{} oder von @LaTeX{} nicht korrekt +verarbeitet werden, weshalb hier beide Methoden beschrieben werden.} Welche +Methode auch immer benutzt wird, die Konvertierung zwischen PostScript und +PDF kann leicht mit Hilfsprogrammen wie @command{ps2pdf} und @command{pdf2ps} +(aus dem Ghostscript-Paket) erfolgen. + +Um eine PDF-Datei mittels PDF@LaTeX{} zu erzeugen, kann folgendermaßen +vorgegangen werden: + +@example +lilypond-book --pdf Ihre_Datei.pdftex +pdflatex Ihre_Datei.tex +@end example + +@cindex Konturschriften +@cindex Type1 Schriften +@cindex dvips +@cindex Aufruf von dvips + +Um eine PDF-Datei mittels @LaTeX{}/@command{dvips}/@command{ps2pdf} zu +erhalten, sind folgende Befehle nötig: + +@example +lilypond-book Ihre_Datei.lytex +latex Ihre_Datei.tex +dvips -Ppdf Ihre_Datei.dvi +ps2pdf Ihre_Datei.ps +@end example + +@noindent +Die @file{.dvi}-Datei, die beim Aufruf von @command{latex} erzeugt wird, +scheint keine Notenköpfe zu enthalten, was in Ordnung ist. Wenn Sie die +Datei wie beschrieben weiter verarbeiten, erscheinen die Notenköpfe korrekt +in den @file{.ps} und @file{.pdf} Dateien. + +Der Aufruf von @command{dvips} kann einige Warnungen über fehlende +Schriftarten ausgeben. Auch dies ist in Ordnung und kann ignoriert werden. + +Wenn Sie in der @LaTeX{}-Datei das Papierformat auf Querformat eingestellt +haben, vergessen Sie nicht die @code{-t landscape}-Option beim +Aufruf von @command{dvips}. + + +@subsubheading Texinfo + +Um ein von @command{lilypond-book} erzeugtes Texinfo-Dokument zu +verarbeiten, gehen Sie wie für alle anderen Texinfo-Dokumente vor: +Rufen Sie -- abhängig vom gewünschten Ausgabeformat -- eines der Programme +@command{texi2pdf}, @command{texi2dvi}, @command{makeinfo} oder +@command{texi2html} auf. + +@ifinfo +@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, und @ref{Creating an Info File, , , texinfo, GNU Texinfo}. +@end ifinfo +@ifnotinfo +Die Dokumentation von Texinfo liefert dazu nähere Informationen. +@end ifnotinfo + + +@subheading Optionen auf der Kommandozeile + +@command{lilypond-book} unterstützt die folgenden Kommandozeilenoptionen: + +@table @code +@item -f @var{Format} +@itemx --format=@var{Format} +Gibt das Format des Eingabedokuments an: @code{html}, @code{latex}, +@code{texi} (Standardeinstellung), @code{texi-html} oder @code{docbook}. +Ist diese Option nicht angegeben, versucht @command{lilypond-book} das +Format anhand des Dateinamens zu bestimmen. Im Moment bedeutet @code{texi} +praktisch dasselbe wie @code{texi-html}. + +@c This complicated detail is not implemented, comment it out -jm +@ignore +The @code{texi} document type produces a Texinfo file with music +fragments in the printed output only. For getting images in the HTML +version, the format @code{texi-html} must be used instead. +@end ignore + +@item -F @var{Filter} +@itemx --filter=@var{Filter} +Leitet die Musikfragmente durch das Programm @var{filter} anstatt sie +mit Lilypond zu einer Grafik zu verarbeiten. @option{--filter} und +@option{--process} kann nicht gleichzeitig benutzt werden. Beispielaufruf: + +@example +lilypond-book --filter='convert-ly --from=2.0.0 -' Mein-Buch.tely +@end example + +@item -h +@itemx --help +Gibt eine kurze Hilfemeldung aus. + +@item -I @var{Pfad} +@itemx --include=@var{Pfad} +Fügt @var{Pfad} zu den Include-Pfaden hinzu. @command{lilypond-book} sucht +auch in allen Include-Pfaden nach bereits erstellten Grafiken für die +Musikfragmente. Wird das aktuelle Fragment gefunden und hat sich seit der +letzten Erstellung nicht geändert, wird es nicht erneut erzeugt. Bei manchen +der Programme zur Weiterverarbeitung wie etwa @command{makeinfo} oder +@command{latex} muss dieselbe @code{-I @var{Pfad}} Option angegeben werden, +damit das entsprechende Programm die Grafiken ebenso findet. + +@item -o @var{Verzeichnis} +@itemx --output=@var{Verzeichnis} +Erzeugt die Ausgabedateien in @var{Verzeichnis}. Der Aufruf von +@command{lilypond-book} erzeugt zahlreiche kleine Dateien, die von +LilyPond, @command{latex}, @command{makeinfo} etc. dann weiter benützt +werden. Um zu vermeiden, dass das Quellenverzeichnis durch diese +Dateien unübersichtlich wird, kann die @option{--output} Option benutzt +werden. Vor dem Aufruf von @command{latex} oder @command{makeinfo} +sollten Sie in dieses Verzeichnis wechseln. + +@example +lilypond-book --output=out IhreDatei.lytex +cd out +... +@end example + +@itemx --skip-lily-check +Nicht mit einer Fehlermeldung abbrechen, wenn keine Ausgabe von LilyPond +gefunden wird. Dies wird benutzt für Dokumentation ohne Grafiken. + +@itemx --skip-png-check +Nicht mit einer Fehlermeldung abbrechen, wenn für die EPS-Dateien keine +PNG-Grafiken gefunden werden. Dies wird benutzt für Dokumentation ohne +Grafiken. + +@itemx --lily-output-dir=@var{Verzeichnis} +Schreibt @file{lily-XXX} Dateien nach @var{Verzeichnis} und erzeugt +im mit @code{--output} angegebenen Verzeichnis Verknüpfungen darauf. +Diese Option ist nützlich, um Zeit zu sparen, wenn Dokumente in +verschiedenen Verzeichnissen viele identische Musikfragmente +enthalten. + +@itemx --info-images-dir=@var{Verzeichnis} +Formatiert die Texinfo-Ausgabe dergestalt, dass Info in @var{Verzeichnis} +nach den Grafiken zu den Musikfragmenten sucht. + +@itemx --latex-program=@var{Programm} +Führt @command{Programm} anstelle von @command{latex} aus. Dies ist +nützlichen, wenn das Dokument mit einer anderen @LaTeX{}-Variante +wie etwa @command{xelatex} verarbeitet werden soll. + +@itemx --left-padding=@var{Einrückung} +Fügt @var{Einrückung} als zusätzlichen Einzug in die EPS-Box ein. +@var{Einrückung} wird in Millimetern angegeben, die Standardeinstellung +ist 3.0 Millimeter. Diese Option kann benutzt werden, wenn die Notenzeilen +über den Rand des Dokuments hinausstehen. + +Die Breite eines eng ausgeschnittenen Notensystems kann variieren +aufgrund von Notationselementen, die über den linken Rand hinausstehen, +wie etwa Taktzahlen und Bezeichnungen der Instrumente. Diese Option +verkürzt die Notenzeile und verschiebt sie um denselben Betrag nach +rechts. + + +@item -P @var{Befehl} +@itemx --process=@var{Befehl} +Verarbeitet LilyPond-Fragmente mit @var{Befehl} anstelle des +Standardbefehls @code{lilypond}. @code{--filter} und @code{--process} +können nicht mit dieser Option benutzt werden. + +@item --pdf +Erzeugt PDF-Dateien mit PDF@LaTeX{}. + +@item -V +@itemx --verbose +Gibt ausführliche informative Meldungen aus. + +@item -v +@itemx --version +Gibt die Versionsnummer aus. +@end table + +@knownissues + +Der Texinfo-Befehl @code{@@pagesizes} wird ignoriert. Ebenso werden +@LaTeX{}-Befehle ignoriert, die den Seitenrand oder die Zeilenlänge +nach der Dokumentpräambel verändern. + +Nur der erste @code{\score}-Block eines LilyPond-Fragments wird verarbeitet. + + +@node Souborové přípony +@section Souborové přípony +@translationof Filename extensions + +Für die Eingabedatei kann zwar jede beliebige Dateinamenserweiterung benutzt +werden, allerdings muss bei Verwendung einer nicht bekannten Erweiterung +das Ausgabeformat explizit an @command{lilypond-book} angegeben werden. +Details dazu finden sich im Abschnitt @ref{Vyvolání lilypond-book}. +Wird eine bekannte Erweiterung benutzt, wählt @command{lilypond-book} +automatisch das richtige Ausgabeformat basierend auf der Erweiterung der +Eingabedatei: + +@quotation +@multitable @columnfractions .2 .5 +@item @strong{Erweiterung} @tab @strong{Ausgabeformat} +@item +@item @file{.html} @tab HTML +@item @file{.itely} @tab Texinfo +@item @file{.latex} @tab @LaTeX{} +@item @file{.lytex} @tab @LaTeX{} +@item @file{.lyxml} @tab DocBook +@item @file{.tely} @tab Texinfo +@item @file{.tex} @tab @LaTeX{} +@item @file{.texi} @tab Texinfo +@item @file{.texinfo} @tab Texinfo +@item @file{.xml} @tab HTML +@end multitable +@end quotation + +Wird dieselbe Erweiterung für die Eingabedatei wie für die Ausgabedatei +benutzt und befindet sich die Eingabedatei im aktuellen Arbeitsverzeichnis +von @command{lilypond-book}, muss die @code{--output} Option für +@command{lilypond-book} benutzt werden. Anderenfalls würde +@command{lilypond-book} ja die Eingabedatei überschreiben, weshalb das +Programm in diesem Fall mit einer Fehlermeldung wie @qq{Fehler: Ausgabe +würde Eingabedatei überschreiben; verwenden Sie --output.} abbricht. + + +@node Předlohy pro lilypond-book +@section Předlohy pro @command{lilypond-book} +@translationof lilypond-book templates + +Diese Vorlagen sollen mit @code{lilypond-book} benutzt werden. Wenn Sie sich +mit dem Programm nicht auskennen, lesen Sie bitte +@ref{lilypond-book}. + +@subsection LaTeX + +Sie können LilyPond-Fragmente in ein LaTeX-Dokument einfügen: + +@example +\documentclass[]@{article@} + +\begin@{document@} + +Normaler LaTeX-Text. + +\begin@{lilypond@} +\relative c'' @{ + a4 b c d +@} +\end@{lilypond@} + +Weiterer LaTeX-Text und Optionen in eckigen Klammern. + +\begin@{lilypond@}[fragment,relative=2,quote,staffsize=26,verbatim] +d4 c b a +\end@{lilypond@} +\end@{document@} +@end example + +@subsection Texinfo + +LilyPond-Fragmente können in Texinfo-Dokumente eingefügt werden: dieses gesamte +Handbuch wurde in Texinfo geschrieben. + +@example +\input texinfo @c -*-texinfo-*- +@@node Top +@@top + +Texinfo-Text + +@@lilypond +\relative c' @{ + a4 b c d +@} +@@end lilypond + +Weiterer Texinfo-Text und Optionen in Klammern. + +@@lilypond[verbatim,fragment,ragged-right] +d4 c b a +@@end lilypond + +@@bye +@end example + + +@subsection html + +@example + + + + + +

+Dokumente für lilypond-book können Noten und Text frei kombinieren. Zum +Beispiel + +\relative c'' @{ + a4 b c d +@} + +

+ +

+Noch etwas LilyPond, mit Optionen: + + +a4 b c d + +

+ + + + + +@end example + +@subsection xelatex + +@verbatim +\documentclass{article} +\usepackage{ifxetex} +\ifxetex +%xetex specific stuff +\usepackage{xunicode,fontspec,xltxtra} +\setmainfont[Numbers=OldStyle]{Times New Roman} +\setsansfont{Arial} +\else +%This can be empty if you are not going to use pdftex +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{mathptmx}%Times +\usepackage{helvet}%Helvetica +\fi +%Here you can insert all packages that pdftex also understands +\usepackage[ngerman,finnish,english]{babel} +\usepackage{graphicx} + +\begin{document} +\title{A short document with LilyPond and xelatex} +\maketitle + +Normal \textbf{font} commands inside the \emph{text} work, +because they \textsf{are supported by \LaTeX{} and XeteX.} +If you want to use specific commands like \verb+\XeTeX+, you +should include them again in a \verb+\ifxetex+ environment. +You can use this to print the \ifxetex \XeTeX{} command \else +XeTeX command \fi which is not known to normal \LaTeX . + +In normal text you can easily use LilyPond commands, like this: + +\begin{lilypond} +{a2 b c'8 c' c' c'} +\end{lilypond} + +\noindent +and so on. + +The fonts of snippets set with LilyPond will have to be set from +inside +of the snippet. For this you should read the AU on how to use +lilypond-book. +\end{document} +@end verbatim + + +@node Sdílení obsahu +@section Sdílení obsahu +@translationof Sharing the table of contents + +Diese Funktionen existieren schon im OrchestraLily-Paket: + +@example +@url{http://repo.or.cz/w/orchestrallily.git} +@end example + +Um den Text flexibler behandeln zu können, bevorzugen manche Benutzer es, +das Inhaltsverzeichnis aus LilyPond zu exportieren und dann mit +@LaTeX{} einzulesen. + +@subsubheading Das Ihaltsverzeichnis (ToC) aus LilyPond exportieren + +Hier wird angenommen, dass in Ihrer Partitur mehrere Sätze vorkommen, die +sich alle in der selben LilyPond-Datei befinden. + +@smallexample +#(define (oly:create-toc-file layout pages) + (let* ((label-table (ly:output-def-lookup layout 'label-page-table))) + (if (not (null? label-table)) + (let* ((format-line (lambda (toc-item) + (let* ((label (car toc-item)) + (text (caddr toc-item)) + (label-page (and (list? label-table) + (assoc label label-table))) + (page (and label-page (cdr label-page)))) + (format #f "~a, section, 1, @{~a@}, ~a" page text label)))) + (formatted-toc-items (map format-line (toc-items))) + (whole-string (string-join formatted-toc-items ",\n")) + (output-name (ly:parser-output-name parser)) + (outfilename (format "~a.toc" output-name)) + (outfile (open-output-file outfilename))) + (if (output-port? outfile) + (display whole-string outfile) + (ly:warning (_ "Unable to open output file ~a for the TOC information") outfilename)) + (close-output-port outfile))))) + +\paper @{ + #(define (page-post-process layout pages) (oly:create-toc-file layout pages)) +@} +@end smallexample + +@subsubheading Das Inhaltsverzeichnis in LaTeX importieren + +In der LaTeX-Datei sollte folgendes enthalten: + +@c no, this doesn't require the smallexample, but since the other +@c two blocks on this page use it, I figured I might as well +@c user it here as well, for consistency. -gp +@smallexample +\usepackage@{pdfpages@} +\includescore@{nameofthescore@} +@end smallexample + +@noindent +wobei @code{\includescore} wiefolgt definiert ist: + +@smallexample +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \includescore@{PossibleExtension@} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Read in the TOC entries for a PDF file from the corresponding .toc file. +% This requires some heave latex tweaking, since reading in things from a file +% and inserting it into the arguments of a macro is not (easily) possible + +% Solution by Patrick Fimml on #latex on April 18, 2009: +% \readfile@{filename@}@{\variable@} +% reads in the contents of the file into \variable (undefined if file +% doesn't exist) +\newread\readfile@@f +\def\readfile@@line#1@{% +@{\catcode`\^^M=10\global\read\readfile@@f to \readfile@@tmp@}% +\edef\do@{\noexpand\g@@addto@@macro@{\noexpand#1@}@{\readfile@@tmp@}@}\do% +\ifeof\readfile@@f\else% +\readfile@@line@{#1@}% +\fi% +@} +\def\readfile#1#2@{% +\openin\readfile@@f=#1 % +\ifeof\readfile@@f% +\typeout@{No TOC file #1 available!@}% +\else% +\gdef#2@{@}% +\readfile@@line@{#2@}% +\fi +\closein\readfile@@f% +@}% + + +\newcommand@{\includescore@}[1]@{ +\def\oly@@fname@{\oly@@basename\@@ifmtarg@{#1@}@{@}@{_#1@}@} +\let\oly@@addtotoc\undefined +\readfile@{\oly@@xxxxxxxxx@}@{\oly@@addtotoc@} +\ifx\oly@@addtotoc\undefined +\includepdf[pages=-]@{\oly@@fname@} +\else +\edef\includeit@{\noexpand\includepdf[pages=-,addtotoc=@{\oly@@addtotoc@}] +@{\oly@@fname@}@}\includeit +\fi +@} +@end smallexample + + +@node Náhradní způsoby míchání not a textu +@section Náhradní způsoby míchání not a textu +@translationof Alternate methods of mixing text and music + +Andere Methoden, Text und Noten miteinander zu kombinieren (ohne +@command{lilypond-book} zu benutzen) werden beschrieben in +@ref{LilyPond-Ausgabe in anderen Programmen}. diff --git a/Documentation/cs/usage/running.itely b/Documentation/cs/usage/running.itely new file mode 100755 index 0000000000..f74b33fb5e --- /dev/null +++ b/Documentation/cs/usage/running.itely @@ -0,0 +1,878 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*- + +@ignore + Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + + 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.13.36" + +@c Translators: Pavel Fric + +@node Spouštíme lilypond +@chapter Spouštíme @command{lilypond} +@translationof Running lilypond + +Dieses Kapitel behandelt die technischen Details, wie Lilypond ausgeführt werden kann. + + +@menu +* Běžné používání programu:: +* Použití v příkazovém řádku:: +* Chybová hlášení:: +* Častá chybová hlášení:: +@end menu + +@node Běžné používání programu +@section Běžné používání programu +@translationof Normal usage + +Die meisten Benutzer führen LilyPond von einer graphischen Benutzeroberfläche +aus. Siehe @rlearning{Übung}, falls Sie dies nicht bereits getan haben. Wenn +Sie einen alternativen Editor für Ihre LilyPond-Dateien verwenden, lesen Sie +bitte die Dokumentation dieses Editors. + + +@node Použití v příkazovém řádku +@section Použití v příkazovém řádku +@translationof Command-line usage + +Dieser Abschnitt enthält zusätzliche Informationen, wie Sie LilyPond +von der Kommandozeile ausführen können. Dies kann erforderlich sein, +um etwa zusätzliche Optionen an das Programm zu übergeben. Außerdem +sind einige Zusatzprogramme (wie etwa @code{midi2ly}) nur von der +Kommandozeile verfügbar. + +Unter @q{Kommandozeile} verstehen wir die Kommandozeile des jeweiligen +Betriebssystems. Windows Benutzern ist sie vielleicht eher unter den +englischen Begriffen @q{DOS shell} oder @q{command shell} bekannt. +MacOS@tie{}X Benutzer kennen sie eher unter @q{Terminal} oder @q{Konsole}. +Einige zusätzliche Einrichtungsarbeiten werden unter MacOS@tie{}X, +siehe @rweb{MacOS X}. + +Wie die Kommandozeile im jeweiligen Betriebssystem benutzt werden kann, +soll in diesem Handbuch nicht näher beschrieben werden. Sehen Sie bitte +im Handbuch Ihres Betriebssystems nach oder informieren Sie sich im +Internet, wenn Sie mit der Kommandozeile nicht vertraut sind. + + +@menu +* Vyvolání lilypondu:: +* Volby lilypondu v příkazovém řádku:: +* Proměnné prostředí:: +* LilyPond v žaláři chroot:: +@end menu + +@node Vyvolání lilypond +@subsection Vyvolání @command{lilypond} +@translationof Invoking lilypond + +@cindex @command{lilypond} aufrufen +@cindex Kommandozeilen-Optionen für @command{lilypond} +@cindex Optionen an der Kommandozeile + +Das @command{lilypond} Programm kann folgendermaßen von der Kommandozeile +aufgerufen werden. + +@example +lilypond [@var{Option}]@dots{} @var{Dateiname}@dots{} +@end example + + +Wird ein @file{Dateiname} ohne Erweiterung angegeben, so wird @file{.ly} als +Standarderweiterung für LilyPond-Dateien benutzt. Um Daten von +@code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-}) +als @var{Dateiname}. + +Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus +die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt. +Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben +werden, die dann einzeln und voneinander unabhängig abgearbeitet +werden.@footnote{Der Zustand von GUILE wird allerdings nicht nach +jeder Datei zurückgesetzt, sodass Achtung geboten ist, wenn in einer +Datei globale Änderungen von Scheme aus durchgeführt werden.} + +Falls @file{Dateiname.ly} mehr als eine @code{\book}-Umgebung enthält, +werden die weiteren Stücke in durchnummerierte Dateien der Form +@file{Dateiname-1.pdf} ausgegeben. Zusätzlich wird der Wert der +Variable @code{output-suffix} zwischen den ursprünglichen Dateinamen +und der Zahl eingefügt. Eine Lilypond-Datei @file{Dateiname.ly} mit dem Inhalt + +@example +#(define output-suffix "Geige") +\score @{ @dots{} @} +#(define output-suffix "Cello") +\score @{ @dots{} @} +@end example + +@noindent +erzeugt daher die Dateien @var{Dateiname}@file{-Geige.pdf} und +@var{Dateiname}@file{-Cello-1.pdf}. + + + +@unnumberedsubsubsec Häufige Kommandozeilenbefehle + +Wenn Ihre Kommandozeile normale Weiterleitungen unterstützt, können +Sie es nützlich finden, mit folgenden Befehlen die Ausgabe der +Kommandozeile in eine Datei zu leiten: + +@itemize + +@item +@code{lilypond file.ly 1>stdout.log} um normale Ausgabe zu erhalten +@item +@code{lilypond file.ly 2>stderr.log} um chybová hlášení zu erhalten + +@item +@code{lilypond file.ly &>all.log} um alle Meldungen zu erhalten + +@end itemize + +Wenden Sie sich an die Dokumentation für Ihre Kommandozeile, um +zu sehen, ob derartige Optionen unterstützt werden oder die Syntax +unterschiedlich ist. Beachten Sie, dass es sich hier um +reine Verwaltungsprogramme handelt, die nichts mit LilyPond zu tun +haben. + + +@node Volby v příkazovém řádku pro lilypond +@subsection Volby v příkazovém řádku pro @command{lilypond} +@translationof Command line options for lilypond + +Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt: + +@cindex @command{lilypond} auf der Kommandozeile +@cindex Kommandozeile, @command{lilypond} aufrufen +@cindex Optionen, Kommandozeile +@cindex Terminal, @command{lilypond} aufrufen + +@table @code + +@item -e,--evaluate=@var{expr} +Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien +gelesen und interpretiert werden. +Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke +werden nacheinander ausgewertet. + +Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der +Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der +Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert: + +@example +lilypond -e '(define-public a 42)' +@end example + +@noindent +Am Beginn der @file{.ly}-Datei muss dann das @code{guile-user} Modul noch geladen werden, bevor die Definition von @var{a} verfügbar ist: + +@example +#(use-modules (guile-user)) +@end example + + +@item -f,--format=@var{Format} +Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind +@code{svg}, @code{ps}, @code{pdf} und @code{png}. + +Beispiel: @code{lilypond -fpng @var{Dateiname}.ly} + + + +@item -d,--define-default=@var{Variable}=@var{Wert} +Damit wird die interne Programmoption @var{Variable} auf den Scheme-Wert +@var{Wert} gesetzt. Wird kein @var{Wert} angegeben, so wird @var{#t} benutzt. +Um eine Option auszuschalten, kann der Präfix @code{no-} dem Namen +@var{Variable} der Variable vorangestellt werden. So ist etwa + +@cindex Point and Click, Kommandozeile + +@example +-dno-point-and-click +@end example + +@noindent +dasselbe wie +@example +-dpoint-and-click='#f' +@end example + +Hier sind ein paar interessante Optionen: + +@cindex Hilfe, Kommandozeile + +@table @samp +@item help +Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren @code{-d} +Optionen. + +@cindex Papierformat, Kommandozeile + +@item paper-size +Setzt das Standard-Papierformat, +@example +-dpaper-size=\"letter\" +@end example + +@noindent +Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslash +( @code{\"} ) stehen. + +@cindex sicher, Kommandozeile +@cindex safe, Kommandozeile + +@item safe +Vertraut der @file{.ly} Datei nicht. + +Wenn LilyPond über einen Webserver verfügbar gemacht wird, @b{MUSS} unbedingt +eine die Optionen @code{--safe} oder @code{--jail} angegeben werden. +Die @code{--safe} Option verhindert, dass in der @file{.ly}-Datei angegebener +Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel: + +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^#(ly:export (ly:gulp-file "/etc/passwd")) +} +@end verbatim +@end quotation + +Mit der @code{-dsafe} Option werden alle Scheme-Ausdrücke einem speziellen +sicheren Modus ausgewertet. Dieser Modus ist vom GUILE @file{safe-r5rs} Modul +abgeleitet und fügt noch zahlreiche weitere erlaubte Funktionen der +LilyPond Programm-Schnittstelle hinzu. Diese Funktionen sind in +@file{scm/safe-lily.scm} angegeben. + +Zusätzliche verbietet der sichere Modus auch @code{\include} Befehle. + +Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme +zu exportieren. + +@code{-dsafe} erkennt jedoch @emph{KEINE} Überbeanspruchung der verfügbaren +Ressourcen. In diesem Modus ist es also trotzdem möglich, dass LilyPond in einer +Endlosschleife hängt, z.B. wenn zyklische Datenstrukturen an das Backend +übergeben werden. Wenn LilyPond also auf einem öffentlich zugänglichen +Webserver verfügbar gemacht wird, sollte der Prozess sowohl in der CPU- +als auch in der Speichernutzung limitiert werden. + +Der sichere Modus verhindert auch, dass zahlreiche nützliche +Musikfragmente von LilyPond verarbeitet werden. Die @code{--jail} Option ist +eine sicherere Alternative, benötigt allerdings auch mehr Aufwand zur +Einrichtung. + +@cindex Ausgabeformat, Definition von + +@item backend +Gibt an, welches Ausgabeformat das LilyPond Backend benutzt. Mögliche Werte +für diese Option sind: + +@table @code +@item ps +PostScript-Ausgabeformat. + +@cindex PostScript Ausgabeformat + +Postscript-Dateien enthalten auch TTF-, Type1- und OTF-Schriften. Allerdings +wird die gesamte Schriftart eingefügt und nicht nur die benötigten Zeichen. +Vor allem wenn nicht-westliche Zeichensätze benutzt werden, kann dies zu sehr +großen Dateien führen. + +@cindex PostScript Ausgabeformat +@cindex EPS (encapsulated PostScript) + +@item eps +Erzeugt @q{encapsulated PostScript} (EPS). Jede Seite (oder jedes System) wird +als eigene @file{EPS}-Datei ausgegeben, inklusive Schriftarten. Außerdem wird +eine Datei mit allen Seiten (bzw. Systemen) und Schriftarten erzeugt. + +Dies ist die Standardeinstellung von @command{lilypond-book}. + +@cindex SVG (scalable vector graphics) +@cindex Vektorgraphik (SVG) + +@item svg + +SVG-Ausgabe (Scalable Vector Graphics). + +Hiermit wird eine einzelne SVG-Datei ohne eingebundene Schriften +für jede Seite der Partitur erstellt. Es wird empfohlen, Century +Schoolbook-Schriftarten zu installieren, die auch in der LilyPond-Installation +enthalten sind, um optimales Rendern zu erhalten. Unter UNIX können +diese Schriftarten einfach aus dem LilyPond-Verzeichnis (normalerweise +@file{/usr/share/lilypond/@/VERSION/fonts/otf/}) nach @file{~/.fonts} +kopiert werden. Die SVG-Ausgabe sollte mit allen SVG-Editoren oder +Betrachtungsprogrammen kompatibel sein. + +@cindex Scheme-dump + +@item scm +gibt die rohen Scheme-basierenden Zeichenbefehle aus, wie sie intern von +LilyPond benutzt werden. + +@cindex Scheme dump + +@item null +Keine Partitur wird ausgegeben, hat gleichen Effekt wie @code{-dno-print-pages}. + +@end table + +Beispiel: @code{lilypond -dbackend=svg @var{Dateiname}.ly} + +@cindex Vorschau + +@item preview +Erzeugt eine Ausgabedatei, die nur die Titelzeilen und das erste System +enthält. Wenn @code{\bookpart}-Umgebungen benutzt werden, erscheinen die +Titel und ersten Systeme jedes @code{\bookpart}-Abschnitts in der Datei. +Die Backends @code{ps}, @code{eps} und @code{svg} unterstützen diese Option. + +@item print-pages +Erzeugt vollständige Seiten (Standardeinstellung). @code{-dno-print-pages} +ist in Verbindung mit @code{-dpreview} nützlich. + +@end table + + + +@item -h,--help +Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. + +@item -H,--header=@var{FELD} +Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei +@file{Dateiname.@var{FELD}} aus. + +@item --include, -I=@var{Verzeichnis} +Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu. + +@cindex Dateisuche +@cindex Suchpfad + +Mehrere -I-Optionen können angegeben werden. Die Suche beginnt mit dem +ersten definierten Verzeichnis und setzt in den weiteren Verzeichnissen +fort, wenn die gesuchte Datei nicht in dem Verzeichnis gefunden wird. + +@item -i,--init=@var{Initialisierungsdatei} +Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der +Standardwert ist @file{init.ly}. + +@cindex Verzeichnis, Ausgabe speichern in +@cindex Ausgabedateiname + +@item -o,--output=@var{DATEI} +Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei +@var{DATEI}. Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien +in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei +benutzt wird. Die entsprechende Dateinamenserweiterung wird angehängt (z.B. +@code{.pdf} für pdf). + +@cindex PostScript-Ausgabe + +@item --ps +Erzeugt PostScript. + +@cindex PNG-Ausgabe +@cindex Portable Network Graphics (PNG) + +@item --png +Erzeugt eine Grafik-Datei im PNG-Format von jeder Seite. Diese Option +impliziert auch @code{--ps}. Die Auflösung in DPI der Grafik kann festgelegt +werden durch +@example +-dresolution=110 +@end example + +@cindex PDF-Ausgabe +@cindex Portable Document Format (PDF) + +@item --pdf +Erzeugt PDF-Dateien. Dies impliziert @code{--ps}. + +@item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis} +Führt @command{lilypond} in einem chroot-Jail aus. + +Die @code{--jail} Option ist eine flexiblere Alternative zu @code{--safe}, wenn +LilyPond über das Internet verfügbar gemacht wird oder LilyPond-Quelldateien +von Dritten automatisch verarbeitet werden. + +Sie funktioniert dergestalt, dass das Wurzelverzeichnis von +@command{lilypond} auf @var{Jail-Verzeichnis} gesetzt wird, bevor die +tatsächliche Kompilierung der @file{.ly}-Datei beginnt. Der Benutzer und die Gruppe +werden auf die angegebenen Werte gesetzt und das aktuelle Arbeitsverzeichnis +wird ebenfalls auf den angegebenen Wert @var{Arbeitsverzeichnis} gesetzt. +Diese Einstellungen garantieren (zumindest in der Theorie), dass es nicht +möglich ist, aus dem Jail auszubrechen. Damit @code{--jail} funktioniert, muss +@command{lilypond} allerdings als root ausgeführt werden, was normalerweise +auf sichere Art mit dem Kommando @command{sudo} erreicht werden kann. + +Das Jail-Verzeichnis zu erstellen ist etwas heikel, da LilyPond alle zur +Ausführung nötigen Bibliotheken und Dateien @emph{innerhalb des +Jail-Verzeichnisses} finden muss. Ein typisches Setup besteht aus folgenden +Punkten: + +@table @asis +@item Erstellung eines getrennten Dateisystems +Ein eigenes Dateisystem muss für LilyPond erstellt werden, sodass es mit +sicheren Einstellungen wie @code{noexec}, @code{nodev} und @code{nosuid} +eingebunden werden kann. Damit ist es unmöglich, Programme von diesem +Dateisystem auszuführen oder direkt auf eine Hardware-Schnittstelle +zuzugreifen. Wenn Sie keine eigene Partition erstellen möchten, können Sie +auch eine Datei der entsprechenden Größe erstellen und sie als @q{loop}-Gerät +einbinden. Ein getrenntes Dateisystem garantiert auch, dass LilyPond nicht +mehr Festplattenspeicher benutzt als erlaubt. + +@item Erstellung eines eigenen Benutzerkontos +Es sollte ein eigener Benutzer und eine eigene Gruppe (z. B. +@code{lily}/@code{lily}) mit geringen Rechten für die Ausführung von LilyPond +innerhalb des Jails benutzt werden. Nur ein einziges Verzeichnis des Jails sollte +für den Benutzer schreibbar sein und als @var{Arbeitsverzeichnis} an +@code{lilypond} übergeben werden. + +@item Einrichtung des Jails +LilyPond muss zahlreiche Dateien für die Ausführung einlesen. All diese +Dateien müssen in das Jail-Verzeichnis kopiert werden (mit denselben Pfaden +wie im tatsächlichen Wurzel-Dateisystem). Die gesamte LilyPond-Installation +(typischerweise @file{/usr/share/lilypond}) sollte kopiert werden. + +Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels +@command{strace} zu starten, wodurch Sie relativ leicht feststellen können, +welche Dateien im Jail noch fehlen. + +@item Ausführung von LilyPond +In einem mit @code{noexec} eingebundenen Jail ist es nicht möglich, externe +Programme auszuführen. Daher muss LilyPond auf eine Art gestartet werden, +die keine weitere Ausführung von Programmen benötigt. Wie bereits erwähnt +muss LilyPond mit Administrator-Rechten gestartet werden (die es allerdings +sofort wieder abgibt), beispielsweise mittels @command{sudo}. Außerdem +ist es eine gute Idee, die LilyPond zur Verfügung stehende CPU-Zeit zu +limitieren (z. B. mit @command{ulimit -t}) und -- falls das Betriebssystem +dies unterstützt -- auch den zur Verfügung stehenden Hauptspeicher. +@end table + + +@item -v,--version +Gibt die Versionsnummer aus. + +@item -V,--verbose +Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade +aller gelesenen Dateien sowie Informationen über die Laufzeit. + +@item -w,--warranty +Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht +@strong{KEINERLEI GARANTIE}!) +@end table + + +@node Proměnné prostředí +@subsection Proměnné prostředí +@translationof Environment variables + +@cindex LANG +@cindex LILYPOND_DATADIR +@cindex Proměnné, prostředí +@cindex Proměnné prostředí + +@command{lilypond} erkennt und benützt die folgenden proměnné prostředí: +@table @code +@item LILYPOND_DATADIR +Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien, +Meldungen und Übersetzungen finden kann. Dieses Verzeichnis sollte +Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten. + +@item LANG +Gibt die Sprache an, in der Warnungen und chybová hlášení ausgegeben werden. + +@item LILYPOND_GC_YIELD +Mit dieser Variable (mit Werten zwischen 0 und 100) kann die Feinabstimmung +zwischen dem Bedarf an Hauptspeicher und Rechenleistung bei der Ausführung +von LilyPond durchgeführt werden. Bei höheren Werten benutzt LilyPond +mehr Hauptspeicher, benötigt aber weniger Prozessor-Leistung. Bei +niedrigeren Werten wird mehr Prozessor-Zeit, dafür weniger Hauptspeicher +benötigt. Voreinstellung ist ein Wert von @code{70}. + +@end table + + + +@node LilyPond v žaláři chroot +@unnumberedsubsec LilyPond v žaláři chroot +@translationof LilyPond in chroot jail + +Einen Server einzurichten, der LilyPond in einem chroot-Kerker bedient, ist +recht kompliziert. Die einzelnen Schritten finden sich unten aufgeliestet. +Beispiele sind für Ubuntu Linux und erfordern evtl. die Benutzung von +@code{sudo} an den entsprechenden Stellen. + +@itemize + +@item Installieren Sie die nötigen Pakete: LilyPond, GhostScript und ImageMagick. + +@item Erstellen Sie einen neuen Benutzer mit dem Namen @code{lily}: + +@example +adduser lily +@end example + +@noindent +Hierdurch wird auch eine Gruppe @code{lily} und ein Heimat-Ordner +@code{/home/lily} für den neuen Benutzer erstellt. + +@item Im Heimat-Ordner des Benutzers @code{lily} erstellen Sie eine Datei, die als +eigenes Dateisystem eingesetzt wird: + +@example +dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000 +@end example + +@noindent +In diesem Beispiel wird eine 200-MB-Datei als Kerker-Dateisystem erstellt. + +@item Erstellen Sie ein loop device, erstellen Sie ein Dateisystem und +mounten Sie es, dann erstellen Sie dort einen Ordner, in dem der Benutzer +@code{lily} Schreibrechte hat: + +@example +mkdir /mnt/lilyloop +losetup /dev/loop0 /home/lily/loopfile +mkfs -t ext3 /dev/loop0 200000 +mount -t ext3 /dev/loop0 /mnt/lilyloop +mkdir /mnt/lilyloop/lilyhome +chown lily /mnt/lilyloop/lilyhome +@end example + +@item In der Konfiguration des Servers ist der Kerker (JAIL) @code{/mnt/lilyloop} +und das Verzeichnis (DIR) @code{/lilyhome}. + +@item Erstellen Sie einen großen Verzeichnisbaum in dem Kerker, indem Sie die +notwendigen Dateien dorthin kopiert, wie das Beispielskript unten zeigt. + +Sie könne @code{sed} benutzen, um die notwendigen Kopierbefehle für ein +bestimmtes Programm zu erstellen: + +@example +for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \ + do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \ + cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \ + \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done +@end example + +@end itemize + +@subheading Beispiel-Skript für 32-bit Ubuntu 8.04 + +@example +#!/bin/sh +## defaults set here + +username=lily +home=/home +loopdevice=/dev/loop0 +jaildir=/mnt/lilyloop +# the prefix (without the leading slash!) +lilyprefix=usr/local +# the directory where lilypond is installed on the system +lilydir=/$lilyprefix/lilypond/ + +userhome=$home/$username +loopfile=$userhome/loopfile +adduser $username +dd if=/dev/zero of=$loopfile bs=1k count=200000 +mkdir $jaildir +losetup $loopdevice $loopfile +mkfs -t ext3 $loopdevice 200000 +mount -t ext3 $loopdevice $jaildir +mkdir $jaildir/lilyhome +chown $username $jaildir/lilyhome +cd $jaildir + +mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp +chmod a+w tmp + +cp -r -L $lilydir $lilyprefix +cp -L /bin/sh /bin/rm bin +cp -L /usr/bin/convert /usr/bin/gs usr/bin +cp -L /usr/share/fonts/truetype usr/share/fonts + +# Now the library copying magic +for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \ + "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \ + \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \ + 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \ + | sed '/.*=>.*/d'; done | sh -s + +# The shared files for ghostscript... + cp -L -r /usr/share/ghostscript usr/share +# The shared files for ImageMagick + cp -L -r /usr/lib/ImageMagick* usr/lib + +### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome, +### you should be able to run: +### Note that /$lilyprefix/bin/lilypond is a script, which sets the +### LD_LIBRARY_PATH - this is crucial + /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly +@end example + + +@node Chybová hlášení +@section Chybová hlášení +@translationof Error messages + +@cindex error messages +@cindex Chybová hlášení + +Während der Verarbeitung einer Dateien können diverse Meldungen an der +Kommandozeile auftreten: + +@table @emph + +@item Warnung (Warning) +@cindex Warnung +Irgendetwas ist verdächtig. Wenn Sie etwas Ungewöhnliches in Ihrer +Datei durchführen, dann werden Sie die Meldung verstehen und können +sie gegebenenfalls ignorieren. Im Normalfall jedoch bedeutet eine +Warnung, dass mit Ihrer Datei etwas nicht stimmt, LilyPond jedoch +trotzdem versucht, die Datei soweit wie möglich korrekt zu übersetzen. + +@item Fehler (Error) +@cindex Fehler +Irgendetwas stimmt definitiv nicht. Der aktuelle Bearbeitungsschritt +(Einlesen, Interpretieren oder Formatieren der Datei) wird noch fertig +ausgeführt, danach bricht die Bearbeitung aber ab. + +@item Fataler Fehler (Fatal error) +@cindex Fataler Fehler +Irgendetwas stimmt definitiv nicht und LilyPond kann nicht weiter +ausgeführt werden. Dies ist nur sehr selten der Fall, meist sind +die Schriftarten nicht korrekt installiert. + +@item Scheme Fehler (Scheme error) +@cindex Fehlerprotokoll, Scheme +@cindex Scheme Fehler +Fehler, die während der Ausführung von Scheme-Code auftreten, werden +vom Scheme-Interpreter aufgefangen und an der Kommandozeile ausgegeben. +Wenn Sie LilyPond mit der @code{--verbose} Option (auch @code{-V}) +ausführen, wird der sogenannte @q{Call trace} ausgegeben, der die +aufgerufenen Funktionen zur Zeit des Fehlers angibt. + +@item Programmierfehler (Programming error) +@cindex Programmierfehler +Eine interne Inkonsistenz ist aufgetreten. Diese chybová hlášení +sollen den Programmierern die Fehlersuche erleichtern und +können meistens einfach ignoriert werden. In manchen Fällen werden +so viele Meldungen ausgegeben, dass die Lesbarkeit der restliche +Ausgabe davon beeinträchtigt wird. + +@item Abgebrochen (core dumped) +Dies bezeichnet einen ernsten Programmierfehler, der das Programm +zum Absturz gebracht hat. Solche Fehler werden als kritisch angesehen. +Falls daher einer auftritt, senden Sie bitte einen Bug-Report! +@end table + +@cindex Chybové hlášení, formát +@cindex Formát chybového hlášení +Wenn Warnungen oder chybová hlášení mit einer konkreten Stelle in der +Eingabedatei verknüpft werden können, dann hat die Meldung die folgende +Form: + +@example +@var{Dateiname}:@var{Zeile}:@var{Spalte}: @var{Meldung} +@var{Fehlerhafte Eingabezeile} +@end example + +Ein Zeilenumbruch wird in der fehlerhaften Zeile an jener Stelle eingefügt, +wo der Fehler aufgetreten ist. Zum Beispiel + +@example +test.ly:2:19: Fehler: keine gültige Dauer: 5 + @{ c'4 e' + 5 g' @} +@end example + +Diese Stellen sind LilyPonds Vermutung, wo die Warnung oder der Fehler +aufgetreten ist, allerdings treten Warnungen und Fehler ja gerade in +unerwarteten Fällen auf. Manchmal kann Lilypond auch eine fehlerhafte +Stelle zwar noch problemlos verarbeiten, ein paar Zeilen später wirkt +sich der Fehler aber dann doch noch aus. In solchen Fällen, wo Sie in +der angegebenen Zeile keinen Fehler erkennen, sollten Sie auch die Zeilen +oberhalb der angegebenen Stelle genauer unter die Lupe nehmen. + +Mehr Information darüber findet sich in @ref{Častá chybová hlášení,,častých chybových hlášeních}. + + + +@node Častá chybová hlášení +@section Častá chybová hlášení +@translationof Common errors + +Chybová hlášení, die unten beschrieben werden, treten of auf, +es ist jedoch nicht immer einfach, die Urache zu finden. Wenn +der Fehler einmal verstanden ist, kann er einfach behoben werden. + + +@menu +* Noty ubíhají pryč ze strany:: +* Ein zusätzliches System erscheint:: +* Zřejmá chyba v @code{../ly/init.ly}:: +* Chybové hlášení Nespojená proměnná %:: +* Chybové hlášení FT_Get_Glyph_Name:: +* Varování: staff affinities by měly jen klesat:: +@end menu + +@node Noty ubíhají pryč ze strany +@unnumberedsubsec Noty ubíhají pryč ze strany +@translationof Music runs off the page + +Noten, die rechts aus der Seite herauslaufen oder sehr komprimiert +aussehen, liegen in fast allen Fällen an einer falschen Notendauer +einer Note, die dazu fürt, dass die letzte Note im Takt über die +Taktgrenze hinwegdauert. Es ist nicht falsch, wenn die letzte +Note eines Taktes über den Takt hinausdauert, weil einfach angenommen +wird, dass sie im nächsten Takt fortgesetzt wird. Aber wenn eine +längere Sequenz dieser überhängenden Noten auftritt, können die +Noten sehr gedrängt aussehen oder über den Seitenrand fließen, weil +die automatische Zeilenumbruchsfunktion einen Umbruch nur am Ende +eines vollständigen Taktes einfügen kann, also wenn alle Noten +zum Ende des Taktstriches auch wirklich aufhören. + +@warning{Eine falsche Dauer kann dazu führen, dass Zeilenumbrüche +nicht möglich sein und die Zeile entweder sehr gedrängt dargestllt +wird oder über den Seitenrand fließt.} + +Die falsche Dauer kann einfach gefunden werden, wenn Taktstrichüberprüfung +eingesetzt wird, siehe @ruser{Takt- und Taktzahlüberprüfung}. + +If you actually intend to have a series of such carry-over measures +you will need to insert an invisible bar line where you want the +line to break. For details, see @ruser{Taktstriche}. + + +@node Ein zusätzliches System erscheint +@unnumberedsubsec Ein zusätzliches System erscheint +@translationof An extra staff appears + +Wenn Kontext nicht explizit mit @code{\new} oder +@code{\context} erstellt werden, werden sie vom Programm erstellt, +sobald ein Befehl angetroffen wird, der im aktuellen Kontext nicht +funktioniert. In einfachen Partituren ist diese automatische +Erstellung sehr nützlich und die meisten Beispiele der LilyPond-Handbücher +benutzen diese Schreiberleicherterung. Manchmal jedoch kann es +vorkommen, dass durch die automatische Erstellung von Systemen aufeinmal +unerwartete Notensysteme erstellt werden. Beispielsweise könnte man +annehmen, dass folgendes Beispiel alle Notenköpfe in dem Notensystem +rot macht, aber als Resultat hat man zwei Systeme, während die +Notenköpfe immernoch schwarz im unteren System erscheinen. + +@lilypond[quote,verbatim,relative=2] +\override Staff.NoteHead #'color = #red +\new Staff { a } +@end lilypond + +Das liegt daran, dass kein @code{Staff}-Kontext existiert, wenn +der @code{\override}-Befehl verarbeitet wird, sodass ein System +für diesen Befehl erstellt wird. Dann aber erstellt @code{\new Staff} +noch ein zusätzliches System, wo die Noten gesetzt werden. Die +richtige Schreibweise wäre: + +@lilypond[quote,verbatim,relative=2] +\new Staff { + \override Staff.NoteHead #'color = #red + a +} +@end lilypond + +Ein zweites Beispiel zeigt, dass ein @code{\relative}-Befehl innerhalb +von @code{\repeat} zwei Systeme erstellt, wobei der zweite etwas verschoben +ist. Das liegt daran, dass @code{\repeat} zwei @code{\relative}-Umgebungen +erstellt, die jede implizit einen @code{Staff}- und @code{Voice}-Kontext +erstellen. + +@lilypond[quote,verbatim] +\repeat unfold 2 { + \relative c' { c4 d e f } +} +@end lilypond + +Indem man die @code{Voice}-Kontexte explizit erstellt, kann das Problem +umgangen werden. + +@lilypond[quote,verbatim] +\new Voice { + \repeat unfold 2 { + \relative c' { c4 d e f } + } +} +@end lilypond + + +@node Zřejmá chyba v @code{../ly/init.ly} +@unnumberedsubsec Zřejmá chyba v @code{../ly/init.ly} +@translationof Apparent error in @code{../ly/init.ly} + +Verschiedene seltsame chybová hlášení können über Syntax-Fehler in +@file{../ly/init.ly} auftauchen, wenn die Eingabedatei nicht richtig +formuliert ist, wenn sie etwa nicht richtig passende Klammerpaare +oder Anführungszeichen enthält. + +Der üblichste Fehler ist das Fehlen einer geschweiften Klammer +(@code{@}}) am Ende der @code{score}-Umbgebung. Die Lösung ist hier +klar: überprüfen Sie, ob die @code{score}-Umgebung richtig beendet +wurde. Die richtige Struktur einer Eingabedatei wird beschrieben +in @rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}. +Ein Editor, der die Klammerpaare automatisch anzeigt, ist sehr +hilfreich, um derartige Fehler zu vermeiden. + +Eine weitere übliche Fehlerquelle ist kein Leerzeichen zwischen der +letzten Silbe einer @code{lyrics}-Umgebung und der schließenden +Klammer (@code{@}}). Ohne diese Trennung wird die Klammer als +Teil der Silbe gewertet. Es bietet sich immer an, Leerzeichen vor +und hinter @emph{jede} Klammer zu setzen. Wie wichtig das ist, wenn +Gesangstext eingesetzt wird, siehe @ruser{Was ist Gesangtext}. + +Diese Fehlermeldung kann auch mit einem fehlenden schließenden Anführungszeichen +(@code{"}) auftreten. In diesem Fall sollte die begleitende Fehlermeldung +eine Zeilenzahl angeben, die dicht am Fehler liegt. Die nicht paarigen +Anführungszeichen sind meistens ein oder zwei Zeilen darüber. + + +@node Chybové hlášení Nespojená proměnná % +@unnumberedsubsec Chybové hlášení Nespojená proměnná % +@translationof Error message Unbound variable % + +Diese Fehlermeldung erscheint am Ende der Kommandozeilenausgabe oder in der +Log-Datei mit einer Meldung @qq{GUILE signalled an error ...} +jedes Mal, wenn eine Scheme-Routine aufgerufen wird, die +(falscherweise) ein @emph{LilyPond}-Kommentar und kein +@emph{Scheme}-Kommentar enthält. + +LilyPond-Kommentare befginnen mit dem Prozent-Zeichen (@code{%}) und +dürfen nicht in Scheme-Routinen benutzt werden. Scheme-Kommentare beginnen +mit einem Semikolon (@code{;}). + +@node Chybové hlášení FT_Get_Glyph_Name +@unnumberedsubsec Chybové hlášení FT_Get_Glyph_Name +@translationof Error message FT_Get_Glyph_Name + +Diese Fehlermeldung erscheint in der Kommandozeilenausgabe, wenn die +Datei ein Zeichen enthält, das nicht zu ASCII gehört und die Datei +nicht in UTF-8-Kodierung gespeichert wurd. Sie auch @ruser{Zeichenkodierung}. + + +@node Varování: staff affinities by měly jen klesat +@unnumberedsubsec Varování: staff affinities by měly jen klesat +@translationof Warning staff affinities should only decrease + +Diese Warnung erscheint, wenn keine Notensysteme in der Ausgabe vorhanden +sind, wenn etwa nur @code{ChordName}-Kontext und @code{Lyrics}-Kontext +in einem Liedblatt vorhanden sind. Die Warnungen können vermieden werden, +indem man einen der Kontexte als System erscheinen lässt, indem man ihm +zu Beginn hinzufügt: + +@example +\override VerticalAxisGroup #'staff-affinity = ##f +@end example + +Zu Einzelheiten siehe @qq{Abstand von Nicht-Notensystemzeilen} in +@ruser{Flexible vertikale Abstände in Systemgruppen}. diff --git a/Documentation/cs/usage/setup.itely b/Documentation/cs/usage/setup.itely new file mode 100755 index 0000000000..7553b97cc4 --- /dev/null +++ b/Documentation/cs/usage/setup.itely @@ -0,0 +1,357 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*- + +@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.13.36" + +@c Translators: Pavel Fric + +@node Nastavení +@chapter Nastavení +@translationof Setup + +In diesem Kapitel werden verschiedene Konfigurationsoptionen für LilyPond und +andere Programme behandelt, die nach der Installation auszuführen sind. Dieses +Kapitel kann als Referenz betrachtet werden, lesen Sie einen Abschnitt nur, +wenn er auf Sie zutrifft. + +@menu +* Nastavení pro zvláštní operační systémy:: +* Podpora textových editorů:: +* Ukázat a klepnout:: +@end menu + + +@node Nastavení pro zvláštní operační systémy +@section Nastavení pro zvláštní operační systémy +@translationof Setup for specific Operating Systems + +Dieser Abschnitt erklärt zusätzliche Einstellungen für bestimmte Betriebssysteme. + +@menu +* Nastavení pro MacOS X:: +@end menu + +@node Nastavení pro MacOS X +@subsection Nastavení pro MacOS X +@translationof Setup for MacOS X + +@subsubheading Benutzung von Python-Skripten unter MacOS 10.3 oder 10.4 + +Das LilyPond-Programmpaket für MacOS X stellt Python nicht zur +Verfügung, aber Python 2.4 oder höher wird benötigt, um +Skripte wie @command{convert-ly} zu benutzen. Wenn Sie MaxOS +10.3 oder 10.4 besitzen, müssen Sie eine neuere Python-Version +von @uref{http://python.org/download/} installieren und dann +die erste Zeile von @command{convert-ly} und @command{lilypond-book} +auf folgende Weise ändern: Wenn sich das installierte Python-Programm +in Ihrem @var{PFAD} befindet, muss die erste Zeile heißen: + +@example +#!/usr/bin/env python +@end example + +@noindent +andernfalls muss sie heißen: + +@example +#!@var{/path/to/newly_installed/python} +@end example + +@subsubheading MacOS X auf der Kommandozeile + +Die Skripte (etwa @command{lilypond-book}, @command{convert-ly}, +@command{abc2ly} und sogar @command{lilypond}) befinden sich +innerhalb der @code{.app}-Datei für MacOS@tie{}X. Sie können +auf der Kommandozeile direkt aufgerufen werden, etwa + +@example +@var{Pfad/zu}/LilyPond.app/Contents/Resources/bin/lilypond +@end example + +@noindent +Entsprechend funktionieren auch die anderen Skripte wie +@command{lilypond-book}, @command{convert-ly}, @command{abc2ly} usw. + +Sie können sich auch selber Skripte anlegen, die diesen Pfad automatisch +hinzufügen. Erstellen Sie ein Verzeichnis, indem die Skripte gespeichert werden: + +@example +mkdir -p ~/bin +cd ~/bin +@end example + +Erstellen Sie eine Datei mit dem Namen @code{lilypond} und dem Inhalt + +@example +exec @var{path/to}/LilyPond.app/Contents/Resources/bin/lilypond "$@@" +@end example + +Erstellen Sie entsprechende Dateien mit den Namen @code{lilypond-book}, + @code{convert-ly} und den Namen der anderen Hilfsprogramme, die Sie benutzen + (@code{abc2ly}, @code{midi2ly} usw.). Ersetzen Sie einfach den Teil + @code{bin/lilypond} mit @code{bin/convert-ly} (oder einem anderen + Programmnamen) in der entsprechenden Datei. + +Machen Sie die Datei ausführbar: + +@example +chmod u+x lilypond +@end example + +Jetzt müssen Sie dieses Verzeichnis noch zu Ihrem Pfad (PATH) hinzufügen. +Verändern Sie die Datei @code{.profile} in Ihrem Benutzerverzeichnis +(oder erstellen Sie sie), dass sie die Zeile + +@example +export PATH=$PATH:~/bin +@end example + +@noindent +beinhaltet. Die Datei muss mit einer Leerzeile enden. + +Beachten Sie, dass @var{Pfad/zu} üblicherweise @code{/Applications/} ist. + + +@node Podpora textových editorů +@section Podpora textových editorů +@translationof Text editor support + +@cindex Editory +@cindex vim +@cindex emacs +@cindex Režim, editory +@cindex Zvýraznění skladby +@cindex Zvýraznění skladby + +Verschiedene Texteditoren haben Unterstützung für LilyPond. + +@menu +* Režim Emacs:: +* Režim Vim:: +* jEdit:: +* TexShop:: +* TextMate:: +* LilyKDE:: +@end menu + +@node Režim Emacs +@subsection Režim Emacs +@translationof Emacs mode + +Emacs hat einen LilyPond-Modus (@file{lilypond-mode}), eine Datei, die +die Vervollständigung von Befehlen, Einrückungen, für LilyPond spezifische +Klammerschließungen und die Markierung der Syntax beherrscht. +Zusätzlich stehen noch praktische Tastaturkombinationen zum +Programmaufruf und zum Nachschlagen in den Handbüchern zur +Verfügung. Siehe unten, wenn die Datei @file{lilypond-mode} +sich nicht auf Ihrem Computer befindet. + +Režim Emacs zur Noteneingabe und zum Programmaufruf ist +in den Emacs-Quellen im @file{elisp}-Verzeichnis enthalten. Mit +dem Befehl @command{make install} können Sie es nach @var{elispdir} +installieren. Die Datei @file{lilypond-init.el} sollte in + @var{load-path}@file{/site-start.d/} liegen oder Ihrem + @file{~/.emacs} or @file{~/.emacs.el} hinzugefügt werden. + +Als Benutzer können Sie Ihren Quellenpfad (etwa @file{~/site-lisp/}) +ihrem @var{load-path} hinzufügen, indem Sie folgende Zeile zu Ihrer +@file{~/.emacs}-Datei hinzufügen: + +@c any reason we do not advise: (push "~/site-lisp" load-path) +@example +(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path)) +@end example + + +@node Režim Vim +@subsection Režim Vim +@translationof Vim mode + +Für @uref{http://@/www@/.vim@/.org,VIM} wird ein @file{vimrc} bereitgestellt, +zusammen mit Werkzeugen zur Syntaxauszeichnung. Režim Vim zur +Noteneingabe und zum Programmaufruf befindet sich im Quellarchiv im +@code{$VIM}-Verzeichnis. + +LilyPond-Dateien werden automatisch erkannt, wenn sich in der Datei +@file{~/.vim/filetype.vim} folgender Inhalt befindet: + +@example +if exists("did_load_filetypes") + finish +endif +augroup filetypedetect + au! BufNewFile,BufRead *.ly,*.ily setf lilypond +augroup END +@end example + +Fügen Sie den LilyPond-Pfad in ihre +@file{~/.vimrc}-Datei ein, indem Sie ihre folgende Zeile hinzufügen: + +@example +set runtimepath+=/usr/local/share/lilypond/$@{LILYPOND_VERSION@}/vim/ +@end example + +@noindent +Dabei wird $@{LILYPOND_VERSION@}durch Ihre LilyPond-Version ersetzt. Sollten +Sie LilyPond nicht nach @file{/usr/local/} installiert haben, müssen Sie den +Pfad entsprechend anpassen. + + +@node jEdit +@subsection jEdit +@translationof jEdit + +Das Plugin für den @uref{http://@/www@/.jedit@/.org@/,jEdit}-Texteditor, +LilyPondTool genannt, ist das vielfältigste textbasierte Werkzeug, um +LilyPond-Notationsdateien zu editieren. Zu den besonderen Eigenschaften +gehört ein Dokument-Ersteller mit Liedtextunterstützung, der die Neuerstellung +von Dateien erleichtert, und ein integriertes PDF-Anzeigeprogramm mit +@qq{point-and-click}-Unterstützung. Demos, Bildschirmphotos und +Installationsanweisungen finden sich unter +@uref{http://lilypondtool@/.organum@/.hu} + + +@node TexShop +@subsection TexShop +@translationof TexShop + +Der +@uref{http://@/www@/.uoregon@/.edu/~koch/texshop/index@/.html,TexShop}-Editor +für MacOS@tie{}X kann erweitert werden, um LilyPond, lilypond-book und convert-ly aus dem +Editor heraus zu starten. Die Erweiterung findet sich unter +@uref{http://@/www@/.dimi@/.uniud@/.it/vitacolo/freesoftware@/.html}. + + +@node TextMate +@subsection TextMate +@translationof TextMate + +Es gibt ein LilyPond-Paket für TextMate. Es kann installiert werden, indem man + +@example +mkdir -p /Library/Application\ Support/TextMate/Bundles +cd /Library/Application\ Support/TextMate/Bundles +svn co http://macromates.com/svn/Bundles/trunk/Bundles/Lilypond.tmbundle/ +@end example + +@noindent +ausführt. + + +@node LilyKDE +@subsection LilyKDE +@translationof LilyKDE + +@uref{http://lilykde.googlecode.com/,LilyKDE} ist eine Erweiterung für +den Texteditor @uref{http://kate-editor.org/,Kate} für KDE. LilyKDE +beinhaltet einen mächtigen Assistenten, mit dem sehr schnell neue +LilyPond-Dokumente erstellt werden könne, sowie einen eingebetteten +PDF-Betrachter. + +LilyKDE benutzt auch @uref{http://www.volny.cz/smilauer/rumor/,Rumor}, +um Musik direkt von einem MIDI-Keyboard einzulesen. + +Weitere Fähigkeiten von LilyKDE sind Silbentrennung für Liedtexte oder +die Möglichkeit, LilyPond gleichzeitig mit mehreren Eingabedateien vom +KDE Dateimanager aus aufzurufen. + + +@node Ukázat a klepnout +@section Ukázat a klepnout +@translationof Point and click +@cindex Ukázat a klepnout + + +Ukázat a klepnout erlaubt es, die Noten in der Quelldatei zu finden, indem man sie +im PDF anklickt. Das erleichtert es, fehlerhafte Stellen zu finden. + +Wenn diese Funktionalität aktiv ist, fügt LilyPond Hyperlinks zum PDF hinzu. +Diese werden dann bei einem Klick zum Browser geschickt, der wiederum +einen Texteditor mit dem Cursor an der richtigen Stelle öffnet. + +Damit diese Kettenreaktion funktioniert, müssen Sie ihrem PDF-Programm +mit dem Skript @file{lilypond-invoke-editor} beibringen, Hyperlinks zu folgen. + +Im Falle von Xpdf auf einer UNIX-Maschine sollte folgende Zeile in der Datei +@file{xpdfrc}@footnote{Unter UNIX befindet sich diese Datei entweder in +@file{/etc/xpdfrc} oder als @file{.xpdfrc} in Ihrem Heim-Verzeichnis.} stehen. + +@example +urlCommand "lilypond-invoke-editor %s" +@end example + +Das Programm @file{lilypond-invoke-editor} ist ein kleines Hilfsprogramm. +Es ruft einen Editor auf für bestimmte @code{textedit}-URIs und startet +einen Browser für die anderen. Die Umgebungsvariable @code{EDITOR} +wird für folgende Zeichenketten: + +@table @code +@item emacs + das startet +@example +emacsclient --no-wait +@var{line}:@var{column} @var{file} +@end example +@item vim + das startet +@example +gvim --remote +:@var{line}:norm@var{char} @var{file} +@end example + +@item nedit + das startet +@example + nc -noask +@var{line} @var{file}' +@end example +@end table + +Die Umgebungsvariable @code{LYEDITOR} wird verwendet, um dieses zu +überschreiben. Sie enthält den Befehl, um den Editor aufzurufen, wobei +die Variablen @code{%(file)s}, +@code{%(column)s}, @code{%(line)s} mit der Datei, Spalte und Zeile +ersetzt werden. Die Einstellung + +@example +emacsclient --no-wait +%(line)s:%(column)s %(file)s +@end example + +@noindent +für @code{LYEDITOR} etwa entspricht dem von vornherein eingestellten +Emacs-Aufruf. + + +@cindex Dateigröße, Ausgabedatei + +Odkazy ukázat a klepnout vergrößern die Notationsdatei erheblich. Um die +Größe der PDF- und PS-Dateien zu verringern, kann ukázat a klepnout +ausgeschaltet werden, indem die Zeile + +@example +\pointAndClickOff +@end example + +@noindent +in der @file{.ly}-Datei gesetzt wird. Ukázat a klepnout kann auch explizit +eingeschaltet werden durch die Zeile: + +@example +\pointAndClickOn +@end example + +Alternativ können Sie ukázat a klepnout auch mit einer +Kommandozeilenoption ausschalten: + +@example +lilypond -dno-point-and-click file.ly +@end example + +@warning{Sie sollten ukázat a klepnout immer für Dateien ausschalten, die +Sie an andere Personen weitergeben möchten. Anderenfalls werden +Pfadinformationen Ihres Computers in die PDF-Datei kopiert, was ein +potentielles Sicherheitsrisiko darstellt.} diff --git a/Documentation/cs/usage/suggestions.itely b/Documentation/cs/usage/suggestions.itely new file mode 100755 index 0000000000..e4605f0bf4 --- /dev/null +++ b/Documentation/cs/usage/suggestions.itely @@ -0,0 +1,638 @@ +@c -*- coding: utf-8; mode: texinfo; -*- + +@ignore + Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + + 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.13.36" + +@node Návrhy pro psaní vstupních souborů LilyPond +@chapter Návrhy pro psaní vstupních souborů LilyPond +@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 +* Všeobecné návrhy:: +* Kopírování stávající hudby:: +* Velké projekty:: +* Řešení potíží:: +* Make a Makefiles:: +@end menu + + +@node Všeobecné návrhy +@section Všeobecné návrhy +@translationof General suggestions + +Hier einige Vorschläge, wie Sie Probleme vermeiden oder lösen können: + +@itemize +@item @strong{Schreiben Sie immer mit @code{\version} die +Versionsnummer +in jede Datei}. Beachten Sie, dass in allen Vorlagen die Versionsnummer +@code{\version "2.13.36"} 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 @rlearning{Tipparbeit durch Variablen und Funktionen ersparen} +und +@rlearning{Globale Formatierung}. + +@end itemize + + +@node Kopírování stávající hudby +@section Kopírování stávající hudby +@translationof Typesetting existing music + +Wenn Sie Musik aus einer fertigen Partitur kopieren (z. B. die +LilyPond-Eingabe einer gedruckten Partitur): + +@itemize + +@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 Velké projekty +@section Velké projekty +@translationof Large projects + +Besonders wenn Sie an größeren Projekten arbeiten, ist es +unumgänglich, dass Sie ihre LilyPond-Dateien klar strukturieren. + +@itemize + +@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 früher gegeben, +aber für velké projekty 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 Řešení potíží +@section Řešení potíží +@translationof Troubleshooting + +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, +@rweb{Minimalbeispiele} zu konstruieren. + + + +@node Make a Makefiles +@section Make a 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 +@file{ballad.pdf} und @file{ballad.midi} aus @file{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 @file{.ly}-Dateien un den Verzeichnissen @file{Scores} und +@file{Parts} erhalten ihrere Noten aus @file{.ily}-Dateien, die +sich im @file{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{Benutzung auf der Kommandozeile}, +@rprogram{lilypond-book}. + diff --git a/Documentation/cs/usage/updating.itely b/Documentation/cs/usage/updating.itely new file mode 100755 index 0000000000..ed97ddda0a --- /dev/null +++ b/Documentation/cs/usage/updating.itely @@ -0,0 +1,270 @@ +@c -*- coding: utf-8; mode: texinfo; -*- + +@ignore + Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + + 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.13.36" + +@c Translators: Pavel Fric + + +@node Aktualizace souborů pomocí convert-ly +@chapter Aktualizace souborů pomocí @command{convert-ly} +@translationof Updating files with convert-ly + +@cindex Aktualisierung von LilyPond-Datei +@cindex convert-ly + +Die Eingabesyntax von LilyPond wird immer wieder verändert um Dinge zu +vereinfachen oder verschiedene Verbesserungen und Entwicklungen einzubringen. +Ein Nebeneffekt davon ist jedoch, dass LilyPond älter Eingabdateien oft +nicht mehr richtig bearbeiten kann. Um dieses Problem zu umgehen, kann +das Programm @command{convert-ly} benutzt werden, welches die meisten +Syntaxveränderungen zwischen unterschiedlichen LilyPond-Versionen beherrscht. + +@menu +* Proč se mění skladba?:: +* Vyvolání convert-ly:: +* Volby příkazového řádku pro convert-ly:: +* Potíže s convert-ly:: +* Ruční převod:: +@end menu + + +@node Proč se mění skladba? +@section Proč se mění skladba? +@translationof Why does the syntax change? + +@cindex convert-ly +@cindex Aktualizace starých vstupních souborů +@cindex Obnova starých vstupních souborů + +Die LilyPond-Eingabesyntax verändert sich von Zeit zu Zeit. +Wenn das Programm LilyPond verbessert wird, wird auch die +Syntax (die Eingabesprache) entsprechend angepasst. Manche +Änderungen machen den Eingabetext leichter zum Schreiben und zum +Lesen, andere implementieren neue Eigenschaften in LilyPond. + +Beispielsweise alle @code{\paper}- und @code{\layout}-Eigenschaftsnamen +sollen in der Form @code{erstens-zweitens-drittens} geschrieben +werden. In der Version 2.11.60 bemerkten wir jedoch, dass die +@code{printallheaders}-Eigenschaft sich nicht an diese Regel hielt. +Sollten wir das jetzt lassen (womit neue Benutzer verwirrt werden, weil +die Eingabe nicht logisch ist), oder sollten wir es ändern (womit +wir alte Benutzer mit ihren schon geschriebenen Partituren ärgern)? +In diesem Fall haben wir uns entschieden, den Namen in +@code{print-all-headers} zu ändern. Zum Glück kann diese Änderung +mit dem @command{convert-ly}-Programm automatisch vorgenommen werden. + + +Leider kann @code{convert-ly} nicht mit allen Syntax-Änderungen umgehen. +Beispielsweise wurden in LilyPond 2.4 und früher Akzente für verschiedene +Sprachen mit LaTeX-Befehlen eingegeben -- beispielsweise Änderung wurde +geschrieben @code{\"Anderung}. Ab Version 2.6 jedoch muss man Akzente +und Sonderzeichen dirket als UTF-8-Zeichen notieren. @code{convert-ly} +kann nicht alle LaTeX-Zeichen umwandeln, sodass man das manuell übernehmen +muss. + + +@node Vyvolání convert-ly +@section Vyvolání @command{convert-ly} +@translationof Invoking convert-ly + +@command{convert-ly} benutzt den Befehl @code{\version} mit Angabe der +Versionsnummer der ursprünglichen LilyPond-Version. In den meisten Fällen +genügt es, einfach auf der Kommandozeile + +@example +convert-ly -e meineDatei.ly +@end example + +@noindent +im Verzeichnis, in welchem die Datei liegt, aufzurufen. Hierdurch wird +@file{meineDatei.ly} direkt aktualisiert und das Original nach +@file{meineDatei.ly~} gesichert. + +@warning{@command{convert-ly} konvertiert immer bis zur letzten Syntax-Änderung, +die das Programm beherrscht. Das heißt, dass die @code{\version}-Nummer, +die nach der Konversion in der Datei steht, normalerweise niedriger ist als +die Version von @command{convert-ly} selbst.} + +Um alle Dateien in einem Verzeichnis zu konvertieren, schreibt man auf der +Kommandozeile: + +@example +convert-ly -e *.ly +@end example + +Man kann auch einen neuen Namen für die konvertierte Datei angeben, sodass die +originale Datei unverändert bleibt. Dazu schreibt man auf der Kommandozeile + +@example +convert-ly meineDatei.ly > meineneueDatei.ly +@end example + +Das Programm gibt die Versionsnummern für alle Versione aus, für die eine +Konversion durchgeführt wurde. Wenn keine Versionsnummern ausgegeben werden, +ist die Datei aktuell. + +MacOS@tie{}X-Benutzer können die Befehle unter dem Menü-Eintrag +@code{Compile > Update syntax} ausführen. + +Windows-Benutzer sollten diese Befehle auf der Kommandozeile (Eingabeaufforderung), +die sich normalerweise unter @code{Start > Zubehör > Eingabeaufforderung} findet. + + +@node Volby příkazového řádku pro convert-ly +@section Volby příkazového řádku pro @command{convert-ly} +@translationof Command line options for convert-ly + +Das Programm wird folgendermaßen aufgerufen: + +@example +convert-ly [@var{Option}]@dots{} @var{Dateiname}@dots{} +@end example + +Folgende Optionen können benutzt werden: + +@table @code +@item -e,--edit +Die Konvertierung direkt am Original vornehmen, sodass es direkt verändert wird. + +@item -f,--from=@var{von-Versionsnummer} +Stellt die Versionsnummer ein, ab welcher die Konvertierung begonnen werden +soll. Wenn die Option nicht benutzt wird, rät @command{convert-ly} die Versionsnummer +anhand des @code{\version}-Eintrags in der Datei. Beispielsweise +@code{--from=2.10.25} + +@item -n,--no-version +Normalerweise fügt @command{convert-ly} einen @code{\version}-Eintrag +zu der konvertierten Datei hinzu. Mit dieser Option wird das unterdrückt. + +@item -s, --show-rules +Zeige alle bekannten Konversionen und beende. + +@item --to=@var{bis-Versionsnummer} +Die Zielversion der Konversion setzen. Standard ist die letzte mögliche +Version, die das Programm beherrscht. Beispielsweise @code{--to=2.12.2} + +@item -h, --help +Zeigt Hilfe zur Benutzung. +@end table + +Um LilyPond-Schnipsel in texinfo-Dateien zu aktualisieren, kann + +@example +convert-ly --from=... --to=... --no-version *.itely +@end example + +@noindent +benutzt werden. + +Um sich die Änderungen der LilyPond-Syntax zwischen zwei Versionen anzeigen +zu lassen, schreibt man + +@example +convert-ly --from=... --to=... -s +@end example + + +@node Potíže s convert-ly +@section Probleme mit @code{convert-ly} +@translationof Problems running convert-ly + +Wenn man @command{convert-ly} auf einer Eingabeaufforderung unter Windows +mit einer Datei benutzt, die Leerzeichen im Dateinamen oder Pfad hat, +muss der gesamte Dateiname mit drei (!) doppelten Anführungszeichen +umgeben werden: + +@example +convert-ly """D:/My Scores/Ode.ly""" > "D:/My Scores/new Ode.ly" +@end example + +Wenn der einfache @command{convert-ly -e *.ly}-Befehl nicht funktioniert, +weil die ausgeschriebene Kommandozeile zu lang wird, kann man +@command{convert-ly} auch als Loop wiederholt laufen lassen. Dieses +Beispiel für UNIX konvertiert alle @file{-ly}-Dateien im aktuellen +Verzeichnis: + +@example +for f in *.ly; do convert-ly -e $f; done; +@end example + +Für die Windows-Eingabeaufforderung lautet der entsprechende Befehl: + +@example +for %x in (*.ly) do convert-ly -e """%x""" +@end example + +Nicht alle Syntax-Änderungen werden konvertiert. Nur eine Ausgabeoption kann +angegeben werden. Automatische Aktualisierung von Scheme- und LilyPond +Scheme-Code ist eher unwahrscheinlich, sehr wahrscheinlich muss hier manuell +aktualisiert werden. + + +@node Ruční převod +@section Ruční převod +@translationof Manual conversions + +Theoretisch könnte ein Programm wie @command{convert-ly} alle möglichen +Syntax-Änderungen berücksichtigen. Schließlich ist es auch ein Computerprogramm, +das die alte und die neue Version der Notationsdatei interpretiert, so +dass ein anderes Computerprogramm eine Datei in die andere verwandeln +könnte.@footnote{Das ist auf jeden Fall möglich für jede LilyPond-Datei, +die kein Scheme beinhaltet. Wenn Scheme in der Datei verwendet wurde, +enthält die Datei Turing-complete Sprache und es gibt Probleme mit dem +@qq{Halteproblem} der Informatik.} + +Das LilyPond-Team ist jedoch verhältnismäßig klein, sodass nicht alle Konversionen +automatisch funktionieren. Unten eine Liste der bekannten Probleme: + + +@verbatim +1.6->2.0: + Bezifferter Bass wird nicht immer richtig konvertiert, besonders {< + >}. Mats' Kommentar zu einer Lösung: + To be able to run convert-ly + on it, I first replaced all occurrences of '{<' to some dummy like '{#' + and similarly I replaced '>}' with '&}'. After the conversion, I could + then change back from '{ #' to '{ <' and from '& }' to '> }'. + Nicht alle Textbeschriftung wird richtig konvertiert. In der alten Syntax + konnte man mehrere Beschriftungen mit Klammern gruppieren, etwa: + -#'((bold italic) "string") + Das wird falsch konvertiert zu: + -\markup{{\bold italic} "string"} + anstelle von: + -\markup{\bold \italic "string"} +2.0->2.2: + Versteht nicht \partcombine + Kann nicht \addlyrics => \lyricsto, sodass einige Dateien mit vielen Strophen nicht + funktionieren +2.0->2.4: + \magnify wird nicht nach \fontsize verändert. + - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2) + remove-tag wird nicht verändert. + - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . . + first-page-number wird nicht verändert. + - first-page-number no => print-first-page-number = ##f + Zeilenumbrüche in Titelköpfen werden nicht umgewandelt. + - \\\\ als Zeilenumbruch in \header-Feldern => \markup \center-align < + "Erste Zeile" "Zweite Zeile" > + Crescendo und decrescendo-Endpunkte werden nicht umgewandelt. + - \rced => \! + - \rc => \! +2.2->2.4: + \turnOff (benutzt in \set Staff.VoltaBracket = \turnOff) wird nicht richtig konvertiert +2.4.2->2.5.9 + \markup{ \center-align <{ ... }> } sollte konvertiert werden in: + \markup{ \center-align {\line { ... }} } + jetzt fehlt aber \line. +2.4->2.6 + Besondere LaTeX-Zeicehn wie $~$ in Text werden nicht in UTF-8 umgewandelt. +2.8 + \score{} muss jetzt immer mit einem musikalischen Ausdruck beginnen. Alles +andere (insbesondere \header{}) darf erst nach den Noten kommen. +@end verbatim diff --git a/Documentation/cs/web/download.itexi b/Documentation/cs/web/download.itexi old mode 100644 new mode 100755 index c144897cab..ed71c06c67 --- a/Documentation/cs/web/download.itexi +++ b/Documentation/cs/web/download.itexi @@ -270,6 +270,7 @@ Všechna loga a vyobrazení výrobků ctí autorské právo a obchodní značku. @node MacOS X @unnumberedsec MacOS X +@translationof MacOS X @divClass{heading-center} @warningTextBased diff --git a/Documentation/cs/web/manuals.itexi b/Documentation/cs/web/manuals.itexi old mode 100644 new mode 100755 index 3b4e7835d1..d51be5b9a6 --- a/Documentation/cs/web/manuals.itexi +++ b/Documentation/cs/web/manuals.itexi @@ -1,28 +1,30 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: FILL-IN-HEAD-COMMITTISH + Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506 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.. + Guide, node Updating translation committishes. @end ignore -@node Příručky +@c Translators: Pavel Fric + +@node Příručkyr @unnumbered Příručky @translationof Manuals @macro details{reference} @spanClass{detail} -(@ref{\reference\, details of \reference\}) +(@ref{\reference\, Einzelheiten zu \reference\}) @spanEnd @end macro @divClass{heading-center} @ifclear web_version - @heading Manuals for LilyPond @version + @heading Příručky pro LilyPond @version @end ifclear @ifset web_version - @heading Manuals for LilyPond @versionStable + @heading Příručky pro LilyPond @versionStable @end ifset @divEnd @@ -30,52 +32,58 @@ @divClass{link-headings} @divClass{column-center-top} -@subheading Introduction +@subheading Einleitung @itemize @item -@ref{Text input}: -LilyPond is a @strong{text-based} music engraver. Read this first! +@ref{Text-Eingabe}: +LilyPond ist ein @strong{textbasiertes} Notensatzprogramm. Wenn +Sie mit diesem Konzept nicht vertraut sind, lesen Sie darüber bitte +jetzt! @item -@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Learning}} -a @qq{must-read} gentle introduction to LilyPond. -@details{Learning} +@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Začátek,Učení}} +eine sanfte @qq{unbedingt lesen!} uvedení do LilyPondu. +@details{Učení} @item -@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossary}} -@emph{(optional reading)} musical terms and translations. -@details{Glossary} +@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Začátek,Slovníček}} +@emph{(optional)} hier werden musikalische Begriffe auf englisch erklärt und +die passenden Übersetzungen in vielen anderen Sprachen gegeben. +@details{Slovníček} + + @item -@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}} -@emph{(optional reading)} background information about computer engraving. -@details{Essay} +@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Začátek,Článek}} +@emph{(optional)} Hintergrundinformation über den Notensatzprozess und die +Ästhetik des Notenstichs im 19. Jahrhundert. +@details{Článek} @end itemize @divEnd @divClass{column-left-top} -@subheading Regular use +@subheading Běžné používání @itemize @item -@ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notation}} -syntax reference. -@details{Notation} +@ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Začátek,Notový zápis}} +eine Syntaxreferenz. +@details{Notový zápis} @item -@ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Usage}} -running the programs. -@details{Usage} +@ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Začátek,Používání}} +wie die Programme aufgerufen werden. +@details{Používání} @item -@ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippets}} -short tricks and tips. -@details{Snippets} +@ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Začátek,Úryvky}} +kurze Tricks, Tipps und Beispiele. +@details{Úryvky} @end itemize @@ -83,33 +91,32 @@ short tricks and tips. @divClass{column-right-top} -@subheading Infrequent Use +@subheading Nepravidelné používání @itemize @item -@ref{FAQ}: -Frequently Asked Questions. +@ref{Často kladené dotazy}: +Häufig gestellte Fragen. @item -@ref{Top, Web}: -this document. -@details{Web} +@ref{Začátek,Web}: +Dieses Dokument. @item -@ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Changes}} -what's new? -@details{Changes} +@ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Začátek,Změny}} +Was ist neu? +@details{Změny} @item -@ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extending}} -fancy tweaks. -@details{Extending} +@ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Začátek,Rozšíření}} +clevere Anpassungen. +@details{Rozšíření} @item -@ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}} -tweaks reference. -@details{Internals} +@ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Začátek,Vnitřní}} +Referenz für Anpassungen. +@details{Vnitřní} @end itemize @@ -117,25 +124,25 @@ tweaks reference. @divClass{column-center-bottom} -@subheading Other material +@subheading Anderes Material @itemize @item -@ref{Translated}: -translation status for non-English readers. +@ref{Překlad}: +der Übersetzungsstatus für nicht Nicht-Englischsprachige. @item -@ref{All}: -downloadable and old manuals. +@ref{Vše}: +Příručky zum Herunterladen und alte příručky. @item -@ref{Development}: -manuals for the unstable version. +@ref{Entwicklung}: +Příručky für die Entwicklerversion. @item @ref{FDL}: -these manuals are published under the GNU Free Documentation License. +Tyto příručky sind unter der GNU Free Documentation License herausgegeben. @end itemize @@ -146,20 +153,20 @@ these manuals are published under the GNU Free Documentation License. @divClass{hide} @menu -* Learning:: Learning. -* Glossary:: Glossary. -* Článek:: Článek. -* Notation:: Reference. -* Usage:: Usage. -* Snippets:: Snippets. -* FAQ:: FAQ. -* Web:: Web. -* Changes:: NEWS. -* Extending:: Programming. -* Internals:: Internals. -* Translated:: Translation. -* All:: All manuals. -* FDL:: Licence. +* Učení:: +* Slovníček:: +* Článek:: +* Notový zápis:: +* Používání:: +* Úryvky:: +* Často kladené dotazy:: +* Web:: +* Změny:: +* Rozšíření:: +* Vnitřní:: +* Překlad:: +* Vše:: +* FDL:: @end menu @divEnd @@ -169,54 +176,58 @@ these manuals are published under the GNU Free Documentation License. @c LM 1.1 About the documentation (before this section was @c removed in July 2009). -@node Learning -@unnumberedsec Learning +@node Učení +@unnumberedsec Učení +@translationof Learning @divClass{column-left-top} -@subheading Learning manual +@subheading Handbuch zum Lernen -This book explains how to begin learning LilyPond, as well as -explaining some key concepts in easy terms. You should read these -chapters in a linear fashion. +Dieses Buch erklärt, wie man beginnen sollte, LilyPond zu erlernen. +Hier werden auch einige Schlüsselkonzepte und einfache Begriffe +erklärt. Sie sollte diese Kapitel von vorne bis hinten lesen. -There is a paragraph @strong{See also} at the end of each section, -which contains cross-references to other sections: you should not -follow these cross-references at first reading. When you have -read all of the manual, you may want to read some sections again -and follow those cross-references for more information. +Am Ende jeden Abschnitts gibt es einen Absatz @strong{Siehe auch}, +welcher Links in andere Abschnitte enthält. Beim ersten Durchlesen +sollten Sie diesen Verlinkungen nicht folgen. Wenn Sie das gesamte +Handbuch einmal gelesen haben, werden Sie wahrscheinlich einige +Abschnitte noch einmal lesen und dann auch den Links folgen, um +weitere Informationen zu erhalten. @divEnd @divClass{column-right-bottom} -@docLinks{Learning, learning, - @rlearningnamed{Top,Learning}, - @manualStableLearningSplit, - @manualStableLearningBig, 1.5 MB, - @manualStableLearningPdf, 3 MB} +@docLinks{Učení, learning, + @rlearningnamed{Začátek,Učení}, + @manualStableLearningSplit-cs, + @manualStableLearningBig-cs, 1.5 MB, + @manualStableLearningPdf-cs, 3 MB} @divEnd -@node Glossary -@unnumberedsec Glossary +@node Slovníček +@unnumberedsec Slovníček +@translationof Glossary @divClass{column-left-top} -@subheading Glossary +@subheading Slovníček -This explains musical terms, and includes translations to various -languages. If you are not familiar with music notation or music -terminology (especially if you are a non-native English speaker), -it is highly advisable to consult the glossary. +Hier werden musikalische Fachbegriffe auf Englisch erklärt und +Übersetzungen zu einer Reihe von Sprachen gegeben. Wenn Sie sich +mit der Terminologie der Musik und Musiknotation nicht auskennen +(und vor allem, wenn Sie Englisch nicht fließend sprechen) lohnt +es sich sehr, dieses slovníček zu Hilfe zu ziehen. @divEnd @divClass{column-right-bottom} -@docLinks{Music glossary, music-glossary, - @rglosnamed{Top,Music glossary}, - @manualStableGlossarySplit, - @manualStableGlossaryBig, 1 MB, - @manualStableGlossaryPdf, 1.5 MB} +@docLinks{Slovníček, music-glossary, + @rglosnamed{Začátek,Slovníček}, + @manualStableGlossarySplit-cs, + @manualStableGlossaryBig-cs, 1 MB, + @manualStableGlossaryPdf-cs, 1.5 MB} @divEnd @@ -226,102 +237,110 @@ it is highly advisable to consult the glossary. @translationof Essay @divClass{column-left-top} -@subheading Essay +@subheading Článek -This book gives a brief history of music typography, followed by -an examination of LilyPond's engraving techniques. A comparison -between LilyPond and other music engraving systems is given. +Dieses Buch enthält eine kurze Geschichte des Musiknotensatzes und +anschließend eine Betrachtung der Notensatztechniken von LilyPond. +Ein Vergleich von LilyPond mit anderen Notensatzprogrammen wird +auch vorgenommen. -@warning{the detailed typographical examples are easier to analyze -in the PDF version due to its higher resolution.} +@warning{Die detailierten typographischen Beispiele lassen sich +in der PDF-Version einfacher analysieren, weil sie eine höhere +Auflösung hat.} @divEnd @divClass{column-right-bottom} -@docLinks{Essay, essay, - @ressaynamed{Top,Essay}, - @manualStableEssaySplit, - @manualStableEssayBig, 2 MB, - @manualStableEssayPdf, 2.5 MB} +@docLinks{Článek, essay, + @ressaynamed{Začátek,Článek}, + @manualStableEssaySplit-cs, + @manualStableEssayBig-cs, 2 MB, + @manualStableEssayPdf-cs, 2.5 MB} @divEnd -@node Notation -@unnumberedsec Notation +@node Notový zápis +@unnumberedsec Notový zápis +@translationof Notation @divClass{column-left-top} -@subheading Notation reference +@subheading Reference k notovému zápisu -This book explains all the LilyPond commands which produce -notation. +Dieses Buch erklärt alle Befehle von LilyPond, die Notation erstellen. -@warning{the Notation reference assumes that the reader knows -basic material covered in the Learning manual and is familiar with -the English musical terms presented in the glossary.} +@warning{Die Notationsreferenz geht davon aus, dass der Leser +die Grundlagen von LilyPond bereits kennt, wie sie im Handbuch +zum Lernen ausgeführt werden. In einigen Fällen sollte die +englische Musikterminologie (podívejte se do slovníčku) bekannt sein.} @divEnd @divClass{column-right-bottom} -@docLinks{Notation, notation, - @rusernamed{Top,Notation}, - @manualStableNotationSplit, - @manualStableNotationBig, 7 MB, - @manualStableNotationPdf, 18 MB} +@docLinks{Notový zápis, notation, + @rusernamed{Začátek,Notový zápis}, + @manualStableNotationSplit-cs, + @manualStableNotationBig-cs, 7 MB, + @manualStableNotationPdf-cs, 18 MB} @divEnd -@node Usage -@unnumberedsec Usage +@node Používání +@unnumberedsec Používání +@translationof Usage @divClass{column-left-top} -@subheading Usage manual +@subheading Příručka k používání -This book explains how to execute the programs, how to integrate -LilyPond notation with other programs, and suggests @qq{best -practices} for efficient use. It is recommended reading before -attempting any large projects. +Dieses Buch erklärt, wie die Programme ausgeführt werden, wie man +LilyPond-Notation in andere Programme integrieren kann und macht +Vorschläge, wie man am besten seine Notationsdateien anlegt. Es +wird empfohlen, das Dokument zu lesen, bevor man größere Projekte +in Angriff nimmt. @divEnd @divClass{column-right-bottom} -@docLinks{Usage, usage, - @rprogramnamed{Top,Usage}, - @manualStableUsageSplit, - @manualStableUsageBig, 300 KB, - @manualStableUsagePdf, 400 KB} +@docLinks{Používání, usage, + @rprogramnamed{Začátek,Používání}, + @manualStableUsageSplit-cs, + @manualStableUsageBig-cs, 300 KB, + @manualStableUsagePdf-cs, 400 KB} @divEnd -@node Snippets -@unnumberedsec Snippets +@node Úryvky +@unnumberedsec Úryvky +@translationof Snippets @divClass{column-left-top} -@subheading Snippets +@subheading Úryvky -This shows a selected set of LilyPond snippets from the -@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository} -(LSR). All the snippets are in the public domain. +Hier werden ausgewählte úryvky an LilyPond-Code mit der produzierten +Notation gezeigt. Úryvky stammen aus dem +@uref{http://lsr@/.dsi@/.unimi@/.it,Skladiště s úryvky LilyPondu} +(LSR) und stehen alle unter der Public Domain. -Please note that this document is not an exact subset of LSR. LSR -is running a stable LilyPond version, so any snippet which -demonstrates new features of a development version must be added -separately. These are stored in @file{Documentation/snippets/new/} in the LilyPond -source tree. +Beachten Sie, dass dieses Dokument keine bestimmte Teilmenge von +LSR darstellt. LSR läuft unter der stabilen Version von LilyPond, +sodass jedes úryvek, das eine neue Eigenschaft von der +Entwicklungsversion zeigt, extra hinzugefügt werden muss. Diese +Schipsel sind in der Datei @file{Documentation/snippets/new/} im +Quellverzeichnis von LilyPond gespeichert. -The list of snippets for each subsection of the Notation are also -linked from the @strong{See also} portion. +Die Schnipsel-Listen für jeden Abschnitt der Notationsreferenz +sind auch verlinkt vom @strong{Siehe auch}-Absatz. @divEnd @divClass{column-right-bottom} -@docLinks{Snippets, snippets, - @rlsrnamed{Top,Snippets}, +@docLinks{Úryvky, snippets, + @rlsrnamed{Začátek,Úryvky}, @manualStableSnippetsSplit, @manualStableSnippetsBig, 2.5 MB, @manualStableSnippetsPdf, 8 MB} @@ -329,182 +348,196 @@ linked from the @strong{See also} portion. @divEnd -@node FAQ -@unnumberedsec FAQ +@node Často kladené dotazy +@unnumberedsec Často kladené dotazy +@translationof FAQ @divClass{column-center-top} -@subheading Introductory questions +@subheading Einleitende Fragen -@subsubheading Where are the graphical canvas, menus, and toolbars? +@subsubheading Wo sind die graphischen Menüs, Werkzeugleisten und Notenblatt? -LilyPond requires you to write music as text. Please read about -our @ref{Text input}. +LilyPond erfordert es, dass Noten als Text eingegeben werden. +Lesen Sie bitte über unsere @ref{Text-Eingabe}. -@subsubheading There's a lot of documentation! Do I need to read it? +@subsubheading Es gibt sehr viel Dokumentation! Muss ich das alles +lesen? -You need to read the @ref{Learning, Learning manual}. As for the -rest of documentation, you only need to read the sections which -discuss the notation that you wish to create. +Sie müssen das @ref{Learning, Příručka k učení se} lesen. Der +Rest der Dokumentation ist zum Nachschlagen gedacht, wenn Sie +eine bestimmte Art von Notationszeichen oder -typ brauchen. -@subsubheading That's still a lot of reading! Is it worth it? +@subsubheading Das ist trotzdem noch viel zu lesen! Lohnt sich das +denn? -Please decide for yourself; the reasons why you might want to use -LilyPond are given in the @ref{Introduction}. +Das müssen Sie selber entscheiden; die Gründe, warum Sie LilyPond +anderen Programmen vorziehen können, sind dargestellt in der +@ref{Einleitung}. @divEnd @divClass{column-center-bottom} -@subheading Usage questions +@subheading Otázky k používání -@subsubheading Something isn't working! How do I fix it? +@subsubheading Etwas funktioniert nicht! Wie kann ich es reparieren? -This is explained in @rprogram{Troubleshooting}. +Das wird erklärt in @rprogram{Řešení potíží}. -@subsubheading Why do you change the syntax? +@subsubheading Warum ändern Sie die Syntax? -This is explained in @rprogram{Why does the syntax change?}. +Das wird erklärt in @rprogram{Warum verändert sich die Syntax?}. @divEnd @node Web @unnumberedsec Web +@translationof Web @divClass{column-left-top} @subheading Web -This manual supplies general information about LilyPond. It also -contains information about various community forums, bug -reporting, and development. +Dieses Handbuch stellt allgemeine Information zu LilyPond zur +Verfügung. Es enthält auch Information über die verschiedenen +Gemeinschaftsforen, das Melden von Fehlern und die Mitarbeit am +Programm. @divEnd @divClass{column-right-bottom} -@subheading Read it +@subheading Lesen Sie es -@subsubheading Latest manual +@subsubheading Das neueste Handbuch @divClass{keep-bullets} @itemize -@ref{Top,Web} +@ref{Začátek,Web} @end itemize @divEnd -@subsubheading Web manual in @versionDevel +@subsubheading Web-Handbuch von @versionDevel @docLinksBare{Web, web, - @ref{Top,Web}, - @manualDevelWebSplit, - @manualDevelWebBig, 1 MB, + @ref{Začátek,Web}, + @manualDevelWebSplit-cs, + @manualDevelWebBig-cs, 1 MB, @manualDevelWebPdf, 2 MB} @divEnd -@node Changes -@unnumberedsec Changes + +@node Změny +@unnumberedsec Změny +@translationof Changes @divClass{column-left-top} -@subheading Changes +@subheading Změny -This is a summary of important changes and new features in -LilyPond since the previous stable version. +Hier eine Zusammenfassung von wichtigen Veränderungen und neuen +Eigenschaften in LilyPond seit der vorigen stabilen Version. @divEnd @divClass{column-right-bottom} -@docLinks{Changes, changes, - @rchangesnamed{Top,Changes}, - @manualStableChangesSplit, - @manualStableChangesBig, 6 KB, - @manualStableChangesPdf, 200 KB} +@docLinks{Změny, changes, + @rchangesnamed{Začátek,Změny}, + @manualStableChangesSplit-cs, + @manualStableChangesBig-cs, 6 KB, + @manualStableChangesPdf-cs, 200 KB} @divEnd -@node Extending -@unnumberedsec Extending +@node Rozšíření +@unnumberedsec Rozšíření +@translationof Extend @divClass{column-left-top} -@subheading Extending LilyPond +@subheading Erweitern Sie LilyPond -This manual explains how to write extensions to LilyPond. +Dieses Handbuch erklärt, wie man Erweiterungen für LilyPond schreibt. @divEnd @divClass{column-right-bottom} -@docLinks{Extending, extending, - @rextendnamed{Top,Extending}, - @manualStableExtendingSplit, - @manualStableExtendingBig, 200 KB, - @manualStableExtendingPdf, 400 KB} +@docLinks{Rozšíření, extend, + @rextendnamed{Začátek,Rozšíření}, + @manualStableExtendingSplit-cs, + @manualStableExtendingBig-cs, 200 KB, + @manualStableExtendingPdf-cs, 400 KB} @divEnd -@node Internals -@unnumberedsec Internals +@node Vnitřní +@unnumberedsec Vnitřní +@translationof Internals @divClass{column-left-top} -@subheading Internals reference +@subheading Příručka k vnitřnostem -This is a set of heavily cross linked pages which document -the nitty-gritty details of each and every LilyPond class, object, -and function. It is produced directly from the formatting -definitions in the source code. +Hierbei handelt es sich um eine Anzahl sehr stark verlinkter +Seiten, welche alle klitzekleinen Details von jeder einzigen +LilyPond-Klasse, jedem Objekt und jeder Funktion dokumentieren. +Das Dokument wird direkt aus den Formatanweisungen des +Quellcodes erstellt und ist nur auf Englisch erhältlich. -Almost all formatting functionality that is used internally is -available directly to the user. For example, most variables that -control thickness values, distances, etc., can be changed in input -files. There are a huge number of formatting options, and all of -them are described in this document. Each section of the Notation -Reference has a @b{See also} subsection, which refers to the -generated documentation. +Fast alle Formatierungsfunktionen, die intern benutzt werden, +stehen auch direkt dem Benutzer zur Verfügung. Beispielsweise +die meisten Variablen, die Dickewerte, Entfernungen usw. kontrollieren, +können in der Eingabedatei verändert werden. Es gibt eine große +Anzahl von Formatierungsoptionen und alle sind in diesem Dokument +erklärt. Jeder Abschnitt der Notationsreferenz hat einen +@strong{Siehe auch}-Abschnitt, der auf diese Dokumentation verweist. @divEnd @divClass{column-right-bottom} -@docLinks{Internals, internals, - @rinternalsnamed{Top,Internals}, - @manualStableInternalsSplit, - @manualStableInternalsBig, 2.5 MB, - @manualStableInternalsPdf, 2.8 MB} +@docLinks{Vnitřní, internals, + @rinternalsnamed{Začátek,Vnitřní}, + @manualStableInternalsSplit-cs, + @manualStableInternalsBig-cs, 2.5 MB, + @manualStableInternalsPdf-cs, 2.8 MB} @divEnd -@node Translated -@unnumberedsec Translated +@node Překlad +@unnumberedsec Překlad +@translationof Translated @divClass{column-center-bottom} -@subheading Translations status +@subheading Status der Übersetzungen @include translations.itexi @divEnd -@node All -@unnumberedsec All +@node Vše +@unnumberedsec Vše +@translationof All -@divClass{column-left-top} -@subheading Downloadable versions +@divClass{column-center-bottom} +@subheading Versionen zum Herunterladen @ifclear web_version -Downloadable tarballs only available at @uref{http://lilypond.org} +Tar-Archive zum Herunterladen sind nur über @uref{http://lilypond.org} +erhältlich. @end ifclear @ifset web_version @divClass{keep-bullets} @itemize -@item @doctarballStable +@item @doctarballStable-de @end itemize @@ -514,40 +547,41 @@ Downloadable tarballs only available at @uref{http://lilypond.org} @divEnd @divClass{column-right-bottom} -@subheading Previous stable versions +@subheading Alte stabile Versionen @divClass{keep-bullets} @itemize @item @uref{http://lilypond.org/doc/v2.12/Documentation/, -LilyPond 2.12 Documentation} +LilyPond 2.12 Dokumentation} (auf deutsch) @item @uref{http://lilypond.org/doc/v2.11/Documentation/, -LilyPond 2.11 Documentation} +LilyPond 2.11 Dokumentation} (auf deutsch) @item @uref{http://lilypond.org/doc/v2.10/Documentation/, -LilyPond 2.10 Documentation} +LilyPond 2.10 Dokumentation} (auf englisch) @item @uref{http://lilypond.org/doc/v2.8/Documentation/, -LilyPond 2.8 Documentation} +LilyPond 2.8 Dokumentation} (auf englisch) @item @uref{http://lilypond.org/doc/v2.6/Documentation/, -LilyPond 2.6 Documentation} +LilyPond 2.6 Dokumentation} (auf englisch) @item @uref{http://lilypond.org/doc/v2.4/Documentation/out-www/, -LilyPond 2.4 Documentation} +LilyPond 2.4 Dokumentation} (auf englisch) @item @uref{http://lilypond.org/doc/v2.2/Documentation/out-www/, -LilyPond 2.2 Documentation} +LilyPond 2.2 Dokumentation} (auf englisch) @item @uref{http://lilypond.org/doc/v2.0/Documentation/out-www/, -LilyPond 2.0 Documentation} +LilyPond 2.0 Dokumentation} (auf englisch) @item @uref{http://lilypond.org/doc/v1.8/Documentation/out-www/, -LilyPond 1.8 Documentation} +LilyPond 1.8 Dokumentation} (auf englisch) @item @uref{http://lilypond.org/doc/v1.6/Documentation/out-www/, -LilyPond 1.6 Documentation} +LilyPond 1.6 Dokumentation} (auf englisch) + @end itemize @@ -559,11 +593,11 @@ LilyPond 1.6 Documentation} @unnumberedsec FDL @divClass{column-center-top} -@subheading Documentation license +@subheading Lizenz der Dokumentation -The documentation for GNU LilyPond is published under the GNU Free -Documentation License. An introduction to this license, and our -reasons for choosing it, is given in @ref{Freedom}. +Die Dokumentation für GNU LilyPond wird unter der GNU Free +Documentation License publiziert. Uvedení do diese +Lizenz und Gründe für ihre Benutzung finden sich in @ref{Freiheit}. @divEnd -- 2.39.2