Due bugs in GhostScript's PDF handling, it is recommended to upgrade to GhostScript 8.x.
\override TextScript #'font-name = #"Serif"
or using the classic font selection mechanism
\override TextScript #'font-family = #'roman \override TextScript #'font-series = #'bold
Input strings encoded in UTF-8 are then rendered through Pango.
-f texstr
output backend. This provides exact metrics
for texts, including kerning and accents.
As a result, the SVG backend is now a fully functional backend.
\espressivo
has been added, for a combination of
crescendo and decrescendo on a single note.
\column
,
\center-align
, etc, are not grouped with < ... >
anymore,
but with { ... }
, eg:
\markup \column { \line { first line } \line { second line } }
<< { d1 } { s2 \grace { c16[ d] } } >> c4
This can now be shortened by doing
\afterGrace { d1 } { c16[ d] }
breakbefore
in the \header
block to
true or false.
\markup
commands.
\cueDuring #voice-name #direction { music }
This will set stem directions and put the cue notes in the cue
Voice
\quote
can now be transposed.
lilypond-book
will now remove any output files that
contain failed music snippets.
\chords
, \lyrics
, etc.)
have been renamed to \chordmode
, \lyricmode
, etc. The
command \chords
is an abbreviation for
\new ChordNames \chordmode ...
\drums
, \lyrics
, \chords
, \figures
function similarly.
\quote
can now be tuned
with quotedEventTypes
. By default, only notes and rests end up
in quotes.
\quote
can now refer to
each other.
\autochange
, now creates the up
and down
staff
automatically, and uses bass clef for the bottom staff.
doubleSlurs
property.
c1\startTrillSpan c4\stopTrillSpan
\postscript
that takes a
string that is dumped as verbatim PostScript in the output.
\lyricsto
text can be changed during a
melody by setting the associatedVoice
property.
\lyricsto
keyword now automatically switches on
lyrics mode.
--dvi
--png
--ps
--pdf
and
--preview
. The old wrapper script for LaTeX has been
renamed to lilypond-latex
.
AmbitusLine
,
AmbitusAccidental
and AmbitusNoteHead
. These objects may
be tuned similar to accidentals and note heads.
|
will display the
current beat within the measure.
Staff
context, the
following code may be used.
\context { \Staff .. }
\paper
block has been renamed to \layout
. A new
\paper
block has been introduced to hold settings for paper
size and output scaling. Further options include raggedbottom
(if set, systems are not vertically filled to reach the bottom of the
page), and raggedlastbottom
.
--safe-mode
has been revisited: GUILE evaluation
is done in the R5RS safe module, with only the basic ly:
interface available and malicious TeX code is stopped. However, to
be reasonably safe, you are advised to use the PostScript backend
rather than the TeX backend anyway; and if possible use an UML
sandbox to run gs or latex.
\applymusic
,
applymusic = #(ly:make-music-function (list procedure? ly:music?) ; signature (lambda (where func music) ; the function (func music)))
\apply
has been renamed to \applymusic
.
score
block as part of a \markup
, it
produces a rendered markup of the music. An example is in
input/test/markup-score.ly.
#{ ... #}
. Within such a block, Scheme forms can be
introduced using a $
character ($$
results in a single
`$' character). These forms are then inserted in the pattern.
#(define (textoffset dx dy) (ly:export #{ \override Voice.TextScript #'extra-offset = #(cons $dx $dy) #})) { c'^"normal text" %% The following embedded scheme call is the same as %% \override Voice.TextScript #'extra-offset = #(cons 2 -3) #(textoffset 2 -3) c'^"text with offset" }
\score
a \score
block at toplevel is interpreted as an implicit
\book
and \notemode
mode is the default lexer mode. The
result is that
\header { title = "The Title" } { a b c }
is interpreted as
\header { title = "The Title" } \book { \score { \notemode { a b c } } }
This is handled by the function defined in
toplevel-music-handler
. Similarly, \score
and
\book
are handled by toplevel-score-handler
and a
toplevel-book-handler
. By changing these variables, different
results can be obtained.
\chordmode
and \figuremode
must now be directly
followed by delimiters. The following example demonstrates the new
behavior,
\figuremode \context Figures { .. } % wrong \context Figures \figuremode { .. } % right
relative
music is optional for music lists.
The default value is middle C.
\addlyrics
\relative { \clef bass d2 d c4 bes a2 \break } \addlyrics { My first Li -- ly song, } \addlyrics { Not much can go wrong! }
Syntactically, \addlyrics
is an infix operator. It is a
shortcut for a combination of \new Lyrics
, \lyricmode
and \lyricsto
.
ly:parse-file
, so the following fragment processes two files
#(ly:parse-file "another.ly") \score { \notes { c4 }}
font-encoding
property can now be used to select
differently encoded fonts. The previous default setting
TeX-text
has been replaced by latin1. LilyPond requires the
ec-fonts-mftraced
package installed to function properly.
\encoding
. The strings for markup texts are translated
automatically.
\book
introduces page layout.
A \book
groups \score
blocks into one page layout
entity. For example, two scores are combined in one book with
\book { \score { ... } \score { ... } }
\pageBreak
lilypond
runs the actual binary, which not use
LaTeX for titling or page layout. If you need LaTeX code in
titles, you can use the lilypond-book
program. The former
lilypond
script has been retained as lilypond-latex
.
|
in the input can be redefined, by
assigning a music expression to pipeSymbol
.
raggedlast = ##t
in the \paper
block
causes the last line to be set flush-left instead of justified.
Timing_engraver
now sets the Timing
alias on
its containing context automatically.
font-encoding
has been added, which makes the switch between normal text
and
other encodings like braces
, music
and math
.
\context
instead of \translator
.
set!
,
for example
(set! (ly:grob-property grob 'beam) ... )
\addquote clarinet \notes\relative c' { \transposition bes fis4 fis fis fis } \score { \notes \relative c'' { c8 d8 \quote 2 oboe es8 gis } }
\transposition
command. An
E-flat alto saxophone is specified as
\transposition es'
convert-ly -e -n --from=2.1.24 --to=2.1.26 *.scm
\noBeam
c8 c \noBeam c c
will print two separate eighth notes, and two beamed notes.
Score
no longer is the top context;
Score
is contained in the Global
context. Consequently,
it is possible to tweak Score
as follows:
\context Score \with { ... }
stringTunings
property.
(old) (new) \property A.B = #C \set A.B = #C \property A.B \unset \unset A.B \property A.B \set #C = #D \override A.B #C = #D \property A.B \override #C = #D (removed) \property A.B \revert #C \revert A.B #C
Furthermore, if A
is left out, the bottommost context is used
by default. In other words, it is no longer necessary to explicitly
mention Voice
, Lyrics
or ChordNames
.
Old:
\property Voice.autoBeaming = ##f \property Staff.TimeSignature \set #'style = #'C
New:
\set autoBeaming = ##f \override Staff.TimeSignature #'style = #'C
\override
and \revert
no longer
hide tweaks at higher context levels.
mbinclude
has been removed, plain @include
or
\input
can be used now.
It now supports running convert-ly on the lilypond snippets,
lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
LyricsVoice
context has been removed. Lyrics should only
be constructed in Lyrics
.
Thread
context has been removed. Note heads and rests
are now constructed at Voice
level.
<c' g''\harmonic>
\drums
mode, and printed or
performed in a DrumStaff
context:
\score { \drums \new DrumStaff { hihat4 cowbell8 } }
\autochange the-music
\markup
now has an equivalent in
Scheme. The markup*
macro creates such objects; the following
two markup commands are equivalent:
f4^#(markup* #:raise 0.2 #:bold "hi") f4^\markup { \raise #0.2 \bold hi }
vocalName
and vocNam
.
--safe-mode
, TeX and
PostScript file output is disallowed, and lilypond-bin is invoked with
--safe-mode
, the user's Guile expressions are evaluated in a
safe environment and file inclusion is not allowed.
Warning: this does not protect against denial-of-service attacks using Guile, TeX or PostScript.
(This feature is still experimental.)
\partcombine mus1 mus2
See input/regression/new-part-combine.ly for an example.
\mark
command now only does automatic incrementing for marks specified as
integer. For example, \mark #1
will print an A in the default
style. See input/regression/rehearsal-mark-letter.ly,
input/regression/rehearsal-mark-number.ly.
\context Voice \applyoutput #(add-balloon-text 'NoteHead "heads, or tails?" '(0 . -3)) c8
#(set-global-staff-size 15) \paper { #(paper-set-staff-size (* 15 pt)) }
Both have the same effect on the global layout of a piece. Similarly, the paper size may be changed as follows
#(set-default-paper-size "a4") \paper { #(set-paper-size "a4") }
barCheckSynchronize
superfluous, so it is now switched
off by default.
Warning: this will cause problems in scores that use bar checks to shorten measures.
=
quotes which indicates what its absolute
octave should be. In the following example,
\relative c'' { c='' b=' d,='' }
the d will generate a warning, because a d” is expected, but a d' is found.
Lyrics
lines can be put melodies
individually, allowing for different melismatic sections in every
Lyrics
. See input/regression/lyric-combine-new.ly.
\new Voice \with { \consists "Pitch_squash_engraver" } { c'4 }
\change
should now be used, e.g.
\change Staff = up
Staff
, can now be changed
using \set
, eg.
\new Staff { \override Staff.StaffSymbol #'line-count = #4 c'4 }
puts a quarter note C on a staff with 4 lines.
\translator { \ScoreContext autoBeaming = ##f }
the definition of ScoreContext
is updated to include the changed
setting.
font-size
is similar to the old font-relative-size
, but may be set to
fractional values; the closest design size will be scaled to achieve
the desired size. As a side-effect, there are now no longer
limitations in using smaller fonts (eg. grace notes) at small staff
sizes.
ih
for a half-sharp and eh
for a half-flat. Hence, the
following is an ascending list of pitches:
ceses ceseh ces ceh c cih cis cisih cisis
\duration #SCHEME-DURATION \pitch #SCHEME-PITCH \outputproperty func symbol = value
For \outputproperty
, the following may be substituted:
\applyoutput #(outputproperty-compatibility func symbol value)
\clef "G_8" \clef "G_15" \clef "G_9"
<pitches>
while simultaneous music is entered as
<<..music list..>>
In effect, the meanings of both have been swapped relative to their 1.8
definition. The syntax for lists in \markup
has changed
alongside, but figured bass mode was not changed, i.e.:
\markup { \center <..list of markups..> } \figure { <figures> }
As chords the more often used than simultaneous music, this change will save keystrokes.
<< \tag #'part << { c4 f2 g4 } % in the part, we have cue-notes \\ R1 >> \tag #'score R1 % in the score: only a rest >>
The same can be applied to articulations, texts, etc.: they are made by prepending
-\tag #your-tags
to an articulation, for example,
c4-\tag #'with-fingerings -4 -\tag #'with-strings \6
This defines a note, which has a conditional fingering and a string-number indication.
\property Voice.fingeringOrientations = #'(left down)
This will put the fingering for the lowest note below the chord, and the rest to the left.
ly2dvi
has been renamed to
lilypond
. The binary itself is now installed as
lilypond-bin
.
\acciaccatura
and \appoggiatura
,
\appoggiatura f8 e4 \acciaccatura g8 f4
Both reflect the traditional meanings of acciaccatura and appogiatura, and both insert insert a slur from the first grace note to the main note.
\new
command will create a context with a unique
name automatically. Hence, for multi-staff scores, it is no longer
necessary to invent arbitrary context names. For example, a two-staff
score may be created by
\simultaneous { \new Staff { notes for 1st staff } \new Staff { notes for 2nd staff } }
\octave pitch
This checks that pitch (without octave) yields pitch (with octave) in \relative mode. If not, a warning is printed, and the octave is corrected.
c8[( d8])
is a pair of beamed slurred eighth notes.
\relative
has been simplified. Octaves are
now always propagated in the order that music is entered. In the
following example,
PRE \repeat "unfold" 3 BODY \alternative { ALT1 ALT2 } POST
the octave of BODY is based on PRE, the starting octave of ALT1 on BODY, the starting octave of ALT2 on ALT1, and the starting octave of POST on ALT2.
The same mechanism is used for all other music expressions, except the chord. Backwards compatibility is retained through a special program option, which is set through
#(ly:set-option 'old-relative)
.ly
file to process and view
it automagically through the new lily-wins
frontend.
c8-[-( d8-]-)
In version 2.0, postfix syntax will be the only syntax available, and the dashes will become optional.
This will simplify the language: all articulations can be entered as postfix, in any order.
<< PITCHES >>
It is not necessary to update files to this syntax, but it will be for using LilyPond version 2.0. In version 2.0, this syntax will be changed to
< PITCHES >
for chords, and
\simultaneous { .. }
for simultaneous music.
To convert your files from <PITCHES> to <<PITCHES>>, use the script included in buildscripts/convert-new-chords.py.
This change was introduced for the following reasons
\applycontext #SCHEME-FUNCTION
\applyoutput #SCHEME-FUNCTION
SCHEME-FUNCTION takes a single argument, and is called for every grob that is created in the current context.
R1*20^\markup { "GP" }
\apply #notes-to-clusters { NOTE NOTE .. }
#(set-time-signature 7 8 '(3 2 2))
NOTE-\startGroup .. NOTE-\stopGroup
#(set-octavation 1)
This page is for LilyPond-2.5.11 (development-branch).