[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: transition between full-length and shortened stems - please discuss
From: |
Han-Wen Nienhuys |
Subject: |
Re: transition between full-length and shortened stems - please discuss |
Date: |
Sun, 20 Feb 2011 23:07:27 -0300 |
2011/2/13 Janek Warchoł <address@hidden>:
> This is the first part of a series of changes to the stems and flags.
> The suggested change is small, but in my opinion important.
> Look at the attached "transition testing.pdf" - it illustrates the problem:
> the 'b' stem is definately too short (it should not end at the same level as
> the stem of the 'a' note), similarly the d stem is too short, and overall
> impression is "uneven" (the ends of the stems do not flow with the melody).
> Actually, the problem was already noticed and mentioned in our Essay:
>
> http://lilypond.org/doc/v2.13/Documentation/essay/automated-engraving#getting-things-right
> reads
> "LilyPond (...) appears a bit too aggressive in shortening some of the
> stems"
> This is very easily fixed. We only have to discuss what output we want.
> I've prepared two possible solutions.
> Please download this archive: http://www.sendspace.com/file/ckg6md (300KB)
> and compare pdfs inside.
> The archive contains a very simple proof-sheet and two real-life examples,
> both from our essay. I've also included Baerenreiter engravings (also from
> our essay) for reference.
> Which option do you prefer?
This change is default over current lily, so let's put it in. I can't
discern any difference between your two options, and the beam-quanting
is likely to round away any differences. Either way is fine for me,
but see below.
> First one has the advantage of being very simple, while the second may be
> more smooth to the eye (but the difference isn't really that big).
> I attach appropriate patches (they are really straightforward so i didn't
> upload them for review).
Can you make your code be less hardcoded? I propose something like:
factor = (1+abs(hp[dir])) / (2*staff_radius + 1)
shorten *= min(factor, 1.0)
this way, it will work with other types of staves too. If you want to
be extra fancy, you could do
factor = pow(factor, shorten_concavity)
for some number != 1 to tune shape of the transition.
--
Han-Wen Nienhuys - address@hidden - http://www.xs4all.nl/~hanwen