X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fde%2Fessay%2Fengraving.itely;fp=Documentation%2Fde%2Fessay%2Fengraving.itely;h=501ea1820a03d3bca91f1db1b3db7c07c3bacaeb;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=0000000000000000000000000000000000000000;hpb=a8c9e8a7ca320ab0df5fd32e717fd62cd7635ce6;p=lilypond.git diff --git a/Documentation/de/essay/engraving.itely b/Documentation/de/essay/engraving.itely new file mode 100644 index 0000000000..501ea1820a --- /dev/null +++ b/Documentation/de/essay/engraving.itely @@ -0,0 +1,1831 @@ +@c -*- coding: utf-8; mode: texinfo; -*- + +@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.14.0" + +@c Translators: Till Paala + +@node Notensatz +@chapter Notensatz +@translationof Music engraving + +Dieser Aufsatz beschreibt, wie LilyPond entstand und wie es +benutzt werden kann, um schönen Notensatz zu erstellen. + +@menu +* Die Geschichte von LilyPond:: +* Details des Notensetzens:: +* Automatisierter Notensatz:: +* Ein Programm bauen:: +* LilyPond die Arbeit überlassen:: +* Notensatzbeispiele (BWV 861):: +@end menu + + +@node Die Geschichte von LilyPond +@section Die Geschichte von LilyPond +@translationof The LilyPond story + +Lange bevor LilyPond benutzt werden konnte, um wunderschöne +Aufführungspartituren zu setzen, bevor es in der Lage war, Noten +für einen Unversitätskurs oder wenigstens eine einfache Melodie zu +setzen, bevor es eine Gemeinschaft von Benutzern rund um die Welt oder +wenigstens einen Aufsatz über den Notensatz gab, begann LilyPond +mit einer Frage: + +@quotation +Warum schaffen es die meisten computergesetzten Noten nicht, die +Schönheit und Ausgeglichenheit von handgestochenem Notensatz aufzuweisen? +@end quotation + +@noindent +Einige der Antworten können gefunden werden, indem wir uns die +beiden folgenden Noten zur Analyse vornehmen. Das erste Beispiel +ist ein schöner handgestochener Notensatz von 1950, das zweite +Beispiel eine moderne, computergesetzte Edition. + +@ifnottex +@quotation +@noindent +Bärenreiter BA 320, @copyright{}1950: + +@sourceimage{baer-suite1-fullpage,,,png} +@end quotation + +@quotation +@noindent +Henle Nr. 666, @copyright{}2000: +@sourceimage{henle-suite1-fullpage,,,png} +@end quotation +@end ifnottex + +Die Noten sind identisch und stammen aus der ersten Solosuite für +Violoncello von J. S. Bach, aber ihre Erscheinung ist sehr +unterschiedlich, insbesondere wenn man sie ausdruckt und aus einigem +Abstand betrachtet. +@ifnottex +(Die PDF-Version dieses Handbuchs hat hochauflösende Abbildungen, +die sich zum Drucken eignen.) +@end ifnottex +Versuchen Sie, beide Beispiele zu lesen oder von ihnen zu spielen, +und Sie werden feststellen, dass der handgestochene Satz sich +angenehmer benutzen lässt. Er weist fließende Linien und Bewegung +auf und fühlt sich wie ein lebendes, atmendes Stück Musik an, während +die neuere Edition kalt und mechanisch erscheint. + +Es ist schwer, sofort die Unterschiede zur neueren Edition auszumachen. +Alles sieht sauber und fein aus, möglicherweise sogar @qq{besser}, +weil es eher computerkonform und einheitlich wirkt. Das hat uns +tatsächlich für eine ganze Weile beschäftigt. Wir wollten die +Computernotation verbessern, aber wir mussten erst verstehen, was +eigentlich falsch mit ihr war. + +Die Antwort findet sich in der präzisen, mathematischen Gleichheit +der neueren Edition. Suchen Sie die Taktstriche in der Mitte jeder +Zeile: im handgestochenen Satz hat die Position dieser Taktstriche +sozusagen natürliche Variation, während die neuere Version sie +fast immer perfekt in die Mitte setzt. Das zeigen diese vereinfachten +Diagramme des Seitenlayouts vom handgestochenen (links) und +Computersatz (rechts): + +@quotation +@iftex +@sourceimage{pdf/page-layout-comparison,,,} +@end iftex +@ifnottex +@sourceimage{page-layout-comparison,,,png} +@end ifnottex +@end quotation +@noindent + +Im Computersatz sind sogar die einzelnen Notenköpfe vertikal +aneinander ausgerichtet, was dazu führt, dass die Melodie hinter +einem starren Gitter aus musikalischen Zeichen verschwindet. + +Es gibt noch weitere Unterschiede: in der handgestochenen Version +sind die vertikalen Linien stärker, die Bögen liegen dichter an den +Notenköpfen und es gibt mehr Abweichungen in der Steigung der +Balken. Auch wenn derartige Details als Haarspalterei erscheinen, +haben wir trotzdem als Ergebnis einen Satz, der einfacher zu lesen +ist. In der Computerausgabe ist jede Zeile fast identisch mit den +anderen und wenn der Musiker für einen Moment weg schaut, wird +er die Orientierung auf der Seite verlieren. + +LilyPond wurde geschaffen, um die Probleme zu lösen, die wir in +existierenden Programmen gefunden haben und um schöne Noten zu +schaffen, die die besten handgestochenen Partituren imitieren. + +@iftex +@page +@noindent +Bärenreiter BA 320, @copyright{}1950: + +@sourceimage{baer-suite1-fullpage-hires,16cm,,} +@page +@noindent +Henle no. 666, @copyright{}2000: +@sp 3 +@sourceimage{henle-suite1-fullpage-hires,16cm,,} +@page +@end iftex + + +@node Details des Notensetzens +@section Details des Notensetzens +@translationof Engraving details + +@cindex Notensatz +@cindex Typographie +@cindex Notengravur +@cindex Gravur, Notensatz +@cindex Plattendruck, Noten + +Die Kunst des Notensatzes wird auch als Notenstich bezeichnet. Dieser +Begriff stammt aus dem traditionellen Notendruck@footnote{Frühe +europäische Drucker versuchten sich an verschiedenen Techniken +wie handgeschnitzten Holzblöcken, beweglichen Lettern und +gravierten dünnen Metallblechen. Der Satz mit Lettern hat den +Vorteil, dass man ihn schnell korrigieren kann und auch Text +einfach einfügen kann, aber nur der Notenstich als Gravur +ermöglichte die Möglichkeit, lebendiges Layout ohne +Qualitätsabstriche zu erstellen. So wurden der Notenstich +mit der Hand bis ins 20. Jahrhundert zum Standard für alle +gedruckten Noten, ausgenommen einige Hymnale und Liederbücher, wo +der Letterdruck durch seine Einfachheit und Kostenersparnis +gerechtfertigt war.}. Noch bis vor etwa 20 +Jahren wurden Noten erstellt, indem man sie in eine Zink- oder Zinnplatte +schnitt oder mit Stempeln schlug. Diese Platte wurde dann mit Druckerschwärze +versehen, so dass sie in den geschnittenen und gestempelten Vertiefungen +blieb. Diese Vertiefungen schwärzten dann ein auf die Platte gelegtes +Papier. Das Gravieren wurde vollständig von Hand erledigt. Es war darum +sehr mühsam, Korrekturen anzubringen, weshalb man von vornherein richtig +schneiden musste. Die Kunst des Notenstechens war eine sehr +spezialisierte Handwerkskunst, für die ein Handwerker etwa fünf +Ausbildungsjahre benötigte, bevor der den Meistertitel tragen durfte. +Weitere fünf Jahre waren erforderlich, um diese Kunst wirklich zu +beherrschen. + +@quotation +@iftex +@sourceimage{hader-slaan,,7cm,} +@end iftex +@ifnottex +@sourceimage{hader-slaan,,,jpg} +@end ifnottex +@end quotation + +LilyPond wurde von den handgestochenen traditionellen Noten +inspiriert, die in der ersten Hälfte des 20. Jahrhunderts von +europäischen Notenverlagen herausgegeben wurden (insbesondere +Bärenreiter, Duhem, Durand, Hofmeister, Peters und Scott). Sie +werden teilweise als der Höhepunkt des traditionellen Notenstichs +angesehen. Beim Studium dieser Editionen haben wir eine Menge +darüber gelernt, was einen gut gesetzten Musikdruck ausmacht und +welche Aspekte des handgestochenen Notensatzes wir in LilyPond +imitieren wollten. + +@c Heutzutage wird fast alle gedruckte Musik von Computern erstellt. Das +@c hat einige deutliche Vorteile: Drucke sind billiger als die gravierten +@c Platten und der Computersatz kann per E-Mail verschickt werden. Leider +@c hat der intensive Einsatz des Computers die graphische Qualität +@c des Notensatzes vermindert. Mit dem Computer erstellte Noten sehen +@c langweilig und mechanisch aus, was es erschwert, von ihnen zu spielen. + +@menu +* Notenschriftarten:: +* Optischer Ausgleich:: +* Hilfslinien:: +* Optische Größen:: +* Warum der große Aufwand?:: + @end menu + +@node Notenschriftarten +@unnumberedsubsec Notenschriftarten +@translationof Music fonts + +Die Abbildung unten illustriert den Unterschied zwischen +traditionellem Notensatz und einem typischen Computersatz. +Das linke Bild zeigt ein eingescanntes b-Vorzeichen +einer handgestochenen Bärenreiter-Edition, das rechte Bild +hingegen ein Symbol aus einer 2000 herausgegebenen Edition +der selben Noten. Obwohl beide Bilder mit der gleichen +Tintenfarbe gedruckt sind, wird die frühere Version dunkler: die +Notenlinien sind dicker und das Bärenreiter-b hat ein rundliches, +beinahe sinnliches Aussehen. Der rechte Scan hingegen hat +dünnere Linien und eine gerade Form mit scharfen Ecken und Kanten. + +@multitable @columnfractions .25 .25 .25 .25 +@item @tab +@ifnotinfo +@iftex +@sourceimage{baer-flat-gray,,4cm,} +@end iftex +@ifnottex +@sourceimage{baer-flat-gray,,,png} +@end ifnottex + +@tab +@iftex +@sourceimage{henle-flat-gray,,4cm,} +@end iftex +@ifnottex +@sourceimage{henle-flat-gray,,,png} +@end ifnottex + +@end ifnotinfo +@ifinfo +@sourceimage{henle-flat-bw,,,png} +@sourceimage{baer-flat-bw,,,png} +@sourceimage{lily-flat-bw,,,png} +@end ifinfo + + +@item @tab +Bärenreiter (1950) +@tab +Henle (2000) + +@end multitable + + +@cindex Musiksymbole +@cindex Schriftart +@cindex Dichte +@cindex Balance + +Als wir uns entschlossen hatten, ein Programm zu schreiben, das +die Typographie des Notensatzes beherrscht, gab es keine freien +Musikschriftarten, die unserem geplanten eleganten Notenbild passen +würden. Unbeirrt schufen wir eine Schriftart und dazu einen +Computerfont mit den musikalischen Symbolen, wobei wir uns an den +schönen Musikdrucken der handgestochenen Noten orientierten. Ohne +diese Erfahrung hätten wir nie verstanden, wie hässlich die +Schriftarten waren, die wir zuerst bewunderten. + +Unten ein Beispiel zweier Notenschriftarten. Das obere Beispiel ist der +Standard im Sibelius-Programm (die @emph{Opus}-Schriftart), das +untere unsere eigene LilyPond-Schriftart. + +@quotation +@iftex +@sourceimage{pdf/OpusAndFeta,,,} +@end iftex +@ifnottex +@sourceimage{OpusAndFeta,,,png} +@end ifnottex +@end quotation + +Die LilyPond-Symbole sind schwerer und ihre Dicke ist durchgängiger, +wodurch sie einfacher zu lesen sind. Feine Enden, wie etwa die +Seiten der Viertelpause, sollten nicht als scharfe Spitzen enden, +sondern etwas abgerundet. Das liegt daran, dass scharfe Enden +der Stempel sehr fragil sind und sich schnell durch die Verwendung +abnutzen. Zusammengefasst muss die Schwärze der Schriftart sehr +vorsichtig mit der Schwärze von Notenlinien, Balken und Bögen +abgeglichen werden, um ein starkes, aber doch ausgewogenes Gesamtbild +zu ergeben. + +Einige weitere Besonderheiten: der Notenkopf der Halben ist nicht +elliptisch, sondern etwas rautenförmig. Der vertikale Hals des +b-Symbols ist schwach keilförmig nach oben hin. Das Kreuz und das +Auflösungszeichen sind einfacher aus der Entfernung zu unterscheiden, +weil ihre schrägen Linien eine andere Neigung haben und die vertikalen +Linien dicker sind. + +@node Optischer Ausgleich +@unnumberedsubsec Optischer Ausgleich +@translationof Optical spacing + +Die Aufteilung der Noten in der Horizontalen sollte die Dauer der +jeweiligen Note widerspiegeln. Wie wir jedoch im Beispiel der +Bach-Suite oben sehen konnten, orientieren sich viele moderne +Partituren an den Dauern mit mathematischer Präzision, was zu +schlechten Ergebnissen führt. Im nächsten Beispiel ist ein Motiv +zweimal dargestellt: das erste Mal mit exakter mathematischer +Aufteilung, das zweite Mal mit Korrekturen. Welches Beispiel +spricht Sie mehr an? + +@cindex Optischer Ausgleich + +@lilypond +\paper { + ragged-right = ##t + indent = #0.0 +} + +music = { + c'4 e''4 e'4 b'4 + \stemDown + b'8[ e'' a' e''] + \stemNeutral + e'8[ e'8 e'8 e'8] +} +\score +{ + \music + \layout { + \context { + \Staff + \override NoteSpacing #'stem-spacing-correction = #0.0 + \override NoteSpacing #'same-direction-correction = #0.0 + \override StaffSpacing #'stem-spacing-correction = #0.0 + } + } +} +@end lilypond + +@lilypond +\paper { + ragged-right = ##t + indent = #0.0 +} + +music = { + c'4 e''4 e'4 b'4 | + \stemDown + b'8[ e'' a' e''] + \stemNeutral + e'8[ e'8 e'8 e'8] +} + +\score +{ + \music + \layout { + \context { + \Staff + \override NoteSpacing #'stem-spacing-correction = #0.6 + } + } +} +@end lilypond + +@cindex normale Rhythmen +@cindex normale Abstände +@cindex Abstände, normal +@cindex Rhythmen, normal + +In jedem Takt in diesem Ausschnitt kommen Noten vor, die in einem +gleichmäßigen Rhythmus gespielt werden. Die Abstände sollten das +widerspiegeln. Leider lässt uns aber das Auge im Stich: es beachtet +nicht nur den Abstand von aufeinander folgenden Notenköpfen, sondern +auch den ihrer Hälse. Also müssen Noten, deren Hälse in direkter +Folge zuerst nach oben und dann nach unten ausgerichtet sind, weiter +auseinander gezogen werden, während die unten/oben-Folge engere +Abstände fordert, und das alles auch noch in Abhängigkeit von der +vertikalen Position der Noten. Das untere Beispiel ist mit dieser +Korrektur gesetzt. Im oberen Beispiel hingegen bilden sich +für das Auge bei unten/oben-Folgen Notenklumpen. Ein Notenstechermeister +hätte die Notenaufteilung angepasst, sodass die angenehm zu lesen ist. + +Die Algorithmen zur Platzaufteilung von LilyPond berechnen sogar die +Taktstriche mit ein, weshalb die letzte Noten mit Hals nach oben im +richtig platzierten Beispiel etwas mehr Platz vor dem Taktstrich +erhält, damit sie nicht gedrängt wirkt. Ein Hals nach unten würde diesen Ausgleich nicht benötigen. + + +@node Hilfslinien +@unnumberedsubsec Hilfslinien +@translationof Ledger lines + +@cindex Hilfslinien +@cindex Zusammenstöße + +Hilfslinien stellen eine typographische Herausforderung dar: sie +machen es schwerer, die Notensymbole dicht anzuordnen und sie müssen +klar genug sein, dass sich die Tonhöhe mit einem schnellen Blick +erkennen lässt. Im Beispiel unten können wir sehen, dass +Hilfslinien dicker als normale Notenlinien sein sollten und dass +ein gelernter Notenstecher eine Hilfslinie verkürzt, um dichteres +Platzieren von Versetzungszeichen zu erlauben. Wir haben diese +Eigenschaft in den Notensatz von LilyPond eingebaut. + +@multitable @columnfractions .25 .25 .25 .25 +@item @tab + +@iftex +@sourceimage{baer-ledger,3cm,,} +@end iftex +@ifnottex +@sourceimage{baer-ledger,,,png} +@end ifnottex + +@tab + +@iftex +@sourceimage{lily-ledger,3cm,,} +@end iftex +@ifnottex +@sourceimage{lily-ledger,,,png} +@end ifnottex + +@end multitable + + +@node Optische Größen +@unnumberedsubsec Optische Größen +@translationof Optical sizing + +Noten werden in verschiedenen Größen gedruckt. Ursprünglich hatte +man hierzu Stempel in verschiedenen Größen, was gleichzeitig heißt, +dass jeder Stempel so beschaffen war, dass er für seine Größe ein +ideales Abbild erzeugte. Mit den digitalen Fonts kann ein einziger +Umriss mathematisch skaliert werden, um eine beliebige Größe zu +erzeugen, was sehr viele Vorteile hat. In kleinen Größen erscheinen +die Symbole jedoch zu dünn. + +Für LilyPond haben wir Schriftarten mit einer Reihe von Dicken +erstellt, die jeweils einer Notengröße entsprechen. Hier ein +LilyPond-Notensatz mit der Systemgröße 26: + +@quotation +@iftex +@sourceimage{pdf/size26,,23mm,} +@end iftex +@ifnottex +@sourceimage{size26,,,png} +@end ifnottex +@end quotation + +@noindent +und hier die gleichen Noten mit Systemgröße 11, anschließend um 236% +vergrößert, damit das Bild in exakt der gleichen Größe wie das +vorige erscheint: + +@quotation +@iftex +@sourceimage{pdf/size11,,23mm,} +@end iftex +@ifnottex +@sourceimage{size11,,,png} +@end ifnottex +@end quotation + +@noindent +Bei kleineren Größen benutzt LilyPond proportional dickere +Notenlinien, sodass das Notenbild immer noch gut zu lesen ist. + +@ignore +Dadurch können auch Notensysteme unterschiedlicher Größe +friedlich nebeneinander auf der gleichen Seite erscheinen: + +@c TODO: are the stems in this example the right thickness? How should +@c line weights be scaled for small staves? + +@c Grieg's Violin Sonata Op. 45 +@lilypond[indent=1.5cm] +global = { + \time 6/8 + \key c \minor +} + +\score { + << + \new Staff \with { + fontSize = #-4 + \override StaffSymbol #'staff-space = #(magstep -4) + \override StaffSymbol #'thickness = #(magstep -3) + } + \relative c' { + \global + \set Staff.instrumentName = #"Violin" + c8.(\f^> b16 c d) ees8.(^> d16 c b) + g8.(^> b16 c ees) g8-.^> r r + R2. + } + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff \relative c' { + \global + s2. + s4. s8 r8 r16 + 4.^> 8 r r + } + \new Staff \relative c { + \global + \clef "bass" + << + { + \once \override DynamicText #'X-offset = #-3 + 2.~->^\f + 4.~ 8 + } \\ { + 2.~ + 4.~ 8 + } + >> + r8 r16 16 + 4.-> 8 r r + } + >> + >> +>> +} +@end lilypond +@end ignore + + +@node Warum der große Aufwand? +@unnumberedsubsec Warum der große Aufwand? +@translationof Why work so hard? + +Musiker sind üblicherweise zu sehr damit beschäftigt, die Musik aufzuführen, +als dass sie das Aussehen der Noten studieren könnten; darum mag diese +Beschäftigung mit typographischen Details akademisch wirken. +Das ist sie aber nicht. Notenmaterial ist Aufführungsmaterial: +alles muss unternommen werden, damit der Musiker die Aufführung +besser bewältigt, und alles, das unklar oder unangenehm ist, +ist eine Hindernis. + +Der dichtere Eindruck, den die dickeren Notenlinien und schwereren +Notationssymbole schaffen, eignet sich besser für Noten, +die weit vom Leser entfernt stehen, etwa auf einem Notenständer. +Eine sorgfältige Verteilung der Zwischenräume erlaubt es, die +Noten sehr dicht zu setzen, ohne dass die Symbole zusammenklumpen. +Dadurch werden unnötige Seitenumbrüche vermieden, so dass man +nicht so oft blättern muss. + +Dies sind die Anforderungen der Typographie: Das Layout sollte +schön sein -- nicht nur aus Selbstzweck, sondern vor allem um dem +Leser zu helfen. Für Aufführungsmaterial ist das umso wichtiger, +denn Musiker haben eine begrenzte Aufnahmefähigkeit. Je weniger +Mühe nötig ist, die Noten zu erfassen, desto mehr Zeit bleibt für +die Gestaltung der eigentlichen Musik. Das heißt: Gute +Typographie führt zu besseren Aufführungen! + +Die Beispiele haben gezeigt, dass der Notensatz eine subtile und +komplexe Kunst ist und gute Ergebnisse nur mit viel Erfahrung +erlangt werden können, die Musiker normalerweise nicht haben. +LilyPond stellt unser Bemühen dar, die graphische Qualität +handgestochener Notenseiten ins Computer-Zeitalter zu transportieren +und sie für normale Musiker erreichbar zu machen. Wir haben +unsere Algorithmen, die Gestalt der Symbole und die Programm-Einstellungen +darauf abgestimmt, einen Ausdruck zu erzielen, der der Qualität +der alten Editionen entspricht, die wir so gerne betrachten +und aus denen wir gerne spielen. + + + +@node Automatisierter Notensatz +@section Automatisierter Notensatz +@translationof Automated engraving + +@cindex Notensatz, automatisch +@cindex automatischer Notensatz + +Dieser Abschnitt beschreibt, was benötigt wird um ein Programm zu +schreiben, welches das Layout von gestochenen Noten nachahmen kann: +eine Methode, dem Computer gute Layouts zu erklären und detailliertes +Vergleichen mit echten Notendrucken. + +@menu +* Schönheitswettbewerb:: +* Verbessern durch Benchmarking:: +* Alles richtig machen:: +@end menu + +@node Schönheitswettbewerb +@unnumberedsubsec Schönheitswettbewerb +@translationof Beauty contests + +Wie sollen wir also jetzt die Typographie anwenden? +Anders gesagt: welcher von den drei Konfigurationen sollte für +den folgenden Bogen ausgewählt werden? + +@lilypond +\relative c { + \clef bass + \once \override Slur #'positions = #'(1.5 . 1) + e8[( f] g[ a b d,)] r4 + \once \override Slur #'positions = #'(2 . 3) + e8[( f] g[ a b d,)] r4 + e8[( f] g[ a b d,)] r4 +} +@end lilypond + +Es gibt wenige Bücher über die Kunst des Notensatzes. Leider +haben sie nur Daumenregeln und einige Beispiele zu bieten. Solche +Regeln können sehr informativ sein, aber sie sind weit entfernt +von einem Algorithmus, den wir in unser Programm einbauen könnten. +Indem man die Anweisungen der Literatur anwendet, kommt man zu +Algorithmen mit sehr vielen manuellen Ausnahmen. Alle die möglichen +Fälle zu analysieren stellt sehr viel Arbeit dar und meistens +werden dennoch nicht alle Fälle vollständig abgedeckt: + +@quotation +@iftex +@sourceimage{ross-beam-scan,7cm,,} +@end iftex +@ifnottex +@sourceimage{ross-beam-scan,,,.jpg} +@end ifnottex +@end quotation + +(Bildquelle: Ted Ross, @emph{The Art of Music Engraving}) + +Anstatt zu versuchen, für jedes mögliche Szenario eine passende +Layoutregel zu definieren, müssen wir nur die Regeln genau genug +beschreiben, sodass LilyPond die Gefälligkeit von mehreren +Alternativen selber einschätzen kann. Dann errechnen wir für jede +mögliche Konfiguration eine Hässlichkeits-Rangliste und wir wählen +die Konfiguration aus, die am wenigsten hässlich ist. + +Zum Beispiel hier drei mögliche Konfiguration eines Legatobogens, +und LilyPond hat jeder Konfiguration @qq{Hässlichkeitspunkte} +verliehen. Das erste Beispiel erhält 15.39 Punkte, weil einer der +Notenköpfe angeschnitten wird: + +@lilypond +\relative c { + \clef bass + \once \override Slur #'positions = #'(1.5 . 1) + e8[(_"15.39" f] g[ a b d,)] r4 +} +@end lilypond + +Das zweite Beispiel ist schöner, aber der Bogen beginnt weder noch +endet er an den Notenköpfen. Hier werden 1.71 Punkte auf der linken +und 9.37 Punkte auf der rechten Seite verliehen, plus weiteren +2 Punkten, weil der Bogen aufsteigt, während die Melodie absteigt. +Insgesamt also 13.08 Punkte: + +@lilypond +\relative c { + \clef bass + \once \override Slur #'positions = #'(2 . 3) + e8[(_"13.08" f] g[ a b d,)] r4 +} +@end lilypond + +Der letzte Bogen erhält 10.04 Punkte für die Lücke rechts und +2 Punkte für die Neigung nach oben, aber er ist die schönste +der drei Varianten, sodass LilyPond ihn auswählt: + +@lilypond +\relative c { + \clef bass + e8[(_"12.04" f] g[ a b d,)] r4 +} +@end lilypond + +Diese Technik ist sehr allgemein und wird benutzt, um optimale +Entscheidungen für Bögenkonfigurationen, Bindebögen und Punkten +in Akkorden, Zeilenumbrüche und Seitenumbrüche zu erhalten. Die +Ergebnisse dieser Entscheidungen können durch einen Vergleich mit +handgestochenen Noten eingeschätzt werden. + + +@node Verbessern durch Benchmarking +@unnumberedsubsec Verbessern durch Benchmarking +@translationof Improvement by benchmarking + +Die Ausgabe von LilyPond hat sich schrittweise mit der Zeit +verbessert, und sie verbessert sich weiter, indem sie immer wieder +mit handgestochenen Noten verglichen wird. + +Hier als Beispiel eine Zeile eines Benchmark-Stückes aus einer +handgestochenen Notenedition (Bärenreiter BA320): + +@iftex +@sourceimage{baer-sarabande-hires,16cm,,} +@end iftex +@ifnottex +@sourceimage{baer-sarabande,,,png} +@end ifnottex + +@noindent +und die gleiche Zeile als Satz einer sehr alten LilyPond-Version +(Version 1.4, Mai 2001): + +@iftex +@sourceimage{pdf/lily14-sarabande,16cm,,} +@end iftex +@ifnottex +@sourceimage{lily14-sarabande,,,png} +@end ifnottex + +@noindent +Die Ausgabe von LilyPond 1.4 ist auf jeden Fall leserlich, aber +ein ausführlicher Vergleich mit der Vorlage zeigt viele Fehler in +den Formatierungsdetails: + +@iftex +@sourceimage{lily14-sarabande-annotated-hires,16cm,,} +@end iftex +@ifnottex +@sourceimage{lily14-sarabande-annotated,,,png} +@end ifnottex + +@itemize @bullet +@item vor der Taktangabe ist nicht genug Platz +@item die Hälse der bebalkten Noten sind zu lang +@item der zweite und vierte Takt sind zu schmal +@item der Bogen sieht ungeschickt aus +@item das Triller-Symbol ist zu groß +@item die Hälse sind zu dünn +@end itemize + +@noindent +(Es gibt auch zwei fehlende Notenköpfe, verschiedene editorische +Anweisungen, die Fehler und eine falsche Tonhöhe!) + +Indem die Layoutregeln und das Design der Schriftarten angepasst +wurde, hat sich die Ausgabe sehr stark verbessert. Vergleichen +Sie das gleiche Referenzbeispiel und die Ausgabe der aktuellen +LilyPond-Version (@version{}): + +@iftex +@sourceimage{baer-sarabande-hires,16cm,,} +@end iftex +@ifnottex +@sourceimage{baer-sarabande,,,png} +@end ifnottex + +@lilypond[staffsize=17.5,line-width=15.9\cm] +\relative c { + \clef "bass" + \key d \minor + \time 3/4 + \mergeDifferentlyDottedOn + << + { \slurDashed d8.-\flageolet( e16) e4.-\trill( d16 e) } + \\ + { d4_2 a2 } + >> + \slurDashed + 4. e8( d c) + \slurSolid + bes8 g' f e16( f g_1 a_2 bes_3 d,_2) + \slurDashed + cis4.-\trill b8_3( a g) + << + { \slurDashed d'8.( e16) e4.-\trill( d16 e) } + \\ + { 4 a2 } + >> +} +@end lilypond + +@noindent +Die jetzige Ausgabe ist kein Klon der Referenzedition, aber sie ist +sehr viel näher an einer Publikationsqualität. + + +@node Alles richtig machen +@unnumberedsubsec Alles richtig machen +@translationof Getting things right + +Wir können auch die Fähigkeiten von LilyPond, Notensatzentscheidungen +alleine zu fällen, messen, indem wir die Ausgabe von LilyPond mit +der Ausgabe eines kommerziellen Notensatzprogramms vergleichen. +In diesem Fall haben wir Finale 2008 genommen, eines der beliebtesten +Notensatzprogramme, insbesondere in Nordamerika. Sibelius ist +Finales hauptsächlicher Gegenspieler, offensichtlich vor allem in +Europa verbreitet. + +Für unseren Vergleich haben wir uns für die Fuge in G-Moll aus +dem Wohltemperierten Clavier 1, BWV 861 von J. S. Bach entschieden, +mit dem Hauptthema: + +@lilypond +\relative c' { + \key g \minor + \clef "treble_8" + r8 d ees g, fis4 g + r8 a16 bes c8 bes16 a bes8 +} +@end lilypond + +@noindent +In unserem Vergleich setzten wir die letzten sieben Takte des +Stückes (28--34) in Finale und LilyPond. Das ist der Punkt, an +der das Thema als dreistimmige Engführung in den Schlussabschnitt +überleitet. In der Finale-Version haben wir der Versuchung +widerstanden, jedwede Anpassungen abweichend vom Standard vorzunehmen, +weil wir zeigen wollen, welche Dinge von den beiden Programmen +ohne Hilfeleistung richtig gemacht werden. Die einzigen größeren +Änderungen, die wir vorgenommen haben, war die Anpassung der +Seitengröße an die Seitengröße dieses Aufsatzes und die Begrenzung +der Noten auf zwei Systeme, um den Vergleich einfacher zu machen. +In der Standardeinstellung Finale hätte zwei Zeilen mit je drei +Takten und schließlich eine letzte Zeile gesetzt, die nur einen einzigen +Takt enthält. + +Viele der Unterschiede zwischen den beiden Sätzen finden sich +in den Takten 28--29, hier zuerst in Finales Version, dann in der +Version von LilyPond: + +@iftex +@sourceimage{pdf/bwv861mm28-29,14cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861mm28-29,,,png} +@end ifnottex + +@lilypond[staffsize=19.5,line-width=14\cm] +global = { \key g \minor } + +partI = \relative c' { + \voiceOne + fis8 d' ees g, fis4 g + r8 a16 bes c8 bes16 a d8 r r4 +} + +partII = \relative c' { + \voiceTwo + d4 r4 r8 d'16 c bes8 c16 d + ees8 d c ees a, r r4 +} + +partIII = \relative c' { + \voiceOne + r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a +} + +partIV = \relative c { + \voiceTwo + d4 r r2 + r8 d ees g, fis4 a +} + +\score { + << + % \set Score.barNumberVisibility = #all-bar-numbers-visible + % required in 2.13 + \set Score.currentBarNumber = #28 + \bar "" + \new PianoStaff << + \new Staff = "RH" + << + \global + \new Voice = "voiceI" { \partI } + \new Voice = "voiceII" { \partII } + >> + + \new Staff = "LH" << + \clef "bass" + \global + \new Voice = "voiceIII" { \partIII } + \new Voice = "voiceIV" { \partIV } + >> + >> + >> + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + } + \context { + \PianoStaff + \override StaffGrouper #'staff-staff-spacing #'padding = #1 + } + } +} +@end lilypond + +Einige der Mängel des nicht editierten Finale-Satzes beinhalten: + +@itemize @bullet + +@item Die meisten Balken sind zu weit vom Notensystem entfernt. +Ein Balken, der zum Zentrum des Systems zeigt, sollte etwa die +Länge einer Oktave haben, aber Notensetzer verkürzen die Länge, +wenn der Balken in polyphonen Situationen aus dem System +herauszeigt. Die Bebalkung von Finale kann einfach mit ihrem +Patterson Beams-Plugin verbessert werden, aber wir haben diesen +Schritt für dieses Beispiel ausgelassen. + +@item Finale passt die Position von ineinander greifenden Notenköpfen +nicht an, sodass die Noten sehr schwer lesbar werden, wenn +die untere und obere Stimme zeitweise ausgetauscht werden: + +@lilypond +collide = \once \override NoteColumn #'force-hshift = #0 + +\score { + << + \new Voice = "sample" \relative c''{ + \key g \minor + << + { \voiceOne g4 \collide g4 } + \new Voice { \voiceTwo bes \collide bes } + >> + } + \new Lyrics \lyricsto "sample" \lyricmode { "good " " bad" } + >> +} +@end lilypond + +@item Finale positioniert alle Pausen an einer festen Position auf +dem System. Der Benutzer kann sie anpassen, wie er es richtig +findet, aber das Programm unternimmt keinen Versuch, den Inhalt +der anderen Stimme mit einzubeziehen. Durch einen Glücksfall +kommen keine wirklichen Kollisionen zwischen Noten und Pausen +in diesem Beispiel vor, aber das liegt mehr an der Position der +Noten als an der der Pausen. Anders gesagt: Bach verdient mehr +Aufmerksamkeit um vollständige Kollisionen zu vermeiden als +Finale ihm gönnt. + +@end itemize + +Dieses Beispiel soll nicht suggerieren, dass man mit Finale nicht +Notensatz in Publikationsqualität erstellen könnte. Das Programm ist +durchaus dazu fähig, wenn ein erfahrener Benutzer genug Zeit und Fähigkeit mitbringt. +Einer der fundamentalen Unterschiede zwischen LilyPond und kommerziellen +Notensatzprogrammen ist, dass LilyPond versucht, den Aufwand an +menschlicher Intervention auf ein absolutes Minimum zu reduzieren, +während andere Programme versuchen, ein attraktives Programmfenster +zu bieten, in dem die Anpassungen vorgenommen werden können. + +Einen besonders hervorstechenden Mangel von Finale +ist ein fehlendes b-Vorzeichen in Takt 33: + +@quotation +@iftex +@sourceimage{pdf/bwv861mm33-34-annotate,7.93cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861mm33-34-annotate,,,png} +@end ifnottex +@end quotation + +@noindent +Das b-Symbol wird benötigt, um das Auflösungzeichen im selben +Takt rückgängig zu machen, aber Finale lässt es aus, weil es in +einer anderen Stimme vorkommt. Der Benutzer muss nicht nur daran +denken, ein Balken-Plugin zu starten und die Notenköpfe und Pausen +neu anzuordnen, er muss auch jeden Takt prüfen, ob Versetzungszeichen +aus anderen Stimmen korrigiert werden müssen, damit nicht ein +Notensatzfehler die Probe unnötig unterbricht. + +Wenn Sie diese Beispiel noch detaillierter betrachten wollen, +können Sie den vollen siebentaktigen Ausschnitt am Ende dieses +Aufsatzes als Notensatz in vier unterschiedlichen +publizierten Editionen finden. Nähere Betrachtung zeigt, dass +es einige akzeptable Variationen zwischen den handgestochenen +Beispielen gibt, dass LilyPond aber ziemlich guten Notensatz +im Rahmen dieser Variationen produziert. Auch die LilyPond-Ausgabe +hat noch ihre Fehler: sie ist beispielsweise etwas zu aggressiv +bei der Verkürzung einiger Hälse -- hier ist also noch Raum für +weitere Entwicklung und Feineinstellung. + +Natürlich hängt Typographie vom menschlichen Urteil der Erscheinung +ab, sodass Menschen nicht vollständig ersetzt werden können. Viel +der eintönigen Arbeit kann jedoch automatisiert werden. Wenn +LilyPond die meisten üblichen Situationen richtig löst, ist das +schon eine große Verbesserung gegenüber existierender Software. +Im Laufe der Jahre wir das Programm immer besser und macht mehr +und mehr Sachen automatisch, sodass manuelles Eingreifen immer +seltener wird. Wo manuelle Anpassungen benötigt werden, +wurde die Struktur von LilyPond mit Flexibilität im Hinterkopf +geplant. + + +@node Ein Programm bauen +@section Ein Programm bauen +@translationof Building software + +Dieser Abschnitt beschreibt einige der Entscheidungen, +die wir während des Programmierens für das Design von LilyPond +getroffen haben. + +@menu +* Die Darstellung der Musik:: +* Welche Symbole?:: +* Flexible Architektur:: +@end menu + +@node Die Darstellung der Musik +@unnumberedsubsec Die Darstellung der Musik +@translationof Music representation + +@cindex Syntax +@cindex rekursive Strukturen + +Idealerweise ist das Eingabeformat für ein komplexes Satzsystem die +abstrakte Beschreibung des Inhaltes. In diesem Fall wäre das die +Musik selber. Das stellt uns aber vor ein ziemlich großes Problem, +denn wie können wir definieren, was Musik wirklich ist? Anstatt darauf +eine Antwort zu suchen, haben wir die Frage einfach umgedreht. Wir +schreiben ein Programm, das den Notensatz beherrscht und machen das +Format so einfach wie möglich. Wenn es nicht mehr vereinfacht +werden kann, haben wir per Definition nur noch den reinen Inhalt. Unser +Format dient als die formale Definition eines Musiktextes. + +Die Syntax ist gleichzeitig die Benutzerschnittstelle bei LilyPond, +darum soll sie einfach zu schreiben sein; z. B. bedeutet + +@example +@{ + c'4 d'8 +@} +@end example + +@noindent +dass eine Viertel c' und eine Achtel d' erstellt werden sollen, +wie in diesem Beispiel: + +@lilypond[quote] +{ + c'4 d'8 +} +@end lilypond + +In kleinem Rahmen ist diese Syntax sehr einfach zu benutzen. In +größeren Zusammenhängen aber brauchen wir Struktur. Wie sonst kann +man große Opern oder Symphonien notieren? Diese Struktur wird +gewährleistet durch sog. @emph{music expressions} (Musikausdrücke): +indem kleine Teile zu größeren kombiniert werden, kann komplexere +Musik dargestellt werden. So etwa hier: + +@lilypond[quote,verbatim,fragment,relative=1] +f4 +@end lilypond + +@noindent +Gleichzeitig erklingende Noten werden hinzugefügt, indem man alle in @code{<<} und @code{>>} einschließt. + +@example +<> +@end example + +@lilypond[quote,fragment,relative=1] +\new Voice { <> } +@end lilypond + +@noindent +Um aufeinanderfolgende Noten darzustellen, werden sie in geschweifte Klammern gefasst: + +@code{@{@tie{}@dots{}@tie{}@}} + +@example +@{ f4 <> @} +@end example + +@lilypond[quote,relative=1,fragment] +{ f4 <> } +@end lilypond + +@noindent +Dieses Gebilde ist in sich wieder ein Ausdruck, und kann +daher mit einem anderen Ausdruck kombiniert werden (hier mit einer Halben), wobei @code{<<}, @code{\\}, and @code{>>} eingesetzt wird: + +@example +<< g2 \\ @{ f4 <> @} >> +@end example + +@lilypond[quote,fragment,relative=2] +\new Voice { << g2 \\ { f4 <> } >> } +@end lilypond + +Solche geschachtelten Strukturen können sehr gut in einer +kontextunabhängigen Grammatik beschrieben werden. Der Programmcode +für den Satz ist auch mit solch einer Grammatik erstellt. Die Syntax +von LilyPond ist also klar und ohne Zweideutigkeiten definiert. + +Die Benutzerschnittstelle und die Syntax werden als erstes vom Benutzer +wahrgenommen. Teilweise sind sie eine Frage des Geschmackes und werden viel +diskutiert. Auch wenn Geschmacksfragen ihre Berechtigung +haben, sind sie nicht sehr produktiv. Im großen Rahmen von LilyPond +spielt die Eingabe-Syntax nur eine geringe Rolle, denn eine logische +Syntax zu schreiben ist einfach, guten Formatierungscode aber sehr viel +schwieriger. Das kann auch die Zeilenzahl der Programmzeilen zeigen: +Analysieren und Darstellen nimmt nur etwa 10% des Codes ein: + +Während wir die Strukturen von LilyPond entwickelten, machten wir einige Entscheidungen, die sich von anderen Programmen unterscheiden. +Nehmen wir etwa die hierarchische Natur der Musiknotation: + +@lilypond[quote,fragment] +<< + \new Staff \relative c'' { + \key g \major + \time 3/4 + d4 g,8 a b c d4 g, g + } + \new Staff \relative c' { + \clef "bass" + \key g \major + 2 a4 b2. + } +>> +@end lilypond + +In diesem Fall werden Tonhöhen in Akkorde gruppiert, die zu Takten +gehören, welche wiederum zu Notensystemen gehören. Das erinnert an +die saubere Struktur von geschachtelten Kästen: + +@quotation +@iftex +@sourceimage{pdf/nestedboxes,,4cm,} +@end iftex +@ifnottex +@sourceimage{nestedboxes,,,png} +@end ifnottex +@end quotation + +Leider ist die Struktur nur sauber, weil sie auf einige sehr beschränkte +Annahmen basiert. Das wird offensichtlich, wenn man ein komplizierteres +Beispiel heranzieht: + +@lilypond[quote] +\layout { + \context { + \Score + \remove "Timing_translator" + \remove "Default_bar_line_engraver" + } + \context { + \Staff + \consists "Timing_translator" + \consists "Default_bar_line_engraver" + } +} + +\new PianoStaff << + \new Staff = "RH" << + \new Voice = "I" \relative c''' { + \time 3/4 + \voiceOne + \times 6/7 { g8 g g g g g g } + \oneVoice + r4 r4\fermata + } + \new Voice = "II" \relative c' { + \voiceTwo + c4 + \times 4/5 { + 8 f g + \change Staff = "LH" \oneVoice + \stemUp g,( c} + r4 + \override Stem #'cross-staff = ##t + \override Stem #'length = #12 + ) r\fermata + } + >> + \new Staff = "LH" << + \new Voice = "III" \relative c' { + \time 2/4 + \clef "bass" + g4 \stopStaff s + \startStaff s2*2 + } + >> +>> +@end lilypond + +In diesem Beispiel beginnen Systeme plötzlich und enden plötzlich, +Stimmen springen zwischen den Systemen herum und die Systeme haben +unterschiedliche Taktarten. Viele Software-Pakte würden sehr damit +zu kämpfen haben, dieses Beispiel darzustellen, weil sie nach dem +Prinzip von geschachtelten Kästen aufgebaut sind. In LilyPond dagegen +haben wir versucht, die Struktur und das Eingabeformat so flexibel wie +möglich zu gestalten. + + +@node Welche Symbole? +@unnumberedsubsec Welche Symbole? +@translationof What symbols to engrave? + +@cindex Notensatz +@cindex Typographie +@cindex Stempel +@cindex Matrize +@cindex Engraver +@cindex Plugin + +Während des Notensatzprozesses entscheidet sich, wo +Symbole platziert werden. Das kann aber nur gelingen, +wenn vorher entschieden wird, @emph{welche} Symbole +gesetzt werden sollen, also welche Art von Notation benutzt +werden soll. + +Die heutige Notation ist ein System zur Musikaufzeichnung, +das sich über die letzten 1000 Jahre entwickelt hat. Die +Form, die heute üblicherweise benutzt wird, stammt aus der frühen +Renaissance. Auch wenn sich die grundlegenden Formen (also +die Notenköpfe, das Fünfliniensystem) nicht verändert haben, +entwickeln sich die Details trotzdem immer noch weiter, um +die Errungenschaften der Neuen Musik darstellen zu können. Die +Notation umfasst also 500 Jahre Musikgeschichte. Ihre Anwendung +reicht von monophonen Melodien bis zu ungeheuer komplexem Kontrapunkt +für großes Orchester. + +Wie bekommen wir dieses vielköpfige Monster zu fassen und in die +Fesseln eines Computerprogrammes zu legen? +Unsere Lösung ist es, das Problem in kleine (programmierbare) Happen zu zerteilen, so dass jede Art +von Symbol durch ein eigenes Modul, als Plugin bezeichnet, +verarbeitet werden kann. Jedes Plugin ist vollständig modular +und unabhängig und kann unabhängig entwickelt und verbessert +werden. Derartige Plugins werden @code{engraver} genannt, +analog zu den Notenstechern (engl. engraver), die musikalische +Ideen in graphische Symbole übersetzen. + +Im nächsten Beispiel wird gezeigt, wie mit dem Plugin für die Notenköpfe, +dem @code{Note_heads_engraver} (@qq{Notenkopfstecher}) der Satz begonnen wird. + +@lilypond[quote,ragged-right] +\include "engraver-example.ily" + +\score { + \topVoice + \layout { + \context { + \Voice + \remove "Stem_engraver" + \remove "Phrasing_slur_engraver" + \remove "Slur_engraver" + \remove "Script_engraver" + \remove "Beam_engraver" + \remove "Auto_beam_engraver" + } + \context { + \Staff + \remove "Accidental_engraver" + \remove "Key_engraver" + \remove "Clef_engraver" + \remove "Bar_engraver" + \remove "Time_signature_engraver" + \remove "Staff_symbol_engraver" + \consists "Pitch_squash_engraver" + } + } +} +@end lilypond + +@noindent +Dann fügt ein @code{Staff_symbol_engraver} (@qq{Notensystemstecher}) +die Notenlinien hinzu. + +@lilypond[quote,ragged-right] +\include "engraver-example.ily" + +\score { + \topVoice + \layout { + \context { + \Voice + \remove "Stem_engraver" + \remove "Phrasing_slur_engraver" + \remove "Slur_engraver" + \remove "Script_engraver" + \remove "Beam_engraver" + \remove "Auto_beam_engraver" + } + \context { + \Staff + \remove "Accidental_engraver" + \remove "Key_engraver" + \remove "Clef_engraver" + \remove "Bar_engraver" + \consists "Pitch_squash_engraver" + \remove "Time_signature_engraver" + } + } +} +@end lilypond + +@noindent +Der @code{Clef_engraver} (@qq{Notenschlüsselstecher}) definiert +eine Referenzstelle für das System. + +@lilypond[quote,ragged-right] +\include "engraver-example.ily" + +\score { + \topVoice + \layout { + \context { + \Voice + \remove "Stem_engraver" + \remove "Phrasing_slur_engraver" + \remove "Slur_engraver" + \remove "Script_engraver" + \remove "Beam_engraver" + \remove "Auto_beam_engraver" + } + \context { + \Staff + \remove "Accidental_engraver" + \remove "Key_engraver" + \remove "Bar_engraver" + \remove "Time_signature_engraver" + } + } +} +@end lilypond + +@noindent +Der @code{Stem_engraver} (@qq{Halsstecher}) schließlich fügt + Hälse hinzu. + +@lilypond[quote,ragged-right] +\include "engraver-example.ily" + +\score { + \topVoice + \layout { + \context { + \Voice + \remove "Phrasing_slur_engraver" + \remove "Slur_engraver" + \remove "Script_engraver" + \remove "Beam_engraver" + \remove "Auto_beam_engraver" + } + \context { + \Staff + \remove "Accidental_engraver" + \remove "Key_engraver" + \remove "Bar_engraver" + \remove "Time_signature_engraver" + } + } +} +@end lilypond + +@noindent +Dem @code{Stem_engraver} wird jeder Notenkopf mitgeteilt, +der vorkommt. Jedes Mal, wenn ein Notenkopf erscheint (oder mehrere bei +einem Akkord), wird ein Hals-Objekt erstellt und an den +Kopf geheftet. Wenn wir dann noch Engraver für Balken, Bögen, +Akzente, Versetzungszeichen, Taktstriche, Taktangaben und Tonartbezeichnungen +hinzufügen, erhalten wir eine vollständige Notation. + + +@lilypond[quote,ragged-right] +\include "engraver-example.ily" +\score { \topVoice } +@end lilypond + +@cindex Polyphonie +@cindex Mehrstimmigkeit +@cindex Notensatz, Mehrstimmigkeit +@cindex Kontexte + +Dieses System funktioniert gut für monophone Musik, aber wie geht +es mit Polyphonie? Hier müssen sich mehrere Stimmen ein System teilen. + +@lilypond[quote,ragged-right] +\include "engraver-example.ily" +\new Staff << \topVoice \\ \botVoice >> +@end lilypond + +In diesem Fall benutzen beide Stimmen das System und die Vorzeichen gemeinsam, +aber die Hälse, Bögen, Balken usw. sind jeder einzelnen Stimme +eigen. Die Engraver müssen also gruppiert werden. Die Köpfe, +Hälse, Bögen usw. werden in einer Gruppe mit dem Namen @qq{Voice +context} (Stimmenkontext) zusammengefasst, die Engraver für den +Schlüssel, die Vorzeichen, Taktstriche usw. dagegen in einer +Gruppe mit dem Namen @qq{Staff context} (Systemkontext). Im Falle +von Polyphonie hat ein Staff-Kontext dann also mehr als nur einen +Voice-Kontext. Auf gleiche Weise können auch mehrere Staff-Kontexte +in einen großen Score-Kontext (Partiturkontext) eingebunden werden. +Der Score-Kontext ist auf der höchsten Ebene der Kontexte. + + +@lilypond[quote,ragged-right] +\include "engraver-example.ily" +\score { + << + \new Staff << \topVoice \\ \botVoice >> + \new Staff << \pah \\ \hoom >> + >> +} +@end lilypond + +@seealso +Referenz der Interna: @rinternals{Contexts}. + + +@node Flexible Architektur +@unnumberedsubsec Flexible Architektur +@translationof Flexible architecture + +Als wir anfingen, haben wir LilyPond vollständig in der Programmiersprache C++ +geschrieben. Das hieß, dass der Funktionsumfang des Programms vollständig durch +die Programmierer festgelegt war. Das stellte sich aus einer Reihe von Gründen +als unzureichend heraus: + +@itemize @bullet + +@item Wenn LilyPond Fehler macht, muss der Benutzer die +Einstellungen ändern können. Er muss also Zugang zur +Formatierungsmaschinerie haben. Deshalb können die Regeln und +Einstellungen nicht beim Kompilieren des Programms festgelegt +werden, sondern sie müssen zugänglich sein, während das Programm +aktiv ist. + +@item Notensatz ist eine Frage des Augenmaßes, und damit auch vom +Geschmack abhängig. Benutzer können mit unseren Entscheidungen +unzufrieden sein. Darum müssen also auch die Definitionen des +typographischen Stils dem Benutzer zugänglich sein. + +@item Schließlich verfeinern wir unseren Formatierungsalgorithmus +immer weiter, also müssen die Regeln auch flexibel sein. Die +Sprache C++ zwingt zu einer bestimmten Gruppierungsmethode, +die nicht den Regeln für den Notensatz entspricht. +@end itemize + +@cindex Scheme-Programmiersprache + +Diese Probleme wurden angegangen, indem ein Übersetzer für +die Programmiersprache Scheme integriert wurde und Teile +von LilyPond in Scheme neu geschrieben wurden. Die derzeitige +Formatierungsarchitektur ist um die Notation von graphischen +Objekten herum aufgebaut, die von Scheme-Variablen und -Funktionen +beschrieben werden. Diese Architektur umfasst Formatierungsregeln, +typographische Stile und individuelle Formatierungsentscheidungen. +Der Benutzer hat direkten Zugang zu den meisten dieser Einstellungen. + +Scheme-Variablen steuern Layout-Entscheidungen. Zum Beispiel haben +viele graphische Objekte eine Richtungsvariable, die zwischen +oben und unten (oder rechts und links) wählen kann. Hier etwa +sind zwei Akkorde mit Akzenten und Arpeggien. +Beim ersten Akkord sind alle Objekte nach unten (oder links) +ausgerichtet, beim zweiten nach oben (rechts). + +@lilypond[quote,ragged-right] +\score { + \relative c' { + \stemDown 4_>-\arpeggio + \override Arpeggio #'direction = #RIGHT + \stemUp 4^>-\arpeggio + } + \layout { + \context { + \Score + \override SpacingSpanner #'spacing-increment = #3 + \override TimeSignature #'transparent = ##t + } + } +} +@end lilypond + +@cindex Formatierung einer Partitur +@cindex Partitur, Formatierung +@cindex Formatierungsregeln + +@noindent +Der Prozess des Notensetzens besteht für das Programm darin, +die Variablen der graphischen Objekte zu lesen und zu +schreiben. Einige Variablen haben festgelegte Werte. So +ist etwa die Dicke von vielen Linien – ein Charakteristikum +des typographischen Stils – von vornherein festgelegt. +Wenn sie geändert werden, ergibt sich ein anderer typographischer Eindruck. + +@lilypond[quote,ragged-right] +fragment = { + \clef bass f8 as8 + c'4-~ c'16 as g f e16 g bes c' des'4 +} +<< + \new Staff \fragment + \new Staff \with { + \override Beam #'beam-thickness = #0.3 + \override Stem #'thickness = #0.5 + \override Bar #'thickness = #3.6 + \override Tie #'thickness = #2.2 + \override StaffSymbol #'thickness = #3.0 + \override Tie #'extra-offset = #'(0 . 0.3) + } + \fragment +>> +@end lilypond + +Formatierungsregeln sind auch vorbelegte Variablen. Zu jedem Objekt gehören +Variablen, die Prozeduren enthalten. Diese Prozeduren machen die eigentliche +Satzarbeit aus, und wenn man sie durch andere ersetzt, kann die Darstellung +von Objekten verändert werden. Im nächsten Beispiel wird die Regel, nach der +die Notenköpfe gezeichnet werden, während des Ausschnitts verändert. + +@lilypond[quote,ragged-right] +#(set-global-staff-size 30) + +#(define (mc-squared grob orig current) + (let* ((interfaces (ly:grob-interfaces grob)) + (pos (ly:grob-property grob 'staff-position))) + (if (memq 'note-head-interface interfaces) + (begin + (ly:grob-set-property! grob 'stencil + (grob-interpret-markup grob + (make-lower-markup 0.5 + (case pos + ((-5) "m") + ((-3) "c ") + ((-2) (make-smaller-markup (make-bold-markup "2"))) + (else "bla"))))))))) + +\new Voice \relative c' { + \stemUp + \set autoBeaming = ##f + \time 2/4 + 4 + \once \override NoteHead #'stencil = #note-head::brew-ez-stencil + \once \override NoteHead #'font-size = #-7 + \once \override NoteHead #'font-family = #'sans + \once \override NoteHead #'font-series = #'bold + 4 + \once \override NoteHead #'style = #'cross + 4 + \applyOutput #'Voice #mc-squared + 4 + << + { d8[ es-( fis^^ g] fis2-) } + \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 } + >> +} +@end lilypond + + +@node LilyPond die Arbeit überlassen +@section LilyPond die Arbeit überlassen +@translationof Putting LilyPond to work + +@cindex einfaches Beispiel +@cindex Beispiel, einfach + +Wir haben LilyPond als einen Versuch geschrieben, wie man die Kunst des +Musiksatzes in ein Computerprogramm gießen kann. Dieses +Programm kann nun dank vieler harter Arbeitsstunden benutzt werden, +um sinnvolle Aufgaben zu erledigen. Die einfachste ist dabei der +Notendruck. + +@lilypond[quote,relative=1] +{ + \time 2/4 + c4 c g'4 g a4 a g2 +} +@end lilypond + +@noindent +Indem wir Akkordsymbole und einen Text hinzufügen, erhalten wir +ein Liedblatt. + +@lilypond[quote,ragged-right] +<< + \chords { c2 c f2 c } + \new Staff + \relative c' { + \time 2/4 + c4 c g' g a a g2 + } + \addlyrics { twin -- kle twin -- kle lit -- tle star } +>> +@end lilypond + +Mehrstimmige Notation und Klaviermusik kann auch gesetzt werden. Das +nächste Beispiel zeigt einige etwas exotischere Konstruktionen: + +@lilypond[quote,line-width=15.9\cm] +\header { + title = "Screech and boink" + subtitle = "Random complex notation" + composer = "Han-Wen Nienhuys" +} + +\score { + \context PianoStaff << + \new Staff = "up" { + \time 4/8 + \key c \minor + << { + \revert Stem #'direction + \change Staff = down + \set subdivideBeams = ##t + g16.[ + \change Staff = up + c'''32 + \change Staff = down + g32 + \change Staff = up + c'''32 + \change Staff = down + g16] + \change Staff = up + \stemUp + \set followVoice = ##t + c'''32([ b''16 a''16 gis''16 g''32)] + } \\ { + s4 \times 2/3 { d'16[ f' g'] } as'32[ b''32 e'' d''] + } \\ { + s4 \autoBeamOff d''8.. f''32 + } \\ { + s4 es''4 + } >> + } + + \new Staff = "down" { + \clef bass + \key c \minor + \set subdivideBeams = ##f + \override Stem #'french-beaming = ##t + \override Beam #'beam-thickness = #0.3 + \override Stem #'thickness = #4.0 + g'16[ b16 fis16 g16] + << \makeClusters { + as16 + + + } \\ { + \override Staff.Arpeggio #'arpeggio-direction =#down + 4\arpeggio + } + >> } + >> + \midi { + \context { + \Score + tempoWholesPerMinute = #(ly:make-moment 60 8) + } + } + \layout { + \context { + \Staff + \consists Horizontal_bracket_engraver + } + } +} +@end lilypond + +Die obenstehenden Beispiele wurde manuell erstellt, aber das ist nicht +die einzige Möglichkeit. Da der Satz fast vollständig automatisch abläuft, +kann er auch von anderen Programmen angesteuert werden, die Musik oder Noten +verarbeiten. So können etwa ganze Datenbanken musikalischer Fragmente automatisch +in Notenbilder umgewandelt werden, die dann auf Internetseiten oder +in Multimediapräsentation Anwendung finden. + +Dieser Aufsatz zeigt eine weitere Möglichkeit: Die Noten werden als +reiner Text eingegeben und können darum sehr einfach integriert werden +in andere textbasierte Formate wie etwa @LaTeX{}, HTML oder, wie in diesem +Fall, Texinfo. Mithilfe des Programmes @command{lilypond-book}, +das in LilyPond inbegriffen ist, werden die Fragmente mit +Notenbildern ersetzt und in die produzierte PDF- oder HTML-Datei +eingefügt. Ein weiteres Beispiel ist die von LilyPond unabhängige +Erweiterung OOoLilyPond für OpenOffice.org, mit der es sehr einfach +ist, Musikbeispiele in Dokumente einzufügen. + +Zu mehr Beispielen, wie LilyPond sich in Aktion verhält, für vollständige +Dokumentation und das Programm LilyPond besuchen Sie unsere +Webseite: www.lilypond.org. + + +@page +@node Notensatzbeispiele (BWV 861) +@section Notensatzbeispiele (BWV 861) +@translationof Engraved examples (BWV 861) + +Dieser Abschnitt enthält vier Referenz-Notenstiche und zwei +computergesetzte Versionen der Fuge G-Moll aus dem Wohltemperierten +Clavier I (BWV 681) von J. S. Bach (die letzten sieben Takte). + +@noindent +Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1, +1989): + +@iftex +@sourceimage{bwv861-baer,16cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861-baer-small,,,png} +@end ifnottex + +@noindent +Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1, +1989), eine alternative musikalische Quelle. Neben den +musikalischen Unterschieden sind hier auch ein paar unterschiedliche +Notensatzentscheidungen getroffen worden, sogar vom selben Herausgeber +in der selben Edition: + +@iftex +@sourceimage{bwv861-baer-alt,16cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861-baer-alt-small,,,png} +@end ifnottex + +@noindent +Breitkopf & Härtel, bearbeitet von Ferruccio Busoni (Wiesbaden, 1894), +auch in der Petrucci Music Library (IMSLP #22081) erhältlich. +Die editorischen Bezeichnungen (Fingersatz, Artikulation usw.) +wurde entfernt, um bessere Vergleichbarkeit mit den anderen +Editionen zu bieten: + +@iftex +@sourceimage{bwv861-breitkopf,16cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861-breitkopf-small,,,png} +@end ifnottex + +@noindent +Bach-Gesellschaft Edition (Leipzig, 1866), erhältlich in der Petrucci +Music Library (IMSPL #02221): + +@iftex +@sourceimage{bwv861-gessellschaft,16cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861-gessellschaft-small,,,png} +@end ifnottex + +@noindent +Finale 2008: + +@iftex +@sourceimage{pdf/bwv861-finale2008a,,,} +@end iftex +@ifnottex +@sourceimage{bwv861-finale2008a,,,png} +@end ifnottex + +@sp 4 +@noindent +LilyPond, version @version{}: + +@lilypond[staffsize=14.3,line-width=15.9\cm] +global = {\key g \minor} + +partI = \relative c' { + \voiceOne + fis8 d' ees g, fis4 g + r8 a16 bes c8 bes16 a d8 r r4 + r2 r8 d16 ees f8 ees16 d + ees4 ~ ees16 d c bes a4 r8 ees'16 d + c8 d16 ees d8 e16 fis g8 fis16 g a4 ~ + a8 d, g f ees d c bes + a2 g\fermata \bar "|." +} + +partII = \relative c' { + \voiceTwo + d4 r4 r8 d'16 c bes8 c16 d + ees8 d c ees a, r r4 + r8 fis16 g a8 g16 fis g2 ~ + g2 r8 d' ees g, + fis4 g r8 a16 bes c8 bes16 a + bes4. 8 r r + 4 d2 +} +partIII = \relative c' { + \voiceOne + r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a + bes2 ~ bes8 b16 a g8 a16 b + c4 r r2 + R1 + r8 d ees g, fis4 g + r8 a16 bes c8 bes16 a b2 +} +partIV = \relative c { + \voiceTwo + d4 r r2 + r8 d ees g, fis4 a + d,8 d'16 c bes8 c16 d ees2 ~ + ees8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a + d,8 d'16 c bes8 c16 d ees8 c a fis' + g f ees d c bes a g + c a d d, g2\fermata +} + +\score { + << + % \set Score.barNumberVisibility = #all-bar-numbers-visible + % required in 2.13 + \set Score.currentBarNumber = #28 + \bar "" + \new PianoStaff << + \new Staff = "RH" << + \global + \new Voice = "voiceI" { \partI } + \new Voice = "voiceII" { \partII } + >> + + \new Staff = "LH" << + \clef "bass" + \global + \new Voice = "voiceIII" { \partIII } + \new Voice = "voiceIV" { \partIV } + >> + >> + >> + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + } + \context { + \PianoStaff + \override StaffGrouper #'staff-staff-spacing #'padding = #1 + } + } +} +@end lilypond +