\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
    Translation of GIT committish: 36aecbfce5f3d3cb6b1cc23198f0d5164f19fbf4

    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 Translators: David Kastrup, Lukas-Fabian Moser
@c Translation checkers: Michael Gerdau

@setfilename lilypond-changes.info
@settitle LilyPond Changes

@include macros.itexi

@ifhtml
@macro inputfileref{DIR,NAME}
@uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
@end macro
@macro usermanref{NAME}
@inforef{\NAME\,,../user/lilypond/lilypond}@c
@end macro
@end ifhtml

@ifnothtml
@macro inputfileref{DIR,NAME}
@file{\DIR\/\NAME\}@c
@end macro
@macro usermanref{NAME}
Siehe Benutzerhandbuch, \NAME\
@end macro
@end ifnothtml

@macro textanchor{NAME}
@html
<a name="\NAME\"></a>
@end html
@end macro


@documentencoding UTF-8
@documentlanguage de
@afourpaper

@finalout

@node Top
@top Neuerungen von Version 2.20 gegenüber 2.18
@c New features in 2.20 since 2.18

@allowcodebreaks false


@ignore

HINTS
* add new items at the top
* only show verbatim input for syntax/input changes
* try to be as brief possible in those cases
* don't try to provide real-world examples, they often get too big,
which scares away people.
* Write complete sentences.
* only show user-visible changes.

@end ignore


@subheading Neuigkeiten in der Eingabe
@c New for musical notation


@strong{Tonhöhen}
@c Displaying pitch improvements

@itemize

@item
Ausgeschriebene Tonhöhen in der englischen Eingabesprache mit
@code{sharp} oder @code{flat} im Namen benötigen jetzt einen
Bindestrich.

@example
\key a-flat \major
@end example

@noindent
statt:

@example
\key aflat \major
@end example

@noindent
Tonhöhen mit doppelten Vorzeichen werden hierbei nur mit einem
Bindestrich versehen.  Für die englische Variante des deutschen
oder niederländischen @code{cisis} etwa:

@example
\key c-sharpsharp \major
@end example

@item
Vorzeichenregeln können jetzt auch über einen
@code{ChoirStaff}-Kontext übergreifend definiert werden.

@item
Zwei neue Vorzeichenregeln kombinieren die Eigenschaften von
@code{modern-voice}, @code{piano} und ihren Äquivalenten:

@code{choral}

@lilypond[quote]
musicA = {
  <<
    \relative { cis''8 fis, bes4 <a cis>8 f bis4 | cis2. <c, g'>4 | }
    \\
    \relative { ais'2 cis, | fis8 b a4 cis2 | }
  >>
}

musicB = { \clef bass \new Voice { \voiceTwo \relative {
      <fis a cis>8[ <fis a cis> \change Staff = up
      cis' cis \change Staff = down
      <fis, a> <fis a>] \showStaffSwitch \change Staff = up
      dis'4 | \change Staff = down
      <fis, a cis>4 gis <f a d>2 |
    }
  }
}

\new ChoirStaff { << \context Staff = "up" {
  \accidentalStyle choral \musicA }
  \context Staff = "down" { \musicB } >>
}
@end lilypond

@noindent
Die Vorzeichenregel @code{choral} ist jetzt Standardvorgabe für
@code{ChoirStaff}.

@code{choral-cautionary}

@lilypond[quote]
musicA = {
  <<
  \relative { cis''8 fis, bes4 <a cis>8 f bis4 |
  cis2. <c, g'>4 | }
  \\
  \relative { ais'2 cis, | fis8 b a4 cis2 | }
  >>
}

musicB = { \clef bass \new Voice { \voiceTwo \relative {
      <fis a cis>8[ <fis a cis> \change Staff = up
      cis' cis \change Staff = down
      <fis, a> <fis a>] \showStaffSwitch \change Staff = up
      dis'4 | \change Staff = down
      <fis, a cis>4 gis <f a d>2 |
    }
  }
}

\new ChoirStaff { << \context Staff = "up" {
  \accidentalStyle choral-cautionary \musicA }
  \context Staff = "down" { \musicB } >>
}
@end lilypond

@noindent
@code{choral-cautionary} entspricht @code{choral}, setzt aber
unterstützende Vorzeichen in Behelfsform.

@noindent
Vgl. @ruser{Automatische Versetzungszeichen}.

@item
Vier neue Notenschlüssel stehen zur Verfügung; @q{GG} (Doppel-G),
@q{Tenor G}, @q{varC} und Verwandte, sowie @q{Varpercussion}:

@multitable @columnfractions .30 .2 .30 .2

@headitem
Example
@tab
Output
@tab
Example
@tab
Output

@item
@code{\clef GG}
@tab
@lilypond[line-width=3\cm,notime,ragged-right,relative=1]
\clef GG c1
@end lilypond
@tab
@code{\clef tenorG}
@tab
@lilypond[line-width=3\cm,notime,ragged-right,relative=1]
\clef tenorG c1
@end lilypond

@item
@code{\clef varC}
@tab
@lilypond[line-width=3\cm,notime,ragged-right,relative=1]
\clef varC c1
@end lilypond
@tab
@code{\clef altovarC}
@tab
@lilypond[line-width=3\cm,notime,ragged-right,relative=1]
\clef altovarC c1
@end lilypond

@item
@code{\clef tenorvarC}
@tab
@lilypond[line-width=3\cm,notime,ragged-right,relative=1]
\clef tenorvarC c1
@end lilypond
@tab
@code{\clef baritonevarC}
@tab
@lilypond[line-width=3\cm,notime,ragged-right,relative=1]
\clef baritonevarC c1
@end lilypond

@item
@code{\clef varpercussion}
@tab
@lilypond[line-width=3\cm,notime,ragged-right,relative=1]
\clef varpercussion c1
@end lilypond

@end multitable

@noindent
Vgl. @ruser{Notenschlüssel-Glyphen}.

@item
Französische Notennamen sind nun als eigenständige Notensprache
statt als Variante der italienischen verfügbar.  Das deutsche
@var{d} kann hierbei wahlweise @code{re} oder @code{ré}
geschrieben werden.

@lilypond[fragment,verbatim,quote,ragged-right,relative=1]
\language "français"
do ré mi fa | sol la si do | ré1
@end lilypond

@noindent
Doppelkreuze werden durch Anhängen von @code{x} eingegeben:

@lilypond[fragment,verbatim,quote,ragged-right,relative=2]
\language "français"
dob, rebb misb fabsb | sold ladd six dosd | rédsd1
@end lilypond

@end itemize


@strong{Neuheiten bei Tonlängen}

@itemize
@item
Mehrtaktpausen werden mit einer zu ihrer Dauer passenden Breite
gesetzt, wobei @code{MultiMeasureRest.space-increment} das
Verhältnis bestimmt.  Die Standardvorgabe dieses Wertes beträgt
@code{2.0}.

@lilypond[fragment,verbatim,quote]
\compressFullBarRests
R1*2 R1*4 R1*64 R1*16
@end lilypond

@lilypond[fragment,verbatim,quote]
\compressFullBarRests
\override Staff.MultiMeasureRest.space-increment = 2.5
R1*2 R1*4 R1*64 R1*16
@end lilypond

@item
Das Verhalten von Auftakten mit @code{\partial} in parallelen
Stimmen oder anderen Kontexten ist deutlich verbessert worden.

@item
Es ist nunmehr möglich, das Taktmaß im laufenden Takt durch
kombinierte Verwendung von @code{\time} und @code{\partial} zu
verändern.

@lilypond[verbatim,quote,relative=1]
f f f f | f2. \bar "||"
\time 3/4 \partial 4
f8 8 | f2 f8 f |
@end lilypond

@item
Alleinstehende Notenlängen in der Eingabe stehen nunmehr für
tonhöhenlose Noten.  Die zur Verwendung kommende Tonhöhe wird
dabei von der letzten Note oder dem letzten Akkord übernommen.
Das ist insbesondere von Nutzen, um für Musik- und
Schemefunktionen Rhythmen vorzugeben und kann die Lesbarkeit der
Eingabe in einigen Fällen deutlich verbessern.

@lilypond[verbatim,quote,fragment,relative=2]
c64[ 64] 32 16 8^- <g b d>4~ 2 | 1
@end lilypond

@lilypond[verbatim,quote]
\new DrumStaff \with { \override StaffSymbol.line-count = 1 }
\drummode {
  \time 3/4
  tambourine 8 \tuplet 3/2 { 16 16 16 }
             8 \tuplet 3/2 { 16 16 16 } 8 8 |
}
@end lilypond

@item
Bebalkungsausnahmen können nunmehr mit der Schemefunktion
@code{\beamExceptions} angegeben werden.  Zuvor war die folgende
Eingabe erforderlich:

@example
\set Timing.beamExceptions =
#'(                         ;Start der Aliste
   (end .                   ;Eintrag für Balkenende
    (                       ;Start der Aliste von Endpunkten
     ((1 . 32) . (2 2 2))   ;Regel für 1/32 Balken -- jedes 1/16
    )))

\time #'(2 1) 3/16
c16 c c
\repeat unfold 6 @{ c32 @}
@end example

@noindent
Nunmehr ist folgende Variante möglich:

@lilypond[verbatim,quote,relative=1]
\set Timing.beamExceptions =
  \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }

\time 2,1 3/16
c16 c c |
\repeat unfold 6 { c32 } |
@end lilypond

@noindent
wobei zusätzliche Ausnahmeregeln mit Taktstrichen @code{|} in der
Eingabe abzutrennen sind.  Die Ausnahmeregeln können wie hier ohne
Tonhöhen geschrieben werden; zwingend ist dies aber nicht.

@item
Die Positionierung der Bezifferung von N-tolen mit Wendehalsbalken
berücksichtigt eine Klammer nur dann, wenn diese auch erscheint.
Vorher konnte dies solchermaßen aussehen:

@lilypond[fragment,quote,relative=1]
% Dieses Beispiel simuliert das vorige Verhalten
\time 3/4
\override Beam.auto-knee-gap = 3
\override TupletNumber.knee-to-beam = ##f
\once \override TupletBracket.bracket-visibility = ##t
\tuplet 3/2 4 { g8 c'' e, }
\tuplet 3/2 4 { g,,8 c'' e, }
\once \override TupletBracket.bracket-visibility = ##t
\tuplet 3/2 4 { c'8 g,, e'' }
\tuplet 3/2 4 { c'8 g,, e'' }
\once \override TupletBracket.bracket-visibility = ##t
\tuplet 2/2 4 { g,8[ e''] }
\tuplet 2/2 4 { g,,8[ e''] }
@end lilypond

@noindent
Eine fehlende Klammer wird nunmehr berücksichtigt:

@lilypond[fragment,quote,relative=1]
% Dieses Beispiel zeigt das aktuelle Verhalten.
\time 3/4
\override Beam.auto-knee-gap = 3
\override TupletBracket.bracket-visibility = ##t
\tuplet 3/2 4 { g8 c'' e, }
\once \override TupletBracket.bracket-visibility = ##f
\tuplet 3/2 4 { g,,8 c'' e, }
\tuplet 3/2 4 { c'8 g,, e'' }
\once \override TupletBracket.bracket-visibility = ##f
\tuplet 3/2 4 { c'8 g,, e'' }
\tuplet 2/2 4 { g,8[ e''] }
\once \override TupletBracket.bracket-visibility = ##f
\tuplet 2/2 4 { g,,8[ e''] }
@end lilypond

@item
Im Fall von Wendehalsbalken werden die N-tolen-Ziffern in
die Kollisionsvermeidung eingebunden.

@lilypond[fragment,quote,relative=1]
\time 2/4
\override Beam.auto-knee-gap = 3
\tuplet 3/2 4 { g8 c'' e, c'8 g,, e'' }
\tuplet 3/2 4 { g,,8 e''' g,, g,8 e''' ges,, }
@end lilypond

@noindent
Das ursprüngliche Verhalten kann mit der
@code{knee-to-beam}-Eigenschaft des @code{TupletNumber}
Layout-Objekts abgerufen werden.

@lilypond[verbatim,fragment,quote,relative=1]
\time 2/4
\override Beam.auto-knee-gap = 3
\override TupletNumber.knee-to-beam = ##f
\override TupletBracket.bracket-visibility = ##t
\tuplet 3/2 4 { g8 c'' e, }
\once \override TupletBracket.bracket-visibility = ##f
\tuplet 3/2 4 { g,,8 c'' e, }
@end lilypond

@end itemize


@strong{Neues bei Ausdrucksbezeichnungen}

@itemize

@item
Die Enden von Crescendo-Klammern können mit der
Layout-Objekt-Eigenschaft @code{shorten-pair} verschoben werden.
Dies war zuvor nur für Text-Klammern (mithin @code{TupletBracket}
und @code{OttavaBracket}) möglich.

@noindent
Positive Werte verschieben hierbei nach rechts, negative nach
links.

@lilypond[quote,verbatim,relative=2]
\once \override Hairpin.shorten-pair = #'(0 . 2)
a1\< | a2 a\!

\once \override Hairpin.shorten-pair = #'(2 . 0)
\once \override Hairpin.stencil = #constante-hairpin
a1\< | a2 a\!

\once \override Hairpin.shorten-pair = #'(-1 . -1)
\once \override Hairpin.stencil = #flared-hairpin
a1\< | a2 a\!
@end lilypond

@item
Binde- und Phrasierungsbögen können nunmehr an einer Einzelnote
innerhalb eines Akkordes verankert werden.

@lilypond[quote,verbatim,relative=1]
<f a( c>1 | <c') e g(> | <a c) e>
@end lilypond

@lilypond[quote,verbatim,relative=1]
<f( a\( c>1 | <c'\) e\( g> | <a c e\)>
@end lilypond

@item
Um hierbei mehr als einen Bogen gleichzeitig führen zu können,
können Bogenanfänge und @w{-enden} mit @code{\=X} gekennzeichnet
werden, so daß man zueinandergehörende Bögen mit der gleichen
Ziffer oder dem gleichen Symbol markieren kann.

@noindent
Sinnvoll zu verwenden ist dies bei überlappenden oder
verschachtelten Bögen.

@lilypond[quote,verbatim,relative=2]
<a c e\=7\(>1 | <g b d\=£(> |
<f\=A( a c\="foo"(> | <c'\="foo")\=A) e\=£) g\=7\)> |
@end lilypond

@noindent
Vgl. @ruser{Ausdrucksbezeichnungen als Bögen}.

@end itemize


@strong{Neues bei Wiederholungsbezeichnungen}

@itemize

@item
Das Aussehen von Tremolostrichen (Form, Stil und Neigung) ist
besser konfigurierbar.
@lilypond[quote,relative=2]
  a8:32 b: c: d:
  \override StemTremolo.shape = #'beam-like
  a: b: c: d:
  \override StemTremolo.style = #'constant
  a: b: c: d:
  g,2
@end lilypond

@item
Die Musikfunktion @code{\unfoldRepeats} kann optional eine Liste
der auszuschreibenden Wiederholungstypen enthalten.  Möglich sind
hier @code{percent}, @code{tremolo} und @code{volta}.

Ohne eine solche Liste wird @code{repeated-music} angenommen, was
für alle Arten von Wiederholung gilt.

@end itemize


@strong{Neuerungen bei Notensystemen}

@itemize

@item
Das neue Kommando @code{\magnifyStaff} skaliert Systemgröße,
Notenlinien, Taktstriche, Balkenabschnitte und die horizontale
Platzierung innerhalb eines Notensystems.  Die Notenlinien können
dabei nicht gegenüber der Normalgröße ausgedünnt werden, weil die
Dicken von Notenhälsen, Bögen und anderen grafischen Elementen von
deren Dicke abhängen.

@item
Das neue Kommando @code{\magnifyMusic} beläßt die Größe des
Notensystemes, skaliert aber Elemente wie Notenhälse, Balken, und
horizontale Abstände.

@lilypond[verbatim,quote]
\new Staff <<
  \new Voice \relative {
    \voiceOne
    <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
  }
  \new Voice \relative {
    \voiceTwo
    \magnifyMusic 0.63 {
      \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
      r32 c'' a c a c a c r c a c a c a c
      r c a c a c a c a c a c a c a c
    }
  }
>>
@end lilypond

@item
Die Kontextmodifikation @code{\RemoveAllEmptyStaves} hat dieselbe
Wirkung wie zuvor schon @code{\RemoveEmptyStaves}, entfernt leere
Notensysteme aber auch in der Anfangszeile eines Stückes.

@item
Ein neuer Textbeschriftungsbefehl @code{justify-line} setzt Wörter
im Gegensatz zu @code{fill-line} mit konstantem
@emph{Zwischenraum} so, daß sie eine Zeile füllen.

@lilypond[quote,verbatim,papersize=a6]
\markup \fill-line {oooooo oooooo oooooo oooooo}
\markup \fill-line {ooooooooo oooooooo oo ooo}
@end lilypond

@lilypond[quote,verbatim,papersize=a6]
\markup \justify-line {oooooo oooooo oooooo oooooo}
\markup \justify-line {ooooooooo oooooooo oo ooo}
@end lilypond

@end itemize


@strong{Neue Herausgeberanmerkungen}

@itemize

@item
Analyseklammern können jetzt mithilfe eines
@code{HorizontalBracketText}-Objektes beschriftet werden.
@lilypond[quote,verbatim]
\layout {
  \context {
    \Voice
    \consists "Horizontal_bracket_engraver"
  }
}

{
  \once \override HorizontalBracketText.text = "a"
  c''\startGroup d''\stopGroup
  e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup
}
@end lilypond

@end itemize


@strong{Unterstützung weiterer Schriftarten}

@itemize

@item
Die Nutzung anderer Musikzeichensätze als LilyPonds Standardfont
@q{Emmentaler} ist jetzt möglich.  Mehr Information dazu bei
@ruser{Die Notationsschriftart verändern}.

@item
Die Standardtextzeichensätze sind nicht mehr @code{Century
Schoolbook L}, @code{sans-serif}, und @code{monospace}.

In der @code{svg}-Ausgabe:
@multitable @columnfractions .15 .30
@headitem Familie @tab Standardzeichensatz
@item @emph{roman} @tab @code{serif}
@item @emph{sans} @tab @code{sans-serif}
@item @emph{typewriter} @tab @code{monospace}
@end multitable

@code{serif}, @code{sans-serif}, und @code{monospace} werden der
@code{generic-family} in SVG- und CSS-Spezifikation entlehnt.

In anderen Ausgabeformaten:
@multitable @columnfractions .15 .30 .55
@headitem Familie @tab Standardzeichensatz @tab Aliasliste
@item @emph{roman}
@tab @code{LilyPond Serif}
@tab
TeX Gyre Schola,
C059, Century SchoolBook URW, Century Schoolbook L,
DejaVu Serif,
..., serif
@item @emph{sans}
@tab @code{LilyPond Sans Serif}
@tab
TeX Gyre Heros,
Nimbus Sans, Nimbus Sans L, DejaVu Sans,
..., sans-serif
@item @emph{typewriter}
@tab @code{LilyPond Monospace}
@tab
TeX Gyre Cursor,
Nimbus Mono PS, Nimbus Mono, Nimbus Mono L,
DejaVu Sans Mono,
..., monospace
@end multitable

@code{LilyPond Serif}, @code{LilyPond Sans Serif},
and @code{LilyPond Monospace} sind Schriftschnittaliase, die in der
LilyPond zugeordneten FontConfig-Konfigurationsdatei
@code{00-lilypond-fonts.conf} definiert sind.

When ein Zeichen nicht im ersten angegebenen Schriftschnitt
aufgeführt ist, wird der nächste Schnitt genutzt.

Eine Beschreibung der Alternativnamen ist in
@code{00-lilypond-fonts.conf} im Installationsverzeichnis zu
finden.

@item
Beim Einsatz von OpenType-Schriften können Font Features genutzt
werden.  Allerdings stellen alle OpenType-Schriften den
vollständigen Satz an Funktionen bereit.

@lilypond[quote,verbatim]
% Echte Kapitälchen
\markup { Normal Style: Hello HELLO }
\markup { \caps { Small Caps: Hello } }
\markup { \override #'(font-features . ("smcp"))
          { True Small Caps: Hello } }

% Zifferntypen
\markup { Normal Number Style: 0123456789 }
\markup { \override #'(font-features . ("onum"))
          { Old Number Style: 0123456789 } }

% Stilistik-Alternanten
\markup { \override #'(font-features . ("salt 0"))
          { Stylistic Alternates 0: εφπρθ } }
\markup { \override #'(font-features . ("salt 1"))
          { Stylistic Alternates 1: εφπρθ } }

% Mehrfach-Features
\markup { \override #'(font-features . ("onum" "smcp" "salt 1"))
          { Multiple features: Hello 0123456789 εφπρθ } }
@end lilypond

@item
Zwei neue Arten von Weißumrandung werden unterstützt.  Der Stil
@code{outline} nutzt mehrfach versetzte Kopien des Schriftbild, um
die äußeren Konturen in Weiß vorzuzeichnen, während der Stil
@code{rounded-box} ein weißes Oval mit den Gesamtabmessungen
vorzeichnet.  Wie auch beim Standardstil @code{box} kann die Dicke
der Umrandung über das Attribut @code{thickness} angegeben werden.

@lilypond[verbatim,quote]
\markup {
  \combine
    \filled-box #'(-1 . 15) #'(-3 . 4) #1
    \override #'(thickness . 3)
    \whiteout whiteout-box
}
\markup {
  \combine
    \filled-box #'(-1 . 24) #'(-3 . 4) #1
    \override #'(style . rounded-box)
    \override #'(thickness . 3)
    \whiteout whiteout-rounded-box
}
\markup {
  \combine
    \filled-box #'(-1 . 18) #'(-3 . 4) #1
    \override #'(style . outline)
    \override #'(thickness . 3)
    \whiteout whiteout-outline
}
\relative {
  \override Staff.Clef.whiteout-style = #'outline
  \override Staff.Clef.whiteout = 3
  g'1
}
@end lilypond

Ein neuer Textbefehl @code{\with-dimensions-from} erfüllt
denselben Zweck wie @code{\with-dimensions}, übernimmt aber die
Abmessungen des ersten angegebenen Textobjektes für das zweite.
@lilypond[quote,verbatim]
\markup {
  \pattern #5 #Y #0 "x"
  \pattern #5 #Y #0 \with-dimensions-from "x" "f"
  \pattern #5 #Y #0 \with-dimensions-from "x" "g"
  \override #'(baseline-skip . 2)
  \column {
    \pattern #5 #X #0 "n"
    \pattern #5 #X #0 \with-dimensions-from "n" "m"
    \pattern #5 #X #0 \with-dimensions-from "n" "!"
  }
}
@end lilypond

@item
Der Textbefehl @code{\draw-squiggle-line} malt eine geschlängelte
Linie, wobei die Attribute @code{thickness}, @code{angularity},
@code{height} und @code{orientation} zur Anpassung genutzt werden
können.

@lilypond[quote,verbatim]
\markup
  \overlay {
    \draw-squiggle-line #0.5 #'(3 . 3) ##t

    \translate #'(3 . 3)
    \override #'(thickness . 4)
    \draw-squiggle-line #0.5 #'(3 . -3) ##t

    \translate #'(6 . 0)
    \override #'(angularity . -5)
    \draw-squiggle-line #0.5 #'(-3 . -3) ##t

    \translate #'(3 . -3)
    \override #'(angularity . 2)
    \override #'(height . 0.3)
    \override #'(orientation . -1)
    \draw-squiggle-line #0.2 #'(-3 . 3) ##t
  }
@end lilypond

@item
Für Textbögen stehen die Textbefehle @code{\undertie} und
@code{\overtie} sowie das beidseitig verwendbare Kommando
@code{\tie} zur Verfügung.
@lilypond[quote,verbatim]
\markup {
  \undertie "undertied"
  \overtie "overtied"
}

m = {
  c''1 \prall -\tweak text \markup \tie "131" -1
}

{ \voiceOne \m \voiceTwo \m }
@end lilypond

@end itemize



@subheading Neuerungen bei diversen Musiksparten
@c New for specialist notation

@strong{Bei Gesangsmusik}
@c Vocal music improvements

@itemize
@item
Neu verfügbar ist eine vielseitig verwendbare Vorlage für diverse
Chormusik.  Sie ist einsetzbar für Satz in zwei oder vier
Systemen, wahlweise mit Klavierbegleitung.  Im Gegensatz zu
anderen Vorlagen ist diese in LilyPond integriert und wird mit
@code{\include} eingebunden.  Mehr dazu bei @rlearning{Eingebaute
Vorlagen}.

@item
@code{\addlyrics} kann nunmehr mit beliebigen Kontexten genutzt
werden, etwa mit @code{Staff}.

@item
@code{\lyricsto} und @code{\addlyrics} sind in ihrem Verhalten
angeglichen worden.  Für beide ist wie auch bei @code{\lyrics} und
@code{\chords} ein mit geschweiften Klammern umschlossenes
Argument nötig.  Aus Gründen der Rückwärtskompatibilität kann
alternativ eine Musikvariable (etwa @code{\mus}) verwendet werden.

Eine Konvertierungsregel in @code{convert-ly} entfernt in diesem
Zusammenhang redundante Einsätze von @code{\lyricmode}.

@end itemize


@strong{Neues bei Saiteninstrumenten mit und ohne Bünde}
@c Unfretted and fretted string instrument improvements

@itemize

@item
In Tabulatur kann ein neuer Notenkopfstil Verwendung finden --
@code{TabNoteHead.style = #'slash}.

@item
In Akkorddiagrammen sind die Abstände zwischen Bünden und zwischen
Saiten nun separat einstellbar.  Hierzu dienen innerhalb von
@code{fret-diagram-details} die Unterattribute
@code{fret-distance} und @code{string-distance}.
@lilypond[verbatim,quote]
fretMrkp = \markup { \fret-diagram-terse "x;x;o;2;3;2;" }

\markuplist
\override #'(padding . 2)
\table #'(0 -1) {
  "default"

  \fretMrkp

  "fret-distance"

  \override #'(fret-diagram-details . ((fret-distance . 2)))
  \fretMrkp

  "string-distance"

  \override #'(fret-diagram-details . ((string-distance . 2)))
  \fretMrkp
}
@end lilypond

@item
Kreise und Klammern in Akkorddiagrammen können bei Verwendung des
Textbefehls @code{\fret-diagram-verbose} einzeln eingefärbt
werden.

@lilypond[verbatim,quote,relative=1]
\new Voice {
  c1^\markup {
    \override #'(fret-diagram-details . (
                 (finger-code . in-dot))) {
      \fret-diagram-verbose #'((mute 6)
                               (place-fret 5 3 1 red)
                               (place-fret 4 5 2 inverted)
                               (place-fret 3 5 3 green)
                               (place-fret 2 5 4 blue inverted)
                               (place-fret 1 3 1 violet)
                               (barre 5 1 3 ))
    }
  }
  c1^\markup {
    \override #'(fret-diagram-details . (
                 (finger-code . below-string))) {
      \fret-diagram-verbose #'((mute 6)
                             (place-fret 5 3 1 red parenthesized)
                             (place-fret 4 5 2 yellow
                                               default-paren-color
                                               parenthesized)
                             (place-fret 3 5 3 green)
                             (place-fret 2 5 4 blue )
                             (place-fret 1 3 1)
                             (barre 5 1 3))
    }
  }
}
@end lilypond

@item
Als weitere Unterattribute in @code{fret-diagram-details} sind bei
Verwendung des @code{\fret-diagram-verbose}-Textbefehls
@code{fret-label-horizontal-offset} mit Einfluß auf
@code{fret-label-indication} und @code{paren-padding} für den
Zwischenraum zwischen Kreisen und umgebenden Klammern verfügbar.

@lilypond[verbatim,quote,relative=1]
\new Voice {
  c1^\markup {
    \fret-diagram-verbose #'((mute 6)
                             (place-fret 5 3 1)
                             (place-fret 4 5 2)
                             (place-fret 3 5 3)
                             (place-fret 1 6 4 parenthesized)
                             (place-fret 2 3 1)
                             (barre 5 2 3))
  }
  c1^\markup {
    \override #'(fret-diagram-details . (
                 (fret-label-horizontal-offset . 2)
                 (paren-padding . 0.25))) {
      \fret-diagram-verbose #'((mute 6)
                               (place-fret 5 3 1)
                               (place-fret 4 5 2)
                               (place-fret 3 5 3)
                               (place-fret 1 6 4 parenthesized)
                               (place-fret 2 3 1)
                               (barre 5 2 3))
    }
  }
}
@end lilypond

@item
In Lautentabulaturen werden zusätzliche Baßsaiten unterstützt.
@lilypond[quote,verbatim]
m = { f'4 d' a f d a, g, fis, e, d, c,  \bar "|." }

\score {
  \new TabStaff \m
  \layout {
    \context {
      \Score
      tablatureFormat = #fret-letter-tablature-format
    }
    \context {
      \TabStaff
      stringTunings = \stringTuning <a, d f a d' f'>
      additionalBassStrings = \stringTuning <c, d, e, fis, g,>
      fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k")
    }
  }
}
@end lilypond

@item
Saiten können nunmehr auch mit römischen Ziffern bezeichnet
werden, wie etwa bei Streichinstrumenten üblich.
@lilypond[verbatim,quote,relative=2]
c2\2
\romanStringNumbers
c\2
\arabicStringNumbers
c1\3
@end lilypond

@item
In @code{TabStaff} können auch nicht ganzzahlige Bundnummern
Verwendung finden, um Mikrotonalität (etwa durch Querzug) zu
bezeichnen.

@lilypond[quote,verbatim]
\layout {
  \context {
    \Score
    supportNonIntegerFret = ##t
  }
}

mus = \relative { c'4 cih d dih }

<<
  \new Staff << \clef "G_8" \mus >>
  \new TabStaff \mus
>>
@end lilypond

@end itemize


@strong{Neues bei Akkordbezeichnungen}
@c Chord notation improvements

@itemize

@item
Innerhalb von @code{\chordmode} können jetzt auch @code{< >} und
@code{<< >>} für explizite Notenpassagen Einsatz finden.

@item
Akkordnamen können explizit durch Überschreiben ihres
@code{text}-Attributes gestaltet werden.

@lilypond[verbatim,fragment,quote]
<<
\new ChordNames \chordmode {
  a' b c:7
  \once \override ChordName.text = "foo"
  d
}
>>
@end lilypond

@end itemize



@subheading Neues in Ein- und Ausgabe
@c New for input and output


@strong{Neues bei der Eingabestruktur}
@c Input structure improvements

@itemize

@item
@code{\header}-Blöcke können in Variablen gespeichert werden und
als Parameter von Musik- und Schemefunktionen sowie als Inhalt von
@code{#@{@dots{}#@}}-Konstrukten verwendet werden.  Ihre
Schemerepräsentation erfolgt dabei durch Guile-Module.

Konstrukte wie @code{\book}, @code{\bookpart}, @code{\score},
@code{\with}, @code{\layout}, @code{\midi}, @code{\paper} können
in ähnlicher Weise genutzt und durchgereicht werden; die dazu
eingesetzten Datentypen sind aber andere.

@end itemize


@strong{Neues bei Überschriften und Kopfzeilen}
@c Titles and header improvements

@itemize

@item
Die Seitennumerierung kann durch Anpassung der Blattvariable
@code{pate-number-type} auch in römischen Ziffern erfolgen.

@end itemize


@strong{Neues beim Eingabeformat}
@c Input file improvements

@itemize

@item
Ein neuer Befehl @code{\tagGroup} ergänzt die bestehenden Befehle
@code{\keepWithTag} und @code{\removeWithTag}.

Als Beispiel deklariert

@example
\tagGroup #'(violinI violinII viola cello)
@end example

eine Gruppe von Notenmarkierungen.  Verwendet man in Folge einen
Befehl

@example
\keepWithTag #'violinI
@end example

so sind davon nur Notenmarkierungen aus derselben Gruppe wie
@q{violinI} betroffen: Musik, die mit einer von @var{violinI}
verschiedenen Markierung aus dieser Gruppe versehen ist, wird
dabei entfernt.  Gruppenfremde Markierungen sind davon nicht
betroffen.

@end itemize


@strong{Neuerungen in der Ausgabe}
@c Output improvements

@itemize

@item
Die Quelltexte von LilyPond-Dokumenten können nunmehr in die
erzeugte PDF-Datei eingebunden werden.  Diese Option ist
standardmäßig deaktiviert und kann wegen des nicht sichtbaren
Inhaltes als Sicherheitsrisiko aufgefaßt werden.  Praktisch alle
PDF-Betrachter unterstützen eingebettete Dokumente; anderenfalls
erscheint die Ausgabe aber wie gewohnt.  Die Option ist nur bei
PDF-Ausgabe verfügbar.

@item
Die Prozedur @code{output-classic-framework} und die Option
@code{-dclip-systems} sind nun auch für @code{SVG}-Ausgabe
verfügbar.

@item
Die Option @code{-dcrop} kann zur randlosen und umbruchfreien
Formatierung von @code{SVG}- und @code{PDF}-Dokumenten verwendet
werden.

@item
Das Grafikobjektattribut @code{output-attributes} kann bei der
SVG-Ausgabe anstelle von @code{id} eingesetzt werden.  Es erlaubt
die Definition diverser Attribute als Assoziationsliste.
Beispielsweise würde der Wert @code{#'((id . 123) (class . foo)
(data-whatever . @qq{bar}))} die folgende Gruppenmarke in einer
SVG-Datei erzeugen: @code{<g id=@qq{123} class=@qq{foo}
data-whatever=@qq{bar}> @dots{} </g>}.

@item
PostScript's Strichstärkenangleichung wird nicht mehr automatisch
aktiviert sondern auf der Standardeinstellung der Ausgabeeinheit
belassen (bei der Erzeugung von Rasterdateien nutzt Ghostscript
die Strichstärkenangleichung bei Auflösungen bis zu 150dpi).  Ist
die Angleichung aktiviert, kommt ein komplexerer
Zeichenalgorithmus zum Einsatz, der gerade bei Notenhälsen und
Taktstrichen eine einheitlichere Strichstärke erzeugt.

Die Angleichung kann mit LilyPonds Kommandozeilenoption
@samp{-dstrokeadjust} auch erzwungen werden.  Bei der Erzeugung
von PDF-Dateien wird die Dokumentvorschau dabei typischerweise
deutlich besser ausfallen, was aber auf Kosten einer erheblich
größeren Ausgabedatei geschieht.  Das Druckbild bei hohen
Auflösungen bleibt dabei unverändert.

@item
Die neue Funktion @code{make-path-stencil} erlaubt die Verwendung
aller absolut und relativ positionierten @code{path}-Befehle,
mithin:

@code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
@code{moveto}, @code{rmoveto}, @code{closepath}.  Ebenfalls
unterstützt sind die aus SVG-Pfaden bekannten entsprechenden
Einbuchstabenversionen:

@code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m},
@code{Z} und @code{z}.  Die neue Funktion ist mit der
ursprünglichen @code{make-connected-path-stencil}-Funktion
kompatibel.  Vgl. auch @file{scm/stencil.scm}.

@end itemize


@strong{Neuerungen bei MIDI}
@c MIDI improvements

@itemize

@item
Die meisten Phrasierungen werden nun in der MIDI-Ausgabe
berücksichtigt.  Akzent und Marcato erhöhen die Lautstärke von
Noten, staccato, staccatissimo und portato verkürzen sie.
Atemzeichen verkürzen die vorangehende Note.

Anpassungen sind möglich durch Veränderungen der Attribute
@code{midiLength} und @code{midiExtraVelocity} auf einem
@code{ArticulationEvent}.  Beispiele etwa in
@file{ly/script-init.ly}.

@item
Die Länge von Atempausen nach gehaltenen Noten wird nur vom
letzten Notenwert in der mit Haltebögen gebildeten Note bestimmt,
was der typischen Ausführung entspricht und die Synchronisation
der Atempausen verschiedener Stimmen erleichtert.

@item
Der @q{expression level} von MIDI-Kanälen kann durch das
Kontextattribut @code{Staff.midiExpression} bestimmt werden, um
die Lautstärke während einer Note abzuändern, wobei Werte zwischen
@code{0.0} und @code{1.0} zulässig sind.

@example
\score @{
  \new Staff \with @{
    midiExpression = #0.6
    midiInstrument = "clarinet"
  @}
  <<
    @{ a'1~ a'1 @}
    @{
      \set Staff.midiExpression = #0.7 s4\f\<
      \set Staff.midiExpression = #0.8 s4
      \set Staff.midiExpression = #0.9 s4
      \set Staff.midiExpression = #1.0 s4

      \set Staff.midiExpression = #0.9 s4\>
      \set Staff.midiExpression = #0.8 s4
      \set Staff.midiExpression = #0.7 s4
      \set Staff.midiExpression = #0.6 s4\!
    @}
  >>
  \midi @{ @}
@}
@end example

@item
Bei der Midiausgabe wird der Midi-Sequenzname nun durch den
Eintrag @code{title} im @code{\header}-Block (je nach
Vorhandensein, auf Ebene von @code{\score}, @code{\bookpart},
@code{\book} oder dokumentweit) definiert.  Ist dies nicht
erwünscht, kann der Sequenzname stattdessen durch den
@code{\header}-Eintrag @code{midititle} vorgegeben werden.

@end itemize


@strong{Verbesserungen beim Extrahieren von Musik}
@c Extracting music improvements

@itemize

@item
@code{\displayLilyMusic} und die zugrundeliegenden Schemefunktionen
lassen redundante Notenlängenangaben nicht mehr weg.  Dadurch wird es
leichter, alleinstehende Längenangaben in Ausdrücken wie
@example
@{ c4 d4 8 @}
@end example
zuverlässig zu erkennen und zu formatieren.

@end itemize



@subheading Neues bei Abständen und Positionen


@strong{Verbesserungen beim Seitenumbruch}

@itemize

@item
Es gibt zwei neue Funktionen für den Seitenumbruch.
@code{ly:one-page-breaking} passt die Höhe der Seite automatisch an,
so dass alles auf eine einzige Seite passt.
@code{ly:one-line-auto-height-breaking} positioniert die Musik auf
eine einzige Zeile (genau wie @code{ly:one-line-breaking}), passt
dabei aber nicht nur die Seitenbreite, sondern auch die Seitenhöhe
automatisch auf das Format der Musik an.

@end itemize

@strong{Verbesserungen bei der vertikalen und horizontalen Platzierung}

@itemize

@item
Systeme lassen sich nun relativ zu ihrer derzeiten Position verschieben
mittels der @code{extra-offset}-Untereigenschaft von
@code{NonMusicalPaperColumn.line-break-system-details}.
Dabei sind sowohl vertikale als auch horizontale Verschiebungen möglich.
Das ist besonders hilfreich, um kleinere Korrekturen an der
automatischen vertikalen Positionierung einzelner Systeme vorzunehmen;
siehe @ruser{Explizite Positionierung von Systemen} für Einzelheiten.

@item
Der optische Ausgleich der @code{Mi}-Notenköpfe (klein und normal)
in Funk- und Walter-Notation wurde verbessert, so dass sie nun
genauso breit sind wie andere Notenköpfe ihrer Familien.  Auch die
@code{So}-Notenköpfe wurden optisch in den gewöhnlichen Aiken- und
Sacred-Harp-Familien verbessert, ebenso in ihren dünnen Varianten.

@item
@code{LeftEdge} hat jetzt eine definierbare vertikale Ausdehnung
(@code{Y-extent}), siehe @rinternals{LeftEdge}.

@item
Grobs und ihre @q{Eltern} können jetzt unabhängig voneinander ausgerichtet
werden, wodurch die Grob-Platzierung flexibler wird.  Beispielsweise
kann die linke Kante (@q{left}) eines Grobs an der Mitte
(@q{center}) seines übergeordneten Objekts ausgerichtet werden.

@item
Die horizontale Ausrichtung von @code{TextScript}, @code{DynamicText}
und @code{LyricText} wurde verbessert.

@end itemize



@subheading Neue Möglichkeiten, Voreinstellungen zu verändern

@itemize

Das Kommando @code{\afterGrace} hat jetzt ein optionales Argument.

@noindent
@code{\afterGrace} hat jetzt ein optionales Argument, um die horizontale
Positionierung seiner Noten durch die Angabe eines Längen-Bruchteils
festzulegen.
@lilypond[quote,verbatim]
<<
\new Staff \relative {
  % Der Standardwert (3/4)
  c''1 \afterGrace d1 { c16[ d] } c1
}
\new Staff \relative {
  % Den Standardwert wie bisher manuell verändern (15/16)
  #(define afterGraceFraction (cons 15 16))
  c''1 \afterGrace d1 { c16[ d] } c1
}
\new Staff \relative {
  % Einfacher: Mit dem neuen optionalen Argument (5/6)
  c''1 \afterGrace 5/6 d1 { c16[ d] } c1
}
>>
@end lilypond

@item
Die Kommandos @code{\override}, @code{\revert}, @code{\set} und
@code{\unset} funktionieren jetzt alle auch mit dem Präfix @code{\once},
das sie nur einmalig wirksam werden lässt.
@lilypond[quote,verbatim]
\relative {
  c'4 d
  \override NoteHead.color = #red
  e4 f |
  \once \override NoteHead.color = #green
  g4 a
  \once \revert NoteHead.color
  b c |
  \revert NoteHead.color
  f2 c |
}
@end lilypond

@end itemize



@subheading Neu bei Funktionen und Schnittstellen zu Programminterna

@itemize

@item
Die Musik- und Grobeigenschaft @code{spanner-id}, die gleichzeitige
Legato- und Phrasierungsbögen mit dem neuen Kommando \=X unterscheidbar
macht, muss keine Zeichenkette (@emph{string}) mehr sein, sondern
ist jetzt ein Schlüssel (@emph{key}), der entweder eine natürliche Zahl
oder ein Symbol sein kann.

@item
Kontext-Eigenschaften, die in der Eigenschaft @samp{alternativeRestores}
aufgeführt werden, werden bei aufeinanderfolgenden Volta-Klammern
auf ihren Wert am Beginn der @emph{ersten} Klammer zurückgesetzt.

Die derzeitige Voreinstellung stellt erstens die @q{Taktart} wieder her:

@lilypond[verbatim,fragment,quote,relative=2]
\time 3/4
\repeat volta 2 { c2 e4 | }
\alternative {
  { \time 4/4 f2 d | }
  { f2 d4 | }
}
g2. |
@end lilypond

@noindent
Zweitens die @q{Position im Takt}:

@lilypond[verbatim,fragment,quote,relative=2]
\time 3/4
\repeat volta 2 { c2 e4 | }
\alternative {
  { \time 4/4
    \set Timing.measurePosition = #(ly:make-moment -1/2)
    f2 | }
  { f2 d4 | }
}
g2. |
@end lilypond

@noindent
Drittens @q{Akkordwechsel}:

@lilypond[verbatim,fragment,quote]
<<
  \new ChordNames {
    \set chordChanges = ##t
    \chordmode { c1:m d:m c:m d:m }
  }
  \new Staff {
    \repeat volta 2 { \chordmode { c1:m } }
    \alternative {
      { \chordmode { d:m } }
      { \chordmode { c:m } }
    }
  \chordmode { d:m }
}
>>
@end lilypond

@item
LilyPond-Funktionen, die mit @code{define-music-function},
@code{define-event-function}, @code{define-scheme-function} und
@code{define-void-function} definiert sind, können nun direkt
von Scheme aus aufgerufen werden, als wären sie genuine
Scheme-Prozeduren.  Die Typ-Überprüfung und -zuordnung von Argumenten
wird dabei genauso durchgeführt wie bei Aufruf der Funktion
durch eine LilyPond-Eingabe, einschließlich dem Einsetzen
von Default-Werten für optionale Argumente, die die geforderten
Typen-Prädikate nicht erfüllen.  Wenn eine Folge optionaler
Argumente explizit übersprungen werden soll, kann statt
@code{\default} auch @code{*unspecified*} verwendet werden.


@item
Aktuelle Eingabe-Position und Parser sind jetzt in GUILE-Fluids
abgelegt und können durch die Funktionsaufrufe @code{(*location*)}
and @code{(*parser*)} abgerufen werden.  Das bedeutet, dass viele
Funktionen, die bislang ein explizites @code{parser}-Argument
benötigten, dieses nun nicht mehr brauchen.

Funktionen, die mit @code{define-music-function},
@code{define-event-function}, @code{define-scheme-function} und
@code{define-void-function} definiert werden, brauchen keine
@code{parser}- und @code{location}-Argumente mehr.

Bei solchen Funktionsdefinitionen wird LilyPond aber versuchen,
den bisher üblichen Gebrauch von  @code{parser}- und @code{location}-
Argumenten zu erkennen, um noch für eine Weile die
Rückwärtskompatibilität sicherzustellen.


@item
Scheme-Funktionen und -bezeichner können jetzt als Ausgabe-Definitionen
verwendet werden.

@item
Scheme-Ausdrücke können jetzt als Akkord-Bestandteile verwendet werden.

@item
Musikalische Funktionen (auch Scheme- und Void-Funktionen) und
Markup-Kommandos, die nur die letzten Argumente einer Folge von
Overrides und Funktionsaufrufen liefern, können nun in Form eines
einzelnen Ausdrucks definiert werden, der mit @code{\etc} endet:

@lilypond[verbatim,quote]
\markup bold-red = \markup \bold \with-color #red \etc
highlight = \tweak font-size 3 \tweak color #red \etc

\markup \bold-red "text"
\markuplist \column-lines \bold-red { Eins zwei }

{ c' \highlight d' e'2-\highlight -! }
@end lilypond

@item
Durch Punkte strukturierte Symbollisten wie @code{FretBoard.stencil}
wurden schon seit Version@tie{}2.18 unterstützt.  Sie können nun auch
ganze Zahlen enthalten und alternativ durch Kommata getrennt werden.
Das erlaubt ihre Verwendung der Art
@lilypond[quote,verbatim]
{ \time 2,2,1 5/8  g'8 8 8 8 8 }
@end lilypond
und
@example
\tagGroup violine,oboe,fagott
@end example

@item
Solche Listen können auch in Zuweisungen, @code{\set}s und
@code{\override}s verwendet werden. Das erlaubt einen Gebrauch wie:
@lilypond[quote,verbatim]
{ \unset Timing.beamExceptions
  \set Timing.beatStructure = 1,2,1
  g'8 8 8 8 8 8 8 8 }
@end lilypond


@item
Elementen von Alisten (assoziativen Listen) konnten schon bisher
Werte einzeln zugewiesen werden (beispielsweise paper-Variablen wie
@code{system-system-spacing.basic-distance}).  Nun kann man auf sie
auf die gleiche Art auch verweisen, etwa:
@example
\paper @{
  \void \displayScheme \system-system-spacing.basic-distance
@}
@end example

Zusammen mit den zuvor beschriebenen Neuerungen erlaubt dies
das Definieren von (und Zugreifen auf) Pseudovariablen wie @code{violin.1}.

@item
Es gibt jetzt den Beschriftungslistenbefehl @code{\table} für Tabellen.
Jede Spalte kann individuell ausgerichtet werden:
@lilypond[quote,verbatim]
\markuplist {
    \override #'(padding . 2)
    \table
      #'(0 1 0 -1)
      {
        \underline { zentriert rechtsbündig zentriert linksbündig }
        ein "1" Tausendstel "0.001"
        elf "11" Hundertstel "0.01"
        zwanzig "20" Zehntel "0.1"
        tausend "1000" eins "1.0"
      }
}
@end lilypond

@item
@code{InstrumentName} unterstützt jetzt @code{text-interface}.

@item
Die Eigenschaft @code{thin-kern} des Grobs @code{BarLine} (Taktstrich)
heißt jetzt @code{segno-kern}.

@item
@code{KeyCancellation}-Grobs ignorieren jetzt Notenschlüssel in Stichnoten
(wie es @code{KeySignature}-Grobs auch tun).

@item
Kommandos der Form @code{\once@tie{}\unset} sind jetzt erlaubt.

@end itemize

@ifhtml
Für ältere Neuigkeiten siehe
@uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
@uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
oder @uref{../,zurück} zur Dokumentations-Übersicht.

@end ifhtml

@bye
