lilypond-user
[Top][All Lists]
Advanced

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

Re: Survey: Large scores


From: H. S. Teoh
Subject: Re: Survey: Large scores
Date: Fri, 17 Apr 2015 11:44:57 -0700
User-agent: Mutt/1.5.23 (2014-03-12)

On Fri, Apr 17, 2015 at 10:51:41AM +0200, Orm Finnendahl wrote:
[...]
> The only really painful part was the partcombiner which seems very
> buggy, but was indispensable as I needed to save as much vertical
> space as possible.

Yeah, I've run into quite a number of \partcombine myself. Most of it
was caused by unusual input, though -- meaning one voice ended
prematurely and \partcombine doesn't seem to know to mark the remainder
of the other voice as "Solo" or "Solo II". Filling out both voices so
that they end at the same time got rid of most of this category of bugs.

More annoying is the fact that \partcombine often gets confused when the
two voices have very divergent rhythms -- crescendo hairpins don't
merge, dynamics get printed twice, short rests in the voices cause silly
"a2" and "Solo" markings several times per bar within 1-2 notes of each
other, etc.. I've had some luck in ironing out most of these issues with
manually-placed \partcombineApart, \partcombineChords, and
\partcombineAutomatic, etc., but there are still a few cases where I had
to use \override DynamicText.stencil and \override Hairpin.stencil to
hide the redundant marks. Most annoyingly, since I use the same source
for generating the instrument parts, where the marks should *not* be
hidden, I ended up writing macros that use \tag to hide certain marks
only inside \partcombine but to leave them intact elsewhere.

The one thing that I currently have not been able to solve is how to
make ScoreMarks contexts die when an associated Staff or StaffGroup has
hara-kiri'd. I've figured out that the current harakiri-spanner-group
code is actually capable of achieving what I want, it just requires a
custom engraver to set the right internal variables. I actually wrote a
Scheme engraver that does this, and it's able to figure out the correct
settings, but can't actually set them because there is currently no way
to create a grob array from Scheme. I modified the C++ code to allow
this, but I must've done something wrong 'cos while the setting is
visible from Scheme, it for some reason is invisible to the C++
harakiri-spanner-group code.

Anyway, the point is that this aspect of Lilypond is a deficiency that
definitely requires in-depth knowledge of Lilypond internals (including
the C++ code!), and not something users should be expected to do. I plan
to submit a patch for this once I figure it all out so that others don't
have to deal with it, but that may not be for a while yet. I'm curious
how you dealt with this issue, or worked around it -- basically it comes
up when I have a "frenched" orchestral score (i.e. with
\RemoveEmptyStaves) and would like the tempo and rehearsal marks
duplicated above the brass and strings, but to elide these marks from
the corresponding choir when the entire choir is quiet and omitted from
the page. Do you just manually duplicate the marks in each staff where
they need to appear?


> If anybody is planning something like that don't hesitate to contact
> me. The production process probably would have been close to
> impossible without tools like make, git, emacs and quite some lisp
> coding and I don't mind sharing my experiences.
[...]

I use SCons, git, and vim, but same idea, I guess. :-) Especially git is
indispensible when I need to experiment with different ways of working
around a particular Lilypond limitation without losing track of where I
was and/or accidentally losing data or introducing inadvertent mistakes
in the score.


T

-- 
Just because you survived after you did it, doesn't mean it wasn't stupid!



reply via email to

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