]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/music-functions-init.ly
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / ly / music-functions-init.ly
index 42deb27cb56e24d1f8da4932c30c77c3d21e466f..b2780027c72da8200d11510756dea89e831fc1f7 100644 (file)
@@ -1,13 +1,13 @@
 % -*-Scheme-*-
 
-\version "2.7.32"
+\version "2.7.39"
 
 %% need SRFI-1 filter 
 
 #(use-modules (srfi srfi-1))  
 
 
-tweak = #(def-music-function (parser location sym val arg)
+tweak = #(define-music-function (parser location sym val arg)
           (symbol? scheme? ly:music?)
 
           "Add @code{sym . val} to the @code{tweaks} property of @var{arg}."
@@ -19,7 +19,7 @@ tweak = #(def-music-function (parser location sym val arg)
                   (ly:music-property arg 'tweaks)))
           arg)
 
-tag = #(def-music-function (parser location tag arg)
+tag = #(define-music-function (parser location tag arg)
    (symbol? ly:music?)
 
    "Add @var{tag} to the @code{tags} property of @var{arg}."
@@ -31,7 +31,7 @@ tag = #(def-music-function (parser location tag arg)
    arg)
 
 clef =
-#(def-music-function (parser location type)
+#(define-music-function (parser location type)
    (string?)
    
    "Set the current clef."
@@ -39,18 +39,18 @@ clef =
    (make-clef-set type))
 
 bar =
-#(def-music-function (parser location type)
+#(define-music-function (parser location type)
    (string?)
    (context-spec-music
     (make-property-set 'whichBar type)
     'Timing))
 
 applyMusic =
-#(def-music-function (parser location func music) (procedure? ly:music?)
+#(define-music-function (parser location func music) (procedure? ly:music?)
                (func music))
 
 oldaddlyrics =
-#(def-music-function (parser location music lyrics) (ly:music? ly:music?)
+#(define-music-function (parser location music lyrics) (ly:music? ly:music?)
 
               (make-music 'OldLyricCombineMusic 
                           'origin location
@@ -65,25 +65,34 @@ appoggiatura =
 #(def-grace-function startAppoggiaturaMusic stopAppoggiaturaMusic)
 
 partcombine =
-#(def-music-function (parser location part1 part2) (ly:music? ly:music?)
+#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
                 (make-part-combine-music (list part1 part2)))
 
 autochange =
-#(def-music-function (parser location music) (ly:music?)
+#(define-music-function (parser location music) (ly:music?)
                (make-autochange-music music))
 
 applyContext =
-#(def-music-function (parser location proc) (procedure?)
+#(define-music-function (parser location proc) (procedure?)
                  (make-music 'ApplyContext 
                    'origin location
                    'procedure proc))
 
+shiftDurations =
+#(define-music-function (parser location dur dots arg) (integer? integer? ly:music?)
+   ""
+
+   
+   (music-map
+    (lambda (x)
+      (shift-one-duration-log x dur dots)) arg))
+
 musicMap =
-#(def-music-function (parser location proc mus) (procedure? ly:music?)
+#(define-music-function (parser location proc mus) (procedure? ly:music?)
             (music-map proc mus))
 
 displayMusic =
-#(def-music-function (parser location music) (ly:music?)
+#(define-music-function (parser location music) (ly:music?)
                 (display-scheme-music music)
                 music)
 
@@ -93,18 +102,19 @@ displayMusic =
 #(use-modules (scm display-lily))
 #(display-lily-init parser)
 displayLilyMusic =
-#(def-music-function (parser location music) (ly:music?)
+#(define-music-function (parser location music) (ly:music?)
    (display-lily-music music)
    music)
 
 applyOutput =
-#(def-music-function (parser location proc) (procedure?)
-                (make-music 'ApplyOutputEvent 
+#(define-music-function (parser location ctx proc) (symbol? procedure?)
+                (make-music 'ApplyOutputEvent
                   'origin location
-                  'procedure proc))
+                  'procedure proc
+                  'context-type ctx))
 
 overrideProperty =
-#(def-music-function (parser location name property value)
+#(define-music-function (parser location name property value)
    (string? symbol? scheme?)
 
 
@@ -131,35 +141,34 @@ or @code{\"GrobName\"}"
                    (if (equal?
                         (cdr (assoc 'name (ly:grob-property grob 'meta)))
                         grob-name)
-                       (set! (ly:grob-property grob property) value)
-                       )))
+                       (set! (ly:grob-property grob property) value))))
 
       context-name)))
 
 breathe =
-#(def-music-function (parser location) ()
+#(define-music-function (parser location) ()
             (make-music 'EventChord 
               'origin location
               'elements (list (make-music 'BreathingSignEvent))))
 
 
 unfoldRepeats =
-#(def-music-function (parser location music) (ly:music?)
+#(define-music-function (parser location music) (ly:music?)
                  (unfold-repeats music))
 
 compressMusic =
-#(def-music-function
+#(define-music-function
                  (parser location fraction music) (number-pair? ly:music?)
                  (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction))))
 
 makeClusters =
-#(def-music-function
+#(define-music-function
                (parser location arg) (ly:music?)
                (music-map note-to-cluster arg))
 
 
 removeWithTag = 
-#(def-music-function
+#(define-music-function
   (parser location tag music) (symbol? ly:music?)
   (music-filter
    (lambda (m)
@@ -169,7 +178,7 @@ removeWithTag =
  music))
              
 keepWithTag =
-#(def-music-function
+#(define-music-function
   (parser location tag music) (symbol? ly:music?)
   (music-filter
    (lambda (m)
@@ -183,10 +192,10 @@ keepWithTag =
 
 %% Todo:
 %% doing
-%% def-music-function in a .scm causes crash.
+%% define-music-function in a .scm causes crash.
 
 cueDuring = 
-#(def-music-function
+#(define-music-function
   (parser location what dir main-music)
   (string? ly:dir? ly:music?)
   (make-music 'QuoteMusic
@@ -198,8 +207,29 @@ cueDuring =
              'origin location))
 
 
+transposedCueDuring = #
+(define-music-function
+  (parser location what dir pitch-note main-music)
+  (string? ly:dir? ly:music? ly:music?)
+
+  "Insert notes from the part @var{what} into a voice called @code{cue},
+using the transposition defined by @var{pitch-note}.  This happens
+simultaneously with @var{main-music}, which is usually a rest.  The
+argument @var{dir} determines whether the cue notes should be notated
+as a first or second voice."
+
+  (make-music 'QuoteMusic
+             'element main-music
+             'quoted-context-type 'Voice
+             'quoted-context-id "cue"
+             'quoted-music-name what
+             'quoted-voice-direction dir
+             'quoted-transposition (pitch-of-note pitch-note)
+             'origin location))
+
+
 quoteDuring = #
-(def-music-function
+(define-music-function
   (parser location what main-music)
   (string? ly:music?)
   (make-music 'QuoteMusic
@@ -208,9 +238,8 @@ quoteDuring = #
              'origin location))
 
 
-
 pitchedTrill =
-#(def-music-function
+#(define-music-function
    (parser location main-note secondary-note)
    (ly:music? ly:music?)
    (let*
@@ -237,7 +266,7 @@ pitchedTrill =
      main-note))
 
 killCues =
-#(def-music-function
+#(define-music-function
    (parser location music)
    (ly:music?)
    (music-map
@@ -251,7 +280,7 @@ afterGraceFraction =
 #(cons 6 8)
 
 afterGrace =
-#(def-music-function
+#(define-music-function
   (parser location main grace)
   (ly:music? ly:music?)
 
@@ -277,7 +306,7 @@ afterGrace =
 
 
 barNumberCheck =
-#(def-music-function (parser location n) (integer?)
+#(define-music-function (parser location n) (integer?)
    (make-music 'ApplyContext 
               'origin location
               'procedure 
@@ -292,7 +321,7 @@ barNumberCheck =
 
 % for regression testing purposes.
 assertBeamQuant =
-#(def-music-function (parser location l r) (pair? pair?)
+#(define-music-function (parser location l r) (pair? pair?)
   (make-grob-property-override 'Beam 'positions
    (ly:make-simple-closure
     (ly:make-simple-closure
@@ -302,7 +331,7 @@ assertBeamQuant =
     
 % for regression testing purposes.
 assertBeamSlope =
-#(def-music-function (parser location comp) (procedure?)
+#(define-music-function (parser location comp) (procedure?)
   (make-grob-property-override 'Beam 'positions
    (ly:make-simple-closure
     (ly:make-simple-closure
@@ -312,7 +341,7 @@ assertBeamSlope =
 
 
 parallelMusic =
-#(def-music-function (parser location voice-ids music) (list? ly:music?)
+#(define-music-function (parser location voice-ids music) (list? ly:music?)
   "Define parallel music sequences, separated by '|' (bar check signs),
 and assign them to the identifiers provided in @var{voice-ids}.
 
@@ -404,11 +433,11 @@ Example:
 
 %% this is a stub. Write your own to suit the spacing tweak output.
 spacingTweaks =
-#(def-music-function (parser location parameters) (list?)
+#(define-music-function (parser location parameters) (list?)
    (make-music 'SequentialMusic 'void #t))
 
 octave =
-#(def-music-function (parser location pitch-note) (ly:music?)
+#(define-music-function (parser location pitch-note) (ly:music?)
    "octave check"
 
    (make-music 'RelativeOctaveCheck
@@ -417,9 +446,44 @@ octave =
               ))
 
 addquote =
-#(def-music-function (parser location name music) (string? ly:music?)
+#(define-music-function (parser location name music) (string? ly:music?)
    "Add a piece of music to be quoted "
    (add-quotable name music)
    (make-music 'SequentialMusic 'void #t))
 
    
+parenthesize =
+#(define-music-function (parser loc arg) (ly:music?)
+   "Tag @var{arg} to be parenthesized."
+
+   (set! (ly:music-property arg 'parenthesize) #t)
+   arg)
+
+
+featherDurations=
+#(define-music-function (parser location factor argument) (ly:moment? ly:music?)
+
+   "Rearrange durations in ARGUMENT so there is an
+acceleration/deceleration. "
+   
+   (let*
+       ((orig-duration (ly:music-length argument))
+       (multiplier (ly:make-moment 1 1)))
+
+     (music-map 
+      (lambda (mus)
+       (if (and (eq? (ly:music-property mus 'name) 'EventChord)
+                (< 0 (ly:moment-main-denominator (ly:music-length mus))))
+           (begin
+             (ly:music-compress mus multiplier)
+             (set! multiplier (ly:moment-mul factor multiplier)))
+           )
+       mus)
+      argument)
+
+     (ly:music-compress
+      argument
+      (ly:moment-div orig-duration (ly:music-length argument)))
+
+     argument))
+