%%%% 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.13.29"
+\version "2.14.0"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(lambda (c)
(let ((cbn (ly:context-property c 'currentBarNumber)))
(if (and (number? cbn) (not (= cbn n)))
- (ly:input-message location
+ (ly:input-warning location
"Barcheck failed got ~a expect ~a"
cbn n))))))
(_i "Insert a breath mark.")
(make-music 'BreathingEvent))
-%% Make slide indication for chords
-chordGlissando =
-#(define-music-function (parser location mus1 mus2) (ly:music? ly:music?)
- "Make a glissando between the notes of triads @code{mus1} and @code{mus2}."
-
- (define (add-glissando musChord)
- (let ((els (ly:music-property musChord 'elements)))
- (ly:music-set-property! musChord 'elements (append els (list (make-music 'GlissandoEvent))))
- musChord))
-
- (define (get-notes musicChord)
- (filter (lambda(x) (eq? (ly:music-property x 'name) 'NoteEvent))
- (ly:music-property musicChord 'elements)))
-
- (define (select-note musChord index)
- (let* ((notes (get-notes musChord))
- (non-notes (filter (lambda (x)
- (not (eq? (ly:music-property x 'name)
- 'NoteEvent)))
- (ly:music-property musChord 'elements)))
- (selected-note (list-ref notes index))
- (new-els (cons selected-note non-notes))
- (new-mus (ly:music-deep-copy musChord)))
- (ly:music-set-property! new-mus 'elements new-els)
- new-mus))
-
- (define (add-glissando-line mus1 mus2 index)
- (context-spec-music
- (context-spec-music
- (make-sequential-music
- (list
- hideNotes
- (make-grob-property-set 'StringNumber 'transparent #t)
- (make-grob-property-set 'NoteColumn 'ignore-collision #t)
- ;; obviously, this isn't equivalent to \once,
- ;; so could be changed if required
- (make-grob-property-set 'Glissando 'thickness 2)
- (make-grob-property-set 'DynamicText 'transparent #t)
- (make-grob-property-set 'DynamicLineSpanner 'transparent #t)
- (make-grob-property-set 'DynamicTextSpanner 'transparent #t)
- (add-glissando (select-note mus1 index))
- (select-note mus2 index)))
- 'Bottom (symbol->string (gensym)))
- 'Staff))
-
- (let* ((notes1 (get-notes mus1))
- (notes2 (get-notes mus2))
- (note-count (min (length notes1) (length notes2))))
-
- #{
- \once \override Glissando #'minimum-length = #4
- \once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
- <<
- {
- $(add-glissando mus1)
- $mus2
- }
- $(make-simultaneous-music
- (map (lambda (x)
- (add-glissando-line mus1 mus2 x))
- (iota note-count)))
- >>
- \revert NoteColumn #'ignore-collision
- #}))
-
clef =
#(define-music-function (parser location type) (string?)
(_i "Set the current clef to @var{type}.")
#(define-music-function (parser location grob-name offset text footnote)
(symbol? number-pair? markup? markup?)
(_i "Attach @var{text} to @var{grob-name} at offset @var{offset},
- with @var{text} referring to @var{footnote} (use like @code{\\once})")
+with @var{text} referring to @var{footnote} (use like @code{\\once})")
(make-music 'FootnoteEvent
'symbol grob-name
'X-offset (car offset)
'text text
'footnote-text footnote))
+autoFootnoteGrob =
+#(define-music-function (parser location grob-name offset footnote)
+ (symbol? number-pair? markup?)
+ (_i "Footnote @var{grob-name} with the text in @var{footnote}
+allowing for the footnote to be automatically numbered such that
+the number appears at @var{offset}. Note that, for this to take effect,
+auto-numbering must be turned on in the paper block. Otherwise, no
+number will appear. Use like @code{\\once})")
+ #{
+ \footnoteGrob $grob-name $offset \markup { \null } $footnote
+ #})
+
footnote =
#(define-music-function (parser location offset text footnote)
(number-pair? markup? markup?)
(_i "Attach @var{text} at @var{offset} with @var{text} referring
- to @var{footnote} (use like @code{\\tweak})")
+to @var{footnote} (use like @code{\\tweak})")
(make-music 'FootnoteEvent
'X-offset (car offset)
'Y-offset (cdr offset)
'text text
'footnote-text footnote))
+% this function can't be a simple copy and past of the above because
+% it needs to be encapsulated in a Sequential Music.
+% so, there's a code dup of above :-(
+autoFootnote =
+#(define-music-function (parser location offset footnote)
+ (number-pair? markup?)
+ (_i "Footnote the item after which this comes with the text in
+@var{footnote} allowing for the footnote to be automatically numbered
+such that the number appears at @var{offset}. Note that, for this to
+take effect, auto-numbering must be turned on in the paper block.
+Otherwise, no number will appear. Use like @code{\\tweak})")
+ (make-music 'FootnoteEvent
+ 'X-offset (car offset)
+ 'Y-offset (cdr offset)
+ 'text (make-null-markup)
+ 'footnote-text footnote))
+
grace =
#(def-grace-function startGraceMusic stopGraceMusic
(_i "Insert @var{music} as grace notes."))
(instrument-def (if handle (cdr handle) '())))
(if (not handle)
- (ly:input-message location "No such instrument: ~a" name))
+ (ly:input-warning location "No such instrument: ~a" name))
(context-spec-music
(make-music 'SimultaneousMusic
'elements
(begin
(set! pitchnames previous-pitchnames)
(ly:parser-set-note-names parser pitchnames))
- (ly:warning (_ "No other language was defined previously. Ignoring.")))
+ (ly:input-warning location (_ "No other language was defined previously. Ignoring.")))
(make-music 'Music 'void #t))
(let ((moment-reference (ly:music-length (car seqs))))
(for-each (lambda (seq moment)
(if (not (equal? moment moment-reference))
- (ly:music-message seq
+ (ly:music-warning seq
"Bars in parallel music don't have the same length")))
seqs (map-in-order ly:music-length seqs))))
voices)
(for-each (lambda (m)
(ly:music-set-property! m 'pitch trill-pitch)) trill-events)
(begin
- (ly:warning (_ "Second argument of \\pitchedTrill should be single note: "))
+ (ly:input-warning location (_ "Second argument of \\pitchedTrill should be single note: "))
(display sec-note-events)))
(if (eq? forced #t)
(lambda (x)
(shift-one-duration-log x dur dots)) arg))
+slashedGrace =
+#(def-grace-function startSlashedGraceMusic stopSlashedGraceMusic
+ (_i "Create slashed graces (slashes through stems, but no slur) from
+the following music expression"))
+
spacingTweaks =
#(define-music-function (parser location parameters) (list?)
(_i "Set the system stretch, by reading the 'system-stretch property of
(if (equal? (object-property sym 'backend-type?) #f)
(begin
- (ly:warning (_ "cannot find property type-check for ~a") sym)
+ (ly:input-warning location (_ "cannot find property type-check for ~a") sym)
(ly:warning (_ "doing assignment anyway"))))
(set!
(ly:music-property arg 'tweaks)