lilypond-user
[Top][All Lists]
Advanced

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

Re: New try with lyric extender


From: David Nalesnik
Subject: Re: New try with lyric extender
Date: Tue, 4 Feb 2014 17:06:30 -0600

Hi Yann,


On Mon, Feb 3, 2014 at 3:39 PM, Yann <address@hidden> wrote:

> I think this is a not working example for what he asked for:
>
> \version "2.18.0"
> {
>   a a a a
> }
> \addlyrics {
>   A B C D
>   % what should be written here instead?
>   \display Lyrics.LyricExtender.minimum-length
> }
>
> Joram
>

Thank you both for your answers. Yes Joram, this is would be a not
working minimal example for my 1st question.

There's no way to do this except through Scheme.  Here I'm overriding 'after-line-breaking (a dummy property) with a procedure which displays the property you want to the console.  Note that the value 1.5 is the default setting which you see in  http://www.lilypond.org/doc/v2.18/Documentation/internals/lyricextender under "minimum-length".  Note also that the default value and the override to 1 aren't printed in order!  Just the way it is...

{

  a a a a

}

\addlyrics {

  \override LyricExtender.after-line-breaking =

  #(lambda (grob)

    (display "minimum-length: ")

    (display (ly:grob-property grob 'minimum-length))

    (newline))

A __ B

\override LyricExtender.minimum-length = 1

C __ D

}



Or, prettier:

{

  a a a a

}

\addlyrics {

\override LyricExtender.after-line-breaking =

#(lambda (grob)

  (format #t "minimum-length: ~a~%"

    (ly:grob-property grob 'minimum-length)))

A __ B

\override LyricExtender.minimum-length = 1

C __ D

}


Another of your questions:


>>I've seen that there's a user settable property of the
>>lyric-extender-interface called "next". How can I access this?


Again, the only way to access the grob and do something with it would be through Scheme.  You can get at it through the procedure ly:grob-object.


Here I make the pointed-to grob red:


{

  a a a a

}

\addlyrics {

\override LyricExtender.after-line-breaking =

#(lambda (grob)

  (let ((n (ly:grob-object grob 'next)))

    (if (ly:grob? n)

       (set! (ly:grob-property n 'color) red))))

A __ B C __ D

}


>>Could
>>it be of some help for my current problem ?


Possibly.  You could, for example, get its horizontal position and replace the LyricExtender stencil with a longer one.


Looking at the link though, it strikes me that automating this could be a rather challenging problem, though, and involve more labor than simply tweaking Kieren's solution to fit different situations.


 
Sorry also, I didn't fully explained what is my final goal with all
this, but just cited a previous post. For next time, what is the best
way to do ? Repost all the background+example, or just give reference
to the previous post ?

The link was partly helpful.  The problem was that I got lost in the details of your response to Kieren there, and a little overwhelmed by all the questions in your first email here.

Simple bite-sized questions with a tiny code snippet (like Joram's) will generally get a quick response.

Best,
David


reply via email to

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