LilyPond 2.3.1 released

Han-Wen Nienhuys <[email protected]>
Newsgroups gmane.comp.gnu.lilypond.announce
Message-ID <[email protected]>

LilyPond 2.3.1 is released.  This development release sports a great
number of new features.

Enjoy!

   * The `--safe' mode has been revisited: it makes the basic ly:
     interface available, and stops malicious TeX code.

   * Music syntax can now be extended seamlessly. As an example, here
     is the new implementation `\applymusic',

            applymusic = #(ly:make-music-function
               (list procedure? ly:music?) ; signature
               (lambda (where func music)  ; the function
                 (func music)))

   * `\apply' has been renamed to `\applymusic'.

   * Music can be used as a markup.  When inserting a `score' block as
     part of a `\markup', it produces a rendered markup of the music.


   * LilyPond expressions can be embedded into Scheme. The syntax for
     this is `#{ ... #}'. Within such a block, Scheme forms can be
     introduced using a `$' character (`$$' results in a single `$'
     character).  These forms are then printed in the pattern.

          #(define (textoffset dx dy)
             (ly:export
               #{ \override Voice.TextScript #'extra-offset = #(cons $dx $dy) #}))

          \score {
            \notes {
              c'^"normal text"
              %% the following statement is the same as
              %% \override Voice.TextScript #'extra-offset = #(cons 2 -3)
              #(textoffset 2 -3)
              c'^"text with offset"
            }
          }

   * Music lists are allowed at toplevel.

          \header { title = "The Title" }
          \notes { a b c }

     is the same as

          \header { title = "The Title" }
          \book {
            \score {
              \notes { a b c }
            }
          }

     These toplevel forms are handled by
     `default-toplevel-music-handler'.  Similarly, a `score' block at
     toplevel is handled by `default-toplevel-score-handler' an a
     `book' at toplevel is handled by `default-toplevel-book-handler'.

   * Start pitch for `relative' music is optional for music lists.  The
     default value is one octave below middle C.

   * Combining lyrics with music can be `\newlyrics'

          <<
              \relative {
          	\clef bass
          	d2 d c4 bes a2 \break
              }
              \newlyrics {
          	My first Li -- ly song,
              }
              \newlyrics {
          	Not much can go wrong!
              }
          >>

     Syntactically, `\newlyrics' acts like an infix operator.



-- 

 Han-Wen Nienhuys   |   [email protected]   |   http://www.xs4all.nl/~hanwen
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.