%%%% You should have received a copy of the GNU General Public License
%%%% along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
-\version "2.14.0"
+\version "2.15.18"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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))
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))
(ly:moment-main-denominator mlen))))
#{
\once \override Staff.TimeSignature #'stencil = #(lambda (grob)
- (grob-interpret-markup grob (format-compound-time $args)))
+ (grob-interpret-markup grob (format-compound-time args)))
\set Timing.timeSignatureFraction = $timesig
\set Timing.baseMoment = $beat
\set Timing.beatStructure = $beatGrouping
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)))
(make-sequential-music
(list
#{
- \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label $fret)
+ \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label fret)
#}
(make-harmonic
(calc-harmonic-pitch pitch music))
(make-sequential-music
(list
#{
- \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label $fret)
+ \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label fret)
#}
(make-harmonic
(calc-harmonic-pitch pitch music))
res)))
music))
+key =
+#(define-music-function (parser location tonic pitch-alist)
+ ((ly:pitch? '()) (list? '()))
+ (_i "Set key to @var{tonic} and scale @var{pitch-alist}.
+If both are null, just generate @code{KeyChangeEvent}.")
+ (cond ((null? tonic) (make-music 'KeyChangeEvent))
+ ((null? pitch-alist)
+ (ly:parser-error parser (_ "second argument must be pitch list")
+ location)
+ (make-music 'SequentialMusic 'void #t))
+ (else
+ (ly:music-transpose
+ (make-music 'KeyChangeEvent
+ 'tonic (ly:make-pitch 0 0 0)
+ 'pitch-alist pitch-alist)
+ tonic))))
+
killCues =
#(define-music-function (parser location music) (ly:music?)
(_i "Remove cue notes from @var{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
transpose from @var{around} to @var{to}.")
(music-invert around to music))
+mark =
+#(define-music-function
+ (parser location label) ((scheme? '()))
+ "Make the music for the \\mark command."
+ (let* ((set (and (integer? label)
+ (context-spec-music (make-property-set 'rehearsalMark label)
+ 'Score)))
+ (ev (make-music 'MarkEvent
+ 'origin location)))
+
+ (if set
+ (make-sequential-music (list set ev))
+ (begin
+ (set! (ly:music-property ev 'label) label)
+ ev))))
+
musicMap =
#(define-music-function (parser location proc mus) (procedure? ly:music?)
(_i "Apply @var{proc} to @var{mus} and all of the music it contains.")
(make-music 'RelativeOctaveCheck
'pitch pitch))
+once =
+#(define-music-function (parser location music) (ly:music?)
+ (_i "Set @code{once} to @code{#t} on all layout instruction events in @var{music}.")
+ (music-map
+ (lambda (m)
+ (cond ((music-is-of-type? m 'layout-instruction-event)
+ (set! (ly:music-property m 'once) #t))
+ ((ly:duration? (ly:music-property m 'duration))
+ (ly:music-warning m (_ "Cannot apply \\once to timed music"))))
+ m)
+ music))
+
ottava =
#(define-music-function (parser location octave) (integer?)
(_i "Set the octavation.")
'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?)
'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}.")
scaleDurations =
#(define-music-function (parser location fraction music)
- (number-pair? ly:music?)
+ (fraction? ly:music?)
(_i "Multiply the duration of events in @var{music} by @var{fraction}.")
(ly:music-compress music
(ly:make-moment (car fraction) (cdr fraction))))
#{
\overrideProperty #"Score.NonMusicalPaperColumn"
#'line-break-system-details
- #$(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters)))
+ #(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters)))
(cons 'system-Y-extent (cdr (assoc 'system-Y-extent parameters))))
#})
(ly:music-property arg 'tags)))
arg)
+time =
+#(define-music-function (parser location beat-structure fraction)
+ ((number-list? '()) fraction?)
+ (_i "Set @var{fraction} as time signature, with optional
+number list @var{beat-structure} before it.")
+ (make-music 'TimeSignatureMusic
+ 'numerator (car fraction)
+ 'denominator (cdr fraction)
+ 'beat-structure beat-structure))
+
+times =
+#(define-music-function (parser location fraction music)
+ (fraction? ly:music?)
+ (_i "Scale @var{music} in time by @var{fraction}.")
+ (make-music 'TimeScaledMusic
+ 'element (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction)))
+ 'numerator (car fraction)
+ 'denominator (cdr fraction)))
+
transpose =
#(define-music-function
(parser location from to music)
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 =