X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=blobdiff_plain;f=NEWS.txt;h=a0cefcd144f8ca4e2c64e3f92b3e43aa99bed69d;hb=refs%2Fheads%2Fdon%2Ffix_configure_ac;hp=6880edb9f864353bdc273477c8b4829faf05bf1a;hpb=e48715dc917b0e1c8382dc47e2b5e193d3184000;p=lilypond.git diff --git a/NEWS.txt b/NEWS.txt index 6880edb9f8..a0cefcd144 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,286 +1,358 @@ -New features in 2.16 since 2.14 +New features in 2.18 since 2.16 ******************************* - * Support for cross-staff stems on chords, using `crossStaff' and - the `Span_stem_engraver'. This calculates the length of - cross-staff stems automatically. - - [image of music] + * 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. + + * There is now a new context type called `NullVoice' which, while not + appearing in the printed output, can be used to align lyrics. + This can be particularly convenient when used in parallel with a + `\partcombine' construct. + + soprano = \relative c' { c e g c } + alto = \relative c' { a c e g } + verse = \lyricmode { This is my song } + + \score { + \new Staff << + \partcombine \soprano \alto + \new NullVoice = "aligner" \soprano + \new Lyrics \lyricsto "aligner" \verse + >> + \layout {} + } + [image of music] - * The syntax of words (character sequences recognized without - enclosing quotes) and commands (now always a backslash `\' - followed by a word) has been unified across all modes: it now - consists of alphabetic characters, possibly enclosing isolated - dashes `-' and underlines `_'. + * Several articulations can be put into a single variable or + returned from an event function: - As one consequence, using unquoted text scripts like (literally!) - { c-script c\f_script } - will now tend to result in invalid music. Omitting quote marks - for arbitrary text rather than keywords has never been good - practice or even documented, and it is unlikely to have seen - significant use. + sempreStacc = -. ^\markup \italic sempre + \relative { c''4\sempreStacc c c c } + [image of music] - Staying with established conventions (like not using dashes or - underlines for command names intended to be used inside of music) - remains advisable. The reason for this change is more robust - recognition of LilyPond's lexical units for LilyPond itself as - well as external tools interpreting its syntax. - * Support for Kievan square notation: + * The baseline of score markups is now taken from the reference + point (usually the middle of the staff) of the first bottom system + rather than the top of the bounding rectangle. The following - \new KievanVoice { - \cadenzaOn - c d e f g a bes - \bar "kievan" + \markup { + violin: \score { \new Staff { 1 } + \layout { indent=0 } } , + cello: \score { \new Staff { \clef "bass" } + \layout { indent=0 } } } [image of music] - * Augmentation dots now avoid the other voice in two-voice polyphony - so that users can move the `Dot_column_engraver' to set dots - independently for each `Voice'. + previously looked like [image of music] - * A Scheme function to adjust the control points of curves such as - slurs and ties, developed by several users, is now included in - LilyPond. - - g8->( bes,-.) d4 - \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0)) - g8->( bes,!-.) d4 + without a reliable way to get both scores to line up. + + * LilyPond no longer automatically infers a `\defaultchild' context + in a context definition with `\accepts' clauses. Any context + definition without an explicit or inherited `\defaultchild' + definition counts as a `Bottom' context and will be eligible for + rhythmic events and overrides without causing the implicit + creation of other contexts. Be sure to specify a `\defaultchild' + for non-`Bottom' contexts when defining them from scratch. + + * There is now extensive support for both discant and bass accordion + register symbols in the `scm accreg' module, see *note Accordion + Registers: (lilypond-notation)Accordion Registers. + + #(use-modules (scm accreg)) + \new PianoStaff + << + \new Staff \relative + { \clef "treble" \discant "10" + r8 s32 f'[ bes f] s e[ a e] s d[ g d] s16 e32[ a] + \discant "121" + << { r16 r r } \\ + { d r a r bes r } >> | + 1 + } + \new Staff \relative + { \clef "treble" \freeBass "1" + r8 d'32 s16. c32 s16. bes32 s16. a32[ cis] s16 + \clef "bass" \stdBass "Master" + << { r16 ^"b" r ^"am" r ^"gm" | + 1^"a" } \\ + { d8_"D" c_"C" bes_"B" | a1_"A" } + >> + } + >> [image of music] - * Use of `\tempo' specifications in `\midi' blocks (removed in - 2.9.16 in favor of explicit `tempoWholesPerMinute' settings) has - seen a revival: now any kind of property-setting music is turned - into context definitions within output specifications, allowing for - declarations like - \layout { \accidentalStyle modern } - \midi { \tempo 4. = 66 } - - * The LilyPond G clef has been redesigned - upper loop is now more - balanced, bottom crook sticks out less and the "spine" (main - vertical line) is more evenly curved. The old and new versions can - be compared by looking at the documentation: old version - (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs), - new version - (http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs). - - * Lilypond's stencil commands have been simplified to allow for less - code duplication and better height approximations of graphical - objects. The following stencil commands have been eliminated: - * `beam' - - * `bezier-sandwich' - - * `bracket' - - * `dashed-slur' - - * `dot' - - * `oval' - - * `repeat-slash' - - * `zigzag-line' - - * Flags are now treated as separate objects rather than as stem - parts. + * New commands `markLengthOn' and `markLengthOff' control the + allowance of horizontal space for tempo and rehearsal marks. [image of music] - * Two alternative methods for bar numbering can be set, especially - for when using repeated music; + * Rehearsal marks at the beginning of a line are now placed to the + right of the clef and key signature by default. As in previous + versions, the `break-alignable-interface' controls the behavior. [image of music] - * The following is a fundamental change in LilyPond's music - representation: Rhythmic events like `LyricEvent' and `NoteEvent' - are no longer wrapped in `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. Calling the music function - `\eventChords' or the Scheme function `event-chord-wrap!' - converts to the old representation; using one of those might be - easiest for keeping legacy code operative. - - The following three items are consequences of this change. - - * The repetitive chord entry aid `q' has been reimplemented. - Repeated chords are now replaced right before interpreting a music - expression. In case the user wants to retain some events of the - original chord, he can run the repeat chord replacement function - `\chordRepeats' manually. - - * String numbers and right hand fingerings on single notes now appear - without having to be written inside of chord brackets. - - * Music functions now work the same when used inside or outside of - chords, including all the possibilities of argument parsing. - Music variables can be used inside of chords: a construct like - - tonic=fis' - { <\tonic \transpose c g \tonic> } + * Decimal numbers can now be written directly in music, without a + hash sign. Together with the previous change in the way object + properties are specified, the code to change the length of stems + has changed from this: + \override Stem #'length = #5.6 + e' f' g' a' + to this: + \override Stem.length = 5.6 + e' f' g' a' + + One has to write a digit on both sides of the dot - values like + `4.' or `-.3' are not allowed. + + Decimal fractions are also not accepted in `\chordmode'. + + * A number of shorthands like `(', `)', `|', `[', `]', `~', `\(', + `\)' and others can now freely be redefined like normal commands. + An example would be + + "\\{" = ( + "\\}" = ) + "(" = \melisma + ")" = \melismaEnd + + \new Staff << + \relative c' { + c8 \{ d e f \} % slurred + g ( a b c ) % no slur, but with melisma + c,1 \bar "|." + } + \addlyrics { Li -- ly -- pond. } + >> [image of music] - now works as expected. One can use `#{...#}' for constructing - chord constituents. `\tweak' now works on single notes without - needing to wrap them in a chord. Using it on command events and - lyrics is now possible, but not likely to give results yet. - - * `\tweak' now takes an optional layout object specification. It can - be used for tweaking layout objects that are only indirectly - caused by the tweaked event, like accidentals, stems, and flags: - - <\tweak Accidental #'color #red cis4 - \tweak Accidental #'color #green es - g> - [image of music] - + * The articulation shorthand for `\staccatissimo' has been renamed + from `-|' to `-!'. - * Scheme expressions inside of embedded Lilypond (`#{...#}') are now - executed in lexical closure of the surrounding Scheme code. `$' - is no longer special in embedded Lilypond. It can be used - unconditionally in Lilypond code for immediate evaluation of Scheme - expressions, similar to how `ly:export' could previously be used. - `ly:export' has been removed. As a consequence, `#' is now free - to delay evaluation of its argument until the parser actually - reduces the containing expression, greatly reducing the potential - for premature evaluation. There are also `splicing' operators `$@' - and `#@' for interpreting the members of a list individually. + * Tempo change ranges are now written as `\tempo 4 = 60 - 68' rather + than `\tempo 4 = 60 ~ 68'. - * To reduce the necessity for using `$', Scheme expressions written - with `#' are interpreted as music inside of music lists, and as - markups or markup lists inside of markups. + * Grob `OctavateEight' was renamed to `ClefModifier'. Related + context properties were renamed from `xxxOctavationyyy' to + `xxxTranspositionyyy'. - * 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. *note Customizing chord names: - (lilypond-notation)Customizing chord names. for more information. + * There is a new `\absolute' command explicitly marking music as + being entered in absolute pitch. While this has been the default + previously, an explicit `\absolute' also prevents reinterpretation + when the passage is placed inside of `\relative': - * The `\markuplines' command has been renamed to `\markuplist' for a - better match with its semantics and general Lilypond nomenclature. + \relative c { c'4 \absolute { f'' g'' } c } + [image of music] - * The interface for specifying string tunings in tablature has been - simplified considerably and employs the scheme function - `\stringTuning' for most purposes. - * Beams can now have their slopes preserved over line breaks. + * When `\relative' is used without an explicit reference pitch, the + reference pitch now is the middle of the first octave, making the + first entered pitch indistinguishable from absolute pitch. + Previously, omitting the reference pitch would have lead to a + default of `c''. Since that choice was somewhat arbitrary, + recommended usage was to always specify the reference pitch. - [image of music] + * A new command `\single' can be used for converting a property + override into a tweak to be applied on a single music expression: + 1 + [image of music] - To do this, several callback functions are now deprecated. - * `ly:beam::calc-least-squares-positions' - * `ly:beam::slope-damping' + * Two ways of letting graphical objects not appear in the output are + overriding its `transparent' property with `#t' (retaining the + original spacing) or overriding its `stencil' property with `#f' + (not using any space at all). Those two operations now have the + shorthands `\hide' and `\omit', respectively. They can either be + given a music expression to tweak, or the name of a graphical + object for which an override should be created (for specifying + both, use `\single' on the override form): - * `ly:beam::shift-region-to-valid' - Furthermore, `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 `positions' parameter. + \new Staff \with { \omit Clef } + \relative c'' 1 + [image of music] - * 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. In several cases, the predicate is - consulted by the parser, like when deciding whether to interpret - `-3' as a number or a fingering event. - * Music functions (and their close relatives) can now be defined with - optional arguments. + * A new command `\temporary' can be applied to overrides in order to + not have them replace previous property settings. If a `\revert' + is applied to the same property subsequently, the previous setting + reappears: - * For defining commands executed only for their side-effects, - `define-void-function' is now available. + \override NoteHead.color = #red c4 + \override NoteHead.color = #green d + \revert NoteHead.color e2 + \override NoteHead.color = #red c4 + \temporary\override NoteHead.color = #green d + \revert NoteHead.color e + \revert NoteHead.color c + [image of music] - * There is a new `define-event-function' command in analogy to - `define-music-function' that can be used for defining music - functions acting as post events without requiring a direction - specifier (`-', `^', or `_') placed before them. - dyn=#(define-event-function (parser location arg) (markup?) - (make-dynamic-script arg)) - \relative c' { c\dyn pfsss } + This is mainly useful for writing music functions that need to + have some property changed just for the duration of the function. + + * `\tag', `\removeWithTag', and `\keepWithTag' can now accept a list + of symbols rather than just a single symbol for marking, removing, + and keeping music with any of multiple tags. This is particularly + important for `\keepWithTag' since one cannot achieve the same + effect by using multiple consecutive `\keepWithTag' commands. + + * The `-d old-relative' option has been removed. Not actually + accessible from the command line any more, its remaining use was + for interpretating `\relative' in LilyPond files converted + automatically from version 1.8 or older. It is unclear how much + of this was actually still operative. + + * The meaning of `instrumentTransposition' has been reversed. After + \set instrumentTransposition = #{ b #} + a written `c'' now sounds like `b'. Previously, this would have + been the other way round. This and the following change should + make dealing with transposing instruments more straightforward. + + * The music generated by `\set' and `\override' commands is no + longer affected by `\transpose'. The main consequence is that + `\transpose' will transpose audible/concert pitch and printed + pitch by the same amount even when the transposed music contains + `\transposition'. Previously, + \transpose c' f' \transposition bes' + was equivalent to `\transposition f''. Now it stays equivalent to + `\transposition bes''. + + * When checking for collisions, LilyPond no longer treats objects as + rectangles. Instead, the actual shape of objects is approximated + using an integral-like approach. This generally results in more + even and snug positioning of objects and systems: + + [image of music] + + Previously, the above snippet looked like this: + + [image of music] + + Affected objects include `Accidentals', `Beams', `Clefs', + `Dynamics', `FiguredBass', `Flags', `Glissandos', `Lyrics', + `MetronomeMarks', `OttavaBrackets', `Pedals', `RehearsalMarks', + `Rests', `Scripts', `TextScripts', `Ties', `Tuplets' and + `VoltaBrackets'. + + * Tuplets are now created with the `\tuplet' command, which takes a + fraction `T/N' to specify that T notes are played in the time + usually allowed for N. One `\tuplet' command can create several + tuplet groups if their duration is typed after the fraction. + + \tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2 + \tuplet 3/2 4 { c8 d e f e d } c2 [image of music] - * A list of ASCII aliases for special characters can be included. - - \paper { - #(include-special-characters) + The `\times' command with its inverted fraction order `N/T' is + still available. + + * Introducing two new markup-commands; `\draw-dashed-line' and + `\draw-dotted-line'. + + The dashed-line extends to the whole length given by DEST, if + `full-length' is set to `#t' (this is the default) without any + space at the beginning or end. `off' will then be altered to fit. + To insist on the given (or default) values of `on', `off' use + `\override #'(full-length . #f)'. Manual settings for `on', `off' + and `phase' are possible. + + The dotted-line always extends to the whole length given by DEST, + without any space at the beginning or end. Manual settings for + `off' are possible to get larger or smaller space between the dots. + The given (or default) value of `off' will be altered to fit the + line-length. + + \markup { + \draw-dashed-line #'(5.1 . 2.3) + \override #'(on . 0.3) + \override #'(off . 0.5) + \draw-dashed-line #'(5.1 . 2.3) + \draw-dotted-line #'(5.1 . 2.3) + \override #'(thickness . 2) + \override #'(off . 0.2) + \draw-dotted-line #'(5.1 . 2.3) } - \markup "• † ©right; &OE; &ss; ¶" [image of music] - * There is a new `define-scheme-function' command in analogy to - `define-music-function' that can be used to define functions - evaluating to Scheme expressions while accepting arguments in - Lilypond syntax. - - * The construct `#{ ... #}' can now be used not just for - constructing sequential music lists, but also for pitches - (distinguished from single note events by the absence of a - duration or other information that can't be part of a pitch), - single music events, void music expressions, post events, markups - (mostly freeing users from having to use the `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. + * Starting with version 2.17.10, error messages or the `textedit' + URI used for point-and-click functionality specify column numbers + starting with 1 rather than 0. The byte offset (also part of + `textedit' URIs) still starts at 0. - * Pitches can be used on the right side of assignments. They are - distinguished from single note events by the absence of a duration - or other information that can't be part of a pitch. + * The `\clef' command supports optional transposition: - * New command-line option `--loglevel=LEVEL' to control how much - output LilyPond creates. Possible values are ERROR, WARN, - BASIC_PROGRESS, PROGRESS, DEBUG. - - * `\once \set' now correctly resets the property value to the - previous value. - - [image of music] - - - * The alignment of dynamic spanners (hairpins, text crescendo, etc.) - is now automatically broken if a different direction is explicitly - given. - - [image of music] - - - * Appoggiaturas and acciaccaturas now also work inside a slur, not - only inside a phrasing slur. Also, a function `\slashedGrace' was - added that does not use a slur from the acciaccatura note. - - [image of music] + \clef "treble_(8)" + c2 c + \clef "bass^[15]" + c2 c + [image of music] - * To suppress the line on a crescendo text spanner (and other - similar spanners), LilyPond now fully supports the `#'style = - #'none' property. + * The LilyPond syntax of dot-separated words `Voice.Accidental' has + been made interchangeable with `#'(Voice Accidental)', a Scheme + list of symbols. As one result, code like + \override Voice.TextSpanner #'(bound-details left text) = "rit." + is now equivalent to + \override Voice.TextSpanner bound-details.left.text = "rit." + or even + \override #'(Voice TextSpanner) bound-details.left.text = "rit." + + * Grob and grob property path no longer need to be specified as two + separate arguments to commands like `\override' and `\revert', + allowing for the syntax + \override Voice.TextSpanner.bound-details.left.text = "rit." + Since complementary music functions like `\overrideProperty' + cannot support forms with and without separating space at the same + time, using a single dotted path is now the preferred form. + Specifying grob path and grob property path separately, currently + still supported with `\override' and `\revert' for compatibility + reasons, is deprecated. + + * Due to words now being accepted as symbol function arguments, the + interfaces of `\accidentalStyle', `\alterBroken', `\footnote' and + `\tweak' had to be redesigned where optional symbol arguments were + involved. Please check the respective music function + documentation for details. + + * Several commands now accept symbol lists (conveniently entered as + dot-separated words) for various kinds of arguments. These + include `\accidentalStyle', `\alterBroken', `\footnote', `\hide', + `\omit', `\overrideProperty', `\shape', and `\tweak'. + + * The bar line user interface has changed. Bar glyphs now resemble + the appearance of the bar line, so a left repeat sign has to be + coded as `.|:'. The command `\defineBarLine' provides an easy way + to define additional bar line styles. + + * Accidentals in the key signature may be printed in octaves other + than their traditional positions, or in multiple octaves. [image of music] - * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz! - - * Glissandi can now span multiple lines. -