lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Scheme function to affect a compound music expression?


From: David Nalesnik
Subject: Re: Scheme function to affect a compound music expression?
Date: Sat, 25 Oct 2014 10:51:03 -0500

Hi Peter,

On Sat, Oct 25, 2014 at 10:41 AM, Peter Crighton <address@hidden> wrote:
2014-10-24 23:01 GMT+02:00 Peter Crighton <address@hidden>:
2014-10-24 16:54 GMT+02:00 Robin Bannister <address@hidden>:
So it looks like LilyPond wants to merge the rests,
but will do this only if they seem identical.


Having read through the regression snippet
and been inspired by the way it removes things,
we can modify bgr to make it remove rests:

bgr = #(define-music-function (parser location music) (ly:music?)
  (music-map (lambda (mus)
    (if (music-is-of-type? mus 'rest-event)
      (make-music 'SkipEvent mus)
      #{
        \tweak NoteHead.font-size #-2
        \tweak Accidental.font-size #-2
        #mus
      #}))
    music ))

Note A: found 'rest-event in the Internals Reference
Note B: renamed your parameter to not imply just "note"

Hope this helps.

Thanks again, Robin, this helps a lot!

The next time I dive into Scheming I might be getting further by myself before I have to ask on the list. :)

Nope, I didn’t really and have to ask again, sorry …

I now wanted to improve the function to also skip MultiMeasureRests and first tried replacing 'rest-event with 'multi-measure-rest-event to see if that would work, which it doesn’t.


Yes, this was a stumbling block for me too recently.  It doesn't seem that you can use 'multi-measure-rest-event with music-is-of-type?  This approach will work, though:

 \version "2.19.15"

bgr = #(define-music-function (parser location music) (ly:music?)
  (music-map (lambda (mus)
    (if (or (music-is-of-type? mus 'rest-event)
            (eq? (ly:music-property mus 'name) 'MultiMeasureRestMusic))
      (make-music 'SkipEvent mus)
      #{
        \tweak NoteHead.font-size #-2
        \tweak Accidental.font-size #-2
        #mus
      #}))
    music ))

\new Voice <<
  \relative c' {
    c4 d r f
    R1
    c4 d r f
  }

  \relative c' \bgr {
    e4 f r a
    R1
    e4 f r a
  }
>>

%%%

--David

reply via email to

[Prev in Thread] Current Thread [Next in Thread]