%% 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)
'elements (list (make-music 'PageTurnEvent
'break-permission 'allow))))
+appendToTag =
+#(define-music-function (parser location tag music more)
+ (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))
+
applyContext =
#(define-music-function (parser location proc) (procedure?)
(_i "Modify context properties with Scheme procedure @var{proc}.")
'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,
(_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
#}))))
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
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 =
'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}.
(and (not (null? origins)) (car origins)))))))
;;
;; first, split the music and fill in voices
- (map-in-order (lambda (m)
+ (for-each (lambda (m)
(push-music m)
(if (bar-check? m) (change-voice)))
(ly:music-property music 'elements))
voices)
;;
;; bind voice identifiers to the voices
- (map (lambda (voice-id voice)
+ (for-each (lambda (voice-id voice)
(ly:parser-define! parser voice-id
(make-music 'SequentialMusic
'origin location
'elements voice)))
- voice-ids voices))
- ;; Return an empty sequence. This function is actually a "void" function.
- (make-music 'SequentialMusic 'void #t))
+ voice-ids voices)))
parenthesize =
#(define-music-function (parser loc arg) (ly:music?)
(if (memq 'event-chord (ly:music-property arg 'types))
;; arg is an EventChord -> set the parenthesize property
;; on all child notes and rests
- (map
+ (for-each
(lambda (ev)
(if (or (memq 'note-event (ly:music-property ev 'types))
(memq 'rest-event (ly:music-property ev 'types)))
partcombineAutomatic = \partcombineForce ##f ##f
partcombineAutomaticOnce = \partcombineForce ##f ##t
+partial =
+#(define-music-function (parser location dur) (ly:duration?)
+ (_i "Make a partial measure.")
+
+ ;; We use `descend-to-context' here instead of `context-spec-music' to
+ ;; ensure \partial still works if the Timing_translator is moved
+ (descend-to-context
+ (context-spec-music (make-music 'PartialSet
+ 'origin location
+ 'partial-duration dur)
+ 'Timing)
+ 'Score))
pitchedTrill =
#(define-music-function
trill-events)))))
main-note))
+pushToTag =
+#(define-music-function (parser location tag music more)
+ (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))
+
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
(lambda (x)
(shift-one-duration-log x dur dots)) arg))
+skip =
+#(define-music-function (parser location dur) (ly:duration?)
+ (_i "Skip forward by @var{dur}.")
+ (make-music 'SkipMusic
+ 'duration dur))
+
+
slashedGrace =
#(def-grace-function startSlashedGraceMusic stopSlashedGraceMusic
(_i "Create slashed graces (slashes through stems, but no slur) from