X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=ce41e0aefa5319043a52bf5b3b944d78890fc799;hb=88a5dbc589b0d0434f8e640467b5ab57d14dc461;hp=b58b35a4eff28f239054fd378c2ca0737ae410bf;hpb=17fecdfc86780cccffdf8fb91a1394da2980860a;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index b58b35a4ef..ce41e0aefa 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -29,7 +29,7 @@ See user manual, \NAME\ @end macro -@documentencoding utf-8 +@documentencoding UTF-8 @documentlanguage en @afourpaper @@ -60,6 +60,468 @@ which scares away people. * only show user-visible changes. @end ignore + +@item +The markup-list-command @code{\table} is now available. +Each column may be aligned differently. +@lilypond[quote,verbatim] +\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" + } +} +@end lilypond + +@item +A new page breaking function @code{ly:one-line-auto-height-breaking} +places a whole score on a single line and changes the page width +to match, just like @code{ly:one-line-breaking}. The difference is that +it also automatically modifies the height of the page to fit the height +of the music. + +@item +Markup-command @code{\draw-squiggle-line} is now available. +Customizing is possible with overrides of @code{thickness}, @code{angularity}, +@code{height} and @code{orientation} +@lilypond[quote,verbatim] +\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 + } +@end lilypond + +@item +A new command, @code{\RemoveAllEmptyStaves}, has been made available, which +acts exactly like @code{\RemoveEmptyStaves}, except for also removing empty +staves on the first system in a score. + +@item +Markup-commands @code{\undertie} and @code{\overtie} are now available, as well +as the generic markup-command @code{\tie}. +@lilypond[quote,verbatim] +\markup { + \undertie "undertied" + \overtie "overtied" +} + +m = { + c''1 \prall -\tweak text \markup \tie "131" -1 +} + +{ \voiceOne \m \voiceTwo \m } +@end lilypond + +@item +@code{TabStaff} is now able to print micro-tones for bendings etc. +@lilypond[quote,verbatim] +\layout { + \context { + \Score + supportNonIntegerFret = ##t + } +} + +mus = \relative { c'4 cih d dih } + +<< + \new Staff << \clef "G_8" \mus >> + \new TabStaff \mus +>> +@end lilypond + +@item +Two new styles of whiteout are now available. The @code{outline} style +approximates the contours of a glyph's outline, and its shape is +produced from multiple displaced copies of the glyph. The +@code{rounded-box} style produces a rounded rectangle shape. For all +three styles, including the default @code{box} style, the whiteout +shape's @code{thickness}, as a multiple of staff-line thickness, can be +customized. + +@lilypond[verbatim,quote] +\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 +} +\relative { + \override Staff.Clef.whiteout-style = #'outline + \override Staff.Clef.whiteout = 3 + g'1 +} +@end lilypond + +@item +All of @code{\override}, @code{\revert}, @code{\set}, and +@code{\unset} now work with the @code{\once} prefix for making +one-time settings. +@lilypond[quote,verbatim] +\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 | +} +@end lilypond + +@item +When outputting MIDI, LilyPond will now store the @code{title} +defined in a score's @code{\header} block (or, if there is no +such definition on the @code{\score} level, the first such +definition found in a @code{\header} block of the score's +enclosing @code{\bookpart}, @code{\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 +@code{midititle} @code{\header} field independently of +@code{title} (for example, in case @code{title} contains markup +code which does not render as plain text in a satisfactory way +automatically). + +@item +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 @code{\etc}. + +@lilypond[verbatim,quote] +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 -! } +@end lilypond + +@item +LilyPond functions defined with @code{define-music-function}, +@code{define-event-function}, @code{define-scheme-function} and +@code{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 @code{\default} in the actual +argument list for explicitly skipping a sequence of optional +arguments, @code{*unspecified*} can be employed. + +@item +Current input location and parser are now stored in GUILE fluids +and can be referenced via the function calls @code{(*location*)} +and @code{(*parser*)}. Consequently, a lot of functions +previously taking an explicit @code{parser} argument no longer do +so. + +Functions defined with @code{define-music-function}, +@code{define-event-function}, @code{define-scheme-function} and +@code{define-void-function} no longer use @code{parser} and +@code{location} arguments. + +With those particular definitions, LilyPond will try to recognize +legacy use of @code{parser} and @code{location} arguments, +providing backwards-compatible semantics for some time. + +@item +In the "english" notename language, the long notenames for pitches +with accidentals now contain a hyphen for better readability. You +now have to write +@example +\key a-flat \major +@end example +instead of the previous +@example +\key aflat \major +@end example + +Double accidentals do not get another hyphen, so the Dutch +@code{cisis} has the long English notename @code{c-sharpsharp}. + +@item +The visual style of tremolo slashes (shape, style and slope) +is now more finely controlled. +@lilypond[quote,relative=2] + a8:32 b: c: d: + \override StemTremolo.shape = #'beam-like + a: b: c: d: + \override StemTremolo.style = #'constant + a: b: c: d: + g,2 +@end lilypond + + +@item +Multi-measure rests have length according to their total duration, +under the control of @code{MultiMeasureRest.space-increment}. +@lilypond[quote] +{ \compressFullBarRests + \override Staff.MultiMeasureRest.space-increment = 3.0 + R1*2 R1*12 R1*64 } +@end lilypond + +@item +Page numbers may now be printed in roman numerals, by setting the +@code{page-number-type} paper variable. + +@item +It is now possible to use @code{\time} and @code{\partial} +together to change the time signature in mid measure. + +@lilypond[verbatim,quote,relative=1] +\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 | +@end lilypond + +@item +It is now possible to override the @code{text} property of +chord names. + +@lilypond[verbatim,fragment,quote] +<< +\new ChordNames \chordmode { + a' b c:7 + \once \override ChordName.text = #"foo" + d +} +>> +@end lilypond + +@item +Improved horizontal alignment when using @code{TextScript}, +with @code{DynamicText} or @code{LyricText}. + +@item +A new command @code{\magnifyStaff} has been added which scales staff +sizes, staff lines, bar lines, beamlets and horizontal spacing generally +at the @code{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. + +@item +@code{InstrumentName} now supports @code{text-interface}. + +@item +There is now support for controlling the @q{expression level} of +MIDI channels using the @code{Staff.midiExpression} context property. +This can be used to alter the perceived volume of even sustained notes +(albeit in a very @q{low-level} way) and accepts a number value between +@code{0.0} and @code{1.0}. + +@example +\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 @{ @} +@} +@end example + +@item +Support for making it easier to use alternative @q{music} fonts other +than the default Emmentaler in LilyPond has been added. See +@uref{http://fonts.openlilylib.org/} for more information. + +@item +Grobs and their parents can now be aligned separately allowing +more flexibility for grob positions. For example the @q{left} edge of a +grob can now be aligned on the @q{center} of its parent. + +@item +Improvements to the @code{\partial} command have been made to +avoid problems when using multiple, parallel contexts. + +@item @code{\chordmode} can now use @code{< >} and @code{<< >>} +constructs. + +@item +A new command @code{\tagGroup} has now been added. This complements +the existing @code{\keepWithTag} and @code{\removeWithTag} commands. +For Example: + +@example +\tagGroup #'(violinI violinII viola cello) +@end example + +declares a list of @q{tags} that belong to a single @q{tag group}. + +@example +\keepWithTag #'violinI +@end example + +Is now only concerned with @q{tags} from @q{violinI}’s tag group. + +Any element of the included music tagged with one or more tags from the +group, but @emph{not} with @var{violinI}, will be removed. + +@item +The @code{\addlyrics} function now works with arbitrary contexts +incuding @code{Staff}. + +@item +String numbers can now also be used to print roman numerals +(e.g. for unfretted string instruments). +@lilypond[verbatim,quote,relative=2] +c2\2 +\romanStringNumbers +c\2 +\arabicStringNumbers +c1\3 +@end lilypond + +@item +The @code{thin-kern} property of the @code{BarLine} grob has been +renamed to @code{segno-kern}. + +@item +@code{KeyCancellation} grobs now ignore cue clefs (like +@code{KeySignature} grobs do). + +@item +Add support for @code{\once@tie{}\unset} + +@item +It is now possible to individually color both the dots and parentheses +in fret diagrams when using the @code{\fret-diagram-verbose} markup +command. + +@lilypond[verbatim,quote,relative=1] +\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)) + } + } +} +@end lilypond + +@item +Two new properties have been added for use in +@code{fret-diagram-details} when using the @code{\fret-diagram-verbose} +markup command; @code{fret-label-horizontal-offset} which affects the +@code{fret-label-indication} and @code{paren-padding} which controls the +space between the dot and the parentheses surrounding it. + +@lilypond[verbatim,quote,relative=1] +\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)) + } + } +} +@end lilypond + +@item +A new markup command @code{\justify-line} has been added. Similar to +the @code{\fill-line} markup command except that instead of setting +@emph{words} in columns, the @code{\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. + +@lilypond[quote,verbatim,papersize=a6] +\markup \fill-line {oooooo oooooo oooooo oooooo} +\markup \fill-line {ooooooooo oooooooo oo ooo} +@end lilypond + +@lilypond[quote,verbatim,papersize=a6] +\markup \justify-line {oooooo oooooo oooooo oooooo} +\markup \justify-line {ooooooooo oooooooo oo ooo} +@end lilypond + @item A new command @code{\magnifyMusic} has been added, which allows the notation size to be changed without changing the staff size, @@ -74,6 +536,7 @@ while automatically scaling stems, beams, and horizontal spacing. \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 } @@ -280,6 +743,15 @@ examples where this makes for readable input: \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | } @end lilypond +@item +@code{\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 +@example +@{ c4 d4 8 @} +@end example + @item Beaming exceptions can now be constructed using the @code{\beamExceptions} scheme function. One can now write