New features in 2.20 since 2.18
*******************************
- • A new ‘output-attributes’ grob property is now used for svg output
- instead of the ‘id’ grob property. It allows multiple attributes
- to be defined as an association list. For example, ‘#'((id . 123)
- (class . foo) (data-whatever . “bar”))’ will produce the following
- group tag in an SVG file: ‘<g id=“123” class=“foo”
- data-whatever=“bar”> ... </g>’.
+New for musical notation
+------------------------
- • Slurs and phrasing slurs may now be started from individual notes
- in a chord. Several simultanous slurs per ‘Voice’ need to be
- distinguished by ‘spanner-id’ setting.
+*Displaying pitch improvements*
- • The music and grob property ‘spanner-id’ for distinguishing
- simultaneous slurs and phrasing slurs has been changed from a
- string to a ‘key’, a non-negative integer or symbol.
+ • Pitches that have a sharp or flat in their name now need to be
+ hyphenated;
+
+ \key a-flat \major
+
+ instead of:
+
+ \key aflat \major
+
+ Pitches that contain _double_ sharps or flats in their name,
+ however, do not need a second hyphen. For example using the Dutch
+ notation ‘cisis’:
+
+ \key c-sharpsharp \major
+
+ • Accidental rules can now be defined _across_ ‘ChoirStaff’ contexts.
+
+ • Two new accidental rules have been added. Both combine the
+ characteristics of ‘modern-voice’, ‘piano’ and their equivalents:
+ ‘choral’
- • There is a new command ‘\=’ for specifying the ‘spanner-id’ for
- simultaneous slurs and phrasing slurs.
- \fixed c' {
- <c~ f\=1( g\=2( >2 <c e\=1) a\=2) >
- }
image of music
- • Blocks introduced with ‘\header’ can be stored in variables and
- used as arguments to music and scheme functions and as the body of
- ‘#{...#}’ constructs. They are represented as a Guile module.
+ This is the now the default accidental style for ‘ChoirStaff’.
- While ‘\book’, ‘\bookpart’, ‘\score’, ‘\with’, ‘\layout’, ‘\midi’,
- ‘\paper’ blocks can be passed around in similar manner, they are
- represented by different data types.
+ ‘choral-cautionary’
- • Dot-separated symbol lists like ‘FretBoard.stencil’ were already
- supported as of version 2.18. They may now also contain unsigned
- integers, and may alternatively be separated by commata. This
- allows usage such as
- { \time 2,2,1 5/8 g'8 8 8 8 8 }
image of music
- and
- \tagGroup violin,oboe,bassoon
+ The same as ‘choral’ but with the extra accidentals typeset as
+ cautionaries instead.
- • Such lists may also be used in expressions for assignments, sets,
- and overrides. This allows usage such as
- { \unset Timing.beamExceptions
- \set Timing.beatStructure = 1,2,1
- g'8 8 8 8 8 8 8 8 }
+ Also see *note (lilypond-notation)Automatic accidentals::.
+
+ • Four new clef glyphs are now available; ‘GG’ (double-G), ‘Tenor G’,
+ ‘varC’ plus related tessitura and ‘Varpercussion’:
+
+ Example Output Example Output
+
+ ----------------------------------------------------------------------------
+ ‘\clef GG’ image of music ‘\clef tenorG’ image of music
+ ‘\clef varC’ image of music ‘\clef altovarC’ image of music
+ ‘\clef tenorvarC’ image of music ‘\clef baritonevarC’ image of music
+ ‘\clef image of music
+ varpercussion’
+
+ Also see _Clef styles_.
+
+ • French note names are now explicitly defined – previously they were
+ aliased to Italian note names. The D pitch may be entered as
+ either ‘re’ or ‘ré’.
+
+ \language "français"
+ do ré mi fa | sol la si do | ré1
image of music
- • Association list elements could previously be assigned values
- individually (for example, paper variables like
- ‘system-system-spacing.basic-distance’). They may now be also
- referenced in this manner, as with
- \paper {
- \void \displayScheme \system-system-spacing.basic-distance
- }
+ Double sharps are entered using an ‘x’ suffix.
- In combination with the previously mentioned changes, this allows
- setting and referencing pseudovariables like ‘violin.1’.
+ \language "français"
+ dob, rebb misb fabsb | sold ladd six dosd | rédsd1
+ image of music
- • LilyPond source files may now be embedded inside the generated PDF
- files. This experimental feature is disabled by default and may be
- regarded as unsafe, as PDF documents with hidden content tend to
- present a security risk. Please note that not all PDF viewers have
- the ability to handle embedded documents (if not, the PDF output
- will appear normally and source files will remain invisible). This
- feature only works with the PDF backend.
+ *Rhythm improvements*
- • French note names are now defined specifically instead of being
- aliased to Italian note names: in addition to the generic
- Italian-derived syntax, the D pitch may be entered as ‘ré’. Double
- sharps may also be entered using the ‘-x’ suffix.
+ • Multi-measure rests have length according to their total duration,
+ under the control of ‘MultiMeasureRest.space-increment’. Note the
+ default value is ‘2.0’.
- • Additional bass strings (for lute tablature) are supported.
- m = { f'4 d' a f d a, g, fis, e, d, c, \bar "|." }
+ \compressFullBarRests
+ R1*2 R1*4 R1*64 R1*16
+ image of music
- \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")
- }
- }
- }
+ \compressFullBarRests
+ \override Staff.MultiMeasureRest.space-increment = 2.5
+ R1*2 R1*4 R1*64 R1*16
image of music
- • The markup-list-command ‘\table’ is now available. Each column may
- be aligned differently.
- \markuplist {
- \override #'(padding . 2)
- \table
- #'(0 1 0 -1)
- {
- \underline { center-aligned right-aligned center-aligned left-aligned }
- one "1" thousandth "0.001"
- eleven "11" hundredth "0.01"
- twenty "20" tenth "0.1"
- thousand "1000" one "1.0"
- }
- }
+ • Improvements to the ‘\partial’ command have been made when used
+ with parallel music and/or multiple contexts.
+
+ • It is now possible to change the time signature mid-measure by
+ using both the ‘\time’ and ‘\partial’ commands together.
+
+ f f f f | f2. \bar "||"
+ \time 3/4 \partial 4
+ f8 8 | f2 f8 f |
image of music
- • A new markup-command, ‘\with-dimensions-from’, makes
- ‘\with-dimensions’ easier to use by taking the new dimensions from
- a markup object, given as first argument.
- \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" "!"
- }
+ • Isolated durations in music now stand for unpitched notes. Pitches
+ are taken from the preceding note or chord. This is especially
+ convenient for specifying rhythms in both music and scheme
+ functions and can help improve the readability of LilyPond source
+ files.
+
+ c64[ 64] 32 16 8^- <g b d>4~ 2 | 1
+ image of music
+
+ \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 |
}
image of music
- • There are two new page breaking functions. ‘ly:one-page-breaking’
- automatically adjusts the height of the page to fit the music, so
- that everything fits on one page.
- ‘ly:one-line-auto-height-breaking’ is like ‘ly:one-line-breaking’,
- placing the music on a single line and adjusting the page width
- accordingly, however it also automatically adjusts the page height
- to fit the music.
+ • Beaming exceptions can now be constructed using the simpler
+ ‘\beamExceptions’ scheme function. Previously, this would have
+ required writing:
- • Markup-command ‘\draw-squiggle-line’ is now available. Customizing
- is possible with overrides of ‘thickness’, ‘angularity’, ‘height’
- and ‘orientation’
- \markup
- \overlay {
- \draw-squiggle-line #0.5 #'(3 . 3) ##t
+ \set Timing.beamExceptions =
+ #'( ;start of alist
+ (end . ;entry for end of beams
+ ( ;start of alist of end points
+ ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16
+ )))
- \translate #'(3 . 3)
- \override #'(thickness . 4)
- \draw-squiggle-line #0.5 #'(3 . -3) ##t
+ \time #'(2 1) 3/16
+ c16 c c
+ \repeat unfold 6 { c32 }
- \translate #'(6 . 0)
- \override #'(angularity . -5)
- \draw-squiggle-line #0.5 #'(-3 . -3) ##t
+ With the new ‘\beamExceptions’ scheme function, this becomes:
- \translate #'(3 . -3)
- \override #'(angularity . 2)
- \override #'(height . 0.3)
- \override #'(orientation . -1)
- \draw-squiggle-line #0.2 #'(-3 . 3) ##t
+ \set Timing.beamExceptions =
+ \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
+
+ \time #'(2 1) 3/16
+ c16 c c |
+ \repeat unfold 6 { c32 } |
+ image of music
+
+ with multiple exceptions separated by bar checks. Note that
+ writing the exception pattern without pitches is convenient but not
+ mandatory (also see the previous documented rhythm improvement –
+ *note (lilypond-notation)Isolated durations in music now stand for
+ unpitched notes::.
+
+ • The positioning of tuplet numbers for kneed beams has been
+ improved. Previously, tuplet numbers were placed according to the
+ position of the tuplet bracket, even if the bracket was not
+ printed. This could lead to tuplet numbers being ‘stranded’.
+
+ Previously:
+
+ image of music
+
+ Now, when the bracket is not drawn, tuplet numbers are positioned
+ closer.
+
+ image of music
+
+ • Collision detection for the kneed beam tuplet numbers has also been
+ added, shifting the offset horizontally if the number is too close
+ to an adjoining note column (but still preserving the number’s
+ vertical distance). In the event of a collision – for example with
+ an accidental – the tuplet number will be shifted vertically
+ instead. If the tuplet number is itself too large to fit within
+ the available space, the original, ‘bracket-based’, positioning
+ system will be used instead.
+
+ image of music
+
+ The original kneed-beam tuplet behavior is still available with a
+ new, ‘knee-to-beam’ property for the ‘TupletNumber’ layout object.
+
+ \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, }
+ image of music
+
+ *Expressive mark improvements*
+
+ • The ends of hairpins may now be fine-tuned using the ‘shorten-pair’
+ grob property. This previously only affected text-spanners (e.g.
+ ‘TupletBracket’ and ‘OttavaBracket’).
+
+ Positive and negative values offset right and left respectively.
+
+ \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\!
+ image of music
+
+ • Individual slurs and phrasing slurs may now be started from an
+ explicit note within a chord.
+
+ <f a( c>1 | <c') e g(> | <a c) e>
+ image of music
+
+ <f( a\( c>1 | <c'\) e\( g> | <a c e\)>
+ image of music
+
+ • A new command ‘\=X’ has been added – where ‘X’ can be any
+ non-negative integer or symbol – so that a specific ‘id’ can be
+ assigned to the start and end of slurs and phrasing slurs.
+
+ This is useful when simultaneous slurs are required or if one slur
+ overlaps another or when nesting short slurs within a longer one.
+
+ <a c e\=7\(>1 | <g b d\=£(> |
+ <f\=A( a c\="foo"(> | <c'\="foo")\=A) e\=£) g\=7\)> |
+ image of music
+
+ Also see *note (lilypond-notation)Expressive marks as curves::.
+
+ *Repeat notation improvements*
+
+ • The visual style of tremolo slashes (shape, style and slope) is now
+ more finely controlled.
+ image of music
+
+ • The music function ‘\unfoldRepeats’ can now take an optional
+ argument-list specifying which type(s) of repeated music should be
+ unfolded. Possible entries are ‘percent’, ‘tremolo’, ‘volta’. If
+ the optional argument-list is unspecified, ‘repeated-music’ will be
+ used, unfolding all.
+
+ *Staff notation improvements*
+
+ • A new command ‘\magnifyStaff’ has been added which scales staff
+ sizes, staff lines, bar lines, beamlets and horizontal spacing
+ generally at the ‘Staff’ context level. Staff lines are prevented
+ from being scaled smaller than the default since the thickness of
+ stems, slurs, and the like are all based on the staff line
+ thickness.
+
+ • A new command ‘\magnifyMusic’ has been added, which allows the
+ notation size to be changed without changing the staff size, while
+ automatically scaling stems, beams, and horizontal spacing.
+
+ \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
+ }
+ }
+ >>
image of music
• A new command, ‘\RemoveAllEmptyStaves’, has been made available,
which acts exactly like ‘\RemoveEmptyStaves’, except for also
removing empty staves on the first system in a score.
- • Markup-commands ‘\undertie’ and ‘\overtie’ are now available, as
- well as the generic markup-command ‘\tie’.
- \markup {
- \undertie "undertied"
- \overtie "overtied"
- }
+ • A new markup command ‘\justify-line’ has been added. Similar to
+ the ‘\fill-line’ markup command except that instead of setting
+ _words_ in columns, the ‘\justify-line’ command balances the
+ whitespace between them ensuring that when there are three or more
+ words in a markup, the whitespace is always consistent.
- m = {
- c''1 \prall -\tweak text \markup \tie "131" -1
- }
+ \markup \fill-line {oooooo oooooo oooooo oooooo}
+ \markup \fill-line {ooooooooo oooooooo oo ooo}
+ image of music
- { \voiceOne \m \voiceTwo \m }
+ \markup \justify-line {oooooo oooooo oooooo oooooo}
+ \markup \justify-line {ooooooooo oooooooo oo ooo}
image of music
- • ‘TabStaff’ is now able to print micro-tones for bendings etc.
+ *Editorial annotation improvements*
+
+ • It is now possible to add text to analysis brackets through the
+ ‘HorizontalBracketText’ object.
\layout {
\context {
- \Score
- supportNonIntegerFret = ##t
+ \Voice
+ \consists "Horizontal_bracket_engraver"
}
}
- mus = \relative { c'4 cih d dih }
+ {
+ \once \override HorizontalBracketText.text = "a"
+ c''\startGroup d''\stopGroup
+ e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup
+ }
+ image of music
- <<
- \new Staff << \clef "G_8" \mus >>
- \new TabStaff \mus
- >>
+ *Text formatting improvements*
+
+ • Support for making it easier to use alternative ‘music’ fonts other
+ than the default Emmentaler in LilyPond has been added. See *note
+ (lilypond-notation)Replacing the notation font:: for more
+ information.
+
+ • Default text fonts have been changed from ‘Century Schoolbook L’,
+ ‘sans-serif’, and ‘monospace’.
+
+ For ‘svg’ backend:
+ Family Default font
+ -----------------------------------
+ _roman_ ‘serif’
+ _sans_ ‘sans-serif’
+ _typewriter_‘monospace’
+
+ ‘serif’, ‘sans-serif’, and ‘monospace’ are ‘generic-family’ in SVG
+ and CSS specifications.
+
+ For other backends:
+ Family Default font (alias) Alias definition lists
+ ----------------------------------------------------------------------------
+ _roman_ ‘LilyPond Serif’ TeX Gyre Schola, C059, Century
+ SchoolBook URW, Century Schoolbook L,
+ DejaVu Serif, ..., serif
+ _sans_ ‘LilyPond Sans TeX Gyre Heros, Nimbus Sans, Nimbus
+ Serif’ Sans L, DejaVu Sans, ..., sans-serif
+ _typewriter_‘LilyPond Monospace’ TeX Gyre Cursor, Nimbus Mono PS,
+ Nimbus Mono, Nimbus Mono L, DejaVu
+ Sans Mono, ..., monospace
+
+ ‘LilyPond Serif’, ‘LilyPond Sans Serif’, and ‘LilyPond Monospace’
+ are font aliases defined in the LilyPond dedicated FontConfig
+ configuration file ‘00-lilypond-fonts.conf’. Where a character
+ dosen’t exist in the first font listed, the next font listed will
+ be used instead for that character. For details of alias
+ definitions, please see to ‘00-lilypond-fonts.conf’ under the
+ installed directory.
+
+ • When using OpenType fonts, font features can be used. Note: Not
+ all OpenType fonts have all functions.
+
+ % True small caps
+ \markup { Normal Style: Hello HELLO }
+ \markup { \caps { Small Caps: Hello } }
+ \markup { \override #'(font-features . ("smcp"))
+ { True Small Caps: Hello } }
+
+ % Number styles
+ \markup { Normal Number Style: 0123456789 }
+ \markup { \override #'(font-features . ("onum"))
+ { Old Number Style: 0123456789 } }
+
+ % Stylistic Alternates
+ \markup { \override #'(font-features . ("salt 0"))
+ { Stylistic Alternates 0: εφπρθ } }
+ \markup { \override #'(font-features . ("salt 1"))
+ { Stylistic Alternates 1: εφπρθ } }
+
+ % Multiple features
+ \markup { \override #'(font-features . ("onum" "smcp" "salt 1"))
+ { Multiple features: Hello 0123456789 εφπρθ } }
image of music
• Two new styles of whiteout are now available. The ‘outline’ style
}
image of music
- • All of ‘\override’, ‘\revert’, ‘\set’, and ‘\unset’ now work with
- the ‘\once’ prefix for making one-time settings.
- \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 |
- }
- image of music
-
- • When outputting MIDI, LilyPond will now store the ‘title’ defined
- in a score’s ‘\header’ block (or, if there is no such definition on
- the ‘\score’ level, the first such definition found in a ‘\header’
- block of the score’s enclosing ‘\bookpart’, ‘\book’, or top-level
- scope) as the name of the MIDI sequence in the MIDI file.
- Optionally, the name of the MIDI sequence can be overridden using
- the new ‘midititle’ ‘\header’ field independently of ‘title’ (for
- example, in case ‘title’ contains markup code which does not render
- as plain text in a satisfactory way automatically).
-
- • Music (and scheme and void) functions and markup commands that just
- supply the final parameters to a chain of overrides, music function
- and markup command calls can now be defined in the form of just
- writing the expression cut short with ‘\etc’.
-
- bold-red-markup = \markup \bold \with-color #red \etc
- highlight = \tweak font-size 3 \tweak color #red \etc
-
- \markup \bold-red "text"
- \markuplist \column-lines \bold-red { One Two }
-
- { c' \highlight d' e'2-\highlight -! }
- image of music
-
- • LilyPond functions defined with ‘define-music-function’,
- ‘define-event-function’, ‘define-scheme-function’ and
- ‘define-void-function’ can now be directly called from Scheme as if
- they were genuine Scheme procedures. Argument checking and
- matching will still be performed in the same manner as when calling
- the function through LilyPond input. This includes the insertion
- of defaults for optional arguments not matching their predicates.
- Instead of using ‘\default’ in the actual argument list for
- explicitly skipping a sequence of optional arguments,
- ‘*unspecified*’ can be employed.
-
- • Current input location and parser are now stored in GUILE fluids
- and can be referenced via the function calls ‘(*location*)’ and
- ‘(*parser*)’. Consequently, a lot of functions previously taking
- an explicit ‘parser’ argument no longer do so.
-
- Functions defined with ‘define-music-function’,
- ‘define-event-function’, ‘define-scheme-function’ and
- ‘define-void-function’ no longer use ‘parser’ and ‘location’
- arguments.
-
- With those particular definitions, LilyPond will try to recognize
- legacy use of ‘parser’ and ‘location’ arguments, providing
- backwards-compatible semantics for some time.
-
- • In the "english" notename language, the long notenames for pitches
- with accidentals now contain a hyphen for better readability. You
- now have to write
- \key a-flat \major
- instead of the previous
- \key aflat \major
-
- Double accidentals do not get another hyphen, so the Dutch ‘cisis’
- has the long English notename ‘c-sharpsharp’.
-
- • The visual style of tremolo slashes (shape, style and slope) is now
- more finely controlled.
- image of music
-
- • Multi-measure rests have length according to their total duration,
- under the control of ‘MultiMeasureRest.space-increment’.
- image of music
-
- • Page numbers may now be printed in roman numerals, by setting the
- ‘page-number-type’ paper variable.
-
- • It is now possible to use ‘\time’ and ‘\partial’ together to change
- the time signature in mid measure.
-
- \override Score.BarNumber.break-visibility = #end-of-line-invisible
- \partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||"
- \time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 |
- image of music
-
- • It is now possible to override the ‘text’ property of chord names.
-
- <<
- \new ChordNames \chordmode {
- a' b c:7
- \once \override ChordName.text = #"foo"
- d
+ • A new markup-command, ‘\with-dimensions-from’, makes
+ ‘\with-dimensions’ easier to use by taking the new dimensions from
+ a markup object, given as first argument.
+ \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" "!"
+ }
}
- >>
image of music
- • Improved horizontal alignment when using ‘TextScript’, with
- ‘DynamicText’ or ‘LyricText’.
-
- • A new command ‘\magnifyStaff’ has been added which scales staff
- sizes, staff lines, bar lines, beamlets and horizontal spacing
- generally at the ‘Staff’ context level. Staff lines are prevented
- from being scaled smaller than the default since the thickness of
- stems, slurs, and the like are all based on the staff line
- thickness.
+ • Markup-command ‘\draw-squiggle-line’ is now available. Customizing
+ is possible with overrides of ‘thickness’, ‘angularity’, ‘height’
+ and ‘orientation’
+ \markup
+ \overlay {
+ \draw-squiggle-line #0.5 #'(3 . 3) ##t
- • ‘InstrumentName’ now supports ‘text-interface’.
+ \translate #'(3 . 3)
+ \override #'(thickness . 4)
+ \draw-squiggle-line #0.5 #'(3 . -3) ##t
- • There is now support for controlling the ‘expression level’ of MIDI
- channels using the ‘Staff.midiExpression’ context property. This
- can be used to alter the perceived volume of even sustained notes
- (albeit in a very ‘low-level’ way) and accepts a number value
- between ‘0.0’ and ‘1.0’.
+ \translate #'(6 . 0)
+ \override #'(angularity . -5)
+ \draw-squiggle-line #0.5 #'(-3 . -3) ##t
- \score {
- \new Staff \with {
- midiExpression = #0.6
- midiInstrument = #"clarinet"
+ \translate #'(3 . -3)
+ \override #'(angularity . 2)
+ \override #'(height . 0.3)
+ \override #'(orientation . -1)
+ \draw-squiggle-line #0.2 #'(-3 . 3) ##t
}
- <<
- { 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
+ image of music
- \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 { }
+ • Markup-commands ‘\undertie’ and ‘\overtie’ are now available, as
+ well as the generic markup-command ‘\tie’.
+ \markup {
+ \undertie "undertied"
+ \overtie "overtied"
}
- • Support for making it easier to use alternative ‘music’ fonts other
- than the default Emmentaler in LilyPond has been added. See
- <http://fonts.openlilylib.org/> for more information.
+ m = {
+ c''1 \prall -\tweak text \markup \tie "131" -1
+ }
- • Grobs and their parents can now be aligned separately allowing more
- flexibility for grob positions. For example the ‘left’ edge of a
- grob can now be aligned on the ‘center’ of its parent.
+ { \voiceOne \m \voiceTwo \m }
+ image of music
- • Improvements to the ‘\partial’ command have been made to avoid
- problems when using multiple, parallel contexts.
+New for specialist notation
+---------------------------
- • ‘\chordmode’ can now use ‘< >’ and ‘<< >>’ constructs.
+*Vocal music improvements*
- • A new command ‘\tagGroup’ has now been added. This complements the
- existing ‘\keepWithTag’ and ‘\removeWithTag’ commands. For
- Example:
+ • A new flexible template suitable for a range of choral music, is
+ now provided. This may be used to create simple choral music, with
+ or without piano accompaniment, in two or four staves. Unlike
+ other templates, this template is ‘built-in’, which means it does
+ not need to be copied and edited: instead it is simply ‘\include’’d
+ in the input file. For details, see *note
+ (lilypond-learning)Built-in templates::.
- \tagGroup #'(violinI violinII viola cello)
+ • The ‘\addlyrics’ function now works with arbitrary contexts
+ incuding ‘Staff’.
- declares a list of ‘tags’ that belong to a single ‘tag group’.
+ • ‘\lyricsto’ and ‘\addLyrics’ have been ‘harmonized’. Both now
+ accept the same kind of delimited argument list that ‘\lyrics’ and
+ ‘\chords’ accept. Backward compatibility has been added so music
+ identifiers (i.e. ‘\mus’) are permitted as arguments. A
+ ‘convert-ly’ rule has been added that removes redundant uses of
+ ‘\lyricmode’ and rearranges combinations with context starters such
+ that ‘\lyricsto’ in general is applied last (i.e. like
+ ‘\lyricmode’ would be).
- \keepWithTag #'violinI
+ *Unfretted and fretted string instrument improvements*
- Is now only concerned with ‘tags’ from ‘violinI’’s tag group.
+ • A new note head style for Tabulature has been added –
+ ‘TabNoteHead.style = #'slash’.
- Any element of the included music tagged with one or more tags from
- the group, but _not_ with VIOLINI, will be removed.
+ • In fret-diagrams the distance between frets and the distance
+ between strings is now independently adjustable. Available are
+ ‘fret-distance’ and ‘string-distance’ as subproperties of
+ ‘fret-diagram-details’.
+ fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" }
- • The ‘\addlyrics’ function now works with arbitrary contexts
- incuding ‘Staff’.
+ \markuplist
+ \override #'(padding . 2)
+ \table #'(0 -1) {
+ "default"
- • String numbers can now also be used to print roman numerals (e.g.
- for unfretted string instruments).
- c2\2
- \romanStringNumbers
- c\2
- \arabicStringNumbers
- c1\3
- image of music
+ \fretMrkp
- • The ‘thin-kern’ property of the ‘BarLine’ grob has been renamed to
- ‘segno-kern’.
+ "fret-distance"
- • ‘KeyCancellation’ grobs now ignore cue clefs (like ‘KeySignature’
- grobs do).
+ \override #'(fret-diagram-details . ((fret-distance . 2)))
+ \fretMrkp
- • Add support for ‘\once \unset’
+ "string-distance"
+
+ \override #'(fret-diagram-details . ((string-distance . 2)))
+ \fretMrkp
+ }
+ image of music
• It is now possible to individually color both the dots and
parentheses in fret diagrams when using the ‘\fret-diagram-verbose’
}
image of music
- • A new markup command ‘\justify-line’ has been added. Similar to
- the ‘\fill-line’ markup command except that instead of setting
- _words_ in columns, the ‘\justify-line’ command balances the
- whitespace between them ensuring that when there are three or more
- words in a markup, the whitespace is always consistent.
+ • Additional bass strings (for lute tablature) are supported.
+ m = { f'4 d' a f d a, g, fis, e, d, c, \bar "|." }
- \markup \fill-line {oooooo oooooo oooooo oooooo}
- \markup \fill-line {ooooooooo oooooooo oo ooo}
+ \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")
+ }
+ }
+ }
+ image of music
+
+ • String numbers can now also be used to print roman numerals (e.g.
+ for unfretted string instruments).
+ c2\2
+ \romanStringNumbers
+ c\2
+ \arabicStringNumbers
+ c1\3
+ image of music
+
+ • ‘TabStaff’ is now able to print micro-tones for bendings etc.
+ \layout {
+ \context {
+ \Score
+ supportNonIntegerFret = ##t
+ }
+ }
+
+ mus = \relative { c'4 cih d dih }
+
+ <<
+ \new Staff << \clef "G_8" \mus >>
+ \new TabStaff \mus
+ >>
+ image of music
+
+ *Chord notation improvements*
+
+ • ‘\chordmode’ can now use ‘< >’ and ‘<< >>’ constructs.
+
+ • It is now possible to override the ‘text’ property of chord names.
+
+ <<
+ \new ChordNames \chordmode {
+ a' b c:7
+ \once \override ChordName.text = #"foo"
+ d
+ }
+ >>
image of music
- \markup \justify-line {oooooo oooooo oooooo oooooo}
- \markup \justify-line {ooooooooo oooooooo oo ooo}
- image of music
+New for input and output
+------------------------
+
+*Input structure improvements*
+
+ • Blocks introduced with ‘\header’ can be stored in variables and
+ used as arguments to music and scheme functions and as the body of
+ ‘#{...#}’ constructs. They are represented as a Guile module.
+
+ While ‘\book’, ‘\bookpart’, ‘\score’, ‘\with’, ‘\layout’, ‘\midi’,
+ ‘\paper’ blocks can be passed around in similar manner, they are
+ represented by different data types.
+
+ *Titles and header improvements*
+
+ • Page numbers may now be printed in roman numerals, by setting the
+ ‘page-number-type’ paper variable.
+
+ *Input file improvements*
+
+ • A new command ‘\tagGroup’ has now been added. This complements the
+ existing ‘\keepWithTag’ and ‘\removeWithTag’ commands. For
+ Example:
+
+ \tagGroup #'(violinI violinII viola cello)
+
+ declares a list of ‘tags’ that belong to a single ‘tag group’.
+
+ \keepWithTag #'violinI
+
+ Is now only concerned with ‘tags’ from ‘violinI’’s tag group.
+
+ Any element of the included music tagged with one or more tags from
+ the group, but _not_ with VIOLINI, will be removed.
+
+ *Output improvements*
+
+ • LilyPond source files may now be embedded inside the generated PDF
+ files. This experimental feature is disabled by default and may be
+ regarded as unsafe, as PDF documents with hidden content tend to
+ present a security risk. Please note that not all PDF viewers have
+ the ability to handle embedded documents (if not, the PDF output
+ will appear normally and source files will remain invisible). This
+ feature only works with the PDF backend.
+
+ • The ‘output-classic-framework’ procedure and the ‘-dclip-systems’
+ are now available with the ‘SVG’ backend.
+
+ • An argument, ‘-dcrop’, has been added, formatting ‘SVG’ and ‘PDF’
+ output without margins or page-breaks.
+
+ • A new ‘output-attributes’ grob property is now used for svg output
+ instead of the ‘id’ grob property. It allows multiple attributes
+ to be defined as an association list. For example, ‘#'((id . 123)
+ (class . foo) (data-whatever . “bar”))’ will produce the following
+ group tag in an SVG file: ‘<g id=“123” class=“foo”
+ data-whatever=“bar”> ... </g>’.
+
+ • The PostScript functionality of stroke adjustment is no longer
+ applied automatically but left to the discretion of the PostScript
+ device (by default, Ghostscript uses it for resolutions up to
+ 150dpi when generating raster images). When it is enabled, a more
+ complex drawing algorithm designed to benefit from stroke
+ adjustment is employed mostly for stems and bar lines.
+
+ Stroke adjustment can be forced by specifying the command line
+ option ‘-dstrokeadjust’ to LilyPond. When generating ‘PDF’ files,
+ this will usually result in markedly better looking ‘PDF’ previews
+ but significantly larger file size. Print quality at high
+ resolutions will be unaffected.
+
+ • Added a new ‘make-path-stencil’ function that supports all ‘path’
+ commands both relative and absolute:
+
+ ‘lineto’, ‘rlineto’, ‘curveto’, ‘rcurveto’, ‘moveto’, ‘rmoveto’,
+ ‘closepath’. The function also supports ‘single-letter’ syntax
+ used in standard SVG path commands:
+
+ ‘L’, ‘l’, ‘C’, ‘c’, ‘M’, ‘m’, ‘Z’ and ‘z’. The new command is also
+ backward-compatible with the original ‘make-connected-path-stencil’
+ function. Also see ‘scm/stencil.scm’.
+
+ *MIDI improvements*
+
+ • The most common articulations are now reflected in MIDI output.
+ Accent and marcato make notes louder; staccato, staccatissimo and
+ portato make them shorter. Breath marks shorten the previous note.
+
+ This behavior is customizable through the ‘midiLength’ and
+ ‘midiExtraVelocity’ properties on ‘ArticulationEvent’. See
+ ‘script-init.ly’ for examples.
+
+ • Improved MIDI output for breathe marks. After tied notes, breaths
+ take time _only_ from the last note of the tie; e.g. ‘{ c4~ c8
+ \breathe }’ performs as ‘{ c4~ c16 r }’ instead of ‘{ c4 r8 }’.
+ This is more consistent with articulations and how humans interpret
+ breaths after ties. It now also makes it easier to align
+ simultaneous breathe marks over multiple parts, all with different
+ note lengths.
- • A new command ‘\magnifyMusic’ has been added, which allows the
- notation size to be changed without changing the staff size, while
- automatically scaling stems, beams, and horizontal spacing.
+ • There is now support for controlling the ‘expression level’ of MIDI
+ channels using the ‘Staff.midiExpression’ context property. This
+ can be used to alter the perceived volume of even sustained notes
+ (albeit in a very ‘low-level’ way) and accepts a number value
+ between ‘0.0’ and ‘1.0’.
- \new Staff <<
- \new Voice \relative {
- \voiceOne
- <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
+ \score {
+ \new Staff \with {
+ midiExpression = #0.6
+ midiInstrument = #"clarinet"
}
- \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
+ <<
+ { 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\!
}
- }
- >>
- image of music
+ >>
+ \midi { }
+ }
- • A new flexible template suitable for a range of choral music, is
- now provided. This may be used to create simple choral music, with
- or without piano accompaniment, in two or four staves. Unlike
- other templates, this template is ‘built-in’, which means it does
- not need to be copied and edited: instead it is simply ‘\include’’d
- in the input file. For details, see *note
- (lilypond-learning)Built-in templates::.
+ • When outputting MIDI, LilyPond will now store the ‘title’ defined
+ in a score’s ‘\header’ block (or, if there is no such definition on
+ the ‘\score’ level, the first such definition found in a ‘\header’
+ block of the score’s enclosing ‘\bookpart’, ‘\book’, or top-level
+ scope) as the name of the MIDI sequence in the MIDI file.
+ Optionally, the name of the MIDI sequence can be overridden using
+ the new ‘midititle’ ‘\header’ field independently of ‘title’ (for
+ example, in case ‘title’ contains markup code which does not render
+ as plain text in a satisfactory way automatically).
- • The positioning of tuplet numbers for kneed beams has been
- significantly improved. Previously, tuplet numbers were placed
- according to the position of the tuplet bracket, even if it was not
- printed. This could lead to stranded tuplet numbers. Now they are
- now positioned closer to the kneed-beam when an appropriate beam
- segment exists for its placement and when the bracket is not drawn.
-
- Collision detection is also added, offsetting horizontally if too
- close to an adjoining note column but preserving the number’s
- vertical distance from the kneed beam. If the number itself is too
- large to fit in the available space the original, bracket-based,
- positioning system is used instead; and in the event of a collision
- (e.g. with an accidental) the tuplet number is moved vertically
- away instead.
+ *Extracting music improvements*
- \time 3/4
- \override Beam.auto-knee-gap = 3
- \tuplet 3/2 4 {
- g8 c'' e,
- c'8 g,, e''
- g,,8 e''' c,,
- }
- image of music
+ • ‘\displayLilyMusic’ and its underlying Scheme functions no longer
+ omit redundant note durations. This makes it easier to reliably
+ recognize and format standalone durations in expressions like
+ { c4 d4 8 }
- The original kneed-beam tuplet behavior is still available through
- an ‘\override’ via a new, ‘knee-to-beam’ property.
+New for spacing issues
+----------------------
- \time 3/4
- \override Beam.auto-knee-gap = 3
- \override TupletNumber.knee-to-beam = ##f
- \tuplet 3/2 4 {
- g8 c'' e,
- c'8 g,, e''
- g,,8 e''' c,,
- }
- image of music
+*Page breaking improvements*
- • ‘\lyricsto’ and ‘\addLyrics’ have been ‘harmonized’. Both now
- accept the same kind of delimited argument list that ‘\lyrics’ and
- ‘\chords’ accept. Backward compatibility has been added so music
- identifiers (i.e. ‘\mus’) are permitted as arguments. A
- ‘convert-ly’ rule has been added that removes redundant uses of
- ‘\lyricmode’ and rearranges combinations with context starters such
- that ‘\lyricsto’ in general is applied last (i.e. like
- ‘\lyricmode’ would be).
+ • There are two new page breaking functions. ‘ly:one-page-breaking’
+ automatically adjusts the height of the page to fit the music, so
+ that everything fits on one page.
+ ‘ly:one-line-auto-height-breaking’ is like ‘ly:one-line-breaking’,
+ placing the music on a single line and adjusting the page width
+ accordingly, however it also automatically adjusts the page height
+ to fit the music.
- • Scheme functions and identifiers can now be used as output
- definitions.
+ *Vertical and Horizontal spacing improvements*
- • Scheme expressions can now be used as chord constituents.
+ • It is now possible to move systems with reference to their current
+ position using the ‘extra-offset’ subproperty of
+ ‘NonMusicalPaperColumn.line-break-system-details’. Both vertical
+ and horizontal changes are possible. This feature is especially
+ useful for making slight adjustments to the default vertical
+ position of individual systems. See *note
+ (lilypond-notation)Explicit staff and system positioning:: for more
+ information.
• Improved visual spacing of small and regular ‘MI’ Funk and Walker
noteheads so they are now the same width as other shaped notes in
• ‘LeftEdge’ now has a definable ‘Y-extent’ (i.e.vertical). See
*note (lilypond-internals)LeftEdge::.
- • Added a new ‘make-path-stencil’ function that supports all ‘path’
- commands both relative and absolute:
+ • Grobs and their parents can now be aligned separately allowing more
+ flexibility for grob positions. For example the ‘left’ edge of a
+ grob can now be aligned on the ‘center’ of its parent.
- ‘lineto’, ‘rlineto’, ‘curveto’, ‘rcurveto’, ‘moveto’, ‘rmoveto’,
- ‘closepath’. The function also supports ‘single-letter’ syntax
- used in standard SVG path commands:
+ • Improved horizontal alignment when using ‘TextScript’, with
+ ‘DynamicText’ or ‘LyricText’.
- ‘L’, ‘l’, ‘C’, ‘c’, ‘M’, ‘m’, ‘Z’ and ‘z’. The new command is also
- backward-compatible with the original ‘make-connected-path-stencil’
- function. Also see ‘scm/stencil.scm’.
+New for changing defaults
+-------------------------
+
+ • All of ‘\override’, ‘\revert’, ‘\set’, and ‘\unset’ now work with
+ the ‘\once’ prefix for making one-time settings.
+ \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 |
+ }
+ image of music
+
+New for Internal interfaces and functions
+-----------------------------------------
+
+ • The music and grob property ‘spanner-id’, used for distinguishing
+ simultaneous slurs and phrasing slurs, has been changed from a
+ string to a _key_ which can be either a non-negative integer or
+ symbol (also see the previous documented expressive mark
+ improvement – _A new command \=X has been added_).
• Context properties named in the ‘alternativeRestores’ property are
restored to their value at the start of the _first_ alternative in
all subsequent alternatives.
- Currently the default set restores ‘current meter’;
+ Currently the default set restores ‘current meter’:
\time 3/4
\repeat volta 2 { c2 e4 | }
g2. |
image of music
- ‘measure position’;
+ ‘measure position’:
\time 3/4
\repeat volta 2 { c2 e4 | }
g2. |
image of music
- and ‘chord changes’;
+ and ‘chord changes’:
<<
\new ChordNames {
>>
image of music
- • Improved MIDI output for breathe marks. After tied notes, breaths
- take time _only_ from the last note of the tie; e.g. ‘{ c4~ c8
- \breathe }’ performs as ‘{ c4~ c16 r }’ instead of ‘{ c4 r8 }’.
- This is more consistent with articulations and how humans interpret
- breaths after ties. It now also makes it easier to align
- simultaneous breathe marks over multiple parts, all with different
- note lengths.
+ • LilyPond functions defined with ‘define-music-function’,
+ ‘define-event-function’, ‘define-scheme-function’ and
+ ‘define-void-function’ can now be directly called from Scheme as if
+ they were genuine Scheme procedures. Argument checking and
+ matching will still be performed in the same manner as when calling
+ the function through LilyPond input. This includes the insertion
+ of defaults for optional arguments not matching their predicates.
+ Instead of using ‘\default’ in the actual argument list for
+ explicitly skipping a sequence of optional arguments,
+ ‘*unspecified*’ can be employed.
- • A new note head style for Tabulature has been added;
- ‘TabNoteHead.style = #'slash’.
+ • Current input location and parser are now stored in GUILE fluids
+ and can be referenced via the function calls ‘(*location*)’ and
+ ‘(*parser*)’. Consequently, a lot of functions previously taking
+ an explicit ‘parser’ argument no longer do so.
+
+ Functions defined with ‘define-music-function’,
+ ‘define-event-function’, ‘define-scheme-function’ and
+ ‘define-void-function’ no longer use ‘parser’ and ‘location’
+ arguments.
+
+ With those particular definitions, LilyPond will try to recognize
+ legacy use of ‘parser’ and ‘location’ arguments, providing
+ backwards-compatible semantics for some time.
- • Four new Clef glyphs have been added _Double G_, _Tenor G_,
- _Varpercussion_ and _varC_ and their related tessitura.
- \override Staff.Clef.full-size-change = ##t
+ • Scheme functions and identifiers can now be used as output
+ definitions.
- \clef "GG" c c c c
- \clef "tenorG" c c c c
- \clef "varC" c c c c
- \clef "altovarC" c c c c
- \clef "tenorvarC" c c c c
- \clef "baritonevarC" c c c c
- \clef "varpercussion" c c c c
+ • Scheme expressions can now be used as chord constituents.
- \break
- \override Staff.Clef.full-size-change = ##f
+ • Music (and scheme and void) functions and markup commands that just
+ supply the final parameters to a chain of overrides, music function
+ and markup command calls can now be defined in the form of just
+ writing the expression cut short with ‘\etc’.
- \clef "GG" c c c c
- \clef "tenorG" c c c c
- \clef "varC" c c c c
- \clef "altovarC" c c c c
- \clef "tenorvarC" c c c c
- \clef "baritonevarC" c c c c
- \clef "varpercussion" c c c c
- image of music
+ \markup bold-red = \markup \bold \with-color #red \etc
+ highlight = \tweak font-size 3 \tweak color #red \etc
- • Isolated durations in music sequences now stand for unpitched
- notes. This may be useful for specifying rhythms to music or
- scheme functions. When encountered in the final score, the pitches
- are provided by the preceding note or chord. Here are two examples
- where this makes for readable input:
+ \markup \bold-red "text"
+ \markuplist \column-lines \bold-red { One Two }
- \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 |
- }
+ { c' \highlight d' e'2-\highlight -! }
image of music
- \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
+ • Dot-separated symbol lists like ‘FretBoard.stencil’ were already
+ supported as of version 2.18. They may now also contain unsigned
+ integers, and may alternatively be separated by commata. This
+ allows usage such as
+ { \time 2,2,1 5/8 g'8 8 8 8 8 }
image of music
- • ‘\displayLilyMusic’ and its underlying Scheme functions no longer
- omit redundant note durations. This makes it easier to reliably
- recognize and format standalone durations in expressions like
- { c4 d4 8 }
-
- • Beaming exceptions can now be constructed using the
- ‘\beamExceptions’ scheme function. One can now write
+ and
+ \tagGroup violin,oboe,bassoon
- \time #'(2 1) 3/16
- \set Timing.beamExceptions =
- \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
- c16 c c |
- \repeat unfold 6 { c32 } |
+ • Such lists may also be used in expressions for assignments, sets,
+ and overrides. This allows usage such as
+ { \unset Timing.beamExceptions
+ \set Timing.beatStructure = 1,2,1
+ g'8 8 8 8 8 8 8 8 }
image of music
- with multiple exceptions separated with ‘|’ bar checks (writing the
- exception pattern without pitches is convenient but not mandatory).
- Previously, setting the beam exceptions would have required writing
+ • Association list elements could previously be assigned values
+ individually (for example, paper variables like
+ ‘system-system-spacing.basic-distance’). They may now be also
+ referenced in this manner, as with
+ \paper {
+ \void \displayScheme \system-system-spacing.basic-distance
+ }
- \set Timing.beamExceptions =
- #'( ;start of alist
- (end . ;entry for end of beams
- ( ;start of alist of end points
- ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16
- )))
+ In combination with the previously mentioned changes, this allows
+ setting and referencing pseudovariables like ‘violin.1’.
- • The most common articulations are now reflected in MIDI output.
- Accent and marcato make notes louder; staccato, staccatissimo and
- portato make them shorter. Breath marks shorten the previous note.
+ • The markup-list-command ‘\table’ is now available. Each column may
+ be aligned differently.
+ \markuplist {
+ \override #'(padding . 2)
+ \table
+ #'(0 1 0 -1)
+ {
+ \underline { center-aligned right-aligned center-aligned left-aligned }
+ one "1" thousandth "0.001"
+ eleven "11" hundredth "0.01"
+ twenty "20" tenth "0.1"
+ thousand "1000" one "1.0"
+ }
+ }
+ image of music
- This behavior is customizable through the ‘midiLength’ and
- ‘midiExtraVelocity’ properties on ‘ArticulationEvent’. See
- ‘script-init.ly’ for examples.
+ • ‘InstrumentName’ now supports ‘text-interface’.
- • The PostScript functionality of stroke adjustment is no longer
- applied automatically but left to the discretion of the PostScript
- device (by default, Ghostscript uses it for resolutions up to
- 150dpi when generating raster images). When it is enabled, a more
- complex drawing algorithm designed to benefit from stroke
- adjustment is employed mostly for stems and bar lines.
+ • The ‘thin-kern’ property of the ‘BarLine’ grob has been renamed to
+ ‘segno-kern’.
- Stroke adjustment can be forced by specifying the command line
- option ‘-dstrokeadjust’ to LilyPond. When generating ‘PDF’ files,
- this will usually result in markedly better looking ‘PDF’ previews
- but significantly larger file size. Print quality at high
- resolutions will be unaffected.
+ • ‘KeyCancellation’ grobs now ignore cue clefs (like ‘KeySignature’
+ grobs do).
+
+ • Add support for ‘\once \unset’