LilyPond 2.22.0 release

Recommendations concerning notation and publishing software in a non-partisan environment.
Post Reply
User avatar
Schneider
Posts: 111
Joined: 09 Oct 2015, 06:50
Location: Paris

LilyPond 2.22.0 release

Post by Schneider »

The last stable version of LilyPond is released: http://lilypond.org/download.html

Example:
elegy.jpg
elegy.jpg (150.54 KiB) Viewed 2487 times
Vyssotsky_Elegy_Ophee.pdf
(102.74 KiB) Downloaded 170 times
The example coding:

Code: Select all

\version "2.22.0"
#(set-global-staff-size 18)
\pointAndClickOff

globalVyssotskyElegy = {
  \clef "G_8"
  \key g\major
  \time 6/8
}

voixUnVyssotskyElegy = {
  \repeat volta 2 {
    | % mes.1
      b'4.~8 e'' b'
    | % mes.2
      ais'4. 4.
    | % mes.3
      a'!4.~8 b'\arpeggio fis'
    | % mes.4
      a'4. g'
    | % mes.5
      g'4.~8 <e' c''> g'
    | % mes.6
      fis'4. 4.
    | % mes.7
      fis'4. 8 <a dis' g'>\arpeggio dis'
    | % mes.8
      fis'4. e'
  }
  \repeat volta 2 {
    | % mes.9
      d''4.~ 8 c''b'
    | % mes.10
      b'4. a'
    | % mes.11
      c''4.~8 b' a'
    | % mes.12
      a'4. g'
    | % mes.13
      b'4.~ 8 a' g'
    | % mes.14
      g'4. fis'
  }
  \alternative {
    {
      | % mes.15a
        fis'4.~ 8 8\arpeggio e'
      | % mes.16a
        \once\override Score.BarNumber.stencil = 
          #(lambda (grob) 
             (grob-interpret-markup grob #{ \markup\italic "16a" #}))
        e'4. dis'
    }
    {
      | % mes.15b
        \set Score.currentBarNumber = 15
        fis'4. a'8\rest b'\fermata dis'
    }
  }
  \mark\markup\musicglyph #"scripts.segno"
  \bar "||"
  | % mes.16b
    fis'4. e'
  \repeat volta 2 {
    | % mes.17
      fis'4.~ 8 g' a'
    | % mes.18  
      a'4. g'
    | % mes.19
      gis'4.~ 8 a' b'
    | % mes.20
      b'4. a'
  }
  \alternative {
    {
      | % mes.21a
        e''4.~ 8 d'' c''
      | % mes.22a
        c''4. b'
      | % mes.23a
        \once\override Score.BarNumber.stencil = 
          #(lambda (grob) 
             (grob-interpret-markup grob #{ \markup\italic "23a" #}))
        g'4.~ 8 <e' fis'>\arpeggio\fermata e'
      | % mes.24a
        e'4. dis'
    }
    {
      | % mes.21b
        \set Score.currentBarNumber = 21
        e''4.~ 8 fis'' e''
    }
  }       
  | % mes.22b
    b'4.~ 8 c'' b'
  | % mes.23b
    \once\override Score.BarNumber.stencil = 
          #(lambda (grob) 
             (grob-interpret-markup grob #{ \markup\italic "23b" #}))
    g'4. 8 <dis' g'>\arpeggio dis'
  | % mes.24b
    fis'4. e'
  \tweak self-alignment-X #RIGHT
  \tweak direction #DOWN
  \tweak extra-offset #'(2 . 1)
  \mark\markup\fontsize #-2 \vcenter { 
    \italic "D.C. al" \musicglyph #"scripts.segno" 
    \italic"e poi la Coda" \hspace #-3
  }
  \bar "||"
  \set Timing.measureLength = #(ly:make-moment 1/4) 
  \stopStaff s4 \startStaff
  \set Timing.measureLength = #(ly:make-moment 6/8)
  \once\override Staff.Clef.break-visibility = #all-visible
  \once\override Staff.Clef.X-extent = #'(-.7 . 2)
  \once\override Staff.ClefModifier.X-offset = #.7
  \bar "" \clef "G_8" \key g\major
  \mark\markup\vcenter { \larger\musicglyph #"scripts.coda" "Coda" }
  | % mes.25
    fis'4. e'8 g' b'
  | % mes.26
    <e e' e''>4.\arpeggio <g b e'>\arpeggio
  \bar "|."
}

voixDeuxVyssotskyElegy = {
  \repeat volta 2 {
    | % mes.1
      e,4.\tweak X-offset #-4.2 \mf a,4\rest a,8\rest 
    | % mes.2
      cis4. fis
    | % mes.3
      dis4. fis
    | % mes.4
      e,2.
    | % mes.5
      c4. e,
    | % mes.6
      cis2.
    | % mes.7
      c!4. b,
    | % mes.8
      e,2.
  }
  \repeat volta 2 {
    | % mes.9
      e,2.
    | % mes.10
      a,2.
    | % mes.11
      a4. d 
    | % mes.12
      g4. a,4\rest a,8\rest
    | % mes.13
      e,2.
    | % mes.14
      a,4. a,4\rest a,8\rest
  }
  \alternative {
    {
      | % mes.15a
        cis4. c
      | % mes.16a
        b,2.
    }
    {
      | % mes.15b
        cis4. dis\fermata
    }
  }
  \bar "||"
  | % mes.16b
    e,2. 
  \repeat volta 2 {
    | % mes.17
      a,4. e, 
    | % mes.18  
      g4. a,4\rest a,8\rest 
    | % mes.19
      e,4. e
    | % mes.20
      a,4. a,4\rest a,8\rest
  }
  \alternative {
    {
      | % mes.21a
        a,4. a,4\rest a,8\rest
      | % mes.22a
        e,2.
      | % mes.23a
        c4. cis\fermata
      | % mes.24a
        b,2.
    }
    {
      | % mes.21b
        a,4. a,4\rest a,8\rest
      }
  }       
  | % mes.22b
    e,2.
  | % mes.23b
    cis4. b,
  | % mes.24b
    e,2.
  \bar "||"
 \stopStaff s4 \startStaff
  | % mes.25
    e,2. 
  | % mes.26
    e,4.\arpeggio e,\arpeggio
  \bar "|."
}

voixTroiVyssotskyElegy = {
  \repeat volta 2 {
    | % mes.1
      b8\rest g b e' e'' b'
    | % mes.2
      b8\rest cis' e' c'\rest cis' e'
    | % mes.3
      b8\rest c'! fis' c'\rest <a d'>\arpeggio fis'
    | % mes.4
      b8\rest b e' b\rest b e'
    | % mes.5
    b8\rest c' e' b4\rest b8\rest
    | % mes.6
      b8\rest ais e' a\rest ais e'
    | % mes.7
      a8\rest a! dis' a4.\rest 
    | % mes.8
      g8\rest g b g\rest g b
  }
  \bar ":|.|:"
  \repeat volta 2 {
    | % mes.9
      b8\rest b f' gis' c'' b'
    | % mes.10
      b8\rest c' e' b\rest c' e'
    | % mes.11
      e'8\rest ees' fis'? b4\rest b8\rest
    | % mes.12
      d'8\rest c' fis' b\rest b d'
    | % mes.13
      b8\rest g b e' a' g'
    | % mes.14
      b8\rest c' e' a\rest c' e'
  }
  \alternative {
    {
      | % mes.15a
        b8\rest ais e' b\rest <a e'>\arpeggio e'
      | % mes.16a
        a8\rest fis a g\rest fis a
    }
    {
      | % mes.15b
        a8\rest ais e' b\rest a_\fermata dis'
    }
  }
  \bar "||"
  | % mes.16b
    g8\rest g b g\rest g b
  \repeat volta 2 {
    | % mes.17
      g8\rest c' d' a4\rest b8\rest
    | % mes.18  
      d'8\rest c' fis' b\rest b d'
    | % mes.19
      b8\rest d' e' b4\rest b8\rest
    | % mes.20
      b8\rest c' e' b\rest c' e'
  }
  \alternative {
    {
      | % mes.21a
        b8\rest c' e' a' d'' c''
      | % mes.22a
        b8\rest e' g' b\rest e' g'
      | % mes.23a
        b8\rest ais e' b\rest ais\arpeggio_\fermata e'
      | % mes.24a
        g8\rest fis a! g\rest fis a
    }
    {
      | % mes.21b
        b8\rest c' e' a' fis'' e''
      }
  }       
  | % mes.22b
    b8\rest g b e' c''b'
  | % mes.23b
    b8\rest ais e' b\rest a\arpeggio dis'
  | % mes.24b
    g8\rest g b g\rest g b
  \bar "||"
  \stopStaff s4 \startStaff
  | % mes.25
    g8\rest g b e' g' b'
  | % mes.26
    s2.
  \bar "|."
}

\paper {
  ragged-last-bottom = ##f
  top-margin = 15
  bottom-margin = 15
  left-margin = 15
  right-margin = 15
  page-count = 1
}

\header {
  title = \markup\fontsize #2 "Elegy"
  subtitle = \markup\with-color #red \lower #2 {
    \override #'(thickness . 3)
    \override #'(box-padding . 0.5)
    \box\normal-text\sans\fontsize #1 \with-dimensions-from "Lilioond v.2.22 " "LilyPond v.2.22" 
  }
  composer = \markup\override #'(baseline-skip . 2.5)\center-column {
      \vspace #-2  \italic "Attributed to" "Mikhail Vyssotsky" 
      \concat\smaller\italic { "(1791"  \hspace #.2 "–" \hspace #.2 "1837)" } 
      \vspace #1
    }
  poet = \markup\override #'(baseline-skip . 2.5)\center-column {
      \vspace #-2  \italic "Arranged for 6-string guitar by" "Matanya Ophee" 
      \concat\smaller\italic { "(1932"  \hspace #.2 "–" \hspace #.2 "2017)" }
      \vspace #1
    }
  copyright = \markup\override #'(baseline-skip . 2)\center-column\fontsize #-3 {
      \vspace #1  \line { 
        "Copyright" \concat { "©" \hspace #.1 "1997" }
        "Editions Orphée, Inc., Columbus, OH, 43235" 
      }
      "International Copyright Secured. Made in U.S.A. All Rights Reserved." 
      \vspace #-.5
    }
  tagline = ""
}

\score {
  \new Staff <<
    \new Voice { \voiceOne \globalVyssotskyElegy \voixUnVyssotskyElegy }
    \new Voice { \voiceTwo \globalVyssotskyElegy \voixDeuxVyssotskyElegy }
    \new Voice { \voiceThree \stemDown \globalVyssotskyElegy \voixTroiVyssotskyElegy }
  >>
  \layout {
    indent = 10
    system-count = 7
    \context {
      \Score
      \override BarNumber.font-shape = #'italic
      \override BarNumber.font-size = #-2
      \override BarNumber.X-offset= #.3
      \override BarNumber.Y-offset = #4
    }
    \context {
      \Staff
      \consists "Span_arpeggio_engraver"
      connectArpeggios = ##t
    }
  }
}
Some syntax have been simplified and new ones have been added. A full list of noteworthy new features is given in: http://lilypond.org/doc/v2.22/Documenta ... index.html

Taking a look at the regression tests gives a nice idea of LilyPond's capabilities: http://lilypond.org/doc/v2.22/input/reg ... files.html

Cheers!
Pierre
User avatar
OCTO
Posts: 1742
Joined: 05 Oct 2015, 06:52
Location: Sweden

Re: LilyPond 2.22.0 release

Post by OCTO »

Thanks. It looks very good.

(I would love if we could create or find another "example", since this one is so limited in various symbols and settings.)
Freelance Composer. Self-Publisher.
Finale 27.3 • Sibelius 2023.5• MuseScore 4+ • Logic Pro X+ • Ableton Live 11+ • Digital Performer 10+ /// MacOS Monterey (secondary in use systems: Fedora 35, Windows 10)
Post Reply