Ugh, it does, in fact. I totally missed it in the manual somehow, but you
have to include "articulate.ly" and use the \articulate command to make it
work.

Thanks!
~Matt

On Mon, Aug 5, 2019 at 12:45 PM Simon Albrecht <simon.albre...@mail.de>
wrote:

> Hi Matt,
>
> before I dive into your music functions: doesn’t
>
> \version "2.19.83"
> { sn4 4:64 8: 8 }
>
> do what you want?
>
> This is covered in NR (Notation Reference) 1.4.2.b. I haven’t tried it’s
> MIDI playback, but since it’s a synonym for the \repeat tremolo 16 sn64
> notation, there shouldn’t be a problem.
>
> Best, Simon
>
> On 04.08.19 22:39, Matt Huber wrote:
> > What I want to do:
> > Percussion music has rolls, and while there are many references to
> > typesetting them, I haven't found good references to how to get them
> > to playback in a \midi {} block. My fantasy ideal is to have a "\roll"
> > event so I could do something like this:
> > sn4 sn4\roll sn4 sn4
> > and have the "sn4\roll" term effectively translated to "\repeat
> > tremolo 16 sn64". This needs to be a function, as both the drumtype
> > and note value could be different (i.e. I could have a bd8\roll or
> > other duration rolls on other instruments).
> >
> > I first tried this define-event-function:
> > Roll = #(define-event-function (myMusic)(ly:music?)
> > (make-music
> > 'TremoloRepeatedMusic
> > 'elements
> > '()
> > 'repeat-count
> > 16
> > 'element
> > (make-music
> > 'NoteEvent
> > 'drum-type
> > 'll
> > 'duration
> > (ly:make-duration 6)
> > )
> > )
> > )
> > (I hardcoded the repeat-count and drum-type for testing before trying
> > to dynamically calulate those)
> > this generates the error:
> > error: post event function cannot return \repeat tremolo 16 sn64
> > So my assumption was that the "repeat tremolo" simply can't be in a
> > post event (please correct me if i'm wrong on this)
> >
> > Changing to a music function:
> > Roll = #(define-music-function (myMusic)(ly:music?)
> > (make-music
> > 'TremoloRepeatedMusic
> > 'elements
> > '()
> > 'repeat-count
> > 16
> > 'element
> > (make-music
> > 'NoteEvent
> > 'drum-type
> > 'sn
> > 'duration
> > (ly:make-duration 6)
> > )
> > )
> > )
> > This works with syntax of "sn4 \roll sn4 sn4 \roll sn4" (i.e.
> > specifying /roll before the note to indicate the next note is a roll)
> > but is still hardcoded values.
> >
> > To get the make-music function to calculate the repeat-count, it
> > should be (64/duration) since an quarter note equals sixteen 64th
> > notes, an eighth note is eight sixteenth, etc. So I replaced the "16"
> > value with "#(/ 64 ly:music-property myMusic 'duration)" so the
> > function would do the math; this generates the error of:
> >
> /usr/local/lilypond/usr/share/lilypond/current/scm/music-functions.scm:1407:9:
>
> > In procedure ly:repeated-music::unfolded-music-length in expression
> > (ly:music-length music):
> >
> /usr/local/lilypond/usr/share/lilypond/current/scm/music-functions.scm:1407:9:
>
> > Wrong type (expecting exact integer): #(/ 64 ly:music-property myMusic
> > (quote duration))
> >
> > I'll admit I'm barely competent in Scheme, but this seems to say that
> > the math function is not returning an integer, but I'm not sure how to
> > force that.
> >
> > Secondly, when I replace "'sn" with "ly:music-property myMusic
> > 'drum-type" I get this error:
> > fatal error: bad make-music argument: #<Duration 64 >
> > This i can't even begin to parse to understand what it doesn't like.
> >
> > I'm lost, and would love some assistance on this. Even if that help is
> > in the form "you're on the completely wrong track, you should do
> > xx.yy.zz instead" that would be great.
> >
> > Just for completeness, I'm attaching my full sample file in case the
> > error is not in the function itself but because I booched something
> > else in the file.
> >
> > Thanks!
> > ~Matt
> >
> > _______________________________________________
> > lilypond-user mailing list
> > lilypond-user@gnu.org
> > https://lists.gnu.org/mailman/listinfo/lilypond-user
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to