X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=NEWS.txt;h=a0cefcd144f8ca4e2c64e3f92b3e43aa99bed69d;hb=efe61e88d6d30687cebbb3177b21eeab40193593;hp=64fcff492d4d7d3a8e6590d501f4a474e2efaab1;hpb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;p=lilypond.git diff --git a/NEWS.txt b/NEWS.txt index 64fcff492d..a0cefcd144 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,392 +1,358 @@ -New features in 2.14 since 2.12 +New features in 2.18 since 2.16 ******************************* - * Lilypond now helps beams avoid collisions with other grobs! This - feature works completely with manual beams. It also works for all - automatic beams that do not end right before a change in staff. - For this special case, please use manual beams. + * 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. - * 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. + 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. - \include "articulate.ly" - \articulate << - all the rest of the score... - >> - - * Single beat repeats for sixteenth or shorter notes and beat - repeats for measures containing notes of varying durations are now - supported. - - [image of music] - - * Lilypond now engraves woodwind fingering charts. - - [image of music] - - * MIDI output has been improved - * the option `\set Score.midiChannelMapping = #'voice' puts - each voice on its own midi MIDI channel - - * the option `\set Score.midiChannelMapping = #'instrument' - puts identical instruments on the same MIDI channel. This - means that e.g. for a full orchestral score there are always - 16 (15 plus percussion) differently sounding instruments - available, unrestricted by the number of staves or voices. - (Some MIDI players will cut off notes, however, if two voices - play the same pitch simultaneously on the same channel.) This - option also stores each voice in a separate track in the MIDI - file. - - * the default, `\set Score.midiChannelMapping = #'staff', - assigns one MIDI channel per staff. This setting allows - instrument changes (implemented as MIDI program changes) to - re-use single MIDI channel. - - * dynamics are now rendered as note velocities, no longer as - midi volume. This improves the sound on [high end] midi - renderers. - - * MIDI-import through Midi2ly is improved - * Midi2ly now also works on Windows systems - - * MIDI-files with more than 32 tracks are now handled - - * notes on certain simultaneous voices no longer ignored - - * notes overrunning a bar line are no longer truncated - - * initial key signature and time signature are respected - - * a problem with octaves in subsequent tracks/voices is fixed - - * initial support for multiple voices notated on one staff - - * the instrumentName is set from track data - - * new -skip option, rests are displayed by default - - * rests overrunning a bar line are not truncated - - * new -include-header option for setting titles - - * new -preview option for big MIDI-files - The first feature was sponsored by Valentin Villenave, the other - features were sponsored by Image-Line Software for FL Studio. + * 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. - * A new `Completion_rest_engraver' is available for automatically - converting long rests which overrun bar lines, matching the - `Completion_heads_engraver' for notes - \layout { - \context { - \Voice - \remove "Note_heads_engraver" - \consists "Completion_heads_engraver" - \remove "Rest_engraver" - \consists "Completion_rest_engraver" - } - } - This feature was sponsored by Image-Line Software for FL Studio. + soprano = \relative c' { c e g c } + alto = \relative c' { a c e g } + verse = \lyricmode { This is my song } - * Dots can be added to the table of contents items using: - \paper { - tocItemMarkup = \tocItemWithDotsMarkup + \score { + \new Staff << + \partcombine \soprano \alto + \new NullVoice = "aligner" \soprano + \new Lyrics \lyricsto "aligner" \verse + >> + \layout {} } + [image of music] - * New markup commands `\pattern' and `\fill-with-pattern' are - available. [image of music] - - * A minimal composer toolkit of modal transformations is provided. - A motif may be transposed, inverted and/or converted to its - retrograde within any scale. - - [image of music] - - * Added minimal support for black mensural notation. - - * Enhanced support for obliqua shapes within white mensural - ligatures. - - [image of music] - - * New markup functions `\with-link' and `\page-link' that add - hyperlinks to a given label or a given page number. This works in - the PDF backend only. All entries to the table of contents now - automatically add hyperlinks to the pages they are referring to. - - * Compound time signatures are now supported by the `\compoundMeter' - command, which can be used instead of `\time': - - [image of music] - - * Lyrics above a staff must have their `staff-affinity' set to - `DOWN' or must have their `alignAboveContext' property set in - order to be properly aligned. For more information, see *note - Placing lyrics vertically: (lilypond-notation)Placing lyrics - vertically. - - * `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 - `stringTunings' is set to a Scheme constant value. - - New commands `makeStringTuning' and `contextStringTuning' allow - the creation of string tunings in the form of a Lilypond chord - construct. - - * By using `\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. - - [image of music] - - * Note names can be selected with a new `\language "italiano"' - command, which can be used in safe mode. The old `\include - "italiano.ly"' syntax is still supported for now, but will be - deprecated in the future. - - * autobeaming is now disabled by `\cadenzaOn' and enabled by - `\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. - - * 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. - - * The part-combiner's decision to combine/not combine notes can now - be customized - - [image of music] - - - * Tablature staves show fret numbers only by default. To get the - former style, `\tabFullNotation' is provided. - - * Funk-style and Walker-style shape notes have been added. - - * Rests will no longer keep a staff alive if - `\RemoveEmptyStaffContext' is used. - - * New option `-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. - - * 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. - - * The SVG backend has optional support for WOFF fonts - (http://www.w3.org/Submission/WOFF). Using the Scheme option `-d - svg-woff' together with the SVG backend selection `-d - backend=svg', produces SVG output with CSS WOFF font selection. - - * 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: old version - (http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs), - new version - (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#Clef-glyphs). - - * Text crescendo spanners can now be added directly using `\cresc', - `\dim' and `\decresc'. - [image of music] + * Several articulations can be put into a single variable or + returned from an event function: + sempreStacc = -. ^\markup \italic sempre + \relative { c''4\sempreStacc c c c } + [image of music] - * The documented syntax of `lilypond' environments in the LaTeX mode - of `lilypond-book' has been changed to conform with standard LaTeX - syntax: options now come after the environment name: - \begin{lilypond}[OPTIONS] ... - The previous syntax with options after `\begin' is still accepted - by `lilypond-book' but deprecated. Something like - sed -i '/begin\[/s/begin\(\[[^]]*]\)\({lilypond}\)/begin\2\1/' + * 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 - might do the trick for conversion. + \markup { + violin: \score { \new Staff { 1 } + \layout { indent=0 } } , + cello: \score { \new Staff { \clef "bass" } + \layout { indent=0 } } + } + [image of music] - * 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. - * A variant of the Segno sign is provided: + previously looked like [image of music] - * Context modifications (`\with' blocks) can be stored in variables - and inserted into contexts or other `\with' blocks: - - coloredheads = \with { \override NoteHead #'color = #red } - noclef = \with { \remove "Clef_engraver" } - \score { - \new Staff { - \new Voice \with { \coloredheads } \relative c' { c4 e g c } + 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 } - \layout { - \context { - \Staff - \noclef - } + \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] - * A half-open articulation was added: + * New commands `markLengthOn' and `markLengthOff' control the + allowance of horizontal space for tempo and rehearsal marks. [image of music] - This is sometimes used to indicate half-open hi-hats. + * 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. - * The Unicode Bidirectional Algorithm is now fully supported for - single-line markup due to enhanced integration with Pango. - - * LilyPond is now licensed under the GNU GPL v3+. + [image of music] - * In tablature, frets can be indicated with labels other than - numbers: - \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 - } + * 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] - * Layout objects can be printed over a white background, which - whites-out objects in lower layers which lie beneath: + * The articulation shorthand for `\staccatissimo' has been renamed + from `-|' to `-!'. - \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 - [image of music] + * 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'. - * Chords can be repeated using the `q' shortcut: + * 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': - 8.-^ q16 q4-^ + \relative c { c'4 \absolute { f'' g'' } c } [image of music] - * With two-sided mode, margins for odd and even pages can be set - using `inner-margin' and `outer-margin': - - \paper { - two-sided = ##t - inner-margin = 10 \mm - outer-margin = 20 \mm - } + * 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. - * Paper margin defaults, as specified in - `ly/paper-defaults-init.ly', apply to the default paper size (a4) - and are automatically scaled according to the paper size chosen. + * A new command `\single' can be used for converting a property + override into a tweak to be applied on a single music expression: - * All combinations of `left-margin', `right-margin' and `line-width' - work now. There is no more need to set `line-width' manually - unless you explicitly want to. + 1 + [image of music] - * Support for using an alternative music font, such as Gonville, is - now added. - * In addition to the existing `\hspace' markup command, a new - `\vspace' command has been added to provide an easy and flexible - way to add vertical space in markups. + * 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): - * The direction of manual beams can be set with `^[' and `_['. + \new Staff \with { \omit Clef } + \relative c'' 1 + [image of music] - * A version of the breve note head has been added with two vertical - lines on each side. - [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] - * 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. - [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] - * Braces in markup can now be selected by point size using the - markup commands `\left-brace' and `\right-brace'. + Previously, the above snippet looked like this: - [image of music] + [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'. - * 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: - #(ly:set-option 'delete-intermediate-files #f) + * 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. - * Dashed and dotted slurs, phrasing slurs, and ties have been made - variable thickness, and partially dashed slurs are now available: + \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] - [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] - * An eyeglasses markup was added, indicating strongly to look at the - conductor for instructions: - [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: - * A snap-pizzicato (also known as Bartok-pizzicato) articulation was - added: - - [image of music] + \clef "treble_(8)" + c2 c + \clef "bass^[15]" + c2 c + [image of music] - * Tuplet number formatting functions are now available to print - other fractions and to add notes to the number or fraction: + * 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] - * FretBoards now have a chordChanges property to keep repeated - FretBoard objects from being typeset. - - * 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 `staff-affinity' is defined. Some - page formatting variables (`page-top-space', `between-system-space - -padding', and `before- between- after-title-space') have been - replaced by flexible vertical dimensions. -