1 LilyPond — Changes 2 ****************** 3 4 This document lists changes and new features in LilyPond version 2.24.3 5 since 2.22. 6 7 Note: LilyPond releases can contain syntax changes, which may 8 require modifications in your existing files written for older 9 versions so that they work in the new version. To upgrade 10 files, it is *strongly recommended* to use the ‘convert-ly’ 11 tool distributed with LilyPond, which is described in *note 12 (lilypond-usage)Updating files with convert-ly::. 13 ‘convert-ly’ can perform almost all syntax updates 14 automatically. Frescobaldi users can run ‘convert-ly’ 15 directly from Frescobaldi using “Tools > Update with 16 convert-ly...”. Other editing environments with LilyPond 17 support may provide a way to run ‘convert-ly’ graphically. 18 19 Major changes in LilyPond 20 ************************* 21 22 • LilyPond now requires Guile 2.2. Even if you are not writing 23 Scheme code yourself, you may be using libraries that contain a 24 non-trivial amount of customizations. If they do not work with 25 LilyPond version 2.24.3, please report this to the library’s 26 developers. If you _are_ a library developer, *note Notes on Guile 27 2.2:: below. 28 29 • The infrastructure for creating the official binaries has been 30 completely rewritten, incident with the switch to Guile 2.2. As of 31 this release, we provide 64-bit binaries for macOS and Windows. 32 Also, all packages are made available as simple archives that can 33 be extracted to any “installation” location. To uninstall, simply 34 delete that directory. We also discontinued the limited editor 35 that was installed on macOS and Windows, LilyPad, and recommend 36 switching to an external solution instead, such as the popular 37 editor Frescobaldi (https://frescobaldi.org), or one of the others 38 listed in *note (lilypond-web)Easier editing::. For more 39 information, please refer to the detailed instructions in *note 40 (lilypond-learning)Installing::. 41 42 Notes for source compilation and packagers 43 ========================================== 44 45 This section is aimed at enthusiasts compiling LilyPond from source and 46 packagers preparing LilyPond for distribution. If you are not part of 47 either group, you can skip over this section. 48 49 • As mentioned above, LilyPond now requires Guile 2.2. If needed for 50 distribution reasons, it can also be compiled with Guile 3.0 by 51 passing ‘GUILE_FLAVOR=guile-3.0’ to the ‘configure’ script. 52 However, this is not yet recommended nor officially supported. 53 54 • The Scheme code evaluator in Guile 2.2 is slower than in Guile 1.X. 55 To offset most of the performance penalty, we recommend compiling 56 the ‘.scm’ files into bytecode by first running ‘make bytecode’ 57 during compilation and then ‘make install-bytecode’ in addition to 58 ‘make install’. 59 60 • Starting with this stable release, LilyPond’s build system does not 61 install text fonts anymore. Please provide them as separate 62 packages while paying attention to the fonts’ license and notice 63 files. 64 65 New for musical notation 66 ************************ 67 68 Pitches improvements 69 ==================== 70 71 • Support for alternate accidentals was improved. Through the 72 ‘alterationGlyphs’ property of staff-like contexts, accidental 73 glyphs may be set for all grobs at once (refer to *note 74 (lilypond-notation)Alternate accidental glyphs::). 75 76 [[image of music]] 77 • Ottava brackets may apply to a single voice instead of the entire 78 staff. This used to require workarounds. 79 80 \layout { 81 \context { 82 \Staff 83 \remove Ottava_spanner_engraver 84 } 85 \context { 86 \Voice 87 \consists Ottava_spanner_engraver 88 } 89 } 90 91 [[image of music]] 92 Rhythm improvements 93 =================== 94 95 • The new ‘\section’ command inserts a double bar line that interacts 96 gracefully with repeat bar lines. A passage can be named with the 97 new ‘\sectionLabel’ command. 98 99 \fixed c' { 100 f1 101 \break 102 \section 103 \sectionLabel "Trio" 104 \repeat volta 2 { 105 b1 106 } 107 } 108 [[image of music]] 109 • ‘\numericTimeSignature’ and ‘\defaultTimeSignature’ now act on all 110 staves at once (more precisely, on all staves in the same ‘Timing’ 111 context), thus matching the behavior of ‘\time’. 112 113 • The ‘\rhythm’ markup command has been added. It is a simple way to 114 enter rhythms mixed with text, such as in “swing” indications. 115 116 \relative { 117 \tempo \markup { 118 Swing 119 \hspace #0.4 120 \rhythm { 8[ 8] } = \rhythm { \tuplet 3/2 { 4 8 } } 121 } 122 b8 g' c, d ees d16 ees d c r8 123 } 124 [[image of music]] 125 • The ‘\enablePolymeter’ command is now provided as an input 126 shorthand for moving engravers as is necessary to allow different 127 time signatures in parallel. The code: 128 129 \layout { 130 \context { 131 \Score 132 \remove Timing_translator 133 \remove Default_bar_line_engraver 134 } 135 \context { 136 \Staff 137 \consists Timing_translator 138 \consists Default_bar_line_engraver 139 } 140 } 141 142 can thus be shortened as: 143 144 \layout { 145 \enablePolymeter 146 } 147 148 Independent of this, ‘Default_bar_line_engraver’ has been removed. 149 150 • The new option ‘visible-over-note-heads’ can be used to make tuplet 151 brackets always appear when their direction is set to be over the 152 note heads. It can be used with the default tuplet bracket 153 visibility style or with ‘#'if-no-beam’. 154 155 [[image of music]] 156 • Measure counts now take compressed multi-measure rests and 157 alternatives into account. 158 159 [[image of music]] 160 • Bar numbers may be centered in their measure, as is common in film 161 scores. 162 163 \layout { 164 \context { 165 \Score 166 centerBarNumbers = ##t 167 barNumberVisibility = #all-bar-numbers-visible 168 } 169 } 170 171 << 172 { \repeat unfold 3 { c'4 d' e' f' } } 173 { \repeat unfold 3 { c'4 d' e' f' } } 174 >> 175 [[image of music]] 176 • The alignment of bar numbers appearing in the middle or end of a 177 system has been changed to align them on their left edge. This is 178 in keeping with the advice of Elaine Gould (‘Behind Bars’, p. 237), 179 and was mostly the consensus reached in a discussion of the issue 180 by developers. The alignment of bars at the beginning of a system 181 remains unchanged. 182 183 • ‘\bar ","’ creates a short bar line. 184 185 [[image of music]] 186 • The following predefined bar types no longer appear as a single bar 187 line at the end of a line. Annotated bar types (e.g., ‘\bar 188 "S-|"’) have been added for that purpose. 189 190 [[image of music]] 191 • ‘\bar ""’ is no longer necessary to print the first bar number. It 192 now suffices to set ‘barNumberVisibility’ to 193 ‘all-bar-numbers-visible’, or one of the other visibility settings 194 where the first bar number is visible. 195 196 Note that this is a change in behavior for scores that set 197 ‘barNumberVisibility’ to ‘all-bar-numbers-visible’ or such and 198 ‘BarNumber.break-visibility’ to ‘#t’ without having ‘\bar ""’. 199 Now, a bar number is printed at the beginning. This is just the 200 expected behavior (_all_ bar numbers should be visible), but due to 201 slightly unclear documentation, users may have used these settings 202 to print bar numbers in the middle of systems except for the first 203 bar number. In such cases, simply remove ‘\set 204 Score.barNumberVisibility = #all-bar-numbers-visible’ since 205 ‘\override BarNumber.break-visibility = ##t’ does the relevant 206 setting alone. 207 208 • The ‘\break’ command now always inserts a break, bypassing all 209 default decisions about break points. For example, it is no longer 210 necessary to insert ‘\bar ""’ to obtain a mid-measure break. 211 212 The new ‘\allowBreak’ command inserts a possible break point, 213 without forcing it, but bypassing default decisions like ‘\break’ 214 does. 215 216 • The bar line type ‘"-"’ has been removed. ‘convert-ly’ converts it 217 to ‘""’. There is a slight difference in horizontal spacing at 218 line breaks. 219 220 • ‘automaticBars’ has been removed. ‘convert-ly’ converts 221 ‘automaticBars = ##f’ to ‘measureBarType = #'()’. 222 223 • ‘\defineBarLine’ now accepts ‘#t’ in lieu of repeating the mid-line 224 glyph name. 225 226 • ‘Bar_engraver’ used to forbid line breaks between bar lines in all 227 cases, but now it only does so when the 228 ‘forbidBreakBetweenBarLines’ context property is set to ‘#t’, which 229 is the default. The ‘barAlways’ context property, which previously 230 worked around the lack of ‘forbidBreakBetweenBarLines’, has been 231 removed. 232 233 • Due to changes in the internals of ‘\bar’, it is no longer 234 supported to use it before creating lower contexts with ‘\new’. 235 Such uses will now create an extra staff. This is similar to what 236 happens with commands such as ‘\override Staff...’ (see *note 237 (lilypond-usage)An extra staff appears::). 238 239 { 240 \bar ".|:" 241 << 242 \new Staff { c' } 243 \new Staff { c' } 244 >> 245 } 246 [[image of music]] 247 The solution is to place ‘\bar’ inside the music for each staff, as 248 is usual with most commands. 249 250 << 251 \new Staff { \bar ".|:" c' } 252 \new Staff { \bar ".|:" c' } 253 >> 254 [[image of music]] 255 • The bar type ‘"-span|"’ creates a mensurstrich. 256 257 [[image of music]] 258 • ‘Staff’ contexts use the new ‘Caesura_engraver’ to notate the 259 ‘\caesura’ command. 260 261 [[image of music]] 262 Expressive mark improvements 263 ============================ 264 265 • Events attached to notes (e.g., dynamics or articulations) can be 266 delayed by an arbitrary duration using ‘\after’. This simplifies 267 many situations that previously required the use of explicit 268 polyphony and spacer rests. 269 270 { 271 \after 2 \turn g'2. a'4 272 \after 2 \< b'1 273 \after 2. \f c'' 274 <>\< \after 4 \> \after 2\! d'' 275 } 276 [[image of music]] 277 • Broken hairpins now have some left padding by default. This is in 278 line with published scores and it fixes some cases where broken 279 hairpins were vertically displaced by the key signature. 280 281 \relative { 282 \key a \major 283 c''4^\< c c c \break c c c c\! | 284 } 285 [[image of music]] 286 • The ends of hairpins may now be aligned to the ‘LEFT’, ‘CENTER’ or 287 ‘RIGHT’ of ‘NoteColumn’ grobs by overriding the property 288 ‘endpoint-alignments’. 289 290 [[image of music]] 291 • The direction of a trill spanner can now be set with direction 292 indicators like other articulations, i.e. with ‘_\startTrillSpan’ 293 or ‘^\startTrillSpan’. 294 295 • The default appearance of trill spanners has changed to better 296 match classical engraving conventions. They now end before the 297 next note, not over it. If the next note has an accidental, they 298 stop before it. If the next note is the first note of a measure, 299 they stop over the bar line instead. 300 301 [[image of music]] 302 • The padding by default for fermatas is now larger. This avoids 303 some cases where the fermata was placed too close to dots and other 304 objects. 305 306 [[image of music]] 307 • The flageolet symbol is now smaller and slightly thicker. This is 308 in line with published scores and makes the recommended workaround 309 to make it smaller (‘\tweak font-size -3 \flageolet’) unnecessary. 310 311 [[image of music]] 312 • The accent glyph is now a bit smaller. This fixes some cases where 313 a natural sign would vertically displace accents. 314 315 [[image of music]] 316 • The comma glyph shape, as used in the ‘\breathe’ command, has been 317 changed to a more common form. 318 319 [[image of music]] 320 The old glyph remains available under the name ‘raltcomma’: 321 322 { 323 \override BreathingSign.text = 324 \markup { \musicglyph "scripts.raltcomma" } 325 f'2 \breathe f' | 326 } 327 [[image of music]] 328 • The new context property ‘breathMarkType’ selects the mark that 329 ‘\breathe’ produces from several predefined types. 330 331 \fixed c' { 332 \set breathMarkType = #'tickmark 333 c2 \breathe d2 334 } 335 [[image of music]] 336 Repeat improvements 337 =================== 338 339 • Repeat alternatives may appear within the repeated section. 340 341 \repeat volta 3 { c'1 \alternative { d' e' } f' } 342 [[image of music]] 343 • The volta numbers for repeat alternatives may be set with the 344 ‘\volta’ command. 345 346 \repeat volta 3 c'1 \alternative { \volta 1 d' \volta 2,3 e' } 347 [[image of music]] 348 • The new ‘\repeat segno’ command automatically notates a variety of 349 _da-capo_ and _dal-segno_ forms. 350 351 music = \fixed c' { 352 \repeat segno 2 { 353 b1 354 } 355 \fine 356 } 357 358 \score { \music } 359 \score { \unfoldRepeats \music } 360 [[image of music]] 361 • The new ‘\fine’ command inserts a final bar line that interacts 362 gracefully with repeat bar lines. Used inside ‘\repeat’, it also 363 prints _Fine_ and ends the music after unfolding. 364 365 music = \fixed c' { 366 \repeat volta 2 { 367 f1 368 \volta 2 \fine 369 \volta 1 b1 370 } 371 } 372 373 \score { \music } 374 \score { \unfoldRepeats \music } 375 [[image of music]] 376 • The ‘\volta’ command removes music when a repeat is unfolded. 377 378 • The ‘\unfolded’ command adds music when a repeat is unfolded. 379 380 Editorial annotation improvements 381 ================================= 382 383 • The new ‘\staffHighlight’ and ‘\stopStaffHighlight’ commands can be 384 used to color a musical passage. 385 386 [[image of music]] 387 • A new grob ‘FingerGlideSpanner’ is now available, indicating a 388 finger gliding on a string from one to another position. Several 389 appearances are possible, depending on the setting of ‘style’. 390 Shown in the image are ‘line’, ‘stub-left’, ‘stub-right’ and 391 ‘stub-both’. 392 393 [[image of music]] 394 Also possible is ‘dashed-line’, ‘dotted-line’, ‘zigzag’, ‘trill’, 395 ‘bow’ and ‘none’. 396 397 • Balloons now have changeable formatting. 398 399 [[image of music]] 400 • Parenthesizing chords is supported. Currently, the font size of 401 the parentheses has to be adjusted manually. 402 403 [[image of music]] 404 • Parenthesizing spanners is supported. 405 406 [[image of music]] 407 • A “time-based” version of the ‘\parenthesize’ command was added. 408 It takes a grob path: ‘\parenthesize GROBNAME’ or ‘\parenthesize 409 CONTEXTNAME.GROBNAME’. It acts like a ‘\once \override’. This 410 interface complements the already existing form ‘\parenthesize 411 EVENT’, in a fashion similar to ‘\footnote’. 412 413 { 414 \parenthesize NoteHead 415 c'1 416 \parenthesize Staff.KeySignature 417 \key g \major 418 c'1 419 } 420 [[image of music]] 421 • Adding the ‘Melody_engraver’ to the ‘Voice’ context now works out 422 of the box to change the stem direction of the middle note 423 according to the melody. Previously, this required an additional 424 override to ‘Stem.neutral-direction’. 425 426 \new Voice \with { 427 \consists Melody_engraver 428 } 429 \relative c'' { 430 \autoBeamOff 431 g8 b a e g b a g | 432 c b d c b e d c | 433 } 434 [[image of music]] 435 The ‘suspendMelodyDecisions’ context property may be used to turn 436 off this behavior temporarily, as ‘\override Stem.neutral-direction 437 = #DOWN’ used to do. 438 439 • The new ‘Mark_tracking_translator’ takes over from ‘Mark_engraver’ 440 the decision of when to create a mark. ‘Mark_engraver’ continues 441 to control formatting and vertical placement. 442 443 By default, ‘Mark_engravers’ in multiple contexts create a common 444 sequence of marks. If independent sequences are desired, multiple 445 ‘Mark_tracking_translators’ must be used. 446 447 Text improvements 448 ================= 449 450 • New commands ‘\textMark’ and ‘\textEndMark’ are available to add an 451 arbitrary piece of text between notes, called a text mark. These 452 commands improve over the previously existing syntax with the 453 ‘\mark’ command called as ‘\mark MARKUP’ (i.e., ‘\mark "..."’ or 454 ‘\mark \markup ...’). 455 456 \fixed c' { 457 \textMark "Text mark" 458 c16 d e f e f e d c e d c e d c8 459 \textEndMark "Text end mark" 460 } 461 [[image of music]] 462 ‘\textMark’ and ‘\textEndMark’ are now the recommended way to 463 create textual marks. The use of ‘\mark’ for this purpose is still 464 supported, but discouraged (note that the ‘\mark’ command itself is 465 not discouraged, only calling it on a markup argument; ‘\mark 466 \default’ or ‘\mark NUMBER’ is still the recommended and only way 467 to create a rehearsal mark). 468 469 The new commands have several differences to ‘\mark MARKUP’. There 470 can be an arbitrary number of them at a given moment, while there 471 can only be one use of ‘\mark’. They output grobs of the dedicated 472 ‘TextMark’ type, whereas ‘\mark’ creates a ‘RehearsalMark’ grob 473 regardless of whether it is called for a rehearsal mark or a 474 textual mark; introducing this distinction allows stylesheets to 475 set different layout settings for rehearsal marks and text marks. 476 The alignment set by the new commands is different: ‘\textMark’ 477 always creates a left-aligned mark, and ‘\textEndMark’ creates a 478 right-aligned mark; in contrast, the alignment of a ‘RehearsalMark’ 479 depends on the anchor point of the object it aligns to. 480 481 See *note (lilypond-notation)Text marks:: for full details. 482 483 • Text variant glyphs for sharp, flat, natural, double sharp, and 484 double flat are now available in the Emmentaler fonts. In markup, 485 they can be easily accessed with standard Unicode values. 486 487 [[image of music]] 488 • It is now possible to control the width and the shape of (some) 489 Emmentaler digits using OpenType features. 490 491 [[image of music]] 492 • ‘\smallCaps’ now works on any markup, not just on a bare string. 493 494 • The syntax for conditions in markups was made more flexible and 495 user-friendly. It uses the new markup commands ‘\if’ and 496 ‘\unless’. Here are example replacements: 497 498 2.22 syntax 2.24 syntax 499 -------------------------------------------------------------------------------- 500 ‘\on-the-fly #first-page ...’ ‘\if \on-first-page ...’ 501 ‘\on-the-fly #not-part-first-page ...’ ‘\unless \on-first-page-of-part ...’ 502 ‘\on-the-fly #(on-page N) ...’ ‘\if \on-page #N ...’ 503 504 • With the new markup list command ‘string-lines’ it is now possible 505 to split a string at a given character. The default is to split at 506 line break. Surrounding white space gets dropped. The resulting 507 list of markups may be further formatted. This is a very 508 convenient way of entering additional stanzas for songs. 509 510 [[image of music]] 511 • The new markup command ‘\align-on-other’ translates a markup as if 512 it was aligned to another markup. 513 514 [[image of music]] 515 • Two new markup functions ‘\with-dimension’ and 516 ‘\with-dimension-from’ are available. They are similar to 517 ‘\with-dimensions’ and ‘\with-dimensions-from’, respectively, 518 modifying only a single dimension (instead of both). 519 520 • New markup commands ‘\with-true-dimension’ and 521 ‘\with-true-dimensions’ are available. They give the markup the 522 actual extent(s) of its printed ink, which may differ from the 523 default extents for some font glyphs due to text regularity 524 constraints. 525 526 [[image of music]] 527 • Text replacements can now replace strings with any markup, not just 528 with a string. 529 530 \markup 531 \replace #`(("2nd" . ,#{ \markup \concat { 2 \super nd } #})) 532 "2nd time" 533 [[image of music]] 534 • A new markup command ‘\with-string-transformer’ is available. It 535 interprets a markup with a “string transformer” installed; the 536 transformer is called when the interpretation of the markup 537 requires interpreting a string, and allows to perform modifications 538 on this string, such as changing case. 539 540 • The ‘markup->string’ function converts a markup into an approximate 541 string representation; it is used for outputting PDF metadata as 542 well as MIDI lyrics and markers. Markup commands can now define a 543 custom method to convert markups created using them into strings, 544 for use by ‘markup->string’. For example: 545 546 #(define-markup-command (upcase layout props arg) (string?) 547 #:as-string (string-upcase arg) 548 (interpret-markup layout props (string-upcase arg))) 549 550 New for specialist notation 551 *************************** 552 553 Fretted string instrument improvements 554 ====================================== 555 556 • The string tunings ‘banjo-double-c’ and ‘banjo-double-d’ were 557 added. 558 559 • A new grob ‘BendSpanner’ is now available for ‘TabStaff’, 560 indicating a bent string. Apart from the default three styles are 561 possible: ‘'hold’, ‘'pre-bend’ and ‘'pre-bend-hold’. 562 563 [[image of music]] 564 Percussion improvements 565 ======================= 566 567 • The drum notation style ‘weinberg-drums-style’ was added. It is 568 based on Norman Weinberg’s standardization work. 569 570 Wind instrument improvements 571 ============================ 572 573 • Additional display details of a ‘\woodwind-diagram’ can now be 574 specified including the angle of partially-covered-keys and the 575 display of non-graphical trill keys. 576 577 \markup { 578 \override #'(graphical . #f) 579 \override #'(woodwind-diagram-details . ((fill-angle . 90) 580 (text-trill-circled . #f))) 581 \woodwind-diagram #'flute #'((cc . (one1h)) 582 (lh . ()) 583 (rh . (besT))) 584 } 585 [[image of music]] 586 Chord notation improvements 587 =========================== 588 589 • Support for chord grids has been added. 590 591 [[image of music]] 592 • In ‘ChordNames’, multi-measure rests now also cause the “N.C.” 593 symbol to be printed, just like normal rests. 594 595 • In figured bass, ‘_’ now creates an empty figure that still takes 596 up space. 597 598 \figures { 599 <8 _ 4]> <_ 5+ 3> 600 } 601 [[image of music]] 602 • Formatting of figured bass has been improved. In particular, the 603 default size is reduced to a value used by many Urtext editions of 604 Baroque music. 605 606 • In figured bass, specially designed glyphs for ‘6\\’, ‘7\\’, and 607 ‘9\\’ are now used by default. Similarly, specially designed 608 glyphs for symbols ‘2\+’, ‘4\+’, and ‘5\+’ are used by default if 609 plus signs appear after the number. 610 611 [[image of music]] 612 Use the new command ‘\figured-bass’ to access these glyphs in 613 markup. 614 615 • In figured bass, brackets can now also be added around accidentals. 616 617 [[image of music]] 618 Ancient notation improvements 619 ============================= 620 621 • A new context ‘VaticanaLyrics’ is available. It is similar to 622 ‘Lyrics’, providing a hyphenation style (a single, flush-left 623 hyphen between two syllables) as used in the notational style of 624 Editio Vaticana. 625 626 • The predefined commands for Gregorian divisiones are no longer 627 variations on ‘\breathe’. ‘\divisioMinima’, ‘\divisioMaior’, 628 ‘\divisioMaxima’, and ‘\virgula’ are variations on the basic 629 ‘\caesura’. ‘\finalis’ is equivalent to ‘\section’. 630 631 ‘MensuralStaff’ and ‘VaticanaStaff’ use ‘Divisio_engraver’ to 632 interpret the above commands as well as ‘\repeat volta’ and 633 ‘\fine’. 634 635 \new MensuralStaff \fixed c' { 636 \repeat volta 2 { f2 f } 637 g1 638 a1 \section 639 b1 \fine 640 } 641 [[image of music]] 642 • ‘KievanStaff’, ‘MensuralStaff’, ‘PetrucciStaff’, and 643 ‘VaticanaStaff’ now allow line breaks anywhere, and they no longer 644 create ‘""’ measure bar lines. 645 646 • In ‘GregorianTranscriptionStaff’, divisiones are now engraved as 647 ‘BarLine’ grobs by default. To change them to ‘Divisio’ grobs, use 648 ‘\EnableGregorianDivisiones’. 649 650 • ‘GregorianTranscriptionStaff’ allows a line break after any note 651 and no longer uses ‘Time_signature_engraver’. 652 653 • ‘GregorianTranscriptionVoice’ no longer uses ‘Stem_engraver’. 654 655 World music improvements 656 ======================== 657 658 • Support for Persian classical music is now available. For this, 659 two accidental glyphs, _sori_ and _koron_, have been added to 660 LilyPond. 661 662 \include "persian.ly" 663 664 \relative c' { 665 \key d \chahargah 666 bk'8 a gs fo r g ak g | 667 fs ek d c d ef16 d c4 | 668 } 669 [[image of music]] 670 Miscellaneous improvements 671 ************************** 672 673 • In the Emmentaler font, identical-looking noteheads whose only 674 difference was stem direction have been consolidated into a single 675 glyph. For instance, the glyphs ‘noteheads.u2triangle’ and 676 ‘noteheads.d2triangle’ have been replaced by a single glyph, 677 ‘noteheads.s2triangle’. Notehead pairs that look visually 678 different depending on the direction remain distinct. 679 680 In addition, the ‘stem-attachment’ property of ‘NoteHead’ grobs now 681 returns its actual, direction-dependent stem attachment point 682 instead of a hypothetical upwards-stem attachment point. 683 684 • Two redundant glyphs in the Emmentaler font have been removed: 685 ‘scripts.trillelement’ (use ‘scripts.trill_element’ instead) and 686 ‘scripts.augmentum’ (use ‘dots.dotvaticana’ instead). 687 688 • Using ‘\paper { bookpart-level-page-numbering = ##t}’, it is now 689 possible to make bookparts independent with respect to page 690 numbering. If this is used for all bookparts, each bookpart has 691 its own numbering sequence, starting at 1 by default. It can also 692 be used in an individual bookpart, which is useful to achieve the 693 standard practice of numbers pages in an analytical introduction 694 independently and in roman numerals (the latter is achieved using 695 ‘page-number-type = #'roman-lower’). 696 697 • A new grob callback function ‘break-alignment-list’ is now 698 available for returning different values depending on a grob’s 699 break direction. As an example, use it to provide different 700 alignments of a grob depending on whether it is positioned at the 701 beginning, the middle, or the end of a line. 702 703 [[image of music]] 704 • The new ‘Mark_performer’ creates MIDI Marker events like 705 ‘Mark_engraver’ creates printed marks. 706 707 • Properties of ‘PaperColumn’ and ‘NonMusicalPaperColumn’ (such as 708 ‘NonMusicalPaperColumn.line-break-system-details’) can now be 709 overridden mid-music with the usual command ‘\once \override’. 710 They used to be a special case requiring the ‘\overrideProperty’ 711 command. 712 713 • The new ‘show-horizontal-skylines’ and ‘show-vertical-skylines’ 714 properties allow to display an object’s skylines. This is more 715 flexible than the already existing ‘debug-skylines’ option because 716 it works for all grobs. While primarily meant for debugging 717 LilyPond, this can be useful when trying to understand spacing 718 decisions or overriding stencils in Scheme. 719 720 [[image of music]] 721 • The new command ‘\vshape’ is like ‘\shape’, but also shows the 722 control points and polygon for easier tweaking. 723 724 { a1\vshape #'((0 . 0) (0 . 0.5) (0 . 0.9) (0 . 0.4))^( c'1) } 725 [[image of music]] 726 • ‘\markup \path’ now also works in SVG output even if the path does 727 not begin with a ‘moveto’ or ‘rmoveto’ command. Also, it now 728 accepts single-letter SVG equivalents (‘moveto’ = ‘M’, etc.). 729 730 • ‘set-default-paper-size’ and ‘set-paper-size’ now accept a custom 731 paper size. 732 733 #(set-default-paper-size '(cons (* 100 mm) (* 50 mm))) 734 735 • ‘lilypond-book’ supports two new music fragment options 736 ‘paper-width’ and ‘paper-height’ to set a custom paper size. 737 738 • ‘lilypond-book’ supports a new snippet option ‘inline’ for inline 739 music, that is, music snippets like [[image of music]] that appear within a paragraph 740 of text. 741 742 • The ‘lilypond-book’ script now allows braces in the argument of the 743 commands ‘\lilypond’ (for LaTeX) and ‘@lilypond’ (for Texinfo). 744 745 • ‘lilypond-book’ now appends the current directory as the last entry 746 to search for included files, instead of prepending it to the list 747 of specified include paths. This allows include directories to 748 shadow files from the current directory, and will only be noticed 749 if there are files with the same name in both. 750 751 • The new Scheme function ‘universal-color’ provides an eight-element 752 color palette designed to be unambiguous to people with 753 dichromatism. 754 755 [[image of music]] 756 • The ‘-dembed-source-code’ option now also embeds images added with 757 ‘\epsfile’ and files included with ‘\verbatim-file’. 758 759 • The default of the ‘aux-files’ program option changed to ‘#f’. If 760 you are calling LilyPond with the ‘-dbackend=eps’ argument and need 761 the auxiliary ‘.tex’ and ‘.texi’ files, you now have to specify 762 ‘-daux-files’ explicitly. The formats for ‘lilypond-book’ images 763 can be set separately for the tall page image (typically PNG for 764 HTML output) and per-system images (typically, EPS or PDF for 765 printed output) with the ‘-d’ sub-options ‘-dtall-page-formats’ and 766 ‘-dseparate-page-formats’ respectively. 767 768 • The ‘big point’ unit (1bp = 1/72in) is now available by appending 769 ‘\bp’ to length values. 770 771 • Scheme-defined translators usable in both ‘\layout’ and ‘\midi’ can 772 now be created with ‘make-translator’. Scheme-defined performers 773 usable only in ‘\midi’ can now be created with ‘make-performer’. 774 Those macros work strictly like the previously existing macro 775 ‘make-engraver’ for creating engravers only usable in ‘\layout’. 776 777 • Scheme translators can now define a new slot called 778 ‘pre-process-music’. It is called on all translators, after all 779 listeners but before all ‘process-music’ slots. This can be used 780 for processing that depends on all events heard but needs to set 781 context properties before other translators read them. 782 783 • Scheme translators can now contain listeners written as 784 785 (listeners 786 ((event-class engraver event #:once) 787 ...)) 788 789 These are never triggered more than once per time step. They emit 790 a warning if they receive two events in the same time step, except 791 if the events are equal. 792 793 • The same grob definition can now be used to create grobs of 794 different classes (‘Item’, ‘Spanner’, ‘Paper_column’, ‘System’). 795 As part of this change, the grob types ‘FootnoteItem’ and 796 ‘FootnoteSpanner’ were consolidated into a single type ‘Footnote’. 797 Similarly, ‘BalloonTextSpanner’ and ‘BalloonTextItem’ are unified 798 into ‘BalloonText’. 799 800 When the grob definition does not mandate a class, engravers should 801 choose what class to create a grob with. For authors of Scheme 802 engravers, this means using either ‘ly:engraver-make-item’ or 803 ‘ly:engraver-make-spanner’. The utility function 804 ‘ly:engraver-make-sticky’ is provided to support the frequent case 805 of _sticky_ grobs, such as footnotes and balloons. It creates a 806 grob with the same class as another grob and administrates parents 807 and bounds. 808 809 • The new command-line option ‘-dcompile-scheme-code’, also settable 810 in the LilyPond input with ‘#(ly:set-option 'compile-scheme-code)’, 811 provides with better diagnostics when running Scheme code leads to 812 an error. Internally, this uses the byte-compiler provided by 813 Guile, instead of the interpreter. 814 815 However, due to a limitation in Guile, this currently has the 816 disadvantage of making it impossible to run more than a few 817 thousand Scheme expressions. Also, be aware that the Guile 818 compiler has a few differences to the interpreter. For example, 819 constant parts of quasiquotes are made actual constants more 820 aggressively, making code such as ‘(let ((x 4)) (sort! `(,x 3 2 821 1)))’ produce an error because the “cdr” of the quasiquoted list is 822 constant, and it is an error in Scheme to mutate literal data. (In 823 this specific case, the code could avoid the issue by using the 824 non-destructive ‘sort’, or by creating a fresh list each time with 825 ‘(list x 3 2 1)’.) 826 827 Furthermore, this option does not currently work on Windows. 828 829 Notes on Guile 2.2 830 ****************** 831 832 This version of LilyPond switches from Guile 1.8 to Guile 2.2. This 833 section lists some of the most common incompatibilities that you could 834 have to deal with in order to upgrade your Scheme code. 835 836 A full, detailed log of changes in Guile can be found in the ‘NEWS’ 837 file (https://git.savannah.gnu.org/cgit/guile.git/tree/NEWS) of the 838 Guile source. 839 840 • The ‘format’ function now requires a boolean or port as the first 841 argument. This argument was optional in Guile 1.8. In order to 842 make the function return the formatted output as a string, like 843 ‘format’ does without this argument in Guile 1.8, pass ‘#f’ for 844 this argument, i.e., ‘(format #f "STRING" ARGUMENTS ...)’ instead 845 of ‘(format "STRING" ARGUMENTS ...)’. 846 847 • The rules for internal (i.e., non-toplevel) definitions have become 848 stricter. Definitions are no longer allowed in various expression 849 contexts. This is no longer valid, for example: 850 851 (if (not (defined? 'variable)) 852 (define variable 'value)) 853 854 The solution in this particular example is: 855 856 (define variable 857 (if (not (defined? 'variable)) 858 'value 859 variable)) 860 861 • Strings now support Unicode characters. Previously, a Unicode 862 character was represented by several characters, and various 863 functions were not tailored for Unicode support. 864 865 • Some numeric functions now return exact results in more cases. For 866 instance, ‘(sqrt 4)’ returns ‘2.0’ in Guile 1.8, but ‘2’ (an 867 integer) in Guile 2.2. 868