\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- @setfilename NEWS.info @settitle NEWS @ifhtml @macro inputfileref{DIR,NAME} @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c @end macro @macro usermanref{NAME} @inforef{\NAME\,,../user/lilypond/lilypond}@c @end macro @end ifhtml @ifnothtml @macro inputfileref{DIR,NAME} @file{\DIR\/\NAME\}@c @end macro @macro usermanref{NAME} See user manual, \NAME\ @end macro @end ifnothtml @macro textanchor{NAME} @html @end html @end macro @documentencoding utf-8 @documentlanguage en @ifnottex @node Top @top @end ifnottex @unnumbered New features in 2.7 since 2.6 @ifhtml This document is also available in @uref{NEWS.pdf,PDF}. It's part of the @uref{../,LilyPond Documentation} @end ifhtml @itemize @bullet @item Parallel editing is possible using the \parallelMusic function: @lilypond[verbatim,raggedright] \parallelMusic #'(voiceA voiceB voiceC) { %% first bar group r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] | r16 e'8. ~ e'4 r16 e'8. ~ e'4 | c'2 c'2 | %% second bar group r8 a'16[ d''] f''[ a' d'' f''] r8 a'16[ d''] f''[ a' d'' f''] | r16 d'8. ~ d'4 r16 d'8. ~ d'4 | c'2 c'2 | } \new StaffGroup << \context Staff = "up" << \new Voice { \voiceOne \voiceA } \new Voice { \voiceTwo \voiceB } >> \context Staff = "down" << \new Voice { \clef bass \voiceC } >> >> @end lilypond @item Alignments of staves may be tuned per system. @lilypond[] #(set-global-staff-size 13) \relative c'' \new StaffGroup << \new Staff { c1 c } \new Staff { c c } \new Staff { \overrideProperty #"Score.NonMusicalPaperColumn" #'line-break-system-details #'((alignment-offsets . (0 -5 -20))) c1 \break \overrideProperty #"Score.NonMusicalPaperColumn" #'line-break-system-details #'((alignment-offsets . (0 -15 -20))) c1 } >> @end lilypond This feature was sponsored by Trevor Bača. @item Individual systems may be positioned manually, @lilypond[] \header{ tagline = "lily was here" } #(set-default-paper-size "a7" 'landscape) \paper { headsep = 0.0 footsep = 0.0 } \book { \score { \relative c'' { c1\break \overrideProperty #"Score.NonMusicalPaperColumn" #'line-break-system-details #'((Y-offset . 24.5) (X-offset . -7.5)) c1 } } \paper { annotatepage = ##t annotateheaders = ##t } } @end lilypond This feature was sponsored by Trevor Bača and Nicolas Sceaux. @item A linebreaking configuration can now be saved as a @file{.ly} file automatically. This allows vertical alignments to be stretched to fit pages in a second formatting run. See @inputfileref{input/regression,page-layout-twopass.ly} for an example. This feature was sponsored by Trevor Bača and Nicolas Sceaux. @item The tie formatting for chords has been further polished. More cases are handled gracefully, and all scoring parameters may now be changed through the @code{details} property of the @code{Tie} grob. This refinement was sponsored by Steve Doonan. @item Positions of staff lines may now be set individually, for example @lilypond[raggedright] \new Staff \relative c' { \override Staff.StaffSymbol #'line-positions = #'(-7 -2 0 7) g c f b e a } @end lilypond This feature was sponsored by Andrea Valle. @item A MusicXML importer is included now. It was sponsored by among others, Mark van den Borre, and Muziekacademie Lede. @item Stem direction on the center staff line are now interpolated between neighbors. This results in less stem direction changes, leading to a more even appearance. For example, @lilypond[raggedright] \relative c'' { c4 b c b c c c r b a b a } @end lilypond This feature was sponsored by Mike Rolish and Basil Crow. @item Slurs now avoid @code{TupletNumber}s, and tuplet numbers may enter the staff. @lilypond[raggedright] \relative { \slurUp \override TupletBracket #'bracket-visibility = ##f \override TupletBracket #'staff-padding = ##f \override Slur #'details #'region-size = #6 \times 2/3 { c( \stemDown g' \stemNeutral c,) } } @end lilypond This feature was sponsored by Trent Johnston. @item Tuplet brackets and numbers are implemented as separate grobs, @code{TupletBracket} and @code{TupletNumber}. This rewrite was sponsored by Trent Johnston. @item String arguments for music functions may be specified without @code{#} marks. This allows syntactical constructs (like \clef and \bar) to be expressed in generic music functions. @item Ties in chords are also formatted using a scoring based formatting. This reduces the number of collisions for ties in chords, @lilypond[raggedright,fragment,relative=2] ~ @end lilypond Here, the tie for the D is flipped, in spite the default rule for tie directions. This rewrite was sponsored by Steve Doonan. @item With the @code{\tweak} music function, layout objects that are directly connected to input may be tuned easily, @lilypond[relative=2,fragment,verbatim,raggedright] < \tweak #'font-size #3 c \tweak #'color #red d \tweak #'style #'cross g \tweak #'duration-log #1 a >4 @end lilypond This feature was sponsored by Sean Reed and Bertalan Fodor. @item Generic music functions may now also be used on articulations and chord elements, eg. @verbatim < \displayMusic c e-\keepWithTag #'bla -\tag #'bla ^2 > @end verbatim This feature was sponsored by Sean Reed and Bertalan Fodor. @item Spaces between lyrics and distance between syllables with hyphens may now be separately tuned through the @code{LyricSpace} grob. This feature has been sponsored by Bertalan Fodor. @item Texts set in a TrueType font are now kerned. This requires CVS Pango or Pango 1.12. @lilypond[relative=2,fragment,raggedright] c4^"VAVAVAffififl" @end lilypond @item Using the @TeX{} no longer requires linking or dynamically opening the kpathsea library, making the backend more easily usable on various systems. This fix was sponsored by Black Trash Productions. @item The horizontal location of rehearsal marks can be adjusted by setting the @code{rehearsalMarkAlignSymbol} property, @lilypond[raggedright] \relative { c1 \key cis \major \clef alto \set Score.rehearsalMarkAlignSymbol = #'key-signature \mark "on-key" cis \key ces \major \set Score.rehearsalMarkAlignSymbol = #'clef \clef treble \mark "on clef" ces } @end lilypond This feature was sponsored by Trevor Bača. @item It's now possible to easily create deeply nested system start delimiters, @lilypond[raggedright] \new StaffGroup \relative << \set StaffGroup.systemStartDelimiterHierarchy = #'(SystemStartSquare (SystemStartBracket a (SystemStartSquare b)) d) \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } >> @end lilypond In addition, there is now also support for ``square'' system start brackets. This feature was sponsored by Trevor Bača. @item Tie formatting now uses scoring. This opens the road to formatting which handles complex situations require tradeoffs between different beauty factors. This refactoring has been sponsored by Steve Doonan. @item Each grob property may also be a ``grob closure.'' This means that it is possible to combine functions. For example, the @code{Y-offset} of a @code{InstrumentName} grob is defined to be @verbatim ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (,Self_alignment_interface::y_aligned_on_self)) ,(ly:make-simple-closure (,Side_position_interface::y_aligned_on_support_refpoints))) @end verbatim @noindent During execution, the @code{Y-offset} of an @code{InstrumentName} is computed as @example (+ (Self_alignment_interface::y_aligned_on_self @var{grob}) (Self_alignment_interface::y_aligned_on_support_refpoints @var{grob})) @end example @item Calculation of extent and offset of grob is now controlled via the @code{X-extent}, @code{Y-extent}, @code{X-offset} and @code{Y-offset} properties, for example @verbatim \override TextScript #'Y-offset = #-6 @end verbatim @noindent hard codes @code{TextScript} grobs to be 6 spaces below their Y-parent grobs. @item Each grob property can be a procedure. If this is the case, it is assumed to be a routine that calculates said property. This is a major internal cleanup, which also provides advanced tweakability for power users. For example, @verbatim \override Beam #'direction = #(lambda (grob) (if (> 4 (ly:grob-array-length (ly:grob-object grob 'stems))) DOWN UP)) @end verbatim @noindent With this code fragment, the direction of a beam is decided to be up or down, depending on the number of stems in the beam. @item Support for figured bass has been rewritten. Now it supports continuation lines, slashed figures, and its figures, brackets, and alignments may tuned separately. @lilypond[raggedright,fragment] << \relative { c4 c c c } \figures { \set useBassFigureExtenders = ##t <6+ 4 3> <6 4 3> <4 3+> <5/ 7/\+> } >> @end lilypond This rewrite was sponsored by Trent Johnston and John Mandereau. @item Subproperties, like the @code{details} field of @code{Slur} and @code{Tie} may now be tuned with @code{\override}. For example, @verbatim \override Stem #'details #'beamed-lengths = #'(4 4 3) @end verbatim @noindent shortens the stems in beams. @item The default paper size may now be set from the command line using @code{-dpaper-size}. @item Beamlets may stick out of the side of beams. @lilypond[fragment,raggedright,relative=2] { \override Beam #'break-overshoot = #'(-0.5 . 0.5) \set stemLeftBeamCount = #2 c8[ c16 \set stemRightBeamCount = #3 c ] } @end lilypond This feature was sponsored by Trevor Bača. @item Vertical alignments of staves can now be tuned easily for individual systems. @lilypond[raggedright] #(set-global-staff-size 13) \relative c'' << \new PianoStaff << \new Voice { c1 \overrideProperty #"Score.NonMusicalPaperColumn" #'line-break-system-details #'((fixed-alignment-extra-space . 15)) c } { c1\break c\break } >> >> @end lilypond This feature was sponsored by Nicolas Sceaux. @item Vertical spacing for page layout can now be tuned for each system individually. The dimensions that can be tuned can be visualized. @lilypond[verbatim] #(set-default-paper-size "a7" 'landscape) \book { \score { { c4 } } \paper { annotatespacing = ##t } } @end lilypond These features were sponsored by Trevor Bača and Nicolas Sceaux. @item The slope of a stem-tremolo may be set manually @lilypond[fragment,relative=1,raggedright] c8:16[ \once \override StemTremolo #'slope = #0.45 c:16 c:16 c:16 ] @end lilypond This feature was sponsored by Sven Axelsson. @item Laissez vibrer ties can be created with @code{\laissezVibrer}, @lilypond[fragment,raggedright,relative=1] \laissezVibrer r \laissezVibrer @end lilypond This feature was sponsored by Henrik Frisk. @item The order of words in @code{\markup} commands may now be reversed by setting the @code{text-direction} property. This is useful for Right-to-Left languages like Hebrew. This feature was sponsored by Aaron Mehl. @item Texts over multi measure rests can stretch the corresponding measure, if the appropriate @code{spring-and-rods} callback is set. @lilypond[relative=2,fragment,raggedright] \override MultiMeasureRestText #'springs-and-rods = #Multi_measure_rest::set_text_rods c1 R1 R1^"Very long long long text" @end lilypond This feature was sponsored by Kris Shaffer. @item @textanchor{tie-chords} Formatting of ties in chords has been improved. Ties no longer collide with note heads and stems. In addition, it is possible to manually specify tie formatting @lilypond[relative=2, fragment,raggedright] ~ \override TieColumn #'tie-configuration = #'((0 . -1) '() (5.5 . 1) (7 . 1)) ~ @end lilypond This improvement has been sponsored by Bertalan Fodor, Jay Hamilton, Kieren MacMillan, Steve Doonan, Trevor Bača, and Vicente Solsona Dell¡. @item Formatting of isolated, single ties has been improved. Now, ties avoid staff lines, flags and dots, without compromising their shape. @lilypond[fragment,raggedright] \relative c'' { \stemUp c16 c2...~ c16 ~ c2... | c4~c8 c8~c16 c16~c32 c16.~[ c64]~ c64[ c8..] | } @end lilypond This improvement has been sponsored by Bertalan Fodor, Jay Hamilton, Kieren MacMillan, Steve Doonan, Trevor Bača, and Vicente Solsona Dell¡. @item @textanchor{repeat-counter} With the @code{countPercentRepeats} property, percent repeats get incremental numbers to indicate the accumulated repeat count. @lilypond[relative=2,fragment,raggedright] \set countPercentRepeats = ##t \repeat percent 4 { c1 } \time 2/4 \repeat percent 4 { c2 c2 } @end lilypond This feature was sponsored by Yoshinobu Ishizaki @item Text scripts such as fingering instructions and dynamics avoid collisions with slurs @lilypond[fragment,relative=1] { b_1( f'_1_2_3 c_3_4_5 a) b( f'\p b,) c-2_\markup { \italic {"cresc."}} ( f_\markup {x} c) } @end lilypond @item Tuplets can be made to reach the next non-tuplet note by setting the @code{tupletFullLength} property, @lilypond[fragment,relative=2] \new Voice \with { \remove Forbid_line_break_engraver allowBeamBreak = ##t } { \set Score.proportionalNotationDuration = #(ly:make-moment 1 32) \set tupletFullLength = ##t \times 2/3 { c8[ c c] } c4 } @end lilypond This feature was sponsored by Trevor Bača. @item When @code{strict-note-spacing} is set, notes are spaced without regard for clefs, bar lines, and grace notes. For example, @lilypond[fragment,relative=2] \override Score.SpacingSpanner #'strict-note-spacing = ##t \new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] } @end lilypond This feature was sponsored by Trevor Bača. @item Beams support the @code{break-overshoot} property, for example @lilypond[relative=2,fragment] \set allowBeamBreak = ##t \override Beam #'break-overshoot = #'(1.0 . 2.0) c2.. c8[ \break c] @end lilypond This feature was sponsored by Trevor Bača. @item Proportional notation is supported. Notes can be spaced proportional to their time-difference by assigning a duration to @code{proportionalNotationDuration}. For example, @lilypond[relative=2,fragment,raggedright] << \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) \new Staff { c8[ c c c c c] c4 c2 r2 } \new Staff { c2 \times 2/3 { c8 c c } c4 c1 } >> @end lilypond This feature was sponsored by Trevor Bača. @item Symbol sizes (e.g. accidentals) are disregarded for spacing if @code{uniform-stretching} of the @code{SpacingSpanner} grob is set, @lilypond[relative=2,fragment] << \override Score.SpacingSpanner #'uniform-stretching = ##t \new Staff { c16[ c c c c c c c c c16] } \new Staff { \times 6/7 { c16 c c cis c c c } c8[ c32 c32 c16] } >> @end lilypond This feature was sponsored by Trevor Bača. @item Endings of broken tuplet brackets can be tuned. For example, you can add arrows to the brackets, @lilypond[fragment,raggedright,relative=2] \override TupletBracket #'edge-text = #(cons (markup #:arrow-head X LEFT #f) (markup #:arrow-head X RIGHT #f)) \times 4/5 { c c c \bar "empty" \break c c } @end lilypond This feature was sponsored by Trevor Bača. @item @textanchor{arrow-glyph} Arrow heads were added to the Feta font. @lilypond[] \lyrics { \markup { filled, to the right: \hspace #2.0 \fontsize #6 \arrow-head #0 #1 ##t open, down: \hspace #2.0 \fontsize #6 \arrow-head #1 #-1 ##f } } @end lilypond These glyphs have been sponsored by Trevor Bača. @item Nested tuplets are automatically positioned, @lilypond[fragment,raggedright,relative=2] \set tupletNumberFormatFunction = #fraction-tuplet-formatter \times 4/6 { a4 a \times 3/5 { a a a a a } } @end lilypond This feature was sponsored by Trevor Bača. @item Music expressions can be displayed, in LilyPond notation, using the new @code{\displayLilyMusic} function. For instance: @verbatim \displayLilyMusic \transpose c a, { c d e f } @end verbatim will print: @verbatim { a, b, cis d } @end verbatim This feature was contributed by Nicolas Sceaux. @item The current bar number may be checked with @code{\barNumberCheck}, eg. @verbatim \barNumberCheck #22 @end verbatim @noindent will print a warning if it doesn't happen in measure 22. @item If @code{showLastLength} is set, only the last few measures of a piece are rendered, which speeds up correcting scores. For example, setting @verbatim showLastLength = R1*5 \score { ... } @end verbatim @noindent will render only the last five measures (assuming 4/4 time signature) of a piece. @item @textanchor{simple-melismata} Melismata can be specified simply in the lyrics now, eg. @lilypond[relative=1,verbatim,fragment] { c d( e) f e d } \addlyrics { Ky -- _ _ ri e } @end lilypond This feature was sponsored by Nancho Alvarez @item Suggested accidentals (for notating musica ficta) may be switched on with @code{suggestAccidentals} @lilypond[verbatim,fragment,relative=2] \set suggestAccidentals = ##t ais bis @end lilypond This feature was sponsored by Nancho Alvarez. @item The setting @code{whichBar} and time-bookkeeping is now split into a @code{Default_bar_line_engraver} and @code{Timing_translator} respectively. @item @textanchor{pitched-trill} Explicit pitches may be added to trills, @lilypond[relative,verbatim,fragment] \pitchedTrill c4\startTrillSpan fis f\stopTrillSpan @end lilypond This feature was sponsored by D. Josiah Boothby and Jamie Bullock @item Markup now supports formatting of text paragraphs, using @code{\wordwrap} and @code{\justify}. This feature was sponsored by Sven Axelsson. @end itemize @ifhtml For older news, go to @uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS.html}, or @uref{../,go back} to the Documentation index. @end ifhtml @bye