I might attack this myself some day, if it can really
be accomplished at the Scheme interface. I doubt that I will ever
penetrate the C++ substrate. At present, I don't understand the data
structures quite well enough, and I think a few more iterations of the
documentation are probably required before it's clear enough to me. For one thing, I haven't figured out yet whether a "moment" is a point in time, or an interval at a specific spot in time, or just a duration used in a particular way. Kieren's suggestion below seems to indicate that it's a point in musical time. Unfortunately, editorial changes to note durations are particularly problematic, since they change all of the time values downstream. To do the "external tweaking" thing right, one might need another way of identifying points in the time line of the score. I notice that the synchronization of lyrics to notes already uses note & syllable counts, but adding yet another time-ish line is probably a big change in the system, and not to be expected soon. I am not even sure what sort of specification is desirable. "To separate bug-specific tweaks from the ... music" seems to be partly possible already. To produce a typeset version similar to the MS, I put all offset and similar mark-up in a separate voice from the notes (in the style suggested by the manual for presenting breaks: I'm still not sure whether I'm winning or losing by doing it that way, but I think I should explore the technique before going beyond a prototype---the alternative is to tag all of that markup for easy removal). I suspect that Graham is referring specifically to "tweaks" in the technical sense of changes that are local to a single voice. My MS has only one voice per staff, and I think that I would be unable to adjust two voices on the same staff in this manner, because adjustments that went above the level of a single tweak-voice would hit the full staff context. But I still haven't totally groked contexts. If you are mostly satisfied with the current ability to adjust a whole staff with \overrides in a special voice separate from the notes, then the right improvement is probably to adjust the hierarchy of contexts, so that a voice full of adjustments can attach them to particular voices even within a single staff context. I suspect that you will eventually want a general way to specify any context, not just one enclosing the current one. A slightly less flexible approach is to allow an intermediate grouping context to contain one voice on a staff along with its tweak-voice, while isolating them from the other voices on the staff. Cheers, Mike O'Donnell Graham Percival wrote: On Sat, Jan 02, 2010 at 12:22:27PM -0500, Kieren MacMillan wrote:If someone with real Scheme-fu could build a function that took a series of moments and tweaks, you might be able to do something likems = \relative e'' { e4 e c d | } correctionsEditionA = { \coolSchemeFunction #'(ly:make-moment 0 1) #'pitch #-2 … }I've mused about this -- not for editions, but to separate bug-specific tweaks (i.e. #'extra-offset for collisions) from the actual music definition. I don't foresee anything happening for months if not years, but I've added it to the tracker. If I wasn't doing release and manager tasks, I'd like to tackle it myself: http://code.google.com/p/lilypond/issues/detail?id=955 Cheers, - Graham |
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user