On Sat, 2016-01-23 at 13:27 +0100, Thomas Morley wrote: > 2016-01-21 16:54 GMT+01:00 David Sumbler <da...@aeolia.co.uk>: > > > > > Unfortunately I am still getting some over-long hairpins. I think that > > perhaps this has nothing to do with myHairpinMinimumLength, because I > > was getting these long hairpins before you ever sent it to me - this is > > one of the reasons I was going to set about tweaking hairpin lengths in > > the piece. > > > > The 2 bars I quoted before are: > > > > % bar 14 > > g8\< a b cs( ~ cs\mf\> b) d,\mp cs | > > g8\< g a g fs4\mf\> r\invP | > > d8\< e fs e as,(\mf\> b) r4\invP | > > e2\< d4\mf\> fs8(-\ten\mp fs)-\ten | > > % bar 15 > > b8 cs\< d e fs-\ten\> fs\! e d \time 3/2 | > > b,8\mp as\< b cs as-\ten\> b\! r4 \time 3/2 | > > r2 cs8-\ten\mf\> b\! r4 \time 3/2 | > > g8 e\< fs e fs-\ten\> d\! r4 \time 3/2 | > > > > This is in \parallelMusic for a string quartet. > > > If I compile it with the following code, without(!!) any override I > get the attached image. > > \parallelMusic #'(E F G H) { > % bar 14 > g8\< a b cs( ~ cs\mf\> b) d,\mp cs | > g8\< g a g fs4\mf\> r\invP | > d8\< e fs e as,(\mf\> b) r4\invP | > e2\< d4\mf\> fs8(-\ten\mp fs)-\ten | > % bar 15 > b8 cs\< d e fs-\ten\> fs\! e d \time 3/2 | > b,8\mp as\< b cs as-\ten\> b\! r4 \time 3/2 | > r2 cs8-\ten\mf\> b\! r4 \time 3/2 | > g8 e\< fs e fs-\ten\> d\! r4 \time 3/2 | > } > > \new StaffGroup << > \new Staff \E > \new Staff \F > \new Staff \G > \new Staff \H > >> > > \new Staff \E > \new Staff \F > \new Staff \G > \new Staff \H > > Ofcourse there are some too short Hairpins, but I can't see any too long. > > > Nevertheless I changed `my-hairpin-minimum-length' to > > #(define (my-hairpin-minimum-length grob) > "Sets @code{minimum-length} for @code{Hairpin}, if their left bound is not the > @code{NoteColumn}. > The visible length is actually the one, specified by an additional override > for > @code{minimum-length} or the default. > If left bound is @code{NoteColumn}, default or specified @code{minimum-length} > will take over." > (let* ((bound-left (ly:spanner-bound grob LEFT)) > (bound-right (ly:spanner-bound grob RIGHT)) > (sys (look-up-for-parent 'System Y grob)) > (left-x-ext (ly:grob-extent bound-left sys X)) > (not-note-column? > (lambda (g) > (not (and (ly:grob? g) > (grob::has-interface g 'note-column-interface)))))) > (if (and (not-note-column? bound-left) > (interval-sane? left-x-ext) > (> (abs (cdr left-x-ext)) > (ly:grob-property-data grob 'minimum-length))) > (ly:grob-set-property! grob 'minimum-length > (+ > (ly:grob-property-data grob 'minimum-length) > (* (if (not-note-column? bound-right) 2 1) (cdr > left-x-ext))))))) > > Applying it as before I get the second attached png. > > Looks quite ok to me. > Though please be aware, all I can do is to provide a more or less > workable work around issue 2207. > > There are a lot of things which determine actual Hairpin length. > I doubt I can reasonable cover them. > > I think you should do > \revert Hairpin.before-line-breaking > in cases where `myHairpinMinimumLength' doesn't return acceptable > results and tweak manually. > > > HTH, > Harm
I am utterly mystified by what is going on here. I have tried the new routine on both my string quartet and also on the code you provided. In both cases I find that setting minimum-length to the value 2 gives acceptable results. (In the case of the full string quartet, I have closely inspected only the two bars included in your code.) If I set minimum-length to a value less than 2, then I get some hairpins that are too short - hardly surprising. But if I use any value of minimum-length greater than 2 up to about 6, then again I get hairpins that are too short. Indeed, with values between about 2.5 and 5, I also get "decrescendo too small" warnings. With values from about 7 upwards, the short hairpins are OK, but others are too long. In other words, the only value that I can find less than 6 or 7 and which provides acceptable results is 2 - no more, and no less. Incidentally, do you know what triggers the "decrescendo too small" and similar warnings? It does not seem to happen simply when the actual hairpin is less than the minimum-length setting. David _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user