X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=8281811608c63ac3b6cf840898e44f43e5c0b298;hb=252ec5e71b5e121734a9c9897245137cb07e4a1f;hp=eaa4f1b7d1bb4e79a06ed18782f4a2189cc64722;hpb=fe4f33aca60ea7c58bc9196eac43b4acca1d4437;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index eaa4f1b7d1..8281811608 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.16 since 2.14 @allowcodebreaks false -@itemize @bullet +@itemize @ignore @@ -62,562 +62,212 @@ which scares away people. @end ignore @item -Lilypond typesets 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 - -@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. - -@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. - -@item -Dots can be added to the table of contents items using: -@example -\paper @{ - tocItemMarkup = \tocItemWithDotsMarkup -@} -@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 - -@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 - -@item -Black mensural notation has minimal support. - -@item -Support for obliqua shapes within white mensural ligatures enhanced. -@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 - -@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 -} +Flags are now treated as separate objects rather than as stem parts. +@lilypond[fragment,quote,relative=2] +\override Flag #'color = #red +g8 @end lilypond @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}. +Two alternative methods for bar numbering can be set, especially for +when using repeated music; -@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. - -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 } | +@lilypond[fragment,quote,relative=1,noragged-right] +\relative c'{ + \set Score.alternativeNumberingStyle = #'numbers + \repeat volta 3 { c4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } + c1 \break + \set Score.alternativeNumberingStyle = #'numbers-with-letters + \repeat volta 3 { c,4 d e f | } + \alternative { + { c4 d e f | c2 d \break } + { f4 g a b | f4 g a b | f2 a | \break } + { c4 d e f | c2 d } + } c1 } - -\score { - << - \new Staff \new Voice \Solo - >> -} @end lilypond - -@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. - -@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. - @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. - -@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 } +The following is a fundamental change in LilyPond's music +representation: Rhythmic events like @code{LyricEvent} and +@code{NoteEvent} are no longer wrapped in @code{EventChord} unless they +have been actually entered as part of a chord in the input. If you +manipulate music expressions in Scheme, the new behavior may require +changes in your code. The advantages of making input and music match +more closely are numerous: music functions previously worked differently +when used inside or outside of chords. Now they are the same, including +all the possibilities of argument parsing. You can now use music +variables inside of chords: a construct like +@lilypond[quote,ragged-right] +tonic=fis' +{ <\tonic \transpose c g \tonic> } @end lilypond - -@item -Tablature staves show fret numbers only by default. To get the -former style, @code{\tabFullNotation} is provided. - -@item -Funk-style and Walker-style shape notes have been added. - -@item -Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext} -is used. - -@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. - -@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. - -@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}. - - -@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\! +@noindent +would have been unthinkable previously. You can use +@code{#@{@dots{}#@}} for constructing chord constituents. Music +functions inside of chords are no longer specially treated and thus +accept the same arguments as outside of chords. @code{\tweak} now works +on single notes without needing to wrap them in a chord. String number +indications like @code{\1} can be used on single notes. If you need to +suppress them in some context, override their @code{stencil} with +@code{##f}. + +@item +Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}}) +are now executed in lexical closure of the surrounding Scheme code. +@code{$} is no longer special in embedded Lilypond. It can be used +unconditionally in Lilypond code for immediate evaluation, similar to +how @code{ly:export} could previously be used. @code{ly:export} has +been removed. As a consequence, @code{#} is now free to delay +evaluation of its argument until the parser actually reduces the +containing expression, greatly reducing the potential for premature +evaluation. + +@item +Support for jazz-like chords has been improved: Lydian and altered +chords are recognised; separators between chord modifiers are now +treated independently of separators between ``slash'' chords and their +bass notes (and by default, slashes are now only used for the latter +type of separator); additional pitches are no longer prefixed with +``add'' by default; and the ``m'' in minor chords can be customized. +@ruser{Customizing chord names} for more information. + +@item +The @code{\markuplines} command has been renamed to @code{\markuplist} +for a better match with its semantics and general Lilypond +nomenclature. + +@item +The interface for specifying string tunings in tablature has been +simplified considerably. + +@item +Beams can now have their slopes preserved over line breaks. +@lilypond[fragment,quote,relative=2] +\override Beam #'breakable = ##t +a8[ b c d e f g \bar "" \break f e d c b a] +\once \override Beam #'positions = #beam::align-with-broken-parts +a8[ b c d e f g \bar "" \break f e d c b a] +\once \override Beam #'positions = #beam::slope-like-broken-parts +a8[ b c d e f g \bar "" \break f e d c b a] @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. +To do this, several callback functions are now deprecated. +@itemize +@item @code{ly:beam::calc-least-squares-positions} +@item @code{ly:beam::slope-damping} +@item @code{ly:beam::shift-region-to-valid} +@end itemize +Furthermore, @code{ly:beam::quanting} now takes an additional argument +to help calculations over line breaks. All of these functions are now +automatically called when setting the @code{positions} parameter. @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. +In function arguments music, markups and Scheme expressions (as well +as several other syntactic entities) have become mostly +interchangeable and are told apart only by evaluating the respective +predicate. @item -A variant of the Segno sign is provided: -@lilypond[quote,relative=2] -c4 d e f \bar "S" -g4 f e d -@end lilypond +Music functions (and their close relatives) can now be defined with +optional arguments. @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 } - } - \layout { - \context { - \Staff - \noclef - } - } -} -@end lilypond +For defining commands executed only for their side-effects, +@code{define-void-function} is now available. @item -A half-open articulation was added: -@lilypond[quote,relative=2] -c4\halfopen +There is a new @code{define-event-function} command in analogy to +@code{define-music-function} that can be used for defining music +functions acting as events without requiring a direction specifier +(@code{-}, @code{^}, or @code{_}) placed before them. +@lilypond[quote,verbatim,ragged-right] +dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) +\relative c' { c\dyn pfsss } @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. - -@item -LilyPond is now licensed under the GNU GPL v3+. - -@item -In tablature, frets can be indicated with labels other than numbers: - -@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 +A list of ASCII aliases for special characters can be included. +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) } +\markup "• † ©right; &OE; &ss; ¶" @end lilypond @item -Layout objects can be printed over a white background, which whites-out objects -in lower layers which lie beneath: - -@lilypond[verbatim,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 -@end lilypond - -@item -Chords can be repeated using the @code{q} shortcut: - -@lilypond[verbatim,quote,relative=2] -8.-^ q16 q4-^ -@end lilypond - -@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 - -@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. - -@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. - -@item -Support for using an alternative music font, such as Gonville, is now -added. - -@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. +There is a new @code{define-scheme-function} command in analogy to +@code{define-music-function} that can be used to define functions +evaluating to Scheme expressions while accepting arguments in Lilypond +syntax. @item -The direction of manual beams can be set with @code{^[} and @code{_[}. +The construct @code{#@{ @dots{} #@}} can now be used not just for +constructing sequential music lists, but also for single music events, +void music expressions, post events, markups (mostly freeing users from +having to use the @code{markup} macro), markup lists, number +expressions, context definitions and modifications, and a few other +things. If it encloses nothing or only a single music event, it no +longer returns a sequential music list but rather a void music +expression or just the music event itself, respectively. @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 -@end lilypond +New command-line option @option{--loglevel=@var{level}} to control how much output +LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG. @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] -<< - \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 - } - >> ->> +@code{\set \once} now correctly resets the property value to the previous value. +@lilypond[fragment,quote,relative=2] + \set fingeringOrientations = #'(left) + 4 + \once \set fingeringOrientations = #'(right) + + -"left" @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 -} +The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now +automatically broken if a different direction is explicitly given. +@lilypond[fragment,quote,relative=2] +c4_\< c c^\> c c1_\p @end lilypond -@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 @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) +Appoggiaturas and acciaccaturas now also work inside a slur, not only inside +a phrasing slur. Also, a function @code{\slashedGrace} was added that does +not use a slur from the acciaccatura note. +@lilypond[fragment,quote,relative=2] +c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4) @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 } -@end lilypond - -@item -A snap-pizzicato (also known as Bartok-pizzicato) articulation was added: -@lilypond[quote,relative=2] -c4\snappizzicato -@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. } +To suppress the line on a crescendo text spanner (and other similar spanners), +LilyPond now fully supports the @code{#'style = #'none} property. +@lilypond[fragment,quote,relative=2] +\override DynamicTextSpanner #'style = #'none +c4\cresc c c g, c'\p @end lilypond @item -FretBoards now have a chordChanges property to keep repeated FretBoard objects -from being typeset. +LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz! @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. +Glissandi can now span multiple lines. @end itemize - - @ifhtml For older news, go to +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/}, @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html}, -@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html}, or @uref{../,go back} to the Documentation index.