X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=NEWS.txt;h=f845199263ed86dc6a88d2ed7f80e9b53e7c8505;hb=78d9939f551643454b56774bae6d56bed421e1af;hp=64fcff492d4d7d3a8e6590d501f4a474e2efaab1;hpb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;p=lilypond.git diff --git a/NEWS.txt b/NEWS.txt index 64fcff492d..f845199263 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,395 +1,848 @@ -New features in 2.14 since 2.12 +New features in 2.20 since 2.18 ******************************* - * 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 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. - - \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. - - * A new `Completion_rest_engraver' is available for automatically - converting long rests which overrun bar lines, matching the - `Completion_heads_engraver' for notes + • It is now possible to move systems with reference to their current + position using the ‘extra-offset’ subproperty of + ‘NonMusicalPaperColumn.line-break-system-details’. Both vertical + and horizontal changes are possible. This feature is especially + useful for making slight adjustments to the default vertical + position of individual systems. See *note + (lilypond-notation)Explicit staff and system positioning:: for more + information. + + • It is now possible to add text to analysis brackets through the + ‘HorizontalBracketText’ object. \layout { \context { \Voice - \remove "Note_heads_engraver" - \consists "Completion_heads_engraver" - \remove "Rest_engraver" - \consists "Completion_rest_engraver" + \consists "Horizontal_bracket_engraver" } } - This feature was sponsored by Image-Line Software for FL Studio. - * Dots can be added to the table of contents items using: + { + \once \override HorizontalBracketText.text = "a" + c''\startGroup d''\stopGroup + e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup + } + image of music + + • The ends of hairpins may now be fine-tuned using the ‘shorten-pair’ + grob property, which previously only affected text-spanners like + ‘TupletBracket’ and ‘OttavaBracket’. Positive values offset to the + right, negative to the left. + { \once \override Hairpin.shorten-pair = #'(2 . 2) + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(-2 . -2) + c'1~\< + c'2~ c'\! } + image of music + + • In fret-diagrams the distance between frets and the distance + between strings is now independently adjustable. Available are + ‘fret-distance’ and ‘string-distance’ as subproperties of + ‘fret-diagram-details’. + fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" } + + \markuplist + \override #'(padding . 2) + \table #'(0 -1) { + "default" + + \fretMrkp + + "fret-distance" + + \override #'(fret-diagram-details . ((fret-distance . 2))) + \fretMrkp + + "string-distance" + + \override #'(fret-diagram-details . ((string-distance . 2))) + \fretMrkp + } + image of music + + • Accidental rules can now be defined across ‘ChoirStaff’ contexts. + Two new rules ‘choral’ and ‘choral-cautionary’ are available that + combine the characteristics of ‘modern-voice’ and ‘piano’ or their + equivalents with cautionary accidentals. + + • The music function ‘\unfoldRepeats’ can now take an optional + argument-list specifying which type(s) of repeated music should be + unfolded. Possible entries are ‘percent’, ‘tremolo’, ‘volta’. If + the optional argument-list is unspecified, ‘repeated-music’ will be + used, unfolding all. + + • A new ‘output-attributes’ grob property is now used for svg output + instead of the ‘id’ grob property. It allows multiple attributes + to be defined as an association list. For example, ‘#'((id . 123) + (class . foo) (data-whatever . “bar”))’ will produce the following + group tag in an SVG file: ‘ ... ’. + + • Slurs and phrasing slurs may now be started from individual notes + in a chord. Several simultanous slurs per ‘Voice’ need to be + distinguished by ‘spanner-id’ setting. + + • The music and grob property ‘spanner-id’ for distinguishing + simultaneous slurs and phrasing slurs has been changed from a + string to a ‘key’, a non-negative integer or symbol. + + • There is a new command ‘\=’ for specifying the ‘spanner-id’ for + simultaneous slurs and phrasing slurs. + \fixed c' { + 2 + } + image of music + + • Blocks introduced with ‘\header’ can be stored in variables and + used as arguments to music and scheme functions and as the body of + ‘#{...#}’ constructs. They are represented as a Guile module. + + While ‘\book’, ‘\bookpart’, ‘\score’, ‘\with’, ‘\layout’, ‘\midi’, + ‘\paper’ blocks can be passed around in similar manner, they are + represented by different data types. + + • Dot-separated symbol lists like ‘FretBoard.stencil’ were already + supported as of version 2.18. They may now also contain unsigned + integers, and may alternatively be separated by commata. This + allows usage such as + { \time 2,2,1 5/8 g'8 8 8 8 8 } + image of music + + and + \tagGroup violin,oboe,bassoon + + • Such lists may also be used in expressions for assignments, sets, + and overrides. This allows usage such as + { \unset Timing.beamExceptions + \set Timing.beatStructure = 1,2,1 + g'8 8 8 8 8 8 8 8 } + image of music + + • Association list elements could previously be assigned values + individually (for example, paper variables like + ‘system-system-spacing.basic-distance’). They may now be also + referenced in this manner, as with \paper { - tocItemMarkup = \tocItemWithDotsMarkup + \void \displayScheme \system-system-spacing.basic-distance } - * 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] - - - * 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/' + In combination with the previously mentioned changes, this allows + setting and referencing pseudovariables like ‘violin.1’. - might do the trick for conversion. + • LilyPond source files may now be embedded inside the generated PDF + files. This experimental feature is disabled by default and may be + regarded as unsafe, as PDF documents with hidden content tend to + present a security risk. Please note that not all PDF viewers have + the ability to handle embedded documents (if not, the PDF output + will appear normally and source files will remain invisible). This + feature only works with the PDF backend. - * 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. + • French note names are now defined specifically instead of being + aliased to Italian note names: in addition to the generic + Italian-derived syntax, the D pitch may be entered as ‘ré’. Double + sharps may also be entered using the ‘-x’ suffix. - * A variant of the Segno sign is provided: + • Additional bass strings (for lute tablature) are supported. + m = { f'4 d' a f d a, g, fis, e, d, c, \bar "|." } - [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 } - } + \new TabStaff \m \layout { \context { - \Staff - \noclef + \Score + tablatureFormat = #fret-letter-tablature-format + } + \context { + \TabStaff + stringTunings = \stringTuning + additionalBassStrings = \stringTuning + fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k") } } } - [image of music] - - - * A half-open articulation was added: + image of music + + • The markup-list-command ‘\table’ is now available. Each column may + be aligned differently. + \markuplist { + \override #'(padding . 2) + \table + #'(0 1 0 -1) + { + \underline { center-aligned right-aligned center-aligned left-aligned } + one "1" thousandth "0.001" + eleven "11" hundredth "0.01" + twenty "20" tenth "0.1" + thousand "1000" one "1.0" + } + } + image of music + + • A new markup-command, ‘\with-dimensions-from’, makes + ‘\with-dimensions’ easier to use by taking the new dimensions from + a markup object, given as first argument. + \markup { + \pattern #5 #Y #0 "x" + \pattern #5 #Y #0 \with-dimensions-from "x" "f" + \pattern #5 #Y #0 \with-dimensions-from "x" "g" + \override #'(baseline-skip . 2) + \column { + \pattern #5 #X #0 "n" + \pattern #5 #X #0 \with-dimensions-from "n" "m" + \pattern #5 #X #0 \with-dimensions-from "n" "!" + } + } + image of music + + • There are two new page breaking functions. ‘ly:one-page-breaking’ + automatically adjusts the height of the page to fit the music, so + that everything fits on one page. + ‘ly:one-line-auto-height-breaking’ is like ‘ly:one-line-breaking’, + placing the music on a single line and adjusting the page width + accordingly, however it also automatically adjusts the page height + to fit the music. + + • Markup-command ‘\draw-squiggle-line’ is now available. Customizing + is possible with overrides of ‘thickness’, ‘angularity’, ‘height’ + and ‘orientation’ + \markup + \overlay { + \draw-squiggle-line #0.5 #'(3 . 3) ##t + + \translate #'(3 . 3) + \override #'(thickness . 4) + \draw-squiggle-line #0.5 #'(3 . -3) ##t + + \translate #'(6 . 0) + \override #'(angularity . -5) + \draw-squiggle-line #0.5 #'(-3 . -3) ##t + + \translate #'(3 . -3) + \override #'(angularity . 2) + \override #'(height . 0.3) + \override #'(orientation . -1) + \draw-squiggle-line #0.2 #'(-3 . 3) ##t + } + image of music - [image of music] + • A new command, ‘\RemoveAllEmptyStaves’, has been made available, + which acts exactly like ‘\RemoveEmptyStaves’, except for also + removing empty staves on the first system in a score. + • Markup-commands ‘\undertie’ and ‘\overtie’ are now available, as + well as the generic markup-command ‘\tie’. + \markup { + \undertie "undertied" + \overtie "overtied" + } - This is sometimes used to indicate half-open hi-hats. + m = { + c''1 \prall -\tweak text \markup \tie "131" -1 + } - * The Unicode Bidirectional Algorithm is now fully supported for - single-line markup due to enhanced integration with Pango. + { \voiceOne \m \voiceTwo \m } + image of music - * LilyPond is now licensed under the GNU GPL v3+. + • ‘TabStaff’ is now able to print micro-tones for bendings etc. + \layout { + \context { + \Score + supportNonIntegerFret = ##t + } + } - * In tablature, frets can be indicated with labels other than - numbers: + mus = \relative { c'4 cih d dih } - \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 Staff << \clef "G_8" \mus >> + \new TabStaff \mus + >> + image of music + + • Two new styles of whiteout are now available. The ‘outline’ style + approximates the contours of a glyph’s outline, and its shape is + produced from multiple displaced copies of the glyph. The + ‘rounded-box’ style produces a rounded rectangle shape. For all + three styles, including the default ‘box’ style, the whiteout + shape’s ‘thickness’, as a multiple of staff-line thickness, can be + customized. + + \markup { + \combine + \filled-box #'(-1 . 15) #'(-3 . 4) #1 + \override #'(thickness . 3) + \whiteout whiteout-box + } + \markup { + \combine + \filled-box #'(-1 . 24) #'(-3 . 4) #1 + \override #'(style . rounded-box) + \override #'(thickness . 3) + \whiteout whiteout-rounded-box + } + \markup { + \combine + \filled-box #'(-1 . 18) #'(-3 . 4) #1 + \override #'(style . outline) + \override #'(thickness . 3) + \whiteout whiteout-outline } - \new TabVoice { - \set fretLabels = #`(,(markup #:with-color red "a") - "b" - ,(markup #:italic #:smaller "c")) - 4. 8 4 + \relative { + \override Staff.Clef.whiteout-style = #'outline + \override Staff.Clef.whiteout = 3 + g'1 } - [image of music] + image of music + + • All of ‘\override’, ‘\revert’, ‘\set’, and ‘\unset’ now work with + the ‘\once’ prefix for making one-time settings. + \relative { + c'4 d + \override NoteHead.color = #red + e4 f | + \once \override NoteHead.color = #green + g4 a + \once \revert NoteHead.color + b c | + \revert NoteHead.color + f2 c | + } + image of music + + • When outputting MIDI, LilyPond will now store the ‘title’ defined + in a score’s ‘\header’ block (or, if there is no such definition on + the ‘\score’ level, the first such definition found in a ‘\header’ + block of the score’s enclosing ‘\bookpart’, ‘\book’, or top-level + scope) as the name of the MIDI sequence in the MIDI file. + Optionally, the name of the MIDI sequence can be overridden using + the new ‘midititle’ ‘\header’ field independently of ‘title’ (for + example, in case ‘title’ contains markup code which does not render + as plain text in a satisfactory way automatically). + + • Music (and scheme and void) functions and markup commands that just + supply the final parameters to a chain of overrides, music function + and markup command calls can now be defined in the form of just + writing the expression cut short with ‘\etc’. + + bold-red-markup = \markup \bold \with-color #red \etc + highlight = \tweak font-size 3 \tweak color #red \etc + + \markup \bold-red "text" + \markuplist \column-lines \bold-red { One Two } + + { c' \highlight d' e'2-\highlight -! } + image of music + + • LilyPond functions defined with ‘define-music-function’, + ‘define-event-function’, ‘define-scheme-function’ and + ‘define-void-function’ can now be directly called from Scheme as if + they were genuine Scheme procedures. Argument checking and + matching will still be performed in the same manner as when calling + the function through LilyPond input. This includes the insertion + of defaults for optional arguments not matching their predicates. + Instead of using ‘\default’ in the actual argument list for + explicitly skipping a sequence of optional arguments, + ‘*unspecified*’ can be employed. + + • Current input location and parser are now stored in GUILE fluids + and can be referenced via the function calls ‘(*location*)’ and + ‘(*parser*)’. Consequently, a lot of functions previously taking + an explicit ‘parser’ argument no longer do so. + + Functions defined with ‘define-music-function’, + ‘define-event-function’, ‘define-scheme-function’ and + ‘define-void-function’ no longer use ‘parser’ and ‘location’ + arguments. + + With those particular definitions, LilyPond will try to recognize + legacy use of ‘parser’ and ‘location’ arguments, providing + backwards-compatible semantics for some time. + + • In the "english" notename language, the long notenames for pitches + with accidentals now contain a hyphen for better readability. You + now have to write + \key a-flat \major + instead of the previous + \key aflat \major + + Double accidentals do not get another hyphen, so the Dutch ‘cisis’ + has the long English notename ‘c-sharpsharp’. + + • The visual style of tremolo slashes (shape, style and slope) is now + more finely controlled. + image of music + + • Multi-measure rests have length according to their total duration, + under the control of ‘MultiMeasureRest.space-increment’. + image of music + + • Page numbers may now be printed in roman numerals, by setting the + ‘page-number-type’ paper variable. + + • It is now possible to use ‘\time’ and ‘\partial’ together to change + the time signature in mid measure. + + \override Score.BarNumber.break-visibility = #end-of-line-invisible + \partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||" + \time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 | + image of music + + • It is now possible to override the ‘text’ property of chord names. + + << + \new ChordNames \chordmode { + a' b c:7 + \once \override ChordName.text = #"foo" + d + } + >> + image of music + • Improved horizontal alignment when using ‘TextScript’, with + ‘DynamicText’ or ‘LyricText’. - * Layout objects can be printed over a white background, which - whites-out objects in lower layers which lie beneath: + • A new command ‘\magnifyStaff’ has been added which scales staff + sizes, staff lines, bar lines, beamlets and horizontal spacing + generally at the ‘Staff’ context level. Staff lines are prevented + from being scaled smaller than the default since the thickness of + stems, slurs, and the like are all based on the staff line + thickness. - \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] + • ‘InstrumentName’ now supports ‘text-interface’. + • There is now support for controlling the ‘expression level’ of MIDI + channels using the ‘Staff.midiExpression’ context property. This + can be used to alter the perceived volume of even sustained notes + (albeit in a very ‘low-level’ way) and accepts a number value + between ‘0.0’ and ‘1.0’. - * Chords can be repeated using the `q' shortcut: + \score { + \new Staff \with { + midiExpression = #0.6 + midiInstrument = #"clarinet" + } + << + { a'1~ a'1 } + { + \set Staff.midiExpression = #0.7 s4\f\< + \set Staff.midiExpression = #0.8 s4 + \set Staff.midiExpression = #0.9 s4 + \set Staff.midiExpression = #1.0 s4 + + \set Staff.midiExpression = #0.9 s4\> + \set Staff.midiExpression = #0.8 s4 + \set Staff.midiExpression = #0.7 s4 + \set Staff.midiExpression = #0.6 s4\! + } + >> + \midi { } + } - 8.-^ q16 q4-^ - [image of music] + • Support for making it easier to use alternative ‘music’ fonts other + than the default Emmentaler in LilyPond has been added. See + for more information. + • Grobs and their parents can now be aligned separately allowing more + flexibility for grob positions. For example the ‘left’ edge of a + grob can now be aligned on the ‘center’ of its parent. - * With two-sided mode, margins for odd and even pages can be set - using `inner-margin' and `outer-margin': + • Improvements to the ‘\partial’ command have been made to avoid + problems when using multiple, parallel contexts. - \paper { - two-sided = ##t - inner-margin = 10 \mm - outer-margin = 20 \mm - } + • ‘\chordmode’ can now use ‘< >’ and ‘<< >>’ constructs. - * 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 ‘\tagGroup’ has now been added. This complements the + existing ‘\keepWithTag’ and ‘\removeWithTag’ commands. For + Example: - * 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. + \tagGroup #'(violinI violinII viola cello) - * Support for using an alternative music font, such as Gonville, is - now added. + declares a list of ‘tags’ that belong to a single ‘tag group’. - * 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. + \keepWithTag #'violinI - * The direction of manual beams can be set with `^[' and `_['. + Is now only concerned with ‘tags’ from ‘violinI’’s tag group. - * A version of the breve note head has been added with two vertical - lines on each side. + Any element of the included music tagged with one or more tags from + the group, but _not_ with VIOLINI, will be removed. - [image of music] + • The ‘\addlyrics’ function now works with arbitrary contexts + incuding ‘Staff’. + • String numbers can now also be used to print roman numerals (e.g. + for unfretted string instruments). + c2\2 + \romanStringNumbers + c\2 + \arabicStringNumbers + c1\3 + 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. + • The ‘thin-kern’ property of the ‘BarLine’ grob has been renamed to + ‘segno-kern’. - [image of music] + • ‘KeyCancellation’ grobs now ignore cue clefs (like ‘KeySignature’ + grobs do). + • Add support for ‘\once \unset’ - * Braces in markup can now be selected by point size using the - markup commands `\left-brace' and `\right-brace'. + • It is now possible to individually color both the dots and + parentheses in fret diagrams when using the ‘\fret-diagram-verbose’ + markup command. - [image of music] + \new Voice { + c1^\markup { + \override #'(fret-diagram-details . ( + (finger-code . in-dot))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1 red) + (place-fret 4 5 2 inverted) + (place-fret 3 5 3 green) + (place-fret 2 5 4 blue inverted) + (place-fret 1 3 1 violet) + (barre 5 1 3 )) + } + } + c1^\markup { + \override #'(fret-diagram-details . ( + (finger-code . below-string))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1 red parenthesized) + (place-fret 4 5 2 yellow + default-paren-color + parenthesized) + (place-fret 3 5 3 green) + (place-fret 2 5 4 blue ) + (place-fret 1 3 1) + (barre 5 1 3)) + } + } + } + image of music + + • Two new properties have been added for use in + ‘fret-diagram-details’ when using the ‘\fret-diagram-verbose’ + markup command; ‘fret-label-horizontal-offset’ which affects the + ‘fret-label-indication’ and ‘paren-padding’ which controls the + space between the dot and the parentheses surrounding it. + + \new Voice { + c1^\markup { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1) + (place-fret 4 5 2) + (place-fret 3 5 3) + (place-fret 1 6 4 parenthesized) + (place-fret 2 3 1) + (barre 5 2 3)) + } + c1^\markup { + \override #'(fret-diagram-details . ( + (fret-label-horizontal-offset . 2) + (paren-padding . 0.25))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1) + (place-fret 4 5 2) + (place-fret 3 5 3) + (place-fret 1 6 4 parenthesized) + (place-fret 2 3 1) + (barre 5 2 3)) + } + } + } + image of music + + • A new markup command ‘\justify-line’ has been added. Similar to + the ‘\fill-line’ markup command except that instead of setting + _words_ in columns, the ‘\justify-line’ command balances the + whitespace between them ensuring that when there are three or more + words in a markup, the whitespace is always consistent. + + \markup \fill-line {oooooo oooooo oooooo oooooo} + \markup \fill-line {ooooooooo oooooooo oo ooo} + image of music + + \markup \justify-line {oooooo oooooo oooooo oooooo} + \markup \justify-line {ooooooooo oooooooo oo ooo} + image of music + + • A new command ‘\magnifyMusic’ has been added, which allows the + notation size to be changed without changing the staff size, while + automatically scaling stems, beams, and horizontal spacing. + + \new Staff << + \new Voice \relative { + \voiceOne + 4 8. 16 8 4 r8 + } + \new Voice \relative { + \voiceTwo + \magnifyMusic 0.63 { + \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63) + r32 c'' a c a c a c r c a c a c a c + r c a c a c a c a c a c a c a c + } + } + >> + image of music + + • A new flexible template suitable for a range of choral music, is + now provided. This may be used to create simple choral music, with + or without piano accompaniment, in two or four staves. Unlike + other templates, this template is ‘built-in’, which means it does + not need to be copied and edited: instead it is simply ‘\include’’d + in the input file. For details, see *note + (lilypond-learning)Built-in templates::. + + • The positioning of tuplet numbers for kneed beams has been + significantly improved. Previously, tuplet numbers were placed + according to the position of the tuplet bracket, even if it was not + printed. This could lead to stranded tuplet numbers. Now they are + now positioned closer to the kneed-beam when an appropriate beam + segment exists for its placement and when the bracket is not drawn. + + Collision detection is also added, offsetting horizontally if too + close to an adjoining note column but preserving the number’s + vertical distance from the kneed beam. If the number itself is too + large to fit in the available space the original, bracket-based, + positioning system is used instead; and in the event of a collision + (e.g. with an accidental) the tuplet number is moved vertically + away instead. + \time 3/4 + \override Beam.auto-knee-gap = 3 + \tuplet 3/2 4 { + g8 c'' e, + c'8 g,, e'' + g,,8 e''' c,, + } + image of music - * 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) + The original kneed-beam tuplet behavior is still available through + an ‘\override’ via a new, ‘knee-to-beam’ property. - * Dashed and dotted slurs, phrasing slurs, and ties have been made - variable thickness, and partially dashed slurs are now available: + \time 3/4 + \override Beam.auto-knee-gap = 3 + \override TupletNumber.knee-to-beam = ##f + \tuplet 3/2 4 { + g8 c'' e, + c'8 g,, e'' + g,,8 e''' c,, + } + image of music - [image of music] + • ‘\lyricsto’ and ‘\addLyrics’ have been ‘harmonized’. Both now + accept the same kind of delimited argument list that ‘\lyrics’ and + ‘\chords’ accept. Backward compatibility has been added so music + identifiers (i.e. ‘\mus’) are permitted as arguments. A + ‘convert-ly’ rule has been added that removes redundant uses of + ‘\lyricmode’ and rearranges combinations with context starters such + that ‘\lyricsto’ in general is applied last (i.e. like + ‘\lyricmode’ would be). + • Scheme functions and identifiers can now be used as output + definitions. - * An eyeglasses markup was added, indicating strongly to look at the - conductor for instructions: + • Scheme expressions can now be used as chord constituents. - [image of music] + • Improved visual spacing of small and regular ‘MI’ Funk and Walker + noteheads so they are now the same width as other shaped notes in + their respective sets. ‘SOL’ noteheads are also now visually + improved when used with both the normal Aiken and Sacred Harp + heads, as well as with the thin variants. + • ‘LeftEdge’ now has a definable ‘Y-extent’ (i.e.vertical). See + *note (lilypond-internals)LeftEdge::. - * A snap-pizzicato (also known as Bartok-pizzicato) articulation was - added: + • Added a new ‘make-path-stencil’ function that supports all ‘path’ + commands both relative and absolute: - [image of music] + ‘lineto’, ‘rlineto’, ‘curveto’, ‘rcurveto’, ‘moveto’, ‘rmoveto’, + ‘closepath’. The function also supports ‘single-letter’ syntax + used in standard SVG path commands: + ‘L’, ‘l’, ‘C’, ‘c’, ‘M’, ‘m’, ‘Z’ and ‘z’. The new command is also + backward-compatible with the original ‘make-connected-path-stencil’ + function. Also see ‘scm/stencil.scm’. - * Tuplet number formatting functions are now available to print - other fractions and to add notes to the number or fraction: + • Context properties named in the ‘alternativeRestores’ property are + restored to their value at the start of the _first_ alternative in + all subsequent alternatives. - [image of music] + Currently the default set restores ‘current meter’; + \time 3/4 + \repeat volta 2 { c2 e4 | } + \alternative { + { \time 4/4 f2 d | } + { f2 d4 | } + } + g2. | + image of music - * FretBoards now have a chordChanges property to keep repeated - FretBoard objects from being typeset. + ‘measure position’; - * 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. + \time 3/4 + \repeat volta 2 { c2 e4 | } + \alternative { + { \time 4/4 + \set Timing.measurePosition = #(ly:make-moment -1/2) + f2 | } + { f2 d4 | } + } + g2. | + image of music + and ‘chord changes’; + << + \new ChordNames { + \set chordChanges = ##t + \chordmode { c1:m d:m c:m d:m } + } + \new Staff { + \repeat volta 2 { \chordmode { c1:m } } + \alternative { + { \chordmode { d:m } } + { \chordmode { c:m } } + } + \chordmode { d:m } + } + >> + image of music + + • Improved MIDI output for breathe marks. After tied notes, breaths + take time _only_ from the last note of the tie; e.g. ‘{ c4~ c8 + \breathe }’ performs as ‘{ c4~ c16 r }’ instead of ‘{ c4 r8 }’. + This is more consistent with articulations and how humans interpret + breaths after ties. It now also makes it easier to align + simultaneous breathe marks over multiple parts, all with different + note lengths. + + • A new note head style for Tabulature has been added; + ‘TabNoteHead.style = #'slash’. + + • Four new Clef glyphs have been added _Double G_, _Tenor G_, + _Varpercussion_ and _varC_ and their related tessitura. + \override Staff.Clef.full-size-change = ##t + + \clef "GG" c c c c + \clef "tenorG" c c c c + \clef "varC" c c c c + \clef "altovarC" c c c c + \clef "tenorvarC" c c c c + \clef "baritonevarC" c c c c + \clef "varpercussion" c c c c + + \break + \override Staff.Clef.full-size-change = ##f + + \clef "GG" c c c c + \clef "tenorG" c c c c + \clef "varC" c c c c + \clef "altovarC" c c c c + \clef "tenorvarC" c c c c + \clef "baritonevarC" c c c c + \clef "varpercussion" c c c c + image of music + + • Isolated durations in music sequences now stand for unpitched + notes. This may be useful for specifying rhythms to music or + scheme functions. When encountered in the final score, the pitches + are provided by the preceding note or chord. Here are two examples + where this makes for readable input: + + \new DrumStaff \with { \override StaffSymbol.line-count = 1 } + \drummode { + \time 3/4 + tambourine 8 \tuplet 3/2 { 16 16 16 } + 8 \tuplet 3/2 { 16 16 16 } 8 8 | + } + image of music + + \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | } + image of music + + • ‘\displayLilyMusic’ and its underlying Scheme functions no longer + omit redundant note durations. This makes it easier to reliably + recognize and format standalone durations in expressions like + { c4 d4 8 } + + • Beaming exceptions can now be constructed using the + ‘\beamExceptions’ scheme function. One can now write + + \time #'(2 1) 3/16 + \set Timing.beamExceptions = + \beamExceptions { 32[ 32] 32[ 32] 32[ 32] } + c16 c c | + \repeat unfold 6 { c32 } | + image of music + + with multiple exceptions separated with ‘|’ bar checks (writing the + exception pattern without pitches is convenient but not mandatory). + Previously, setting the beam exceptions would have required writing + + \set Timing.beamExceptions = + #'( ;start of alist + (end . ;entry for end of beams + ( ;start of alist of end points + ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16 + ))) + + • The most common articulations are now reflected in MIDI output. + Accent and marcato make notes louder; staccato, staccatissimo and + portato make them shorter. Breath marks shorten the previous note. + + This behavior is customizable through the ‘midiLength’ and + ‘midiExtraVelocity’ properties on ‘ArticulationEvent’. See + ‘script-init.ly’ for examples. + + • 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. + + • Default text fonts have been changed from ‘Century Schoolbook L’, + ‘sans-serif’, and ‘monospace’. + + For ‘svg’ backend: + Family Default font + ----------------------------------- + _roman_ ‘serif’ + _sans_ ‘sans-serif’ + _typewriter_‘monospace’ + + ‘serif’, ‘sans-serif’, and ‘monospace’ are ‘generic-family’ in SVG + and CSS specifications. + + For other backends: + Family Default font (alias) Alias definition lists + ---------------------------------------------------------------------------- + _roman_ ‘LilyPond Serif’ TeX Gyre Schola, C059, Century + SchoolBook URW, Century Schoolbook L, + DejaVu Serif, ..., serif + _sans_ ‘LilyPond Sans TeX Gyre Heros, Nimbus Sans, Nimbus + Serif’ Sans L, DejaVu Sans, ..., sans-serif + _typewriter_‘LilyPond Monospace’ TeX Gyre Cursor, Nimbus Mono PS, + Nimbus Mono, Nimbus Mono L, DejaVu + Sans Mono, ..., monospace + + ‘LilyPond Serif’, ‘LilyPond Sans Serif’, and ‘LilyPond Monospace’ + are font aliases defined in the LilyPond dedicated FontConfig + configuration file ‘00-lilypond-fonts.conf’. Where a character + dosen’t exist in the first font listed, the next font listed will + be used instead for that character. For details of alias + definitions, please see to ‘00-lilypond-fonts.conf’ under the + installed directory. - -Local Variables: -coding: utf-8 -End: