%%%% 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.15.18"
+\version "2.15.42"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(_i "Create an acciaccatura from the following music expression"))
%% keep these two together
-"instrument-definitions" = #'()
+instrument-definitions = #'()
addInstrumentDefinition =
#(define-void-function
(parser location name lst) (string? list?)
'elements (list (make-music 'PageTurnEvent
'break-permission 'allow))))
+alterBroken =
+#(define-music-function (parser location name property arg)
+ (string? scheme? list?)
+ (_i "Override @var{property} for pieces of broken spanner @var{name} with
+values @var{arg}.")
+ (let* ((name (string-delete name char-set:blank)) ; remove any spaces
+ (name-components (string-split name #\.))
+ (context-name "Bottom")
+ (grob-name #f))
+
+ (if (> 2 (length name-components))
+ (set! grob-name (car name-components))
+ (begin
+ (set! grob-name (cadr name-components))
+ (set! context-name (car name-components))))
+
+ ;; only apply override if grob is a spanner
+ (let ((description
+ (assoc-get (string->symbol grob-name) all-grob-descriptions)))
+ (if (and description
+ (member 'spanner-interface
+ (assoc-get 'interfaces
+ (assoc-get 'meta description))))
+ #{
+ \override $context-name . $grob-name $property =
+ #(value-for-spanner-piece arg)
+ #}
+ (begin
+ (ly:input-warning location (_ "not a spanner name, `~a'") grob-name)
+ (make-music 'SequentialMusic 'void #t))))))
+
appendToTag =
#(define-music-function (parser location tag more music)
(symbol? ly:music? ly:music?)
(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
\set Timing.measureLength = $mlen
#} ))
+crossStaff =
+#(define-music-function (parser location notes) (ly:music?)
+ (_i "Create cross-staff stems")
+ #{
+ \override Stem #'cross-staff = #cross-staff-connect
+ \override Flag #'style = #'no-flag
+ $notes
+ \revert Stem #'cross-staff
+ \revert Flag #'style
+#})
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.")
'text (or mark (make-null-markup))
'footnote-text footnote
'symbol (or grob-name '()))))
- (if music
- (begin
- (set! (ly:music-property music 'tweaks)
- (acons (if grob-name
- (cons grob-name 'footnote-music)
- 'footnote-music)
- mus
- (ly:music-property music 'tweaks)))
- music)
- mus)))
+ (cond (music
+ (set! (ly:music-property music 'tweaks)
+ (acons (if grob-name
+ (cons grob-name 'footnote-music)
+ 'footnote-music)
+ mus
+ (ly:music-property music 'tweaks)))
+ music)
+ (grob-name mus)
+ (else
+ (ly:input-warning location
+ (_ "\\footnote requires music or grob-name"))
+ (make-music 'Music)))))
grace =
#(def-grace-function startGraceMusic stopGraceMusic
\revert NoteHead #'stencil
#})
+inStaffSegno =
+#(define-music-function (parser location) ()
+ (_i "Put the segno variant 'varsegno' at this position into the staff,
+compatible with the repeat command.")
+ (make-music 'ApplyContext
+ 'procedure
+ (lambda (ctx)
+ (let ((score-ctx (ly:context-find ctx 'Score)))
+ (if (ly:context? score-ctx)
+ (let ((old-rc (ly:context-property score-ctx 'repeatCommands '())))
+ (if (eq? (memq 'segno-display old-rc) #f)
+ (ly:context-set-property! score-ctx 'repeatCommands (cons 'segno-display old-rc)))))))))
+
instrumentSwitch =
#(define-music-function
(parser location name) (string?)