]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/music-functions-init.ly
* scm/page-layout.scm (plain-header): add printpagenumber boolean
[lilypond.git] / ly / music-functions-init.ly
index 7eeae8d54c3c21058741659e8607ea2d040e58eb..e13994fe3fb50b37b718416ffef6a0422d40f4d0 100644 (file)
@@ -1,11 +1,54 @@
-applymusic = #(ly:make-music-function
-   (list procedure? ly:music?) ; signature
-   (lambda (where func music)  ; the function
-     (func music)))
+\version "2.3.2"
 
-\version "2.3.1"
 
+applymusic = #(def-music-function (location func music) (procedure? ly:music?)
+               (func music))
 
+addlyrics = #(def-music-function (location music lyrics) (ly:music? ly:music?)
+              (make-music 'LyricCombineMusic 
+                          'origin location
+                          'elements (list music lyrics)))
+
+grace = #(def-grace-function startGraceMusic stopGraceMusic)
+acciaccatura = #(def-grace-function startAcciaccaturaMusic stopAcciaccaturaMusic)
+appoggiatura = #(def-grace-function startAppoggiaturaMusic stopAppoggiaturaMusic)
+
+partcombine = #(def-music-function (location part1 part2) (ly:music? ly:music?)
+                (make-part-combine-music (list part1 part2)))
+
+autochange = #(def-music-function (location music) (ly:music?)
+               (make-autochange-music music))
+
+applycontext = #(def-music-function (location proc) (procedure?)
+                 (make-music 'ApplyContext 
+                   'origin location
+                   'procedure proc))
+
+applyoutput = #(def-music-function (location proc) (procedure?)
+                (make-music 'ApplyOutputEvent 
+                  'origin location
+                  'procedure proc))
+
+breathe = #(def-music-function (location) ()
+            (make-music 'EventChord 
+              'origin location
+              'elements (list (make-music 'BreathingSignEvent))))
+
+%% \mytag #'foo { ... } ==> OK
+%% c-\mytag #'foo ^4    ==> KO
+%{
+#(use-modules (srfi srfi-1))
+#(define-public (symbol-or-symbols? obj)
+  "Return #t iif obj is a symbol or a symbol list."
+  (or (symbol? obj)
+      (and (list? obj)
+           (null? (remove symbol? obj)))))
+
+mytag = #(def-music-function (location tagname music) (symbol-or-symbols? ly:music?)
+        (set! (ly:music-property music 'tags)
+              ((if (list? tagname) append cons) tagname (ly:music-property music 'tags)))
+        music)
+%}
 
 %{
 
@@ -13,15 +56,7 @@ TODO:
 
 remove these from the parser, and softcode here:
 
- * \addlyrics
  * \tag
- * \appoggiatura, \acciaccatura, \grace
- * \partcombine
- * \autochange
- * \applycontext
- * \applyoutput
- * \breathe
-
 
 with small syntax changes, we could also do