X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=16f0085e98fbbe246fd68ef6443c1f0625a1bac1;hb=3e53d84c47fffab7a5d5d23b23b2e3cb1c536eea;hp=d91f8e447364feac49c76a61464c22eba0a04205;hpb=ac3dd3ad38528113d97f6a8a7b81751c328f1c36;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index d91f8e4473..9e53285a1c 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -36,11 +36,11 @@ See user manual, \NAME\ @finalout @node Top -@top New features in 2.13 since 2.12 +@top New features in 2.20 since 2.18 @allowcodebreaks false -@itemize @bullet +@itemize @ignore @@ -62,600 +62,484 @@ which scares away people. @end ignore @item -The Articulate script by Peter Chubb, which is GPLv3 licensed, is now -a part of the distribution. It allows easy generation of improved -MIDI files that perform non-legato by default, legato slurs, staccato, -tempo markings, trills, etc. +It is now possible to override the @code{text} property of +chord names. -@example -\include "articulate.ly" -\articulate << - all the rest of the score... +@lilypond[verbatim,fragment,quote] +<< +\new ChordNames \chordmode { + a' b c:7 + \once \override ChordName.text = #"foo" + d +} >> -@end example - -@item -Single beat repeats for sixteenth or shorter notes and beat repeats for -measures containing notes of varying durations are now supported. - -@lilypond[fragment,relative=2] -\repeat percent 2 { c16 d } -\repeat percent 2 { c32 e } -\repeat percent 2 { c64 f } -\repeat percent 2 { c128 g' } @end lilypond - @item -Lilypond now engraves woodwind fingering charts. - -@lilypond -\relative c' { - \textLengthOn - des1^\markup { - \woodwind-diagram #'bassoon #'((lh . (thumb-cis)) - (cc . (one two three five six)) - (rh . (f))) - } _"bassoon" - c1^\markup { - \woodwind-diagram #'oboe #'((rh . (c)) - (lh . ()) - (cc . (one two three four five six))) - } _"oboe" - -} -@end lilypond +Improved horizontal alignment when using @code{TextScript}, +with @code{DynamicText} or @code{LyricText}. @item -MIDI output has been improved -@itemize @bullet -@item voices are kept separated, which makes the MIDI much more useful for postprocessing -@item optimal channel distribution: identical instruments share the same channel. This means that e.g. for a full orchestral score there are always 16 (15 plus percussion) diffently sounding instruments available, unrestricted by the number of staves or voices. -@item dynamics are now rendered as note velocities, no longer as midi dynamics. This improves the sound on [high end] midi renderers. -@end itemize +A new command @code{\magnifyStaff} has been added which scales staff +sizes, staff lines, bar lines, beamlets and horizontal spacing generally +at the @code{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. @item -MIDI-import through Midi2ly is improved -@itemize @bullet -@item Midi2ly now also works on Windows systems -@item MIDI-files with more than 32 tracks are now handled -@item notes on certain simultaneous voices no longer ignored -@item notes overrunning a bar line are no longer truncated -@item initial key signature and time signature are respected -@item a problem with octaves in subsequent tracks/voices is fixed -@item initial support for multiple voices notated on one staff -@item the instrumentName is set from track data -@item new --skip option, rests are displayed by default -@item rests overrunning a bar line are not truncated -@item new --include-header option for setting titles -@item new --preview option for big MIDI-files -@end itemize -The first feature was sponsored by Valentin Villenave, -the other features were sponsored by Image-Line Software for FL Studio. +@code{InstrumentName} now supports @code{text-interface}. @item -A new @code{Completion_rest_engraver} is available for automatically -converting long rests which overrun bar lines, matching the -@code{Completion_heads_engraver} for notes -@example -\layout @{ - \context @{ - \Voice - \remove "Note_heads_engraver" - \consists "Completion_heads_engraver" - \remove "Rest_engraver" - \consists "Completion_rest_engraver" - @} -@} -@end example -This feature was sponsored by Image-Line Software for FL Studio. +There is now support for controlling the @q{expression level} of +MIDI channels using the @code{Staff.midiExpression} context property. +This can be used to alter the perceived volume of even sustained notes +(albeit in a very @q{low-level} way) and accepts a number value between +@code{0.0} and @code{1.0}. -@item -Dots can be added to the table of contents items using: @example -\paper @{ - tocItemMarkup = \tocItemWithDotsMarkup +\score @{ + \new Staff \with @{ + midiExpression = #0.6 + midiInstrument = #"clarinet" + @} + << + @{ a'1~ a'1 @} + @{ + \set Staff.midiExpression = #0.7 s4\f\< + \set Staff.midiExpression = #0.8 s4 + \set Staff.midiExpression = #0.9 s4 + \set Staff.midiExpression = #1.0 s4 + + \set Staff.midiExpression = #0.9 s4\> + \set Staff.midiExpression = #0.8 s4 + \set Staff.midiExpression = #0.7 s4 + \set Staff.midiExpression = #0.6 s4\! + @} + >> + \midi @{ @} @} @end example @item -New markup commands @code{\pattern} and @code{\fill-with-pattern} are available. -@lilypond -\markup \column { - \pattern #3 #Y #0.3 \flat - \null - \pattern #7 #X #2 \flat - \override #'(line-width . 40) \fill-with-pattern #1 #CENTER . left right -} -@end lilypond +Support for making it easier to use alternative @q{music} fonts other +than the default Emmentaler in LilyPond has been added. See +@uref{http://fonts.openlilylib.org/} for more information. @item -A minimal composer toolkit of modal transformations is provided. -A motif may be @notation{transposed}, @notation{inverted} and/or -converted to its @notation{retrograde} within any scale. - -@lilypond -pentatonicScale = \relative a' { a c d f g } -motif = \relative c'' { d8 c f,4 } - -\new Staff << - { - \partial 4 - \pentatonicScale - \motif - \modalTranspose c a, \pentatonicScale \motif - \modalInversion d'' a' \pentatonicScale \motif - \retrograde \motif - } - { - \partial 4 - s4^"pentatonic scale" - s1 - s1^"motif" - s1^"transposition" - s1^"inversion" - s1^"retrograde" - } ->> -@end lilypond +Grobs and their parents can now be aligned separately allowing +more flexibility for grob positions. For example the @q{left} edge of a +grob can now be aligned on the @q{center} of its parent. @item -Added minimal support for black mensural notation. - -@item -Enhanced support for obliqua shapes within white mensural ligatures. - -@lilypond -\context MensuralStaff -{ - \clef "petrucci-c3" - \[ - \override NoteHead #'style = #'semipetrucci - c'\maxima - \override NoteHead #'style = #'blackpetrucci - a\breve - \revert NoteHead #'style - \override NoteHead #'ligature-flexa = ##t - \override NoteHead #'flexa-width = #3 - g - g' - \override NoteHead #'flexa-width = #5 - c' - d' - \revert NoteHead #'style - c'\longa - \] -} -@end lilypond +Improvements to the @code{\partial} command have been made to +avoid problems when using multiple, parallel contexts. -@item -Compound time signatures are now supported by the @code{\compoundMeter} command, -which can be used instead of @code{\time}: - -@lilypond -\relative c'' { - \compoundMeter #'(3 1 8) - c8 c c c - \compoundMeter #'((2 8) (5 8)) - c8 c c c c c c - \compoundMeter #'((1 2 3 8) (1 4) (3 8)) - c8 c c c c c c4 c8 c c -} -@end lilypond +@item @code{\chordmode} can now use @code{< >} and @code{<< >>} +constructs. @item -Lyrics above a staff must have their @code{staff-affinity} set to -@code{DOWN} or must have their @code{alignAboveContext} property -set in order to be properly aligned. For more information, see -@ruser{Placing lyrics vertically}. +The @code{NullVoice} context is now @q{below} @code{Score}. @item -@code{stringTunings} property values have changed from a list of -semitones above middle C to a list of LilyPond pitch values. -convert-ly will handle the change automatically where the value -of @code{stringTunings} is set to a Scheme constant value. +A new command @code{\tagGroup} has now been added. This compliments +the existing @code{\keepWithTag} and @code{\removeWithTag} commands. +For Example: -New commands @code{makeStringTuning} and @code{contextStringTuning} -allow the creation of string tunings in the form of a Lilypond -chord construct. - -@item -By using @code{\cueDuringWithClef}, cue notes can now also have their own -clef, which is correctly reset at the end of the cue notes. At the begin -of each line, the standard clef is still displayed, but the cue clef is -shown after the time/key signature in smaller size. - -@lilypond -vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 } -\addQuote vIQuote { \vI } - -Solo = \relative c { - \clef "bass" - \cueDuringWithClef #"vIQuote" #DOWN #"treble" { R1 } | - c4 \cueDuringWithClef #"vIQuote" #DOWN #"treble" { - r4 r2 | - r4 - } c4 c2 | - \cueDuringWithClef #"vIQuote" #DOWN "soprano" { R1*2 \break R1 } | - c1 -} - -\score { - << - \new Staff \new Voice \Solo - >> -} -@end lilypond +@example +\tagGroup #'(violinI violinII viola cello) +@end example +declares a list of @q{tags} that belong to a single @q{tag group}. -@item -Note names can be selected with a new -@code{@bs{}language "italiano"} command, which -can be used in safe mode. The old -@code{@bs{}include "italiano.ly"} syntax is -still supported for now, but will be deprecated -in the future. +@example +\keepwithTag#'violinI +@end example -@item -autobeaming is now disabled by @code{\cadenzaOn} and enabled by -@code{\cadenzaOff}. Beaming in cadenzas should be indicated manually. -Also, if a cadenza is used in a piece with autobeaming disabled, it -will need to be disabled again after the cadenza. +Is now only concerned with @q{tags} from @q{violinI}’s tag group. -@item -The user is now able to specify the name of the predefined fretboard -table. This allows the use of multiple tables, with switching between them -based on user input. +Any element of the included music tagged with one or more tags from the +group, but @emph{not} with @var{violinI}, will be removed. @item -The part-combiner's decision to combine/not combine notes can now be customized - -@lilypond[quote,relative=2] -\partcombine -\relative c' { c2 \partcombineApart c | \partcombineChordsOnce e' e } -\relative c' { c2 \partcombineApart c | c c } -@end lilypond +The @code{\addlyrics} function now works with arbitrary contexts +incuding @code{Staff}. @item -Tablature staves show fret numbers only by default. To get the -former style, @code{\tabFullNotation} is provided. +The @code{thin-kern} property of the @code{BarLine} grob has been +renamed to @code{segno-kern}. @item -Funk-style and Walker-style shape notes have been added. +@code{KeyCancellation} grobs now ignore cue clefs (like +@code{KeySignature} grobs do). @item -Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext} -is used. +Add support for @code{\once@tie{}\unset} @item -New option @code{-dinclude-settings=INCLUDEFILE.ly}, which causes lilypond -to include the given file before the score is processed. This allows the -user to change global settings without the need to change the score itself. -That way, several different editions/version (e.g. different page sizes) -can be generated from a file without having to modify the score for each -version. +It is now possible to individually color both the dots and parentheses +in fret diagrams when using the @code{\fret-diagram-verbose} markup +command. -@item -The autobeaming settings syntax has been changed. beatLength, -beatGrouping, beamSettings, and measureGrouping have all been eliminated. -Autobeaming is now controlled by baseMoment, beatStructure, and -beamExceptions. Default settings for each of these properties can be -stored for any time signature in time-signature-settings, so that -when the time signature is changed, the autobeaming will automatically -change. The new syntax should be much easier and require fewer -overrides. - -@item -The SVG backend has optional support for -@uref{http://www.w3.org/Submission/WOFF, WOFF fonts}. Using the Scheme -option @code{-d svg-woff} together with the SVG backend selection -@code{-d backend=svg}, produces SVG output with CSS WOFF font selection. +@lilypond[verbatim,quote,relative=1] +\new Voice { + c1^\markup { + \override #'(fret-diagram-details . ( + (finger-code . in-dot))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1 red) + (place-fret 4 5 2 inverted) + (place-fret 3 5 3 green) + (place-fret 2 5 4 blue inverted) + (place-fret 1 3 1 violet) + (barre 5 1 3 )) + } + } + c1^\markup { + \override #'(fret-diagram-details . ( + (finger-code . below-string))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1 red parenthesized) + (place-fret 4 5 2 yellow + default-paren-color + parenthesized) + (place-fret 3 5 3 green) + (place-fret 2 5 4 blue ) + (place-fret 1 3 1) + (barre 5 1 3)) + } + } +} +@end lilypond @item -The LilyPond G clef has been rotated 1.5 degrees clockwise for improved -balance. The old and new versions can be compared by looking at the -documentation: -@uref{http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs, -old version}, -@uref{http://lilypond.org/doc/v2.13/Documentation/notation/the-feta-font.html#Clef-glyphs, -new version}. +Two new properties have been added for use in +@code{fret-diagram-details} when using the @code{\fret-diagram-verbose} +markup command; @code{fret-label-horizontal-offset} which affects the +@code{fret-label-indication} and @code{paren-padding} which controls the +space between the dot and the parentheses surrounding it. - -@item -Text crescendo spanners can now be added directly using @code{\cresc}, -@code{\dim} and @code{\decresc}. -@lilypond[quote,relative=2] -c4\cresc c c c\f | -c4\dim c c c\! +@lilypond[verbatim,quote,relative=1] +\new Voice { + c1^\markup { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1) + (place-fret 4 5 2) + (place-fret 3 5 3) + (place-fret 1 6 4 parenthesized) + (place-fret 2 3 1) + (barre 5 2 3)) + } + c1^\markup { + \override #'(fret-diagram-details . ( + (fret-label-horizontal-offset . 2) + (paren-padding . 0.25))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1) + (place-fret 4 5 2) + (place-fret 3 5 3) + (place-fret 1 6 4 parenthesized) + (place-fret 2 3 1) + (barre 5 2 3)) + } + } +} @end lilypond - @item -The documented syntax of @samp{lilypond} environments in the @LaTeX{} -mode of @command{lilypond-book} has been changed to conform with -standard @LaTeX{} syntax: options now come after the environment name: -@example -\begin@{lilypond@}[@var{options}] @dots{} -@end example - -The previous syntax with options after @samp{\begin} is still accepted -by @command{lilypond-book} but deprecated. Something like -@example -sed -i '/begin\[/s/begin\(\[[^]]*]\)\(@{lilypond@}\)/begin\2\1/' -@end example - -might do the trick for conversion. +A new markup command @code{\justify-line} has been added. Similar to +the @code{\fill-line} markup command except that instead of setting +@emph{words} in columns, the @code{\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. -@item -Aesthetics of shape note heads have been enhanced. Variable line thicknesses -have been implemented. All note widths have been made consistent. -Minor shape note commands that use the relative major key for scale steps -have been added. +@lilypond[quote,verbatim,papersize=a6] +\markup \fill-line {oooooo oooooo oooooo oooooo} +\markup \fill-line {ooooooooo oooooooo oo ooo} +@end lilypond -@item -A variant of the Segno sign is provided: -@lilypond[quote,relative=2] -c4 d e f \bar "S" -g4 f e d +@lilypond[quote,verbatim,papersize=a6] +\markup \justify-line {oooooo oooooo oooooo oooooo} +\markup \justify-line {ooooooooo oooooooo oo ooo} @end lilypond @item -Context modifications (@code{\with} blocks) can be stored in variables and -inserted into contexts or other @code{\with} blocks: -@lilypond[quote,verbatim] -coloredheads = \with { \override NoteHead #'color = #red } -noclef = \with { \remove "Clef_engraver" } -\score { - \new Staff { - \new Voice \with { \coloredheads } \relative c' { c4 e g c } +A new command @code{\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. + +@lilypond[verbatim,quote] +\new Staff << + \new Voice \relative { + \voiceOne + 4 8. 16 8 4 r8 } - \layout { - \context { - \Staff - \noclef + \new Voice \relative { + \voiceTwo + \magnifyMusic 0.63 { + \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63) + r32 c'' a c a c a c r c a c a c a c + r c a c a c a c a c a c a c a c } } -} -@end lilypond - -@item -A half-open articulation was added: -@lilypond[quote,relative=2] -c4\halfopen +>> @end lilypond -This is sometimes used to indicate half-open hi-hats. @item -The Unicode Bidirectional Algorithm is now fully supported for -single-line markup due to enhanced integration with Pango. +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 @q{built-in}, which means it does not +need to be copied and edited: instead it is simply @code{\include}'d +in the input file. For details, see @rlearning{Built-in templates}. @item -LilyPond is now licensed under the GNU GPL v3+. +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 the bracket is not drawn. -@item -In tablature, frets can be indicated with labels other than numbers: +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. -@lilypond[verbatim,quote,relative=1] -\new TabStaff -\with { - stringTunings = #`(,(ly:make-pitch 1 3 NATURAL) - ,(ly:make-pitch 1 1 NATURAL) - ,(ly:make-pitch 0 5 NATURAL) - ,(ly:make-pitch 0 3 NATURAL) - ,(ly:make-pitch 0 1 NATURAL) - ,(ly:make-pitch -1 5 NATURAL)) - tablatureFormat = #fret-letter-tablature-format -} -\new TabVoice { - \set fretLabels = #`(,(markup #:with-color red "a") - "b" - ,(markup #:italic #:smaller "c")) - 4. 8 4 +@lilypond[verbatim,fragment,quote,relative=1] +\time 3/4 +\override Beam.auto-knee-gap = 3 +\tuplet 3/2 4 { + g8 c'' e, + c'8 g,, e'' + g,,8 e''' c,, } @end lilypond -@item -Layout objects can be printed over a white background, which whites-out objects -in lower layers which lie beneath: +@noindent +The original kneed-beam tuplet behavior is still available through an +@code{\override} via a new, @code{knee-to-beam} property. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,fragment,quote,relative=1] \time 3/4 -\override Staff.StaffSymbol #'layer = #4 -\once \override Tie #'layer = #2 -b'2.~ -\once \override Staff.TimeSignature #'whiteout = ##t -\once \override Staff.TimeSignature #'layer = #3 -\time 5/4 -b4 +\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,, +} @end lilypond @item -Chords can be repeated using the @code{q} shortcut: - -@lilypond[verbatim,quote,relative=2] -8.-^ q16 q4-^ -@end lilypond +@code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}. Both +now accept the same kind of delimited argument list that @code{\lyrics} +and @code{\chords} accept. Backward compatibility has been added so +music identifiers (i.e. @code{\mus}) are permitted as arguments. A +@code{convert-ly} rule has been added that removes redundant uses of +@code{\lyricmode} and rearranges combinations with context starters such +that @code{\lyricsto} in general is applied last (i.e. like +@code{\lyricmode} would be). @item -With two-sided mode, margins for odd and even pages can be set using -@code{inner-margin} and @code{outer-margin}: - -@example -\paper @{ - two-sided = ##t - inner-margin = 10 \mm - outer-margin = 20 \mm -@} -@end example +Scheme functions and identifiers can now be used as output definitions. @item -Paper margin defaults, as specified in @file{ly/paper@/-defaults-init.ly}, apply -to the default paper size (a4) and are automatically scaled according to the -paper size chosen. +Scheme expressions can now be used as chord constituents. @item -All combinations of @code{left-margin}, @code{right-margin} and -@code{line-width} work now. There is no more need to set @code{line-width} -manually unless you explicitly want to. +Improved visual spacing of small and regular @q{MI} Funk and Walker +noteheads so they are now the same width as other shaped notes in +their respective sets. @code{SOL} noteheads are also now visually +improved when used with both the normal Aiken and Sacred Harp heads, as +well as with the thin variants. @item -Support for using an alternative music font, such as Gonville, is now -added. +@code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical). See +@rinternals{LeftEdge}. @item -In addition to the existing @code{\hspace} markup command, -a new @code{\vspace} command has been added to provide an easy -and flexible way to add vertical space in markups. +Added a new @code{make-path-stencil} function that supports all +@code{path} commands both relative and absolute: -@item -The direction of manual beams can be set with @code{^[} and @code{_[}. +@code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto}, +@code{moveto}, @code{rmoveto}, @code{closepath}. The function also +supports @q{single-letter} syntax used in standard SVG path commands: + +@code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and +@code{z}. The new command is also backward-compatible with the original +@code{make-connected-path-stencil} function. Also see +@file{scm/stencil.scm}. @item -A version of the breve note head has been added with two vertical lines on each side. -@lilypond[quote,relative=2] -\time 4/2 -\override Staff.NoteHead #'style = #'altdefault -c\breve | b\breve +Context properties named in the @samp{alternativeRestores} property are +restored to their value at the start of the @emph{first} alternative in +all subsequent alternatives. + +Currently the default set restores @q{current meter}; + +@lilypond[verbatim,fragment,quote,relative=2] +\time 3/4 +\repeat volta 2 { c2 e4 | } +\alternative { + { \time 4/4 f2 d | } + { f2 d4 | } +} +g2. | @end lilypond -@item -Instrument names and vocal names now take into account the extent of -system start delimiters in other staves for their positioning, -resulting in improved default alignment for left-, center- and -right-aligned names. -@lilypond[quote,indent=18\mm] +@noindent +@q{measure position}; + +@lilypond[verbatim,fragment,quote,relative=2] +\time 3/4 +\repeat volta 2 { c2 e4 | } +\alternative { + { \time 4/4 + \set Timing.measurePosition = #(ly:make-moment -1/2) + f2 | } + { f2 d4 | } +} +g2. | +@end lilypond + +@noindent +and @q{chord changes}; + +@lilypond[verbatim,fragment,quote] << - \new StaffGroup << - \new GrandStaff << - \new Staff { - \set Staff.instrumentName = #"Piccolo" - c''1 - } - \new Staff { - \set Staff.instrumentName = #"Flute" - c''1 - } - >> - \new Staff { - \set Staff.instrumentName = #"Bassoon" - \clef tenor - c'1 - } - >> - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" - \context Staff = "up" { - c'1 - } - \context Staff = "down" { - \clef bass - c1 + \new ChordNames { + \set chordChanges = ##t + \chordmode { c1:m d:m c:m d:m } + } + \new Staff { + \repeat volta 2 { \chordmode { c1:m } } + \alternative { + { \chordmode { d:m } } + { \chordmode { c:m } } } - >> + \chordmode { d:m } +} >> @end lilypond @item -Braces in markup can now be selected by point size using the markup commands -@code{\left-brace} and @code{\right-brace}. -@lilypond[quote] -\markup { - \left-brace #35 - \hspace #2 - \right-brace #45 -} -@end lilypond +Improved MIDI output for breathe marks. After tied notes, breaths take +time @emph{only} from the last note of the tie; e.g. +@code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead +of @code{@{ 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. @item -Intermediate .ps files which are created by LilyPond -during compilation are now deleted by default. To keep them, -add the following line to your input files: -@example -#(ly:set-option 'delete-intermediate-files #f) -@end example +A new note head style for Tabulature has been added; +@code{TabNoteHead.style = #'slash}. @item -Dashed and dotted slurs, phrasing slurs, and ties -have been made variable thickness, and -partially dashed slurs are now available: -@lilypond[quote,relative=2] -\slurDashed -c4( d e f) | -\slurDotted -g4( f e d) | -\slurHalfDashed -c4( d e f) +Four new Clef glyphs have been added @emph{Double G}, @emph{Tenor G}, +@emph{Varpercussion} and @emph{varC} and their related tessitura. +@lilypond[verbatim,quote,fragment] + \override Staff.Clef.full-size-change = ##t + + \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 + + \break + \override Staff.Clef.full-size-change = ##f + + \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 + \clef "varpercussion" c c c c @end lilypond @item -An eyeglasses markup was added, indicating strongly to look at the -conductor for instructions: -@lilypond[quote,relative=2] -\mark \markup { \eyeglasses } -c4_\markup { \eyeglasses } +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: + +@lilypond[verbatim,quote] +\new DrumStaff \with { \override StaffSymbol.line-count = 1 } +\drummode { + \time 3/4 + tambourine 8 \tuplet 3/2 { 16 16 16 } + 8 \tuplet 3/2 { 16 16 16 } 8 8 | +} @end lilypond -@item -A snap-pizzicato (also known as Bartok-pizzicato) articulation was added: -@lilypond[quote,relative=2] -c4\snappizzicato +@lilypond[verbatim,quote] +\new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | } @end lilypond @item -Tuplet number formatting functions are now available to print other fractions -and to add notes to the number or fraction: -@lilypond[quote,relative=2] -\once \override TupletNumber #'text = - #(tuplet-number::non-default-tuplet-denominator-text 7) -\times 2/3 { c4. c4. c4. c4. } - -\once \override TupletNumber #'text = - #(tuplet-number::non-default-tuplet-fraction-text 12 7) -\times 2/3 { c4. c4. c4. c4. } -\once \override TupletNumber #'text = - #(tuplet-number::append-note-wrapper - (tuplet-number::non-default-tuplet-fraction-text 12 7) "8") -\times 2/3 { c4. c4. c4. c4. } - -\once \override TupletNumber #'text = - #(tuplet-number::append-note-wrapper tuplet-number::calc-denominator-text "4") -\times 2/3 { c8 c8 c8 c8 c8 c8 } -\once \override TupletNumber #'text = - #(tuplet-number::append-note-wrapper tuplet-number::calc-fraction-text "4") -\times 2/3 { c8 c8 c8 c8 c8 c8 } - -\once \override TupletNumber #'text = - #(tuplet-number::fraction-with-notes "4." "8") -\times 2/3 { c4. c4. c4. c4. } -\once \override TupletNumber #'text = - #(tuplet-number::non-default-fraction-with-notes 12 "8" 4 "4") -\times 2/3 { c4. c4. c4. c4. } +Beaming exceptions can now be constructed using the +@code{\beamExceptions} scheme function. One can now write + +@lilypond[verbatim,quote,relative=1] +\time #'(2 1) 3/16 +\set Timing.beamExceptions = + \beamExceptions { 32[ 32] 32[ 32] 32[ 32] } +c16 c c | +\repeat unfold 6 { c32 } | @end lilypond -@item -FretBoards now have a chordChanges property to keep repeated FretBoard objects -from being typeset. +@noindent +with multiple exceptions separated with @code{|} bar checks +(writing the exception pattern without pitches is convenient but +not mandatory). Previously, setting the beam exceptions would +have required writing + +@example +\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 + ))) +@end example @item -The vertical spacing engine has been drastically changed, making -it more flexible and easier to control. -The spacing between staves within a system can now change -to better use the space on the page. -User-defined contexts may participate in this flexible spacing, -depending on how their @code{staff-affinity} is defined. -Some page formatting variables (@code{page-top-space}, -@code{between-system-space -padding}, and -@code{before- between- after-title-space}) have been replaced -by flexible vertical dimensions. +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. -@end itemize +This behavior is customizable through the @code{midiLength} and +@code{midiExtraVelocity} properties on @code{ArticulationEvent}. +See @file{script-init.ly} for examples. + +@item +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 @samp{-dstrokeadjust} to LilyPond. When generating +@code{PDF} files, this will usually result in markedly better +looking @code{PDF} previews but significantly larger file size. +Print quality at high resolutions will be unaffected. +@end itemize @ifhtml For older news, go to -@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html}, -@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html}, +@uref{http://lilypond.org/doc/v2.18/Documentation/changes/}, +@uref{http://lilypond.org/doc/v2.16/Documentation/changes/}, or @uref{../,go back} to the Documentation index.