Re: ChordNames in Staff context

2013-11-01 Thread David Kastrup
Robert Schmaus  writes:

> Hi Keith,
>
> thanks for your reply!
>
>>> May I ask what the reasons were for
>>> removing that technique?
>>
>> Probably, no-one watching the changes knew that this was a technique.
>
> that would be a pity!

LilyPond can't support everything which people consider "a technique":
there are many things that work more by chance than anything else.

In this case, it was a _documented_ technique, however:
http://code.google.com/p/lilypond/issues/detail?id=3641>.  If you
find one of _those_ breaking, pointing out the respective part of the
documentation greatly increases your chance of getting a fix.

> my impression from following the lily-mailing list for some time
> (years, actually) now is that the vast majority of users is concerned
> with classical music only.

Well, I'm playing the accordion.

> also, David Kastrup's quote in my OP seems to indicate that putting
> chord names right inside the staff is (in his experience) not a
> plausible thing to do in music in general.  I assume therefore that
> not many lilypond-users actually do this and that the reason for
> removing this technique was a matter of "code hygiene" rather than
> actual engraving problems. (Please forgive me if I'm wrong - I don't
> know about the internals of lilypond.)

The problem was not one of "code hygiene".  The problem was
http://code.google.com/p/lilypond/issues/detail?id=2990>: due to
improvements elsewhere, LilyPond simply crashed on your input while
eating all the memory.  The change made it spew error messages and
hobble on instead.  Not the best improvement, but better than a hard
crash.

> that assumption is backed by (I can't stress this enough) the fact
> that the results really were fantastic, and the code for achieving
> this result was incredibly elegant,

Not really...

> easy, not to mention intuitive, and the compiling process/time (very
> short scores, admittedly) hinted at no problems at all. so, there
> really was no reason for me to assume that this possibility was a
> candidate for removal ...

It's easy to to

\layout {
  \context {
\ChordNames
\name "ChordNamesInStaff"
\alias ChordNames
\remove "Axis_group_engraver"
  }
  \context {
\Staff
\accepts ChordNamesInStaff
  }
}

and then use \new ChordNamesInStaff whenever you want.  That will work
fine and also let you differentiate between the two (\new ChordNames
will automatically go outside of a Staff).

That's reasonably elegant.

What isn't elegant is the kind of stuff that occurs when you don't do
that.  It's not as bad as a hard crash, but not pretty either.

> thank you also for your solutions. I shall try them out - at first
> glance and playing around a bit, I'm not sure if I can use them
> without doing a lot of re-coding in my old scores. I guess I'll rather
> revert back to 2.16 instead of doing that ...

Well, 2.17.96 will likely have that fix from issue 3641 (in about two
weeks), and 2.18.0 will likely follow suit.  Then your old scores should
at least not suffer from this problem.

This VerticalAxisGroup thing was actually on my "can't we do this more
sanely before 2.18?" list.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: ChordNames in Staff context

2013-10-14 Thread Robert Schmaus

Hi Keith,

thanks for your reply!


May I ask what the reasons were for
removing that technique?


Probably, no-one watching the changes knew that this was a technique.


that would be a pity!



 From the email you linked, I can see the potential for a problem. The
Axis_group_engraver in ChordNames does the job of arranging all the
within the context into rows on the page. But if ChordNames is inside
a Staff, the Staff also has an Axis_group_engraver also trying to do
the same job, also collecting the same chord names into rows.


yes, I've understood basically the same (although I don't really know 
about those engravers).
let me reply to that, that whatever the internal conflict was which the 
removal of that technique tried to solve, the actual result of having 
Staff accept ChordNames was quite outstanding. all musicians who I play 
with always were in awe about the quality of my lead sheets (although I 
could get hardly one to use lilypond as well as the text-based input 
appears too outlandish to them).


my impression from following the lily-mailing list for some time (years, 
actually) now is that the vast majority of users is concerned with 
classical music only. also, David Kastrup's quote in my OP seems to 
indicate that putting chord names right inside the staff is (in his 
experience) not a plausible thing to do in music in general.
I assume therefore that not many lilypond-users actually do this and 
that the reason for removing this technique was a matter of "code 
hygiene" rather than actual engraving problems. (Please forgive me if 
I'm wrong - I don't know about the internals of lilypond.)


that assumption is backed by (I can't stress this enough) the fact that 
the results really were fantastic, and the code for achieving this 
result was incredibly elegant, easy, not to mention intuitive, and the 
compiling process/time (very short scores, admittedly) hinted at no 
problems at all. so, there really was no reason for me to assume that 
this possibility was a candidate for removal ...





<<
   \new ChordNames \chordmode { s1*3 ges4 bes1:m7 }
   \new Staff \with {\accepts ChordNames } <<
 \new ChordNames \with {
   \override ChordName #'Y-offset = #-1
   \remove Axis_group_engraver
 } { \chordmode {
   \repeat percent 4 ces4 f2:m7.3-.5- bes:m7 es:m7 aes:m7
   s1*2 } }
 \new Voice {
   \key es\minor s1*3
   \transpose c c' {bes,4 des ges bes \chordmode { bes,1:m7 } } } >> >>

<<
   \new ChordNames \chordmode { s1*3 ges4 bes1:m7 }
   \new Staff <<
 \new Voice \with {
   \consists Chord_name_engraver
   \override ChordName #'Y-offset = #-1
   \remove Note_heads_engraver
 } { \chordmode {
   \repeat percent 4 ces4 f2:m7.3-.5- bes:m7 es:m7 aes:m7
   s1*2 } }
 \new Voice {
   \key es\minor s1*3
   \transpose c c' {bes,4 des ges bes \chordmode { bes,1:m7 } } } >> >>


thank you also for your solutions. I shall try them out - at first 
glance and playing around a bit, I'm not sure if I can use them without 
doing a lot of re-coding in my old scores. I guess I'll rather revert 
back to 2.16 instead of doing that ...



thanks again & cheers,
robert


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: ChordNames in Staff context

2013-10-13 Thread Keith OHara
Robert Schmaus  web.de> writes:

> The compiling resulted in hundreds of errors (after applying 
> convert-ly). It took some time to figure out, that the problem was the 
> statement
> 
> \context {
>  \Staff
>  \accepts "ChordNames"
> }
> 
> in the score block. A google search turned up this conversation from 
> March 2013 which took place on the lilypond-bugs list:
> http://lilypond.1069038.n5.nabble.com/programming-error-while-inserting-
quot-ChordNames-quot-in-quot-Staff-quot-td143559.html
> 

> May I ask what the reasons were for 
> removing that technique?

Probably, no-one watching the changes knew that this was a technique.

>From the email you linked, I can see the potential for a problem. The
Axis_group_engraver in ChordNames does the job of arranging all the
within the context into rows on the page. But if ChordNames is inside
a Staff, the Staff also has an Axis_group_engraver also trying to do
the same job, also collecting the same chord names into rows.

You can tell any particular instance of ChordNames to stop doing 
Axis_group_engraving, so that it stops fighting with the Staff.
Or, you can tell a particular instance of Voice (which fits nicely
in the Staff) to start doing Chord_name_engraving.  I do not know
which will work best for lead sheets.

<<
  \new ChordNames \chordmode { s1*3 ges4 bes1:m7 }
  \new Staff \with {\accepts ChordNames } <<
\new ChordNames \with {
  \override ChordName #'Y-offset = #-1
  \remove Axis_group_engraver
} { \chordmode { 
  \repeat percent 4 ces4 f2:m7.3-.5- bes:m7 es:m7 aes:m7
  s1*2 } }
\new Voice {
  \key es\minor s1*3 
  \transpose c c' {bes,4 des ges bes \chordmode { bes,1:m7 } } } >> >>

<<
  \new ChordNames \chordmode { s1*3 ges4 bes1:m7 }
  \new Staff <<
\new Voice \with {
  \consists Chord_name_engraver
  \override ChordName #'Y-offset = #-1
  \remove Note_heads_engraver 
} { \chordmode { 
  \repeat percent 4 ces4 f2:m7.3-.5- bes:m7 es:m7 aes:m7
  s1*2 } }
\new Voice {
  \key es\minor s1*3 
  \transpose c c' {bes,4 des ges bes \chordmode { bes,1:m7 } } } >> >>


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user