%% keep these two together
"instrument-definitions" = #'()
addInstrumentDefinition =
-#(define-scheme-function
+#(define-void-function
(parser location name lst) (string? list?)
(_i "Create instrument @var{name} with properties @var{list}.")
(set! instrument-definitions (acons name lst instrument-definitions)))
addQuote =
-#(define-scheme-function (parser location name music) (string? ly:music?)
+#(define-void-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))
'break-permission 'allow))))
appendToTag =
-#(define-music-function (parser location tag music more)
+#(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-copy (lambda (m)
- (if (memq tag (ly:music-property m 'tags))
- (begin
- (set! m (music-clone m))
- (set! (ly:music-property m 'elements)
- (append (ly:music-property m 'elements)
- (list more)))))
- m)
- music))
+ (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?)
assertBeamQuant =
#(define-music-function (parser location l r) (pair? pair?)
(_i "Testing function: check whether the beam quants @var{l} and @var{r} are correct")
- (make-grob-property-override 'Beam 'positions
- (ly:make-simple-closure
- (ly:make-simple-closure
- (append
- (list chain-grob-member-functions `(,cons 0 0))
- (check-quant-callbacks l r))))))
+ (make-grob-property-override 'Beam 'positions (check-quant-callbacks l r)))
% for regression testing purposes.
assertBeamSlope =
#(define-music-function (parser location comp) (procedure?)
(_i "Testing function: check whether the slope of the beam is the same as @code{comp}")
- (make-grob-property-override 'Beam 'positions
- (ly:make-simple-closure
- (ly:make-simple-closure
- (append
- (list chain-grob-member-functions `(,cons 0 0))
- (check-slope-callbacks comp))))))
+ (make-grob-property-override 'Beam 'positions (check-slope-callbacks comp)))
autochange =
#(define-music-function (parser location music) (ly:music?)
'delta-step delta))
bookOutputName =
-#(define-scheme-function (parser location newfilename) (string?)
+#(define-void-function (parser location newfilename) (string?)
(_i "Direct output for the current book block to @var{newfilename}.")
(set! book-filename newfilename))
bookOutputSuffix =
-#(define-scheme-function (parser location newsuffix) (string?)
+#(define-void-function (parser location newsuffix) (string?)
(_i "Set the output filename suffix for the current book block to
@var{newsuffix}.")
(set! book-output-suffix newsuffix))
end-ev-chord))))
total)
- (ly:input-message location (_ "argument endSpanners is not an EventChord: ~a" music))))
+ (begin
+ (ly:input-message location (_ "argument endSpanners is not an EventChord: ~a" music))
+ music)))
language =
-#(define-scheme-function (parser location language) (string?)
+#(define-void-function (parser location language) (string?)
(_i "Set note names for language @var{language}.")
(note-names-language parser language))
languageSaveAndChange =
-#(define-scheme-function (parser location language) (string?)
+#(define-void-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))
languageRestore =
-#(define-scheme-function (parser location) ()
+#(define-void-function (parser location) ()
(_i "Restore a previously-saved pitchnames alist.")
(if previous-pitchnames
(begin
'break-permission 'force))))
parallelMusic =
-#(define-scheme-function (parser location voice-ids music) (list? ly:music?)
+#(define-void-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}.
(_i "Take the music in @var{part1} and @var{part2} and typeset so
that they share a staff.")
(make-part-combine-music parser
- (list part1 part2)))
+ (list part1 part2) #f))
+
+partcombineUp =
+#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
+ (_i "Take the music in @var{part1} and @var{part2} and typeset so
+that they share a staff with stems directed upward.")
+ (make-part-combine-music parser
+ (list part1 part2) UP))
+
+partcombineDown =
+#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
+ (_i "Take the music in @var{part1} and @var{part2} and typeset so
+that they share a staff with stems directed downward.")
+ (make-part-combine-music parser
+ (list part1 part2) DOWN))
partcombineForce =
#(define-music-function (location parser type once) (symbol-or-boolean? boolean?)
main-note))
pushToTag =
-#(define-music-function (parser location tag music more)
+#(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-copy (lambda (m)
- (if (memq tag (ly:music-property m 'tags))
- (begin
- (set! m (music-clone m))
- (set! (ly:music-property m 'elements)
- (cons more (ly:music-property m 'elements)))))
- m)
- music))
+ (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?)
'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}.")
as @code{\\repeat unfold}.")
(unfold-repeats music))
+void =
+#(define-void-function (parser location arg) (scheme?)
+ (_i "Accept a scheme argument, return a void expression.
+Use this if you want to have a scheme expression evaluated
+because of its side-effects, but its value ignored."))
withMusicProperty =