]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/music-functions-init.ly
Merge branch 'master' of git://git.savannah.gnu.org/lilypond.git
[lilypond.git] / ly / music-functions-init.ly
index e83470dc622f3eab4ebac697bf97a900a0510f49..3535a0a6a7b0dc5a03188dca78078e178ede3f16 100644 (file)
@@ -18,7 +18,7 @@
 %%%% 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"
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -204,72 +204,6 @@ breathe =
    (_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)
-        (make-grob-property-set 'TextScript 'stencil #f)
-         (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}.")
@@ -410,7 +344,7 @@ footnoteGrob =
 #(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)
@@ -418,17 +352,46 @@ footnoteGrob =
               '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 { "" } $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 (markup "")
+              'footnote-text footnote))
+
 grace =
 #(def-grace-function startGraceMusic stopGraceMusic
    (_i "Insert @var{music} as grace notes."))
@@ -934,6 +897,11 @@ shiftDurations =
     (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