Joe Neeman wrote: > > Is there a way to change the clef from within a grob callback? > > Not really. You can change the clef's glyph, but you can't really change > the clef's influence on the following notes.
I presume you mean I can change the clef stencil, or do you mean that it's possible to change the clefGlyph context property? If that were the case, then couldn't I change clefPosition and middleCPosition and do it that way? > ...Reason being, the NoteHead > grobs are created around the same time as the Clef grob and their > positions are fixed at that time, so unless you want to somehow iterate > over and modify all the NoteHeads, it isn't really going to work. > > I'd suggest a music function rather than a grob override. How? I was using a music function before, but I couldn't find a way to get NoteHead staff-positions without a callback. And I get stuck with a music-function because I don't know how to test if I'm in a \relative block or not. I guess the algorithmic idea would be: *Before* staff-positions are concretely determined... 1. what would the staff-positions be if we stayed in this clef? 2. if they're within this clef's "staff-range", do nothing. 3. if another clef is better (according to user), change the clef. 4. determine actual staff-positions with the updated clef info. I just don't know how to catch the process before the staff-positions are determined, if all I have is a context and a EventChord. I thought that if I could at least know whether I'm in a \relative block, I could then look at the current clef, and figure it out the long way (not that I'd want to). But I imagine there must be an easier way in. And I can't test for \relative-ness as far as I can tell anyway. Do you have any other (slightly more specific) suggestions? (: Thanks for taking a look at this. - Mark _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel