info-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

LilyPond 2.3.1 released


From: Han-Wen Nienhuys
Subject: LilyPond 2.3.1 released
Date: Sun, 9 May 2004 15:12:11 +0200


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   |   address@hidden   |   http://www.xs4all.nl/~hanwen 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]