lilypond-user
[Top][All Lists]
Advanced

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

Re: How to catch extent of AccidentalPlacement?


From: David Nalesnik
Subject: Re: How to catch extent of AccidentalPlacement?
Date: Sat, 12 Apr 2014 09:21:38 -0500

Hi Harm,


On Sun, Mar 16, 2014 at 7:06 AM, Thomas Morley <address@hidden> wrote:
2014-03-12 1:27 GMT+01:00 Thomas Morley <address@hidden>:
> Hi,
>
> for some function I need to know the extent/length of the AccidentalPlacement.
>
> With 2.16.2 I used to do something like:
>
> info =
> \override Staff.AccidentalPlacement #'after-line-breaking =
>  #(lambda (grob)
>    (display (interval-length (ly:grob-extent grob grob X)))
>    (newline))
>
> \relative c' {
>     \info
>     <c d>
>     <cis d>1
>     <cis dis>
>     <cis dis eis>
>     <cis dis eis fis>
>     <cis dis eis fis gis>
> }
>
> and got different values.
>
> With 2.18.0 and 2.19.1 it always returns the same: 1.1
> Looks like a bug to me.
> How to do it different?
>
> Cheers,
>   Harm

Noone with an idea?

Forgive the late reply...

What about something like this?

\version "2.19.3"


info =

\override Staff.AccidentalPlacement #'after-line-breaking =

#(lambda (grob)

  (let* ((accs (map cadr (ly:grob-object grob 'accidental-grobs)))

          (sys (ly:grob-system grob))

          (X-exts (map (lambda (x) (ly:grob-extent x sys X)) accs))

          (un (reduce interval-union '() X-exts)))

    (display (interval-length un))

    (newline)))


\relative c' {

  \info

  <c d>

  <cis d>1

  <cis dis>

  <cis dis eis>

  <cis dis eis fis>

  <cis dis eis fis gis>

}



--David

reply via email to

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