LilyPond – Neuerungen
Dieses Dokument listet die Änderungen und neuen Funktionen in LilyPond für die Version 2.24.4 seit 2.22. |
Achtung: LilyPond-Veröffentlichungen können Änderungen der Syntax
enthalten, die Modifikationen existierender Dateien, die für
ältere Versionen geschrieben wurden, erfordern können, um in
der neuen Version zu funktionieren. Um Dateien zu aktualisieren
ist es nachdrücklich empfohlen, das Werkzeug
convert-ly
zu verwenden, welches mit LilyPond verteilt
wird und in
Dateien mit convert-ly aktualisieren
beschrieben ist. convert-ly
kann fast alle Änderungen
der Syntax automatisch aktualisieren. Nutzer von Frescobaldi
können convert-ly
direct aus Frescobaldi aufrufen,
indem sie „Werkzeuge > Mittels convert-ly aktualisieren...“
verwenden. Andere Bearbeitungsprogramm mit Unterstützung für
LilyPond können ebenfalls die Möglichkeit bieten,
convert-ly
über die graphische Oberfläche aufzurufen.
Bedeutende Änderungen in LilyPond
- LilyPond erfordert jetzt Guile 2.2. Selbst wenn Sie nicht selbst Code in Scheme schreiben, nutzen Sie vielleicht Bibliotheken, die eine signifikante Menge von Anpassungen enthält. Falls diese nicht mit LilyPond 2.24.4 funktionieren, melden Sie dies bitte an die Entwickler der Bibliothek. Falls Sie Entwickler einer Bibliothek sind, siehe Hinweise zu Guile 2.2 am Ende dieses Dokuments.
- Die Infrastruktur zum Erstellen der offiziellen Pakete wurde komplett überarbeitet, zeitgleich mit dem Wechsel auf Guile 2.2. Ab dieser Veröffentlichung stellen wir 64-bit Programme für macOS und Windows bereit. Diese Pakete sind außerdem einfache Archive, die zur „Installation“ an einen beliebigen Ort entpackt werden können. Zum Deinstallieren entfernen Sie einfach das Verzeichnis. Wir haben außerdem das begrenzte Bearbeitungsprogramm aufgegeben, das auf macOS und Windows installiert wurde, LilyPad, und empfehlen stattdessen den Wechsel auf eine externe Lösung, wie zum Beispiel der beliebte Editor Frescobaldi, oder eine andere Umgebung wie beschrieben in Leichteres Editieren. Für weitere Informationen beachten Sie bitte die ausführlichen Anweisungen in Installing.
Hinweise zur Kompilierung des Quelltexts und für Paketersteller
Dieser Abschnitt richtet sich an Enthusiasten, die LilyPond aus dem Quelltext übersetzen, und Paketersteller, die LilyPond für Distributionen vorbereiten. Falls Sie nicht zu einer dieser Gruppen gehören, können Sie diesen Abschnitt überspringen.
-
Wie bereits angemerkt benötigt LilyPond jetzt Guile 2.2. Falls
aus anderen Gründen in der Distribution erforderlich, kann
LilyPond auch mit Guile 3.0 übersetzt werden, durch Angabe von
GUILE_FLAVOR=guile-3.0
an dasconfigure
Skript. Dies ist jedoch zum aktuellen Zeitpunkt weder empfohlen noch offiziell unterstützt. -
Die Auswertung von Scheme Code in Guile 2.2 ist langsamer als in
Guile 1.x. Um den Großteil der Leistungseinbußen
auszugleichen, empfehlen wir die Übersetzung der ‘.scm’
Dateien als Bytecode. Dies geschieht zuerst mit der Ausführung
von
make bytecode
während der Übersetzung und anschließendmake install-bytecode
zusätzlich zumake install
. - Beginnend mit dieser stabilen Versionen installiert LilyPonds Build-System keine Textschriftarten mehr. Bitte installieren Sie diese als separate Pakete unter Beachtung der Lizenzen und und Notice-Dateien.
Neuerungen in der musikalischen Notation
Verbesserungen bei der Anzeige von Tonhöhen
-
Die Unterstützung für alternative Versetzungszeichen wurde
verbessert. Durch die Eigenschaft
alterationGlyphs
in Kontexten wieStaff
können Versetzungszeichen für alle Grobs auf einmal gesetzt werden (siehe auch Alternate accidental glyphs). -
Oktavierungsklammern können sich auf eine einzelne Stimme beziehen
statt auf das gesamte Notensystem. Dies erforderte in der
Vergangenheit einige Verrenkungen.
\layout { \context { \Staff \remove Ottava_spanner_engraver } \context { \Voice \consists Ottava_spanner_engraver } }
Verbesserungen bei Rhythmen
-
Der neue Befehl
\section
fügt einen doppelten Taktstrich ein, der einwandfrei mit Wiederholungszeichen zusammenarbeitet. Ein Abschnitt kann mit dem neuen Befehl\sectionLabel
benannt werden.\fixed c' { f1 \break \section \sectionLabel "Trio" \repeat volta 2 { b1 } }
-
\numericTimeSignature
und\defaultTimeSignature
beziehen sich jetzt auf alle Notensysteme auf einmal (genauer gesagt auf alle Notensysteme im gleichenTiming
Kontext). Dies entspricht dem Verhalten von\time
. -
Der Textbeschriftungsbefehl
\rhythm
wurde hinzugefügt. Er bietet einen einfachen Weg, um Rhythmen gemischt mit Text einzugeben, wie beispielsweise in „Swing“-Angaben.\relative { \tempo \markup { Swing \hspace #0.4 \rhythm { 8[ 8] } = \rhythm { \tuplet 3/2 { 4 8 } } } b8 g' c, d ees d16 ees d c r8 }
-
Der Befehl
\enablePolymeter
bietet jetzt eine Abkürzung, um Engraver zu verschieben, wie es für die gleichzeitige Verwendung von unterschiedlichen Zeitsignaturen nötig ist. Der Code:\layout { \context { \Score \remove Timing_translator \remove Default_bar_line_engraver } \context { \Staff \consists Timing_translator \consists Default_bar_line_engraver } }
kann damit verkürzt werden zu:
\layout { \enablePolymeter }
Unabhängig davon wurde der
Default_bar_line_engraver
entfernt. -
Die neue Option
visible-over-note-heads
kann benutzt werden, um N-tolenklammern immer sichtbar zu machen, wenn deren Richtung über den Notenköpfen gesetzt ist. Die Option kann mit der üblichen Sichtbarkeit von N-tolenklammern genutzt werden oder mit#'if-no-beam
. -
Taktzählungen beachten jetzt komprimierte mehrtaktige Pausen
und Alternativen.
-
Taktnummern können in ihrem Takt zentriert werden, wie es in Filmmusiken
üblich ist.
\layout { \context { \Score centerBarNumbers = ##t barNumberVisibility = #all-bar-numbers-visible } } << { \repeat unfold 3 { c'4 d' e' f' } } { \repeat unfold 3 { c'4 d' e' f' } } >>
- Taktnummern in der Mitte oder am Ende eines Systems werden jetzt an ihrer linken Seite ausgerichtet. Dies folgt der Empfehlung von Elaine Gould (Behind Bars, S. 237), und war größtenteils der gefundene Konsens in einer Diskussion zwischen den Entwicklern. Die Ausrichtung der Taktnummern am Beginn eines Systems bleiben unverändert.
-
\bar ","
erzeugt einen kurzen Taktstrich. -
Die folgenden vordefinierten Taktarten erscheinen nicht mehr
als einfache Taktstriche am Ende einer Zeile. Annotierte
Taktarten (zum Beispiel
\bar "S-|"
) wurden für diesen Zweck hinzugefügt. -
\bar ""
ist nicht mehr nötigt, um die erste Taktnummer darzustellen. Es reicht jetzt aus,barNumberVisibility
aufall-bar-numbers-visible
zu setzen oder eine der anderen Einstellungen, in der die erste Taktnummer sichtbar ist.Es ist zu beachten, dass dies eine Änderung im Verhalten für Dokumente ist, die
barNumberVisibility
aufall-bar-numbers-visible
oder ähnliches setzen undBarNumber.break-visibility
auf#t
, ohne ein\bar ""
. Ab dieser Version wird dann eine Takzahl am Anfang ausgegeben. Dies ist das erwartete Verhalten (alle Taktzahlen sollen sichtbar sein), aber wegen leicht unklarer Dokumentation könnte diese Einstellung genutzt worden sein, um Taktzahlen in der Mitte von Systemen außer der ersten Taktzahl darzustellen. In diesem Fall reicht es aus,\set Score.barNumberVisibility = #all-bar-numbers-visible
zu entfernen, da\override BarNumber.break-visibility = ##t
die relevanten Einstellungen alleine vornimmt. -
Der Befehl
\break
fügt jetzt immer einen Umbruch ein, ohne Rücksicht auf die standardmäßigen Entscheidungen zu Umbrüchen. Es ist zum Beispiel nicht mehr nötig, ein\bar ""
einzufügen, um einen Umbruch in der Mitte eines Taktes zu erreichen.Der neue Befehl
\allowBreak
fügt einen möglichen Umbruch ein, ohne ihn zu erzwingen, aber ebenfalls wie\break
ohne Rücksicht auf die standardmäßigen Entscheidungen zu Umbrüchen. -
Der Taktstrich
"-"
wurde entfernt.convert-ly
wandelt ihn in""
um. Dies führt zu geringfügigen Änderungen bei den horizontalen Abständen bei Zeilenumbrüchen. -
automaticBars
wurde entfernt.convert-ly
wandeltautomaticBars = ##f
inmeasureBarType = #'()
um. -
\defineBarLine
akzeptiert jetzt#t
anstelle der Wiederholung des Zeichennamens in der Mitte einer Zeile. -
Bar_engraver
hat früher Zeilenumbrüche zwischen Taktstrichen in allen Fällen verboten, aber tut dies jetzt nur noch, wenn die KontexteigenschaftforbidBreakBetweenBarLines
auf#t
gesetzt ist, was der Standard ist. Die EigenschaftbarAlways
, die in der Vergangenheit das Fehlen vonforbidBreakBetweenBarLines
umging, wurde entfernt. -
Wegen Änderungen in den Interna von
\bar
wird die Verwendung des Befehls nicht länger unterstützt, bevor die tieferen Kontexte mit\new
erzeugt wurden. Diese Anwendungen werden jetzt ein zusätzliches Notensystem erzeugen. Diese ist ähnlich zu dem Fall, der mit Befehlen wie\override Staff…
auftritt (siehe An extra staff appears).{ \bar ".|:" << \new Staff { c' } \new Staff { c' } >> }
Die Lösung ist,
\bar
innerhalb der Musik für jedes Notensystem zu platzieren, wie üblich mit den meisten Befehlen.<< \new Staff { \bar ".|:" c' } \new Staff { \bar ".|:" c' } >>
-
Die Taktart
"-span|"
erzeugt einen mensurstrich. -
Staff
-Kontexte verwenden den neuenCaesura_engraver
, um den Befehl\caesura
zu notieren.
Verbesserungen bei Ausdrucksbezeichnungen
-
Ergeignisse, die mit Noten verbunden sind (zum Beispiel Dynamiken oder
Artikulationen), können mit
\after
um eine beliebige Dauer verzögert werden. Das vereinfacht viele Situationen, die vorher die Verwendung von expliziter Polyhonie und leeren Pausen erforderten.{ \after 2 \turn g'2. a'4 \after 2 \< b'1 \after 2. \f c'' <>\< \after 4 \> \after 2\! d'' }
-
Umgebrochene Klammern haben jetzt standardmäßig einen linken
Abstand. Das folgt dem Vorbild von veröffentlichten
Notensätzen und behebt einige Fälle, in denen umgebrochene
Klammern vertikal durch die Tonart verschoben wurden.
\relative { \key a \major c''4^\< c c c \break c c c c\! | }
-
Die Enden von Klammern können jetzt links, mittig oder rechts einer
NoteColumn
ausgerichtet werden, indem die Eigenschaftendpoint-alignments
überschrieben wird. -
Die Richtung eines Trillers kann jetzt mit Richtungsanweisungen
wie bei anderen Artikulationen gesetzt werden, also mit
_\startTrillSpan
oder^\startTrillSpan
. -
Das Aussehen von Trillern wurde geändert, um besser dem klassischen
Notensatz zu entsprechen. Sie enden jetzt vor der nächsten Note
und nicht über ihr. Falls die nächste Note ein Vorzeichen hat,
endet der Triller davor. Falls die nächste Note die erste Note
eines Takts ist, endet der Triller stattdessen vor dem Taktstrich.
-
Der Abstand von Fermaten ist jetzt größer. Dies verhindert
einige Fälle, in denen Fermaten zu nah an Punkten und anderen
Objekten platziert wurde.
-
Das Flageolett-Symbol ist jetzt kleiner und etwas dicker. Das
folgt dem Vorbild von veröffentlichten Notensätzen und macht die
empfohlene Anpassung unnötig, um das Zeichen zu verkleinern
(
\tweak font-size -3 \flageolet
). -
Das Akzentzeichen ist jetzt ein wenig kleiner. Das behebt einige Fälle,
in denen ein Auflösungszeichen Akzente vertikal verschob.
-
Das Kommazeichen, wie benutzt im Befehl
\breathe
, wurde zu einer üblicheren Form geändert.Das alte Zeichen bleibt verfügbar unter dem Namen ‚raltcomma‘:
{ \override BreathingSign.text = \markup { \musicglyph "scripts.raltcomma" } f'2 \breathe f' | }
-
Die neue Kontexteigenschaft
breathMarkType
wählt aus mehreren vordefinierten Typen das Symbol, das\breathe
produziert.\fixed c' { \set breathMarkType = #'tickmark c2 \breathe d2 }
Verbesserungen bei Wiederholungen
-
Wiederholungsalternativen können innerhalb von wiederholten
Abschnitten notiert werden.
\repeat volta 3 { c'1 \alternative { d' e' } f' }
-
Die Zahlen in Wiederholungsklammern können mit dem Befehl
\volta
gesetzt werden.\repeat volta 3 c'1 \alternative { \volta 1 d' \volta 2,3 e' }
-
Der neue Befehl
\repeat segno
notiert automatisch eine Vielfalt von Formen mit da-capo und dal-segno.music = \fixed c' { \repeat segno 2 { b1 } \fine } \score { \music } \score { \unfoldRepeats \music }
-
Der neue Befehl
\fine
fügt einen endgültigen Taktstrich ein, der einwandfrei mit Wiederholungszeichen zusammenarbeitet. Innerhalb eines\repeat
gibt er außerdem Fine aus und beendet die Musik beim Entfalten.music = \fixed c' { \repeat volta 2 { f1 \volta 2 \fine \volta 1 b1 } } \score { \music } \score { \unfoldRepeats \music }
-
Der Befehl
\volta
entfernt Musik, wenn eine Wiederholung entfaltet wird. -
Der Befehl
\unfolded
fügt Musik hinzu, wenn eine Wiederholung entfaltet wird.
Verbesserungen bei Anmerkungen
-
Die neuen Befehle
\staffHighlight
und\stopStaffHighlight
können benutzt werden, um einen musikalischen Abschnitt einzufärben. -
Ein neuer Grob
FingerGlideSpanner
ist jetzt verfügbar, um das Rutschen von Fingern auf einer Saite von einer Position zu einer anderen anzuzeigen. Mehrere Aussehen sind möglich, abhängig von der Einstellungstyle
. Im Bild sind die Stileline
,stub-left
,stub-right
undstub-both
zu sehen.Außerdem möglich sind
dashed-line
,dotted-line
,zigzag
,trill
,bow
undnone
. -
Blasen haben jetzt änderbare Formattierungen.
-
Einklammern von Akkorten wird jetzt unterstützt. Momentan muss die
Schriftgröße der Klammern manuell angepasst werden.
-
Einklammern von Streckern wird jetzt unterstützt.
-
Eine „Zeit-basierte“ Version des Befehls
\parenthesize
wurde hinzugefügt. Der Befehl erwartet einen Pfad:\parenthesize GrobName
oder\parenthesize ContextName.GrobName
. Er verhält sich wie ein\once \override
. Das Interface ergänzt die bereits vorhandene Form\parenthesize event
, ähnlich zu\footnote
.{ \parenthesize NoteHead c'1 \parenthesize Staff.KeySignature \key g \major c'1 }
-
Das Hinzufügen von
Melody_engraver
zumVoice
-Kontext funktioniert jetzt standardmäßig, um die Richtung des Halses der mittleren Note entsprechend der Melodie zu ändern. Vorher erforderte dies zusätzlichen Anpassungen vonStem.neutral-direction
.\new Voice \with { \consists Melody_engraver } \relative c'' { \autoBeamOff g8 b a e g b a g | c b d c b e d c | }
Die Kontexteigenschaft
suspendMelodyDecisions
kann verwendet werden, um dieses Verhalten temporär auszuschalten, wie es auch\override Stem.neutral-direction = #DOWN
vorher tat. -
Der neue
Mark_tracking_translator
übernimmt die Entscheidung vonMark_engraver
, wann eine Markierung erzeugt wird.Mark_engraver
kontrolliert weiterhin die Formattierung und die vertikale Platzierung.Standardmäßig erzeugen
Mark_engraver
in mehreren Kontexten eine gemeinsame Abfolge von Markierungen. Falls unabhängige Sequenzen gewünscht werden, müssen mehrereMark_tracking_translator
verwendet werden.
Verbesserungen bei der Textformattierung
-
Die neuen Befehle
\textMark
und\textEndMark
sind verfügbar, um einen beliebiges Stück Text zwischen Noten einzufügen, genannt eine Textmarkierung. Diese Befehle verbessern die bisher verfügbare Syntax mit dem Befehl\mark
, aufgerufen als\mark markup
(\mark "…"
oder\mark \markup …
).\fixed c' { \textMark "Text mark" c16 d e f e f e d c e d c e d c8 \textEndMark "Text end mark" }
\textMark
und\textEndMark
sind jetzt der empfohlene Weg, um Textmarkierungen zu erstellen. Die Benutzung von\mark
zu diesem Zweck wird zwar weiter unterstützt, es wird aber davon abegraten (das betrifft nicht den Befehl\mark
selbst, nur der Aufruf mit einem Textargument;\mark \default
oder\mark number
sind weiterhin der empfohlene und einzige Weg, um eine Probenmarkierung zu erzeugen).Die neuen Befehle haben einige Unterschiede zu
\mark markup
. Zu jedem Zeitpunkt kann es eine beliebige Anzahl geben, während es nur eine Benutzung von\mark
geben kann. Sie erzeugen Grobs des dedizierten TypsTextMark
, wohingegen\mark
ein Grob des TypsRehearsalMark
erzeugt, unabhängig davon ob es als Probenmarkierung oder Textmarkierung aufgerufen wurde; die Einführung dieser Unterscheidung erlaubt es Stylesheets, verschiedene Layouteinstellungen für Proben- und Textmarkierungen zu setzen. Die Ausrichtung der neuen Befehle ist unterschiedlich:\textMark
erzeugt immer eine links-ausgerichtete Markierung, während\textEndMark
eine rechts-ausgerichtete Markierung erzeugt; im Gegensatz dazu hängt die Ausrichtung einesRehearsalMark
vom Ankerpunkt des Objekts ab, an dem aus ausgerichtet ist.Siehe Text marks für Details.
-
Textvarianten für Kreuze, Bs, Auflösungszeichen, Doppelkreuze
und Doppel-Bs sind jetzt in der Emmentaler-Schrift verfügbar.
In Texten können sie einfach über ihre Unicode-Zeichen genutzt
werden.
-
Es ist jetzt möglich, die Breite und die Form von (einigen)
Emmentaler-Ziffern mit OpenType-Features zu kontrollieren.
-
\smallCaps
funktioniert jetzt für beliebige Textbeschriftungen, nicht nur für Zeichenketten. -
Die Syntax für Bedingungen in Textbeschriftungen wurde flexibler
und nutzerfreundlicher gemacht. Es benutzt die neuen
Textbeschriftungsbefehle
\if
und\unless
. Hier sind beispielhaft einige Ersetzungen:Sytanx für 2.22
Syntax für 2.24
\on-the-fly #first-page …
\if \on-first-page
…
\on-the-fly #not-part-first-page …
\unless \on-first-page-of-part …
\on-the-fly #(on-page n) …
\if \on-page #n …
-
Mit dem neuen Textbeschriftungslistenbefehle
string-lines
ist es jetzt möglich, eine Zeichenkette an einem gegebenen Zeichen aufzuteilen. Standardmäßig teilt der Befehl an einem Zeilenumbruch. Umgebende Leerzeichen werden entfernt. Die resultierende Liste von Textbeschritungen kann weiter formatiert werden. Dies ist ein sehr praktischer Weg, um zusätzliche Strophen für Lieder einzugeben. -
Der neue Textbeschriftungsbefehl
\align-on-other
übersetzt eine Textbeschriftung so, als wäre sie an einer anderen Textbeschriftung ausgerichtet. -
Zwei neue Textbeschriftungsfunktionen
\with-dimension
und\with-dimension-from
sind verfügbar. Sie sind ähnlich zu\with-dimensions
und\with-dimensions-from
, ändern aber nur eine Dimension (statt beider). -
Die neuen Textbeschriftungsfunktionen
\with-true-dimension
und\with-true-dimensions
sind verfügbar. Sie geben der Textbeschriftung die tatsächliche Größe ihrer gedruckten Tinte, die von der standardmäßigen Größe für einige Symbole aufgrund von Einschränkungen der Textregularität abweichen kann. -
Textersetzungen können jetzt Zeichenketten mit beliebigem
Textbeschriftungen ersetzen, nicht nur mit einer Zeichenkette.
\markup \replace #`(("2nd" . ,#{ \markup \concat { 2 \super nd } #})) "2nd time"
-
Ein neuer Textbeschriftungsbefehl
\with-string-transformer
ist verfügbar. Er interpretiert eine Textbeschriftung mit einem installierten „string transformer“; dieser wird aufgerufen, wenn die Interpretation der Textbeschriftung die Interpretation einer Zeichenkette erfordert, und erlaubt es, Änderungen an dieser Zeichenkette vorzunehmen, wie das Ändern der Großschreibung. -
Die Funktion
markup->string
konvertiert eine Textbeschriftung in eine ungefähre Darstellung als Zeichenkette; sie wird für die Ausgabe von PDF-Metadaten sowie für Liedtexte und Markierungen in MIDI benutzt. Textbeschriftungsbefehle können jetzt eine spezielle Methode für die Konvertierung von Textbeschriftungen, die mit ihnen erzeugt wurden, in Zeichenketten definieren, für die Benutzung mitmarkup->string
. Zum Beispiel:#(define-markup-command (upcase layout props arg) (string?) #:as-string (string-upcase arg) (interpret-markup layout props (string-upcase arg)))
Neuerungen für spezielle Notation
Verbesserungen für Saiteninstrumente mit Bünden
-
Die neuen Saiteneinstellungen
banjo-double-c
undbanjo-double-d
wurden hinzugefügt. -
Ein neuer Grob
BendSpanner
ist jetzt fürTabStaff
verfügbar, um eine gekurvte Saite anzuzeigen. Abgesehen vom Standard sind drei Stile möglich:'hold
,'pre-bend
und'pre-bend-hold
.
Neuerungen für Schlagzeug
-
Der Notationsstil
weinberg-drums-style
für Schlaginstrumente wurde hinzugefügt. Er basiert auf der Standardisierungsarbeit von Norman Weinberg.
Verbesserungen für Blasinstrumente
-
Zusätzliche Darstellungsdetails für Holzbläserdiagramme können
jetzt angegeben werden, inklusive der Winkel von teilweise bedeckten
Löchern und der Anzeige von nicht-graphischen Trillerklappen.
\markup { \override #'(graphical . #f) \override #'(woodwind-diagram-details . ((fill-angle . 90) (text-trill-circled . #f))) \woodwind-diagram #'flute #'((cc . (one1h)) (lh . ()) (rh . (besT))) }
Verbesserungen für die Notation von Akkorden
-
Unterstützung von Akkordgittern wurde hinzugefügt.
-
Bei der Verwendung von
ChordNames
verursachen Mehrtaktpausen jetzt auch die Anzeige des Symbols „N.C.“, genau wie normale Pausen. -
Im bezifferten Bass erzeugt
_
einen leeren Eintrag, der aber trotzdem Platz braucht.\figures { <8 _ 4]> <_ 5+ 3> }
- Die Formattierung von bezifferten Bässen wurde verbessert. Insbesondere wurde die Standardgröße auf einen Wert reduziert, der von vielen Urtext-Editionen von barocker Musik genutzt wird.
-
Im bezifferten Bass werden jetzt standardmäßig speziell entworfene
Ziffern für
6\\
,7\\
, und9\\
verwendet. Es werden ebenfalls speziell entworfene Ziffern für die Symbole2\+
,4\+
, und5\+
verwendet, wenn das Pluszeichen nach der Zahl steht.Die neuen Ziffern können über den neuen Befehl
\figured-bass
in Textbeschriftungen abgerufen werden. -
Im bezifferten Bass können Klammern jetzt auch um Vorzeichen
hinzugefügt werden.
Verbesserungen für die Notation von alter Musik
-
Ein neuer Kontext
VaticanaLyrics
ist verfügbar. Er ist ähnlich zuLyrics
, mit einem Stil für Silbentrennung (einem einfachen, links-ausgerichteten Bindestrich zwischen zwei Silben), wie er in den notierten Stilen der Editio Vaticana genutzt wurde. -
Die vordefinierten Befehle für gregorianische Divisiones sind
nicht länger Variationen von
\breathe
.\divisioMinima
,\divisioMaior
,\divisioMaxima
und\virgula
sind Variationen des grundlegenden\caesura
.\finalis
ist äquivalent zu\section
.MensuralStaff
undVaticanaStaff
benutzenDivisio_engraver
, um die oben genannten Befehle sowie\repeat volta
und\fine
zu interpretieren.\new MensuralStaff \fixed c' { \repeat volta 2 { f2 f } g1 a1 \section b1 \fine }
-
KievanStaff
,MensuralStaff
,PetrucciStaff
, undVaticanaStaff
erlauben jetzt Zeilenumbrüche an jeder Position und erzeugen nicht länger leere Taktstriche (""
). -
Im
GregorianTranscriptionStaff
werden Divisiones jetzt standardmäßig mitBarLine
Grobs notiert. Um sie zuDivisio
Grobs zu ändern, kann\EnableGregorianDivisiones
genutzt werden. -
GregorianTranscriptionStaff
erlaubt jetzt einen Zeilenumbruch nach einer Note und nutzt nicht längerTime_signature_engraver
. -
GregorianTranscriptionVoice
nutzt nicht längerStem_engraver
.
Verbesserungen für Weltmusik
-
Unterstützung für klassische persische Musik ist jetzt verfügbar.
Dafür wurden zwei neue Versetzungszeichen, sori und
koron, zu LilyPond hinzugefügt.
\include "persian.ly" \relative c' { \key d \chahargah bk'8 a gs fo r g ak g | fs ek d c d ef16 d c4 | }
Verschiedene Verbesserungen
-
In der Emmentalerschriftart wurden identisch-aussehende Notenköpfe,
die sich nur in der Ausrichtung von Notenhälsen unterschieden, in ein
einzelnes Symbol zusammengefasst. Zum Beispiel wurden die Zeichen
noteheads.u2triangle
undnoteheads.d2triangle
durch ein einzelnes Zeichen ersetzt,noteheads.s2triangle
. Paare von Notenköpfen, die abhängig von der Ausrichtung anders aussehen, bleiben verschieden.Zusäztlich gibt die Eigenschaft
stem-attachment
vonNoteHead
Grobs jetzt den wirklichen, ausrichtungsabhängigen Punkt für das Anbringen von Notenhälsen zurück statt eines hypothetischen Punktes für einen aufgewärtsgerichteten Notenhals. -
Zwei überflüssige Zeichen in der Emmentalerschriftart wurden
entfernt:
scripts.trillelement
(stattdessen istscripts.trill_element
zu benutzen) undscripts.augmentum
(stattdessen istdots.dotvaticana
zu benutzen). -
Mit
\paper { bookpart-level-page-numbering = ##t}
ist es jetzt möglich, Buchteile unabhängig im Bezug auf die Seitennummerierung zu machen. Wenn dies für alle Buchteile genutzt wird, hat jeder Buchteil eine eigene Nummerierung, jeweils beginnend bei 1. Die Option kann auch für einen einzelnen Buchteil genutzt werden, was nützlich sein kann, um die Seiten einer analytischen Einführung unabhängig und mit römischen Ziffern zu nummerieren (letztes kann durch Benutzen vonpage-number-type = #'roman-lower
erreicht werden). -
Eine neue Funktion
break-alignment-list
ist jetzt verfügbar, um unterschiedliche Werte abhängig von der Umbruchrichtung eines Grobs zurückzugeben. Dies kann beispielsweise genutzt werden, um verschiedene Ausrichtungen eines Grobs zu setzen, abhängig davon, ob er am Anfang, in der Mitte oder am Ende einer Zeile positioniert wird. -
Der neue
Mark_performer
erzeugt MIDI Markierungen in der gleichen Weise, wieMark_engraver
gedruckte Markierungen erzeugt. -
Eigenschaften von
PaperColumn
undNonMusicalPaperColumn
(wieNonMusicalPaperColumn.line-break-system-details
) können jetzt mitten in der Musik mit dem üblichen Befehl\once \override
überschrieben werden. Vorher war dies ein Sonderfall und erforderte den Befehl\overrideProperty
. -
Die neuen Eigenschaften
show-horizontal-skylines
undshow-vertical-skylines
erlauben das Anzeigen der Skyline eines Objekts. Dies ist flexibler als die bereits existierende Optiondebug-skylines
, weil es für alle Grobs funktioniert. Obwohl die Eigenschaften primär für die Entwicklung von LilyPond gedacht sind, können sie nützlich sein, um Abstandsentscheidungen zu verstehen oder Stencils in Scheme zu überschreiben. -
Der neue Befehl
\vshape
verhält sich wie\shape
, zeigt aber auch die Kontrollpunkte und Polygone für einfachere Anpassungen.{ a1\vshape #'((0 . 0) (0 . 0.5) (0 . 0.9) (0 . 0.4))^( c'1) }
-
\markup \path
funktioniert jetzt auch in der Ausgabe von SVGs, selbst wenn der Pfad nicht mit einem der Befehlemoveto
oderrmoveto
beginnt. Der Pfad akzeptiert außerdem die Buchstabenäquivalente für SVG (moveto
=M
, etc.). -
set-default-paper-size
undset-paper-size
akzeptieren jetzt eine benutzerdefinierte Papiergröße.#(set-default-paper-size '(cons (* 100 mm) (* 50 mm)))
-
lilypond-book
unterstützt zwei neue Optionen für Musikfragmente, ‘paper-width’ und ‘paper-height’, um die Papiergröße zu setzen. -
lilypond-book
unterstützt eine neue Schnipsel-Option ‘inline’ für die Anzeige von Musik, wie innerhalb eines Textabsatzes. -
Das Skript
lilypond-book
erlaubt jetzt Klammern in den Argumenten für die Befehle\lilypond
(für LaTeX) und@lilypond
(für Texinfo). -
lilypond-book
fügt jetzt das aktuelle Verzeichnis als letzten Eintrag für die Suche von eingebundenen Dateien an, statt es als ersten Eintrag vor alle angegebenen Pfade zu stellen. Dies erlaubt es eingebundenen Verzeichnissen, Dateien im aktuellen Verzeichnis zu überschreiben, und wird nur bemerkt werden, falls es Dateien gleichen Namens in beiden gibt. -
Die neue Scheme-Funktion
universal-color
beschreibt eine Farbpalette mit acht Elementen, die entworfen wurde, um für Personen mit Dichromatismus eindeutig zu sein. -
Die Option
-dembed-source-code
bettet jetzt auch Bilder, die mit\epsfile
hinzugefügt wurden, und Dateien, die mit\verbatim-file
eingebunden wurden, ein. -
Der Standard der Programmoption
aux-files
wurde zu#f
geändert. Falls LilyPond mit dem Argument-dbackend=eps
aufgerufen wird und die Hilfsdateien mit den Endungen ‘.tex’ und ‘.texi’ benötigt werden, muss jetzt auch-daux-files
angegeben werden. Die Formate der Bilder fürlilypond-book
kann separat für große Seitenbilder (typischerweise PNG für die Ausgabe als HTML) und für kleine Bilder von Systemen (typischerweise EPS oder PDF für Druckausgaben) gesetzt werden, mit den Optionen-dtall-page-formats
und-dseparate-page-formats
. -
Die Einheit ‚big point‘ (1bp = 1/72in) ist jetzt
verfügbar durch Anfügen von
\bp
an Längenwerte. -
Scheme-definierte Translators, die sowohl in ‘\layout’ als auch
‘\midi’ nutzbar sind, können jetzt mit
make-translator
erzeugt werden. Scheme-definierte Performer, die nur in ‘\midi’ nutzbar sind, können mitmake-performer
erzeugt werden. Diese Makros funktionieren genau wie das existierende Makromake-engraver
für die Erzeugung eines Engravers, der nur in ‘\layout’ nutzbar ist. -
Scheme Translators können jetzt einen neuen Slot definieren, genannt
pre-process-music
. Er wird für alle Translators nach allen Listenern aufgerufen, aber vor allenprocess-music
. Dies kann für die Vorverarbeitung genutzt werden, die von allen Ereignissen abhängt, aber Kontexteigenschaften setzen muss, bevor diese von anderen Translators gelesen werden. -
Scheme Translators können jetzt Listener enhalten, geschrieben als
(listeners ((event-class engraver event #:once) ...))
Diese werden niemals mehr als einmal pro Zeitschritt ausgelöst. Sie erzeugen eine Warnung, wenn sie zwei Ereignisse in einem Zeitschritt empfangen, außer wenn die beiden Ereignisse gleich sind.
-
Die gleiche Definition von Grobs kann jetzt genutzt werden, um Grobs
verschiedener Klassen zu erzeugen (
Item
,Spanner
,Paper_column
undSystem
). Als Teil dieser Änderung würden die TypenFootnoteItem
undFootnoteSpanner
in einen einzigen TypFootnote
konsolidiert. Gleichfalls wurdenBalloonTextSpanner
undBalloonTextItem
inBalloonText
vereinigt.Wenn die Definition keine Klasse vorschreibt, sollten die Engraver auswählen, mit welcher Klasse der Grob erstellt wird. Für Autoren von Scheme Engavern heißt das die Verwendung von entweder
ly:engraver-make-item
oderly:engraver-make-spanner
. Die Hilfsfunktionly:engraver-make-sticky
untersützt den häufigen Fall von sticky Grobs, wie Fußnoten und Blasen. Es erzeugt einen Grob mit der gleichen Klasse wie ein anderer Grob und verwaltet Eltern und Grenzen. -
Die neue Option
-dcompile-scheme-code
, die auch direkt in der Eingabe an LilyPond gesetzt werden kann mit#(ly:set-option 'compile-scheme-code)
, ermöglicht bessere Meldungen, wenn die Ausführung von Scheme-Code zu einem Fehler führt. Intern nutzt dies den Byte-Compiler von Guile statt des Interpreters.Aufgrund einer Limitierung von Guile hat dies zur Zeit jedoch den Nachteil, dass es unmöglich ist, mehr als ein paar tausend Scheme-Ausdrücke laufen zu lassen. Es wird außerdem darauf hingewiesen, dass der Guile-Compiler einige Unterschiede zum Interpreter hat. Konstante Teile eines Quasiquotes werden beispielsweise aggressiver zu echten Konstanten und führen damit in Code wie
(let ((x 4)) (sort! `(,x 3 2 1)))
zu einem Fehler, weil der „cdr“ der Liste konstant ist und es ein Fehler in Scheme ist, eine Liste von Literalen zu verändern. (In diesem speziellen Fall könnte der Code das Problem durch die Nutzung der nicht-destruktiven Funktionsort
vermeiden, oder jedes Mal eine neue Liste erzeugen mit(list x 3 2 1)
.Diese Option funktioniert zur Zeit nicht unter Windows.
Hinweise zu Guile 2.2
Diese Version von LilyPond wechselt von Guile 1.8 zu Guile 2.2. Dieser Abschnitt führt einige der häufigsten Inkompatibilitäten auf, mit denen man beim Upgrade seines Scheme-Codes zu tun hat.
Eine vollständige, detaillierte Liste der Änderungen in Guile findet sich in der ‘NEWS’ Datei des Guile-Quellcodes.
-
Die Funktion
format
erfordert jetzt einen boolschen Wert oder einen Port als erstes Argument. Dieses Argument war in Guile 1.8 optional. Um die formattierte Ausgabe als Zeichenkette zu erhalten, wie esformat
ohne dieses Argument in Guile 1.8 tat, muss#f
als Argument übergeben werden, also(format #f "string" arguments …)
statt(format "string" arguments …)
. -
Die Regeln für interne Definitionen (also nicht auf oberster
Ebene) sind strenger geworden. Definitionen sind nicht länger
in verschiedenen Ausdruckskontexten erlaubt. Der folgende
Code ist beispielsweise nicht länger gültig:
(if (not (defined? 'variable)) (define variable 'value))
Die Lösung in diesem speziellen Beispiel ist:
(define variable (if (not (defined? 'variable)) 'value variable))
- Zeichenketten unterstützen jetzt Unicode-Zeichen. Bisher wurde ein Unicode-Zeichen als mehrere Zeichen dargestellt, und verschiedene Funktionen waren nicht für die Unterstützung von Unicode ausgelegt.
-
Einige numerische Funktionen geben jetzt in mehr Fällen exakte
Ergebnisse zurück. Beispielsweise gibt
(sqrt 4)
in Guile 1.82.0
zurück, aber2
(eine Ganzzahl) in Guile 2.2.
Ältere Änderungen finden sich in https://lilypond.org/doc/v2.22/Documentation/changes/, https://lilypond.org/doc/v2.20/Documentation/changes/, oder zurück im Index der Dokumentation.