Re: Plans for changing chord repeat implementations

2012-01-29 Thread James
David,

On 29 January 2012 02:26, David Kastrup d...@gnu.org wrote:
 Nicolas Sceaux nicolas.sce...@gmail.com writes:

 Le 26 janv. 2012 à 11:00, David Kastrup a écrit :

 The bad news is that absolute pitch friends would have to call the \q
 function (any better name for it?) explicitly.  Since q is an input
 convenience, and relative pitch is also an input convenience, I don't
 think that there would be much of an affected user base.

 I do use absolute pitch mode, together with the q shortcut, so the
 affected user base is non-nil.

 URL:http://codereview.appspot.com/5595043

 What would be the impact of your solution on this kind of code?
 Is it just about adding e.g. \q before the block?

 The user impact is now down to nil.  There is no longer any relation of
 the implementation to \relative.  Since you don't need to call it
 manually except for special considerations (like letting it retain
 articulations in some passage), \q is now called \chordRepeats.

 I don't think that there are nightmarish corners in the implementation
 and behavior any more.


So we need to make any tweaks to the NR since

...There is no longer any relation of
the implementation to \relative...

http://lilypond.org/doc/v2.14/Documentation/notation/single-voice#chord-repetition

an @warning or @knownissue?

Regards

-- 
--

James

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


Re: Plans for changing chord repeat implementations

2012-01-29 Thread David Kastrup
James pkx1...@gmail.com writes:

 So we need to make any tweaks to the NR since

 ...There is no longer any relation of
 the implementation to \relative...

 http://lilypond.org/doc/v2.14/Documentation/notation/single-voice#chord-repetition

 an @warning or @knownissue?

It is more like removing warnings or knownissues for existing uses.  But
new uses are worth some more explanation.  I'm currently on it.  I'm
pretty almost everybody should prefer the new behavior, not just because
it does no longer mess with the parser/lexer and/or backend and/or fall
apart when copying \relative passages, but because it is much more
flexible and predictable to use (you can already see in the changed
regtest an application that has not been possible previously: fingering
repetition only in tabulature, while not removing the initial fingering
spec in the main score).

-- 
David Kastrup


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


Re: Plans for changing chord repeat implementations

2012-01-28 Thread David Kastrup
Nicolas Sceaux nicolas.sce...@gmail.com writes:

 Le 26 janv. 2012 à 11:00, David Kastrup a écrit :

 The bad news is that absolute pitch friends would have to call the \q
 function (any better name for it?) explicitly.  Since q is an input
 convenience, and relative pitch is also an input convenience, I don't
 think that there would be much of an affected user base.

 I do use absolute pitch mode, together with the q shortcut, so the
 affected user base is non-nil.

URL:http://codereview.appspot.com/5595043

 What would be the impact of your solution on this kind of code?
 Is it just about adding e.g. \q before the block?

The user impact is now down to nil.  There is no longer any relation of
the implementation to \relative.  Since you don't need to call it
manually except for special considerations (like letting it retain
articulations in some passage), \q is now called \chordRepeats.

I don't think that there are nightmarish corners in the implementation
and behavior any more.

-- 
David Kastrup


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


Re: Plans for changing chord repeat implementations

2012-01-26 Thread Nicolas Sceaux
Le 26 janv. 2012 à 11:00, David Kastrup a écrit :

 The bad news is that absolute pitch friends would have to call the \q
 function (any better name for it?) explicitly.  Since q is an input
 convenience, and relative pitch is also an input convenience, I don't
 think that there would be much of an affected user base.

I do use absolute pitch mode, together with the q shortcut, so the
affected user base is non-nil.  \relative is to save characters, but `q'
is more than that, it also improves to maintain and read code, so it's
not surprising to see absolute mode and `q' together.  Here is a real
word example copied from my code base:

  {
R2. |
sol' do'' mi''8-pincé q q q q q |
q q q q q q |
q sol re' si' fa'' q q sol re' re'' si'' q |
q sol re' si' fa'' q q sol re' re'' si'' q |
q4 r2 |
r8 sol re' si' fa'' q q q q |
sol' do'' mi''8 q q q sol re' do''4 sol fa' si' |
sol mi' do''4 r2 |
sol' do'' mi''8 q q q q q |
q q q q q q |
r2 la' mi''4 |
fa' mi''8 q q q q q |
q q q q r4 |
  }

What would be the impact of your solution on this kind of code?
Is it just about adding e.g. \q before the block?

Nicolas


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


Re: Plans for changing chord repeat implementations

2012-01-26 Thread David Kastrup
Nicolas Sceaux nicolas.sce...@gmail.com writes:

 Le 26 janv. 2012 à 11:00, David Kastrup a écrit :

 The bad news is that absolute pitch friends would have to call the \q
 function (any better name for it?) explicitly.  Since q is an input
 convenience, and relative pitch is also an input convenience, I don't
 think that there would be much of an affected user base.

 What would be the impact of your solution on this kind of code?
 Is it just about adding e.g. \q before the block?

Yes, that would be all.  Otherwise you would get an error message
telling you to do so once q hits the iterators (the sole purpose of its
iterator would be to create that error; \q/\relative would replace all
traces of q with the final chord so that one would no longer see the
history).

I am not particularly happy about that, but
a) \relative needs its own sequencing, so if we sequence in the parser,
we have two competing ways of creating sequences.
b) sequencing in the parser needs to either do a lot of copying
just-in-case, or face breakage when music functions and iterators and
other stuff modify music (which they are permitted to do).
c) sequencing automatically at the last possible moment (when
iterating) differs even more with sequencing in \relative mode, and has
its own set of surprises.

As you can see mentioned in the hand-waving comments already (and the
bug I want to fix is just the tip of the iceberg), this is all rather
shaky.  Making the sequencing explicit (and relative as a user-made
sequencing point seems like one reasonable spot where doing this
automatically seems to make good sense to me, while I don't see a
similarly obvious place when \relative is _not_ being used) makes the
feature and its implications and side-effects straightforward.

Right after \relative is a good time.  I don't see anything equally
convincing in absolute music, in particular that one must _not_ apply \q
_before_ \relative, and one usually does not know in advance whether
music is going to pass through \relative yet.

And if you delay completely to iteration time, it will not just show
identical chords when using \relative, but also across using \transpose
and similar.  Which also seems awkward.  Maybe I am picking the wrong
balance point for awkwardness here.  No idea.

-- 
David Kastrup

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