]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/music-functions-init.ly
Fix 1477: Add (ly:expect-warning msg args) to suppress expected warnings
[lilypond.git] / ly / music-functions-init.ly
index a4e3f343ea88dcf41c8cca4fce6221028eaf967f..c8054927b025df5ebfad68bf88f02cef14e63df9 100644 (file)
@@ -38,18 +38,16 @@ acciaccatura =
 %% keep these two together
 "instrument-definitions" = #'()
 addInstrumentDefinition =
-#(define-music-function
+#(define-scheme-function
    (parser location name lst) (string? list?)
    (_i "Create instrument @var{name} with properties @var{list}.")
-   (set! instrument-definitions (acons name lst instrument-definitions))
-   (make-music 'SequentialMusic 'void #t))
+   (set! instrument-definitions (acons name lst instrument-definitions)))
 
 addQuote =
-#(define-music-function (parser location name music) (string? ly:music?)
+#(define-scheme-function (parser location name music) (string? ly:music?)
    (_i "Define @var{music} as a quotable music expression named
 @var{name}")
-   (add-quotable parser name music)
-   (make-music 'SequentialMusic 'void #t))
+   (add-quotable parser name music))
 
 %% keep these two together
 afterGraceFraction = #(cons 6 8)
@@ -87,6 +85,19 @@ markups), or inside a score.")
               'elements (list (make-music 'PageTurnEvent
                                           'break-permission 'allow))))
 
+appendToTag =
+#(define-music-function (parser location tag more music)
+   (symbol? ly:music? ly:music?)
+   (_i "Append @var{more} to the @code{elements} of all music
+expressions in @var{music} that are tagged with @var{tag}.")
+   (music-map (lambda (m)
+               (if (memq tag (ly:music-property m 'tags))
+                   (set! (ly:music-property m 'elements)
+                         (append (ly:music-property m 'elements)
+                                 (list more))))
+               m)
+             music))
+
 applyContext =
 #(define-music-function (parser location proc) (procedure?)
    (_i "Modify context properties with Scheme procedure @var{proc}.")
@@ -183,17 +194,15 @@ bendAfter =
               'delta-step delta))
 
 bookOutputName =
-#(define-music-function (parser location newfilename) (string?)
+#(define-scheme-function (parser location newfilename) (string?)
    (_i "Direct output for the current book block to @var{newfilename}.")
-   (set! book-filename newfilename)
-   (make-music 'SequentialMusic 'void #t))
+   (set! book-filename newfilename))
 
 bookOutputSuffix =
-#(define-music-function (parser location newsuffix) (string?)
+#(define-scheme-function (parser location newsuffix) (string?)
    (_i "Set the output filename suffix for the current book block to
 @var{newsuffix}.")
-   (set! book-output-suffix newsuffix)
-   (make-music 'SequentialMusic 'void #t))
+   (set! book-output-suffix newsuffix))
 
 %% \breathe is defined as a music function rather than an event identifier to
 %% ensure it gets useful input location information: as an event identifier,
@@ -402,6 +411,8 @@ grace =
    (_i "Insert @var{music} as grace notes."))
 
 harmonicByFret = #(define-music-function (parser location fret music) (number? ly:music?)
+  (_i "Convert @var{music} into harmonics; the resulting notes resemble
+harmonics played on a fretted instrument by touching the strings above @var{fret}.")
   (let* ((fret (number->string fret))
          (pitch (fret->pitch fret)))
         (make-sequential-music
@@ -416,6 +427,9 @@ harmonicByFret = #(define-music-function (parser location fret music) (number? l
           #}))))
 
 harmonicByRatio = #(define-music-function (parser location ratio music) (number? ly:music?)
+    (_i "Convert @var{music} into harmonics; the resulting notes resemble
+harmonics played on a fretted instrument by touching the strings above the point
+given through @var{ratio}.")
   (let ((pitch (ratio->pitch ratio))
         (fret (ratio->fret ratio)))
        (make-sequential-music
@@ -487,27 +501,24 @@ label =
 
 
 language =
-#(define-music-function (parser location language) (string?)
+#(define-scheme-function (parser location language) (string?)
    (_i "Set note names for language @var{language}.")
-   (note-names-language parser language)
-   (make-music 'Music 'void #t))
+   (note-names-language parser language))
 
 languageSaveAndChange =
-#(define-music-function (parser location language) (string?)
+#(define-scheme-function (parser location language) (string?)
   (_i "Store the previous pitchnames alist, and set a new one.")
   (set! previous-pitchnames pitchnames)
-  (note-names-language parser language)
-  (make-music 'Music 'void #t))
+  (note-names-language parser language))
 
 languageRestore =
-#(define-music-function (parser location) ()
+#(define-scheme-function (parser location) ()
    (_i "Restore a previously-saved pitchnames alist.")
    (if previous-pitchnames
        (begin
         (set! pitchnames previous-pitchnames)
         (ly:parser-set-note-names parser pitchnames))
-      (ly:input-warning location (_ "No other language was defined previously. Ignoring.")))
-   (make-music 'Music 'void #t))
+      (ly:input-warning location (_ "No other language was defined previously. Ignoring."))))
 
 
 makeClusters =
@@ -655,7 +666,7 @@ pageTurn =
                                           'break-permission 'force))))
 
 parallelMusic =
-#(define-music-function (parser location voice-ids music) (list? ly:music?)
+#(define-scheme-function (parser location voice-ids music) (list? ly:music?)
    (_i "Define parallel music sequences, separated by '|' (bar check signs),
 and assign them to the identifiers provided in @var{voice-ids}.
 
@@ -832,6 +843,18 @@ print @var{secondary-note} as a stemless note head in parentheses.")
                            trill-events)))))
      main-note))
 
+pushToTag =
+#(define-music-function (parser location tag more music)
+   (symbol? ly:music? ly:music?)
+   (_i "Add @var{more} to the front of @code{elements} of all music
+expressions in @var{music} that are tagged with @var{tag}.")
+   (music-map (lambda (m)
+               (if (memq tag (ly:music-property m 'tags))
+                   (set! (ly:music-property m 'elements)
+                         (cons more (ly:music-property m 'elements))))
+               m)
+             music))
+
 quoteDuring =
 #(define-music-function (parser location what main-music) (string? ly:music?)
    (_i "Indicate a section of music to be quoted.  @var{what} indicates the name
@@ -842,6 +865,14 @@ usually contains spacers or multi-measure rests.")
                'element main-music
                'quoted-music-name what))
 
+relative =
+#(define-music-function (parser location pitch music)
+   ((ly:pitch? (ly:make-pitch 0 0 0)) ly:music?)
+   (_i "Make @var{music} relative to @var{pitch} (default @code{c'}).")
+   (ly:make-music-relative! music pitch)
+   (make-music 'RelativeOctaveMusic
+              'element music))
+
 removeWithTag =
 #(define-music-function (parser location tag music) (symbol? ly:music?)
    (_i "Remove elements of @var{music} that are tagged with @var{tag}.")