lilypond-devel
[Top][All Lists]
Advanced

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

'avoid-slur proposals


From: Mark Polesky
Subject: 'avoid-slur proposals
Date: Sat, 11 Apr 2009 00:33:35 -0700 (PDT)

'avoid-slur proposals:

1. remove 'avoid-slur from Slur properties

   Why does Slur have an 'avoid-slur property?
   Can anyone give an example where the command
   \override Slur #'avoid-slur = #<something>
   has an effect?


2. add a choice: 'ignore

   \override Fingering #'avoid-slur = ##f triggers the 
   message: "warning: Ignoring grob for slur: Fingering. 
   avoid-slur not set?"

   Staff.Accidental also triggers the warning (and I don't
   know how many others). Perhaps the warning could be 
   removed if the user demonstrates intent like this:
   \override Fingering #'avoid-slur = #'ignore

   By the way, is there a way to suppress this warning? I'm
   working on a macro that could potentially trigger this
   warning dozens of times in a single compile. Something
   akin to \override NoteColumn #'ignore-collision = ##t
   but for Slur instead?


3. rewrite the docstring.

   I can hear Graham already. Well, fine, I'll do it
   myself.  

   If you're curious, here are 2 paragraphs of the type
   of confusion that awaits a user reading the current
   docstring (I know from experience):

   How does a clef move "around" or "outside" a slur? For 
   a clef to be "inside" a slur is intuitive - but it's 
   not the clef that moves (as in the case of scripts), 
   the *slur* does. The docs say:
      "'around only moves the
script if there is a 
       collision; 'outside always moves the script."

   Is a clef a script? With the command:
   \override Staff.Clef #'avoid-slur = #'around
   there is a collision, but no script is moved. And
   \override Staff.Clef #'avoid-slur = #'outside
   doesn't cause anything to move either, which renders 
   the docstring confusing IMO. But with this option:
   \override Staff.Clef #'avoid-slur = #'ignore
   I think the situation would be clearer.   

   So here's my new docstring. Notice that I'm so adamant 
   about the 'ignore choice that I've incorporated it 
   already. Perhaps it's a little too long, but I prefer 
   it this way. The super-concise version that's there
  nowhas confused me for long enough.

__________________________________


Method of handling slur collisions.
Choices are 'inside, 'outside, 'around,and 'ignore.

'inside adjusts the slur if needed to keep the grob inside
the slur. 'outside moves the grob vertically to the outside
of the slur. 'around moves the grob vertically to the 
outside of the slur only if there is a collision. 'ignore 
does not move either. In grobs whose notational significance
depends on vertical position (such as accidentals, clefs,
etc.), 'outside and 'around behave like 'ignore.

__________________________________


4. implement 'avoid-ties and 'avoid-phrasing-slurs?

   just an idea.


5. answer 2 more of my questions

   Why is it that\override Script #'avoid-slur = ##f
   looks like 'inside for staccato dots, but looks like
   'around for accents? And why do neither of them actually
   ignore the slurs, as the current docstring suggests they
   might?

   And finally, why trigger a warning for Fingering and
   Staff.Accidental (and, as previously stated, I don't know
   how many others) but not for Staff.TimeSignature and
   Staff.Clef?


Thanks.
- Mark

p.s. Are my posts too long generally?


      

Attachment: avoid-slur.ly
Description: Text Data


reply via email to

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