%%%% 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.12.0"
+\version "2.13.29"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(set! book-output-suffix newsuffix)
(make-music 'SequentialMusic 'void #t))
-%% why a function?
+%% \breathe is defined as a music function rather than an event identifier to
+%% ensure it gets useful input location information: as an event identifier,
+%% it would have to be wrapped in an EventChord to prevent it from being
+%% treated as a post_event by the parser
breathe =
#(define-music-function (parser location) ()
(_i "Insert a breath mark.")
- (make-music 'EventChord
- 'origin location
- 'elements (list (make-music 'BreathingEvent))))
+ (make-music 'BreathingEvent))
(_i "Set the current clef to @var{type}.")
(make-clef-set type))
+cueClef =
+#(define-music-function (parser location type) (string?)
+ (_i "Set the current cue clef to @var{type}.")
+ (make-cue-clef-set type))
+cueClefUnset =
+#(define-music-function (parser location) ()
+ (_i "Unset the current cue clef.")
+ (make-cue-clef-unset))
+
cueDuring =
#(define-music-function
(parser location what dir main-music) (string? ly:dir? ly:music?)
'quoted-context-type 'Voice
'quoted-context-id "cue"
'quoted-music-name what
- 'quoted-voice-direction dir
- 'origin location))
+ 'quoted-voice-direction dir))
+
+cueDuringWithClef =
+#(define-music-function
+ (parser location what dir clef main-music) (string? ly:dir? string? ly:music?)
+ (_i "Insert contents of quote @var{what} corresponding to @var{main-music},
+in a CueVoice oriented by @var{dir}.")
+ (make-music 'QuoteMusic
+ 'element main-music
+ 'quoted-context-type 'Voice
+ 'quoted-context-id "cue"
+ 'quoted-music-name what
+ 'quoted-music-clef clef
+ 'quoted-voice-direction dir))
#(def-grace-function startGraceMusic stopGraceMusic
(_i "Insert @var{music} as grace notes."))
-
+harmonicByFret = #(define-music-function (parser location fret music) (number? ly:music?)
+ (let* ((fret (number->string fret))
+ (pitch (fret->pitch fret)))
+ (make-sequential-music
+ (list
+ #{
+ \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label $fret)
+ #}
+ (make-harmonic
+ (calc-harmonic-pitch pitch music))
+ #{
+ \revert TabNoteHead #'stencil
+ #}))))
+
+harmonicByRatio = #(define-music-function (parser location ratio music) (number? ly:music?)
+ (let ((pitch (ratio->pitch ratio))
+ (fret (ratio->fret ratio)))
+ (make-sequential-music
+ (list
+ #{
+ \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label $fret)
+ #}
+ (make-harmonic
+ (calc-harmonic-pitch pitch music))
+ #{
+ \revert TabNoteHead #'stencil
+ #}))))
instrumentSwitch =
#(define-music-function
'page-label label))))
+language =
+#(define-music-function (parser location language) (string?)
+ (_i "Set note names for language @var{language}.")
+ (note-names-language parser language)
+ (make-music 'Music 'void #t))
+
+languageSaveAndChange =
+#(define-music-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))
+
+languageRestore =
+#(define-music-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:warning (_ "No other language was defined previously. Ignoring.")))
+ (make-music 'Music 'void #t))
+
makeClusters =
#(define-music-function (parser location arg) (ly:music?)
'pitch (pitch-of-note pitch-note)))
ottava =
-#(define-music-function (parser location octave) (number?)
+#(define-music-function (parser location octave) (integer?)
(_i "Set the octavation.")
- (make-ottava-set octave))
+ (make-music 'OttavaMusic
+ 'ottava-number octave))
-overrideBeamSettings =
+overrideTimeSignatureSettings =
#(define-music-function
- (parser location context time-signature rule-type grouping-rule)
- (symbol? pair? symbol? pair?)
-
- (_i "Override beamSettings in @var{context}
-for time signatures of @var{time-signature} and rules of type
-@var{rule-type} to have a grouping rule alist
-@var{grouping-rule}.
-@var{rule-type} can be @code{end} or @code{subdivide},
-with a potential future value of @code{begin}.
-@var{grouping-rule} is an alist of @var{(beam-type . grouping)}
-entries. @var{grouping} is in units of @var{beam-type}. If
-@var{beam-type} is @code{*}, grouping is in units of the denominator
-of @var{time-signature}.")
+ (parser location time-signature base-moment beat-structure beam-exceptions)
+ (pair? pair? cheap-list? cheap-list?)
+
+ (_i "Override @code{timeSignatureSettings}
+for time signatures of @var{time-signature} to have settings
+of @var{base-moment}, @var{beat-structure}, and @var{beam-exceptions}.")
;; TODO -- add warning if largest value of grouping is
;; greater than time-signature.
-
- #{
- #(override-beam-setting
- $time-signature $rule-type $grouping-rule $context)
- #})
+ (let ((setting (make-setting base-moment beat-structure beam-exceptions)))
+ (override-time-signature-setting time-signature setting)))
overrideProperty =
#(define-music-function (parser location name property value)
(make-part-combine-music parser
(list part1 part2)))
+partcombineForce =
+#(define-music-function (location parser type once) (symbol-or-boolean? boolean?)
+ (_i "Override the part-combiner.")
+ (make-music 'EventChord
+ 'elements (list (make-music 'PartCombineForceEvent
+ 'forced-type type
+ 'once once))))
+partcombineApart = \partcombineForce #'apart ##f
+partcombineApartOnce = \partcombineForce #'apart ##t
+partcombineChords = \partcombineForce #'chords ##f
+partcombineChordsOnce = \partcombineForce #'chords ##t
+partcombineUnisono = \partcombineForce #'unisono ##f
+partcombineUnisonoOnce = \partcombineForce #'unisono ##t
+partcombineSoloI = \partcombineForce #'solo1 ##f
+partcombineSoloIOnce = \partcombineForce #'solo1 ##t
+partcombineSoloII = \partcombineForce #'solo2 ##f
+partcombineSoloIIOnce = \partcombineForce #'solo2 ##t
+partcombineAutomatic = \partcombineForce ##f ##f
+partcombineAutomaticOnce = \partcombineForce ##f ##t
+
+
pitchedTrill =
#(define-music-function
(parser location main-note secondary-note)
reference-note))
-revertBeamSettings =
+revertTimeSignatureSettings =
#(define-music-function
- (parser location context time-signature rule-type)
- (symbol? pair? symbol?)
+ (parser location time-signature)
+ (pair?)
- (_i "Revert beam settings in @var{context} for time signatures of
-@var{time-signature} and groups of type
-@var{group-type}. @var{group-type} can be @code{end}
-or @code{subdivide}.")
- #{
- #(revert-beam-setting $time-signature $rule-type $context)
- #})
+ (_i "Revert @code{timeSignatureSettings}
+for time signatures of @var{time-signature}.")
+ (revert-time-signature-setting time-signature))
rightHandFinger =
#(define-music-function (parser location finger) (number-or-string?)
(ly:music-compress music
(ly:make-moment (car fraction) (cdr fraction))))
-setBeatGrouping =
-#(define-music-function (parser location grouping) (pair?)
- (_i "Set the beat grouping in the current time signature to
-@var{grouping}.")
- (define (default-group-setting c)
- (let* ((context-time-signature
- (ly:context-property c 'timeSignatureFraction))
- (time-signature (if (null? context-time-signature)
- '(4 . 4)
- context-time-signature)))
- (override-property-setting
- c
- 'beamSettings
- (list time-signature 'end)
- (list (cons '* grouping)))))
-
- (context-spec-music
- (make-apply-context default-group-setting)
- 'Score))
-
shiftDurations =
#(define-music-function (parser location dur dots arg)
(integer? integer? ly:music?)