>I still don't understand what you really want.  Let me explain my
>reasoning
>
>* A slur has to be in the same Voice context as the notes it spans.
>  You need that to keep a slur from colliding with all the notes it
>  spans.
>
>* So, to make a slur cross staffs, you make the Voice it is in cross
>  staffs.
>
>* You do this by inserting a `staff switch', which is written as
>
>  \translator Staff = nameOfOtherStaff
>
>You can hide this complexity with identifiers.
>
>    switchUp =   \translator Staff = upstaff
>
>For this thing to work, you have to add one (1) extra \switchUp
>statement. I don't understand how you can possibly have it any
>simpler.


Take a look at bars 1-4 of houseontheocean.ly--it isn't as simple as you
would think...  For example, in the bass clef you have two eigth notes
followed by a half.  In order to do it the way you suggest, I would have to
change the half note to an eighth note, which is *not* what the composer
intended...  Instead, to get what you see you have to start the half note in
the upper staff then cross it down to the lower and vice versa to get the
upper line--very inelegant, and very confusing.

>If I understand correctly, you want to have a some sort of  special
>marker (hypothetical syntax:  \( and \) ), so you can put  the up staff
>notes in the up staff, and the down staff notes in the downstaff, and
>add a \( to the downstaff starting note, and a \) to the up staff
>ending note, that makes the slur magically cross staffs?


Yes!  This is exactly what is needed.  As to how you would implement it, you
could squash the staves (and make the marks only work in, say, a PianoStaff
context) together and treat them as a single voice.  And yes, the
implementation might be somewhat difficult, but certainly not impossible!
Isn't that what computers are for?  To simplify things for the end user
(should the end user so desire)?  Power and simplicity don't have to be
mutually exclusive!

>Aside from the implementation issues (they would be hairy), it gives
>rise to ambiguities: for example, what if there are multiple slurs
>crossing staffs upwards: how would you know if the slurs should cross
>or not ?
>
>picture:
>
>upper ===========\)C=
>staff =======E===\)D=
>               F
>
>lower   ===B\(=========
>staff   ===A\(=========
>
>( A-F are note heads.  \( \) mark slur endings/ beginnings.)
>
>How can lily figure out if you have a slurs from A to C and B to D or
>from A to D and B to C?  If and how should collisions with E and F be
>handled?


This wouldn't be as difficult as you might imagine.  If the notes 'A' and
'B' and 'C' and 'D' exist on the same stems as your picture suggests, there
would only be need for one phrase mark and not two, and you could alert the
user to the situation.  Actually, I can't imagine a situation where you
would *need* more than one phrase mark, but if you did, you could resolve
them using a simple nesting algorithm similar to the way C/C++ resolves
parentheses...

As for how to handle the inevitable collision with 'E' and 'F', you could
simply raise the phrase mark vertically and/or turn the stems down on 'E'
and 'F'.

-- Shamus

BTW, I'm not trying to tear you down, I think what you have now is pretty
damned awesome!  I'm only trying to suggest ways to make Lily even better...
;-p

Reply via email to