Should this patch (and the other articulation patch) be put on Rietveld or pushed directly? Janek
On Wed, Mar 14, 2012 at 6:11 AM, Peter Chubb <[email protected]> wrote: > > Mordents should be on-beat, not grace notes. And pralltrillers > (half-shakes) are always either 4 alternating notes, or an inverted > mordent. > > There is of course a general problem here in that the way ornaments > are realised has changed through the centuries. Even Bach and > Clementi disagree! I'm following CPE Bach's `True art of Keyboard > Playing' in the interpretation here. To do the job properly we'd have > two articulations: \prall and \inverted_mordent and treat them > separately for MIDI, but typeset the same glyph. > > Reported-by: Christopher Maden <[email protected]> > Signed-off-by: Peter Chubb <[email protected]> > > diff --git a/ly/articulate.ly b/ly/articulate.ly > index 3cd98f4..d2d3b18 100644 > --- a/ly/articulate.ly > +++ b/ly/articulate.ly > @@ -394,7 +394,7 @@ > ((string= articname "mordent") > (loop (cons 1 1) newelements tail (cons 'mordent actions))) > ((string= articname "prall") > - (loop (cons 1 1) newelements tail (cons 'trill actions))) > + (loop (cons 1 1) newelements tail (cons 'prall actions))) > ((string= articname "trill") > (loop (cons 1 1) newelements tail (cons 'trill actions))) > ((string= articname "turn") > @@ -516,27 +516,78 @@ > ((trill) > (ac:trill music)) > > + ((prall) > + ; A pralltriller symbol can either mean an inverted mordent > + ; or a half-shake -- a short, two twiddle trill. > + ; We implement as a half-shake. > + (let* > + ((totallength (ly:music-length music)) > + (newlen (ly:moment-sub totallength (ly:make-moment 3 32))) > + (newdur (ly:make-duration > + 0 0 > + (ly:moment-main-numerator newlen) > + (ly:moment-main-denominator newlen))) > + (gracedur (ly:make-duration 5 0 1 1)) > + (gracenote (ly:music-deep-copy music)) > + (abovenote (ly:music-deep-copy music)) > + (mainnote (ly:music-deep-copy music)) > + (prall (make-sequential-music (list gracenote abovenote))) > + ) > + (music-map (lambda (n) > + (if (eq? 'NoteEvent (ly:music-property n 'name)) > + (set! (ly:music-property n 'duration) gracedur)) > + n) > + abovenote) > + (music-map (lambda (n) > + (if (eq? 'NoteEvent (ly:music-property n 'name)) > + (set! (ly:music-property n 'duration) gracedur)) > + n) > + gracenote) > + (music-map (lambda (n) > + (if (eq? 'NoteEvent (ly:music-property n 'name)) > + (set! (ly:music-property n 'duration) newdur)) > + n) > + mainnote) > + > + (map (lambda (y) (ac:up y)) > + (filter > + (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name))) > + (ly:music-property abovenote 'elements))) > + (make-sequential-music (list abovenote gracenote abovenote > mainnote)))) > + > ((mordent) > (let* > - ((dur (ly:music-property > + ((totaldur (ly:music-property > (car (ly:music-property music 'elements)) 'duration)) > - (factor (ly:duration-factor dur)) > + (dur (ly:duration-length totaldur)) > + (newlen (ly:moment-sub dur (ly:make-moment 2 32))) > + (newdur (ly:make-duration > + (ly:moment-main-numerator newlen) > + (ly:moment-main-denominator newlen) > + 1 > + 1)) > (gracenote (ly:music-deep-copy music)) > - (mainnote (ly:music-deep-copy music)) > (belownote (ly:music-deep-copy music)) > + (mainnote (ly:music-deep-copy music)) > (mordent (make-sequential-music (list gracenote belownote))) > -) > + ) > (begin > (music-map (lambda (n) > (if (eq? 'NoteEvent (ly:music-property n 'name)) > - (set! (ly:music-property n 'duration)(ly:make-duration 3 0 1 1))) > + (set! (ly:music-property n 'duration) > + (ly:make-duration 5 0 1 1))) > n) > mordent) > + (music-map (lambda (n) > + (if (eq? 'NoteEvent (ly:music-property n 'name)) > + (set! (ly:music-property n 'duration) newdur)) > + n) > + mainnote) > (map (lambda (y) (ac:down y)) > (filter > (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name))) > (ly:music-property belownote 'elements))) > - (make-sequential-music (list (make-grace-music mordent) > mainnote))))) > + (make-sequential-music (list mordent mainnote))))) > ((turn) > (let* > ((dur (ly:music-property > > -- > Dr Peter Chubb peter.chubb AT nicta.com.au > http://www.ssrg.nicta.com.au Software Systems Research Group/NICTA > > _______________________________________________ > lilypond-devel mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/lilypond-devel _______________________________________________ lilypond-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-devel
