2010/10/19 Cordilow <address@hidden>
In most music I see out there, I've noticed that related dynamics (and often
markup) are usually parallel (such that if you drew a horizontal line, it
would meet both at the same vertical position). In fact, I'm hard pressed to
think of a situation where they're not in the sheet music I've seen
published in books and such.
It's a nice idea, however i'd prefer that LilyPond would do this more automatically (the less input user needs to type the better). In my opinion it should work like this:
After deciding where line breaks are,* LilyPond looks where all dynamics in a particular staff are.
Lily forgets about dynamics that are not related to any other dynamics, i.e. too far apart (like 2 full measures apart or 30 staff spaces apart)
for each group of related dynamics:
for each dynamic in the group Lily calculates the "default" vertical distance from the staff
Lily calculates the difference between the maximum and minimum of above values
if that difference is not greater than, let's say, 2 staff spaces,** Lily places all dynamics from this group at the same vertical position level
if the difference is greater, Lily divides this group of related dynamics in more groups in such a way that the differencies became smaller, and repeats process.
I hope its clear... What do you think about it?
I can add $20 to the bounty if it's done like i described.
* i think there is no need to vertically align dynamics from different systems
** if dynamics are positioned above the staff and there is a very high note with a dynamic, it would make no sense to lift all related dynamics so high above the staff to match this super-high one.