X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=NEWS.txt;h=a0cefcd144f8ca4e2c64e3f92b3e43aa99bed69d;hb=b49bfbe6bd4e1aaa5c28a7cccbed9c8d744aebbb;hp=1a11d9b769fbd20ee8bba600ad28b85d95df37c4;hpb=a8c9e8a7ca320ab0df5fd32e717fd62cd7635ce6;p=lilypond.git diff --git a/NEWS.txt b/NEWS.txt index 1a11d9b769..a0cefcd144 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,282 +1,354 @@ -New features in 2.12 since 2.10 +New features in 2.18 since 2.16 ******************************* - * Fret diagrams can now have variable string thickness: - - [image of music] - - - * A new fret diagram orientation, opposing-landscape, is available: - - [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] - * Unbeamed 128th notes are now supported: + * Several articulations can be put into a single variable or + returned from an event function: - [image of music] + sempreStacc = -. ^\markup \italic sempre + \relative { c''4\sempreStacc c c c } + [image of music] - * Extending LilyPond's existing support for microtones, there are - now arrowed accidentals for the notation of microtonal alterations. - To use them, redefine the `glyph-name-alist' property of - `Accidental' as in the following example which uses quartertones - to typeset arrowed accidentals. Alternatively, it is possible to - define separate names for all notes with arrowed accidentals (see - `ly/makam.ly' for boilerplate code). + * 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 - [image of music] + \markup { + violin: \score { \new Staff { 1 } + \layout { indent=0 } } , + cello: \score { \new Staff { \clef "bass" } + \layout { indent=0 } } + } + [image of music] - * Straight flags (used in old scores of e.g. Bach, but also in - different form in modern scores of e.g. Stockhausen) are now - implemented: + previously looked like [image of music] - * `\bookpart' blocks may be used to split a book into several parts, - separated by a page break, in order to ease the page breaking, or - to use different `\paper' settings in different parts. - - \bookpart { - \header { - title = "Book title" - subtitle = "First part" + 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 } - \score { ... } - ... - } - \bookpart { - \header { - subtitle = "Second part" + \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" } + >> } - \score { ... } - ... - } - - * Nested contexts of the same type are now allowed. This deprecates - `InnerStaffGroup' and `InnerChoirStaff'. - - [image of music] - - - * Percent repeat counters can be shown at regular intervals using the - context property `repeatCountVisibility'. - - [image of music] - - - * In addition to the already existing `showLastLength' property, - `showFirstLength' can now be set as well, rendering only the first - measures of a piece. Both properties may be set at the same time: - - [image of music] - - - * The file extension for MIDI can be set using the command-line - program default `midi-extension'. For Windows, the default - extension has been changed to `.mid'. - - * Two variations on the default double repeat bar line are now - available. - - [image of music] - - - * Four automatic accidentals rules have been added: `neo-modern', - `neo-modern-cautionary', `dodecaphonic' and `teaching'. The - following example illustrates `neo-modern' rule. - - [image of music] - - - * Flags can now be generated with Scheme-code using the `'flag' - `Stem' grob property. Existing scores will work without change. - - [image of music] - - - * Harp pedalling diagrams were added: - - [image of music] - - - * Predefined, user-configurable, transposable fret diagrams are now - available in the `FretBoards' context: - - [image of music] - + >> + [image of music] - * The following syntax changes were made, in chronological order. In - addition, fret diagram properties have been moved to - `fret-diagram-details', and the `#'style' property is used to - select solid/dashed lines instead of `#'dash-fraction'. - - 'break-align-symbol -> 'break-align-symbols - scripts.caesura -> scripts.caesura.curved - \setEasyHeads -> \easyHeadsOn - \easyHeadsOff (new command) - \fatText -> \textLengthOn - \emptyText -> \textLengthOff - \set hairpinToBarline -> \override Hairpin #'to-barline - \compressMusic -> \scaleDurations - \octave -> \octaveCheck - \arpeggioUp -> \arpeggioArrowUp - \arpeggioDown -> \arpeggioArrowDown - \arpeggioNeutral -> \arpeggioNormal - \setTextCresc -> \crescTextCresc - \setTextDecresc -> \dimTextDecresc - \setTextDecr -> \dimTextDecr - \setTextDim -> \dimTextDim - \setHairpinCresc -> \crescHairpin - \setHairpinDecresc -> \dimHairpin - \sustainUp -> \sustainOff - \sustainDown -> \sustainOn - \sostenutoDown -> \sostenutoOn - \sostenutoUp -> \sostenutoOff - 'infinite-spacing-height -> 'extra-spacing-height - #(set-octavation oct) -> \ottava #oct - \put-adjacent markup axis dir markup -> \put-adjacent axis dir markup markup - \pointAndClickOn (new command) - \pointAndClickOff (new command) - \center-align -> \center-column - \hcenter -> \center-align - printallheaders -> print-all-headers - \bigger -> \larger (already existing command) - systemSeparatorMarkup -> system-separator-markup - - Moreover, some files in the `ly/' directory have been renamed; the - *-init.ly filenames are now only used for files that are - automatically included, while such files as `makam-init.ly' or - `gregorian-init.ly' have been renamed to `makam.ly' or - `gregorian.ly'. - - * The "tex" and "texstr" backends have been removed. Font are now - accessed via the fontconfig library; the Pango library is used to - display text strings. - - * Metronome marks can now also contain a textual description. The - duration and count (if given) are shown in parentheses after the - text. - [image of music] - - - * In figured bass you can now also use a backslash through a number - to indicate a raised 6th step. - - [image of music] - - - * Arpeggios may now use "parenthesis" style brackets: - - [image of music] - - - * Single-system scores are now naturally spaced instead of being - stretched to fill the line width. This can be changed by setting - `ragged-right = ##f'. - - * Enclosing text within boxes with rounded corners is now possible, - using the `\rounded-box' markup command. - - * `lilypond-book' can run any program instead of `latex' to guess - the line width, thanks to `--latex-program' command line option. - - * Underlining is now possible with the `\underline' markup command. - - * It is now possible to specify, using the `page-count' variable in - the paper block, the number of pages that will be used. - - * A new page breaking function, `ly:minimal-breaking', is dedicated - to books with many pages or a lot of text. - - * A table of contents is included using `\markuplines - \table-of-contents'. Elements are added to it using the - `\tocItem' command. - - * Text spreading over several pages is entered using the - `\markuplines' keyword. Builtin markup list commands, such as - `\justified-lines' or `\wordwrap-lines' may be used, and new ones - created using the `define-markup-list-command' Scheme macro. - - * Particular points of a book may be marked with the `\label' - command. Then, the page where these points are placed can be - referred to using the `\page-ref' markup command. - - * Page breaking and page turning commands (`\pageBreak', - `\noPageBreak', etc.) can be used at top-level, between scores and - top-level markups. - - * The following options are now changed as a `-d' sub-option: - `--backend', `--safe', `--preview' and `--no-pages' (which became - `-dno-print-pages'). The `-b' option does not exist any more. - - * Improved testing procedures now catch changes in CPU and memory - performance, page layout, MIDI results and warnings. This helps to - reduce the number of regression errors during development, - resulting in more stable releases. - - See `INSTALL.html#Testing-LilyPond' for more information. - - * Nested properties, such as `'details' in `Slur', can be reverted - as well. The syntax for this is - - \revert Slur #'(details closeness-factor) - - * All line spanners are more flexible now in the configuration of - their end points. This includes glissando, voice followers, text - crescendos and other text spanners. The old syntax for setting - text on line spanners is no longer valid. - - [image of music] - - - This feature was sponsored by Trevor Bača. - - * The environment variable `LILYPONDPREFIX' has been renamed - `LILYPOND_DATADIR'. - - * Notes or rests, such as a typical end note, that fill an entire - measure are preceded by some more space. + * New commands `markLengthOn' and `markLengthOff' control the + allowance of horizontal space for tempo and rehearsal marks. [image of music] - * All `\score's in a lilypond-book fragment are now inserted into - the document. Also, toplevel markups don't result in an entire - page. - - * Alterations (such as a sharp or flat) may now be arbitrary - fractions. This allows some forms of microtonal music. For - example, Turkish makam music uses 1/9th tone alterations. + * 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] - * Tie directions may be set with `^~' and `_~'. - - * Tablature now supports harmonics and slides: + * 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. - [image of music] + 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] + + + * The articulation shorthand for `\staccatissimo' has been renamed + from `-|' to `-!'. + + * Tempo change ranges are now written as `\tempo 4 = 60 - 68' rather + than `\tempo 4 = 60 ~ 68'. + + * Grob `OctavateEight' was renamed to `ClefModifier'. Related + context properties were renamed from `xxxOctavationyyy' to + `xxxTranspositionyyy'. + + * 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': + + \relative c { c'4 \absolute { f'' g'' } c } + [image of music] + + + * 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. - - This feature was sponsored by Mike Amundsen - - * Horizontal spacing now follows object outlines more accurately. - This allows tighter horizontal spacing. - - [image of music] - - - * Objects that belong outside of the staff are now positioned - automatically to avoid collisions. - - [image of music] - - - * Staves are spaced vertically using a skyline algorithm. This helps - prevent uneven vertical spacing. + * 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] + + + * 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): + + \new Staff \with { \omit Clef } + \relative c'' 1 + [image of music] + + + * 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: + + \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] + + + 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] + + + 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) + } + [image of music] + + + * 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. + + * The `\clef' command supports optional transposition: + + \clef "treble_(8)" + c2 c + \clef "bass^[15]" + c2 c + [image of music] + + + * 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]