Re: 2.16 release candidate 3 imminent

2012-01-22 Thread David Kastrup
m...@apollinemike.com m...@apollinemike.com writes:

 On Jan 21, 2012, at 10:15 PM, David Kastrup wrote:

 m...@apollinemike.com m...@apollinemike.com writes:
 
 On Jan 21, 2012, at 7:58 PM, David Kastrup wrote:
 
 
that all articulation events will be pulled out of NoteEvents or
 
RestEvents and broadcast at the iterator level.
 
 
There is such a thing as a chord articulation.
 
 
 
 Why couldn't this distinction be captured via a different event name?
 ChordArticulationEvent versus ArticulationEvent, for example.
 
 Where would be the point?

 To not make the distinction in the parser.

It is different input anyway, so the distinction is already there in the
input.  If you would drop that distinction in the rules that early, you
would end up with chords being allowed as chord constituents.

 I think that changing the parser should be a last resort if we can't
 figure out a way to represent information through different event
 classes.

I have trouble understanding what you call parser here.

 What would really help are some before/after examples (ly code and/or
 music streams and/or brief text like before the patch, you could not
 do X, after, you can or this patch will allow me to experiment with
 implementing X) would help a great deal.  As if it were going into
 the Change Log, for example.
 
 It's a bit hard since the whole design (perfected by the
 rhythmic-music-event) was intended to make no user-visible difference.
 The music expression has just become predictable.  You get an EventChord
 iff  ...  has been in the input.  You get articulations on NoteEvent
 for pitch-postevent regardless whether or not this is part of a chord.
 

 Why can't we treat c as shorthand for c?

Because inside of chords, it isn't a shorthand for c.  And music
functions like \tweak need to work inside of chords as well (\tweak
currently even _fails_ if you apply it to c where LilyPond considers it
a shorthand for c and the corresponding passage in the NR is _really_
embarrassing to LilyPond as a system).  See
URL:http://code.google.com/p/lilypond/issues/detail?id=2037#c3 for an
approach to make c as c work which ultimately went up in flames.  It
is not like I did not seriously try that approach.  It is a total
maintenance nightmare (and has logical fallacies you can't really iron
out) unless you forbid music functions inside of chords altogether.

It also makes user level programming tasks at the input side (and that's
really what music functions are) much harder and more intransparent if
you don't have predictable relations between input and music
expressions, and if you have to strip multiple layers before getting at
the information you actually wanted and that was straightforward in the
input.

Music expressions _represent_ the input, as opposed to stream events
which represent the typesetting task.

 Having a compulsory wrapping around singletons is just as predictable
 as no wrapping at all.

Except that inside of chords, there is no such wrapping, and a music
function does not know in advance where it is going to get used.

 As for articulations being on a NoteEvent whether or not this is part
 of a chord, I agree that this is a very good idea, but I think this
 can be accomplished by wrapping everything in an event chord and
 farming out the work to iterators.

Uh, we _are_ farming this out to the rhythmic event iterator.  That was
its point.  It was the missing link.

 If you use \displayMusic on something that you might want to put into a
 chord, you don't get wrong input.  Tacking   around a construct does
 not change the structure of its inside.  It is not necessary to tack  
 around a construct to make a \tweak work (which is a user-visible
 change). 

 Why couldn't tweak make this distinction in the music function itself?

Why should it?  Why should we strive to make programming a reliably
working music function as hard as possible?

 The music function could check if its input is an EventChord and, if
 so, feed it the first entry in the 'elements list of the EventChord.
 This seems like a less intrusive change than changing the parser.

And what if there is more than one element?

Anyway, see above for an attempt to make a less intrusive change and get
inside chord functions work with the same argument parsing semantics as
normal music functions (after all, one does not know the difference).
It failed.  A special inside-of-chord-mode for parsing music function
arguments is a total maintenance hog.  Nobody will understand the code,
and more importantly, nobody will understand the behavior.

I have been deadlocked for about a month on further parser work by this.

 You can use #{ #} for constructing material that ends up _inside_ of a
 chord.  Something like
 \displayLilyMusic  \displayLilyMusic ##{ c-. #}
 does not go up in flames but just does what one would expect.

 This is indeed an interesting case.  Again, though, I would expect
 this to fail, precisely because #{#} manipulates the 

Re: 2.16 release candidate 3 imminent

2012-01-22 Thread m...@apollinemike.com
After reading through this e-mail, I'm ok with the patch with one caveat about 
regtests (see below).

On Jan 22, 2012, at 9:08 AM, David Kastrup wrote:

 Music expressions _represent_ the input, as opposed to stream events
 which represent the typesetting task.
 

If this is truly the distinction, then I understand the need for the change.  I 
didn't realize that music expressions needed to be one-to-one and onto 
representations of the input.

 And you currently _can't_, I repeat _can't_ write a music function
 (unless it gets a music argument created by the parser instead of just
 passed in from elsewhere) that can work like the input c inside of a
 chord as well as outside.  Because outside, you need to produce c, and
 inside, you need to produce c.  But without a music argument?  No.
 Writing a music function called as \semitonesabovec #5 (or something
 like that) that will work both inside as well as outside of chords is
 just _impossible_ right now.  It will be trivial afterwards.
 

This is the part that I have the most trouble imagining, not because I don't 
trust you, but because I don't follow the code well enough to know how it would 
result in this.  I'd like to see regtests in one of these commits that uses two 
or three simple functions in the form \foo c and \foo c that show this 
distinction.

I thought that any music function could look through its argument, see if was 
an event chord or a note event, and act on it accordingly.  So, for example (in 
pseudocode):

#(define (bar music)
  (do-some-stuff-to music))

foo =
#(define-music-function (parser location music)
  (if (eqv? (ly:music-property music 'name) 'EventChord)
  (bar (car (ly:music-property music 'elements)))
  (bar music)))

The idea that a music function would be unmakable before this commit and 
makable after is, in my mind, the most solid argument for making this change.  
Like I say above, I'd need to see this in a regtest.

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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread Benkő Pál
 I'd like to see regtests in one of these commits that uses two or three 
 simple functions in the form \foo c and \foo c that show this distinction.

 I thought that any music function could look through its argument, see if was 
 an event chord or a note event, and act on it accordingly.

but the argument is the same, it's the environment of the function
result that's different.
the point is to not have to write two versions of each function, one
to be used within chords and one outside.

p

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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread David Kastrup
m...@apollinemike.com m...@apollinemike.com writes:

 After reading through this e-mail, I'm ok with the patch with one
 caveat about regtests (see below).

 On Jan 22, 2012, at 9:08 AM, David Kastrup wrote:

 Music expressions _represent_ the input, as opposed to stream events
 which represent the typesetting task.
 

 If this is truly the distinction, then I understand the need for the
 change.  I didn't realize that music expressions needed to be
 one-to-one and onto representations of the input.

 And you currently _can't_, I repeat _can't_ write a music function
 (unless it gets a music argument created by the parser instead of
 just passed in from elsewhere) that can work like the input c
 inside of a chord as well as outside.  Because outside, you need to
 produce c, and inside, you need to produce c.  But without a music
 argument?  No.  Writing a music function called as \semitonesabovec
 #5 (or something like that) that will work both inside as well as
 outside of chords is just _impossible_ right now.  It will be trivial
 afterwards.
 

 This is the part that I have the most trouble imagining, not because I
 don't trust you, but because I don't follow the code well enough to
 know how it would result in this.  I'd like to see regtests in one of
 these commits that uses two or three simple functions in the form \foo
 c and \foo c that show this distinction.

 I thought that any music function could look through its argument,

Please reread the above paragraph, in particular where I say without a
music argument.

 see if was an event chord or a note event, and act on it accordingly.

Without an argument you can look at, you can't choose your action
accordingly.

 #(define-music-function (parser location music)
   (if (eqv? (ly:music-property music 'name) 'EventChord)
   (bar (car (ly:music-property music 'elements)))
   (bar music)))

_Without_ a music argument.

 The idea that a music function would be unmakable before this commit
 and makable after is, in my mind, the most solid argument for making
 this change.  Like I say above, I'd need to see this in a regtest.

You can make a music function that will either work in chord context, or
in music list context.  And it can ask its music argument which of the
two it is.  I think \parenthesize does that.  But that only works if
there _is_ a music argument.

It is possible that the operation of the music function parenthesize can
be simplified in future, but it may require special behavior on
EventChord anyway.

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread m...@apollinemike.com
On Jan 22, 2012, at 10:25 AM, David Kastrup wrote:

 Please reread the above paragraph, in particular where I say without a
 music argument.

Sorry - I missed that.  This is exactly the type of function that I'd like to 
see in the regtests.

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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread Marc Hohl

Am 21.01.2012 20:17, schrieb Carl Sorensen:

On 1/21/12 11:47 AM, Marc Hohlm...@hohlart.de  wrote:


I must admit that I am lost here and do not quite understand what's
going on,
but will there be any difference between

   c\3 e\2 g\1   and   c e g\3\2\1

once these changes are implemented?

The latter would not display anything anywhere.

Great!

I'm not sure you actually will find it great (although I think it is more
consistent).

If we don't want to have string numbers show up in the music, but we need
them for the tabstaff, right now we can do

c e g\3\2\1

In the future,c e g\3\2\1 won't assign the string numbers to the
tabstaff.  (And in fact, I can't find this usage documented in the NR).

Yes, I stumbled upon it while we were discussing some other problems
concerning tablature, and I used this method to prevent the sting numbers
showing up.

\override StringNumber #'stencil = ##f

yielded in errors (but I think this has changed recently), and simply
setting

\override StringNumber #'transparent = ##t

still influenced the spacing for obvious reasons.

Instead, as would be done regularly in lilypond, we would do

\once \override StringNumber #'stencil = ##f
c\3 e\2 g\1

This is consistent with how things are handled in lilypond, so I think we
ought to move in this direction.
As setting the stencil to false seems to work now, I agree with you that 
this is the

more lilypondish way to go.

Thanks for your explanations!

Regards,

Marc

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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread David Kastrup
m...@apollinemike.com m...@apollinemike.com writes:

 After reading through this e-mail, I'm ok with the patch with one
 caveat about regtests (see below).

 On Jan 22, 2012, at 9:08 AM, David Kastrup wrote:

 Music expressions _represent_ the input, as opposed to stream events
 which represent the typesetting task.
 

 If this is truly the distinction, then I understand the need for the
 change.  I didn't realize that music expressions needed to be
 one-to-one and onto representations of the input.

They are an intermediate level.  They don't _need_ to be anything.
Music functions are a useful tool for manipulating music at a level much
closer to input than stream events are.  They are employed in _several_
layers in the parser: for postevents, for base material, inside of
chords.  If they can do their work context independent, you don't need
to make them cater for different contexts.

In the context of writing music functions, #{ ... #} is a useful tool.
Since it fires up its own parser, its result is not context dependent.
You can't, for that reason, currently employ it usefully in chord
context.

If I write
myC =
#(define-music-function (parser location) () #{ c #})
then I can't currently write
\myC4 or similar.  It would just not work.  And there is no way to
define this function, #{ #} or not, in a manner that could work both in
chords as well as outside (without a Rhythmic Event iterator).

 This is the part that I have the most trouble imagining, not because I
 don't trust you, but because I don't follow the code well enough to
 know how it would result in this.  I'd like to see regtests in one of
 these commits that uses two or three simple functions in the form \foo
 c and \foo c that show this distinction.

Is the above simple enough?

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread David Kastrup
David Kastrup d...@gnu.org writes:

 If I write
 myC =
 #(define-music-function (parser location) () #{ c #})
 then I can't currently write
 \myC4 or similar.  It would just not work.  And there is no way to
 define this function, #{ #} or not, in a manner that could work both in
 chords as well as outside (without a Rhythmic Event iterator).

 This is the part that I have the most trouble imagining, not because I
 don't trust you, but because I don't follow the code well enough to
 know how it would result in this.  I'd like to see regtests in one of
 these commits that uses two or three simple functions in the form \foo
 c and \foo c that show this distinction.

 Is the above simple enough?

If it isn't, try

myC=c

No need to even stoop to music functions.  In this case, \myC will not
work without the change in parsing.

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread David Kastrup
David Kastrup d...@gnu.org writes:

 David Kastrup d...@gnu.org writes:

 If I write
 myC =
 #(define-music-function (parser location) () #{ c #})
 then I can't currently write
 \myC4 or similar.  It would just not work.  And there is no way to
 define this function, #{ #} or not, in a manner that could work both in
 chords as well as outside (without a Rhythmic Event iterator).

 This is the part that I have the most trouble imagining, not because I
 don't trust you, but because I don't follow the code well enough to
 know how it would result in this.  I'd like to see regtests in one of
 these commits that uses two or three simple functions in the form \foo
 c and \foo c that show this distinction.

 Is the above simple enough?

 If it isn't, try

 myC=c

 No need to even stoop to music functions.  In this case, \myC will not
 work without the change in parsing.

Actually, neither will it with the change.  But it will be a one-liner
to make it work when it was impossible previously.  I'll do that
one-liner presently.

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread David Kastrup
David Kastrup d...@gnu.org writes:

 David Kastrup d...@gnu.org writes:

 David Kastrup d...@gnu.org writes:

 If I write
 myC =
 #(define-music-function (parser location) () #{ c #})
 then I can't currently write
 \myC4 or similar.  It would just not work.  And there is no way to
 define this function, #{ #} or not, in a manner that could work both in
 chords as well as outside (without a Rhythmic Event iterator).

 myC=c

 No need to even stoop to music functions.  In this case, \myC will not
 work without the change in parsing.

 Actually, neither will it with the change.  But it will be a one-liner
 to make it work when it was impossible previously.  I'll do that
 one-liner presently.

Well, it was a bit more juggling in order to make sure that the parser
complains when an unsuitable music identifier gets used inside of
chords.
URL:http://codereview.appspot.com/5440084/diff2/19032:14005/lily/parser.yy

But it still was a _trivial_ change to make.  It would have been trivial
before that, admittedly, but there would have been no obvious way to
actually set the music identifier to a value that could be used here, so
there would have been little point in doing so.

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread David Kastrup

I have to go in hold the horses mode now since I have a deadline for a
LilyPond talk paper
URL:http://chemnitzer.linux-tage.de/2012/info/index?cookielang=en
coming up today (I already bargained an extension), and I need to get
that finished in order to get it into print.

So please accept my apologies that I can't defend this patch further
today.  It does not mean that I am not serious about it, and I
definitely believe that if Graham double-checks the comments on this
patch, he'll find the reason for our difference in test results.

-- 
David Kastrup


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


checking 2240 (was: 2.16 release candidate 3 imminent)

2012-01-22 Thread Graham Percival
On Sun, Jan 22, 2012 at 11:35:55AM +0100, David Kastrup wrote:
 
 So please accept my apologies that I can't defend this patch further
 today.  It does not mean that I am not serious about it, and I
 definitely believe that if Graham double-checks the comments on this
 patch, he'll find the reason for our difference in test results.

We seem to have a failure to communicate here.  I shall be blunt,
although I am not angry with you.

I will not be doing any manual investigations about 2240 (or any
other patch, for that matter).

Part of the reason that we're in this miss is that we keep on
saying oh, I'll do it manually just this once.  If we had gotten
serious about automating development tasks a year ago, we'd have
saved at least 100 hours of developer time.  I'm totally serious
about that estimate; if anything I think I'm being conservative.
I will therefore not do any manual fiddling around to test a patch
or staging.  Anything that fails the automatic process is
rejected; if the process needs to be fixed, then fix the process.

With respect to this patch, you have 4 options:
- modify Patchy to do the appropriate build stuff.
- recruit somebody else to modify Patchy for you.
  (I don't want to put Mike on the spot, but a week ago I sent
  him this same email and he fixed the relevant problem in Patchy,
  so he might be willing to modify Patchy for this)
- skip the review process by manually marking it as Patch-review
  yourself.  I do not object to this, but be aware that you are
  therefore vouching for the patch in a much more serious way.
- abandon the patch.

Choice is yours.  (although of course there is no problem if
nothing happens on this for a few days while you do other things)

- Graham

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


Re: checking 2240 (was: 2.16 release candidate 3 imminent)

2012-01-22 Thread m...@apollinemike.com
On Jan 22, 2012, at 12:44 PM, Graham Percival wrote:

 
  (I don't want to put Mike on the spot, but a week ago I sent
  him this same email and he fixed the relevant problem in Patchy,
  so he might be willing to modify Patchy for this)

See spot run!  Run spot run!
I have compositions coming out the ears - will be able to work on LilyPond 
actively in a weekish.

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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread Julien Rioux

On 21/01/2012 2:48 PM, Graham Percival wrote:

On Sat, Jan 21, 2012 at 02:28:15PM -0500, Julien Rioux wrote:

I've already done so locally, and looking at the result of
lilypond-book regtests, we already have new regressions:


ok, good to know!

I'm sure that you've done this already, but make sure that you
actually try those version in 2.14.0 or 2.12.3 or whatever -- I
wouldn't want to blindly assume that those tests actually worked
when they were added to git.

- Graham


Well, as it turns out, I could not find any version on the website where 
those regtests looked normal. It looks like the lilypond-book regtests 
had not been checked in a long time. I also could not be bothered to 
compile 2.14 or older and try them. Nevermind, I fixed what I saw as 
obvious problems. Most of the fixes are really straight forward so if 
that's ok I'll push to staging directly.


Can I push patches on the countdown for Jan 22 by now?

--
Julien


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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread Graham Percival
On Sun, Jan 22, 2012 at 11:25:39AM -0500, Julien Rioux wrote:
 Well, as it turns out, I could not find any version on the website
 where those regtests looked normal. It looks like the lilypond-book
 regtests had not been checked in a long time.

That's what I suspected.

 I also could not be
 bothered to compile 2.14 or older and try them. Nevermind, I fixed
 what I saw as obvious problems. Most of the fixes are really
 straight forward so if that's ok I'll push to staging directly.

Sure, go ahead.

 Can I push patches on the countdown for Jan 22 by now?

Colin's in Alberta, so he's 2 hours behind you.  :)
His last email didn't specify an exact time, but IIRC he generally
uses 20:00 MST.  I think it would be nice to wait until he gives
the ok.

- Graham

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


Re: 2.16 release candidate 3 imminent

2012-01-22 Thread Colin Campbell

On 12-01-22 10:19 AM, Graham Percival wrote:

On Sun, Jan 22, 2012 at 11:25:39AM -0500, Julien Rioux wrote:

Well, as it turns out, I could not find any version on the website
where those regtests looked normal. It looks like the lilypond-book
regtests had not been checked in a long time.

That's what I suspected.


I also could not be
bothered to compile 2.14 or older and try them. Nevermind, I fixed
what I saw as obvious problems. Most of the fixes are really
straight forward so if that's ok I'll push to staging directly.

Sure, go ahead.


Can I push patches on the countdown for Jan 22 by now?

Colin's in Alberta, so he's 2 hours behind you.  :)
His last email didn't specify an exact time, but IIRC he generally
uses 20:00 MST.  I think it would be nice to wait until he gives
the ok.

- Graham





Go ahead, Julien: with Graham's blessing, there's no need to wait for a 
few hours.


Cheers,
Colin

--
I've learned that you shouldn't go through life with a catcher's mitt on both 
hands.
You need to be able to throw something back.
-Maya Angelou, poet (1928- )


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


2.16 release candidate 3 imminent

2012-01-21 Thread Graham Percival
All release-Critical issues have patches which are either on a
current countdown, have been on a previous countdown, or don't
make sense to be on a countdown at all and will thus be pushed in
a few hours.

Unless any problem are found with the current countdown'ing
patches, 2.15.27 release candidate 3 will probably come out on
Monday.

There seems to be a desire to wait for 2 weeks instead of 1 week,
so that's what I'll announce?

- Graham

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread David Kastrup
Graham Percival gra...@percival-music.ca writes:

 All release-Critical issues have patches which are either on a
 current countdown, have been on a previous countdown, or don't
 make sense to be on a countdown at all and will thus be pushed in
 a few hours.

 Unless any problem are found with the current countdown'ing
 patches, 2.15.27 release candidate 3 will probably come out on
 Monday.

 There seems to be a desire to wait for 2 weeks instead of 1 week,
 so that's what I'll announce?

I would very much prefer the work on Issue 2240 (aka 2070) to make it
into 2.16.  It is a significant API change that should not occur during
a stable release series, and it paves the way for making the music
function work continue smoothly enough that backporting further
enhancements into a stable 2.16 series would be feasible.

For similar reasons, it needs to be in a release candidate before
release.

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Graham Percival
On Sat, Jan 21, 2012 at 05:27:00PM +0100, David Kastrup wrote:
 I would very much prefer the work on Issue 2240 (aka 2070) to make it
 into 2.16.  It is a significant API change that should not occur during
 a stable release series, and it paves the way for making the music
 function work continue smoothly enough that backporting further
 enhancements into a stable 2.16 series would be feasible.

IMO, significant API changes should not happen right before a
release.  Version numbers are cheap; why not have 2.18 in March
2012?  Backporting is a huge hassle.

But I'm not going to kick up a fuss about it.  I've marked 2240 as
Critical.

- Graham

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Carl Sorensen
On 1/21/12 9:45 AM, Graham Percival gra...@percival-music.ca wrote:

On Sat, Jan 21, 2012 at 05:27:00PM +0100, David Kastrup wrote:
 I would very much prefer the work on Issue 2240 (aka 2070) to make it
 into 2.16.  It is a significant API change that should not occur during
 a stable release series, and it paves the way for making the music
 function work continue smoothly enough that backporting further
 enhancements into a stable 2.16 series would be feasible.

IMO, significant API changes should not happen right before a
release.  Version numbers are cheap; why not have 2.18 in March
2012?  Backporting is a huge hassle.


Earlier, we expressed a need to have stable mean *stable*, i.e. no syntax
changes necessary for some period of time.  We wanted stable versions to
have a significant lifetime so things like LilyPondTool and Frescobaldi
didn't need to always keep changing.

If we still want to have that policy, I believe that subversion numbers
are cheap, but stable version numbers are expensive.

I think we'd be best to try to get this into 2.16.

Thanks,

Carl


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Keith OHara
Carl Sorensen c_sorensen at byu.edu writes:

 On 1/21/12 9:45 AM, Graham Percival graham at percival-music.ca wrote:
 On Sat, Jan 21, 2012 at 05:27:00PM +0100, David Kastrup wrote:
  I would very much prefer the work on Issue 2240 (aka 2070) to make it
  into 2.16.  It is a significant API change 
 
 IMO, significant API changes should not happen right before a
 release. 
 
 We wanted stable versions to
 have a significant lifetime so things like LilyPondTool and Frescobaldi
 didn't need to always keep changing.
 

The implication is that issue 2240 changes the interface (but not the
input syntax because there is no convert-ly rule) in a way enables 
improvements user code (presumably Scheme) that we will want so badly
that we cannot wait for 2.18.

Does anybody know what 2240 improves ?


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Graham Percival
On Sat, Jan 21, 2012 at 05:02:32PM +, Carl Sorensen wrote:
 On 1/21/12 9:45 AM, Graham Percival gra...@percival-music.ca wrote:
 
 IMO, significant API changes should not happen right before a
 release.  Version numbers are cheap; why not have 2.18 in March
 2012?  Backporting is a huge hassle.
 
 Earlier, we expressed a need to have stable mean *stable*, i.e. no syntax
 changes necessary for some period of time.  We wanted stable versions to
 have a significant lifetime so things like LilyPondTool and Frescobaldi
 didn't need to always keep changing.

I disagree.  I think that stable should mean *stable*, i.e. no
syntax changes necessary for *that series of major version
numbers*.  I reject the notion that we shouldn't release a new
stable version after a few months if there's no regressions in the
new version.  Other tools can advertise works with lilypond
versions  2.14.0 and  2.17.23 if necessary.

Look, this reminds me of some essay I skimmed recently by an
economist who was worried that if the US paid off its debt in
full, the bond market would collapse and that would have negative
consequences for the world economy.  I see no reason to worry
about what might happen if we have too many stable releases unless
that actually becomes a possibility.

- Graham

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Carl Sorensen
On 1/21/12 10:24 AM, Graham Percival gra...@percival-music.ca wrote:

On Sat, Jan 21, 2012 at 05:02:32PM +, Carl Sorensen wrote:
 On 1/21/12 9:45 AM, Graham Percival gra...@percival-music.ca wrote:
 
 IMO, significant API changes should not happen right before a
 release.  Version numbers are cheap; why not have 2.18 in March
 2012?  Backporting is a huge hassle.
 
 Earlier, we expressed a need to have stable mean *stable*, i.e. no
syntax
 changes necessary for some period of time.  We wanted stable versions to
 have a significant lifetime so things like LilyPondTool and Frescobaldi
 didn't need to always keep changing.

I disagree.  I think that stable should mean *stable*, i.e. no
syntax changes necessary for *that series of major version
numbers*.  I reject the notion that we shouldn't release a new
stable version after a few months if there's no regressions in the
new version.  Other tools can advertise works with lilypond
versions  2.14.0 and  2.17.23 if necessary.

OK, I'm fine with that.


Look, this reminds me of some essay I skimmed recently by an
economist who was worried that if the US paid off its debt in
full, the bond market would collapse and that would have negative
consequences for the world economy.  I see no reason to worry
about what might happen if we have too many stable releases unless
that actually becomes a possibility.

Well, you were the one who mentioned having 2.16 in two weeks and 2.18 in
March.

Thanks,

Carl


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread m...@apollinemike.com
On Jan 21, 2012, at 6:14 PM, Keith OHara wrote:

 Carl Sorensen c_sorensen at byu.edu writes:
 
 On 1/21/12 9:45 AM, Graham Percival graham at percival-music.ca wrote:
 On Sat, Jan 21, 2012 at 05:27:00PM +0100, David Kastrup wrote:
 I would very much prefer the work on Issue 2240 (aka 2070) to make it
 into 2.16.  It is a significant API change 
 
 IMO, significant API changes should not happen right before a
 release. 
 
 We wanted stable versions to
 have a significant lifetime so things like LilyPondTool and Frescobaldi
 didn't need to always keep changing.
 
 
 The implication is that issue 2240 changes the interface (but not the
 input syntax because there is no convert-ly rule) in a way enables 
 improvements user code (presumably Scheme) that we will want so badly
 that we cannot wait for 2.18.
 
 Does anybody know what 2240 improves ?
 

I was asking myself a similar question lately now that I've gotten deeper into 
the non-parser-related aspects of 2240.  After playing around with iterators 
and such, I'm convinced that all the articulation stuff can be written to be 
slicker independent of any changes to the parser.  Meaning that, without any 
changes to the representation of event-chords, we could get rid of the script 
engraver and fingering engraver and just keep the new fingering engraver, doing 
all necessary massaging at the iterator level.

My question is this: what is the basic advantage of having rhythmic events not 
wrapped in event chords?  I understand that it can be used to wedge a 
distinction between c and c, but how is this distinction useful?  Especially 
given the perspective David addressed earlier that part of LilyPond's code base 
getting better will be it getting more uniform and boring, how is this move 
away from uniformity (meaning creating two channels for of handling rhythmic 
events) beneficial?  I think the question boils down to: is there an inherent 
difference between c and c and, if so, what is it and why is it meaningful?

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread David Kastrup
Carl Sorensen c_soren...@byu.edu writes:

 On 1/21/12 9:45 AM, Graham Percival gra...@percival-music.ca wrote:

On Sat, Jan 21, 2012 at 05:27:00PM +0100, David Kastrup wrote:
 I would very much prefer the work on Issue 2240 (aka 2070) to make it
 into 2.16.  It is a significant API change that should not occur during
 a stable release series, and it paves the way for making the music
 function work continue smoothly enough that backporting further
 enhancements into a stable 2.16 series would be feasible.

IMO, significant API changes should not happen right before a
release.  Version numbers are cheap; why not have 2.18 in March
2012?  Backporting is a huge hassle.


 Earlier, we expressed a need to have stable mean *stable*, i.e. no
 syntax changes necessary for some period of time.

Strictly speaking, this is not a syntax change.  If you write LilyPond,
no Scheme, the output should be the same.

I have actually found out that I promised too much about string numbers
appearing on isolated notes: since the string number events _are_
listened to (likely by the tabstaff engraver team), the rhythmic music
iterator _does_ broadcast them instead of leaving them as articulations.

I certainly would have been more than happy to have that inconsistency
abolished.  The way to do that would be to _stop_ the tabstaff engravers
from listening to string events and instead have them look in the
articulations for them.  If the string events become unlistened to, the
rhythmic music iterator will leave them in the articulations.
Alternatively, make a listener/engraver for per-chord string indications
(which, like fingerings, can be typeset with less need to keep them
close to the notehead).

 We wanted stable versions to have a significant lifetime so things
 like LilyPondTool and Frescobaldi didn't need to always keep changing.

I don't think they will be affected unless they do Scheme juggling.  The
one thing that _will_ be affected is XML output.

 If we still want to have that policy, I believe that subversion
 numbers are cheap, but stable version numbers are expensive.

 I think we'd be best to try to get this into 2.16.

And it definitely needs to be in a prerelease for that.  If the
prerelease makes it obvious that this won't work, it will have to be
backed out, something which I would find rather unhappy (since it would
mean that parts of the music function syntax changes that belong
together logically would be spread across two stable releases).  If you
take a look at the stats, you'll find that apart from the implementation
of the rhythmic music iterator (which is rather boilerplate), most of
the changes are _reductions_ in size.  In particular the parser.

It will also make the programmer's guide simpler.  I am starting on that
now.

commit 0e9b4d86388b83bfbd217b0d77d6759f2ef81cef
Author: David Kastrup d...@gnu.org
Date:   Thu Dec 1 18:32:15 2011 +0100

Don't wrap EventChord around rhythmic events outside of music lists.

 9 files changed, 212 insertions(+), 222 deletions(-)

commit 10c40a07236febc9279a5faadbcdc15dc3bb1c82
Author: David Kastrup d...@gnu.org
Date:   Sat Jan 21 14:24:01 2012 +0100

Let \relative run through articulations for the sake of pitched trills

 1 files changed, 1 insertions(+), 0 deletions(-)

commit 84144db390bac765fcd0e80403b548ca4e90a59f
Author: David Kastrup d...@gnu.org
Date:   Fri Jan 20 21:38:09 2012 +0100

Define a post-event music type and let post-event? and ly:event? use it.

 5 files changed, 37 insertions(+), 68 deletions(-)

commit c4760f3c4a5ec896231e285363c8f10e59a07c53
Author: David Kastrup d...@gnu.org
Date:   Thu Jan 19 18:58:38 2012 +0100

Fixes to Rhythmic-music-iterator

 4 files changed, 38 insertions(+), 9 deletions(-)

commit efb9bc79e3714ce06ef48b148850de29625ddb18
Author: Mike Solomon m...@apollinemike.com
Date:   Wed Jan 18 20:12:13 2012 +0100

Implements rhythmic-music-iterator

 3 files changed, 109 insertions(+), 0 deletions(-)

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Carl Sorensen
On 1/21/12 10:37 AM, David Kastrup d...@gnu.org wrote:



I have actually found out that I promised too much about string numbers
appearing on isolated notes: since the string number events _are_
listened to (likely by the tabstaff engraver team), the rhythmic music
iterator _does_ broadcast them instead of leaving them as articulations.

The tabstaff engraver team listens to *both* string number events *and*
articulations. Combining the two is a bit of a pain.

That's why I asked earlier to get some consistency.  If we can get string
number events to always be in articulations, we don't need to broadcast
string number events.  If the rhythmic music iterator can make them always
show up as articulations, that would be great.

Thanks,

Carl


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread David Kastrup
m...@apollinemike.com m...@apollinemike.com writes:

 On Jan 21, 2012, at 6:14 PM, Keith OHara wrote:

 Carl Sorensen c_sorensen at byu.edu writes:
 
 On 1/21/12 9:45 AM, Graham Percival graham at percival-music.ca wrote:
 On Sat, Jan 21, 2012 at 05:27:00PM +0100, David Kastrup wrote:
 I would very much prefer the work on Issue 2240 (aka 2070) to make it
 into 2.16.  It is a significant API change 
 
 IMO, significant API changes should not happen right before a
 release. 
 
 We wanted stable versions to
 have a significant lifetime so things like LilyPondTool and Frescobaldi
 didn't need to always keep changing.
 
 The implication is that issue 2240 changes the interface (but not the
 input syntax because there is no convert-ly rule) in a way enables 
 improvements user code (presumably Scheme) that we will want so badly
 that we cannot wait for 2.18.
 
 Does anybody know what 2240 improves ?

 I was asking myself a similar question lately now that I've gotten
 deeper into the non-parser-related aspects of 2240.  After playing
 around with iterators and such, I'm convinced that all the
 articulation stuff can be written to be slicker independent of any
 changes to the parser.  Meaning that, without any changes to the
 representation of event-chords, we could get rid of the script
 engraver and fingering engraver and just keep the new fingering
 engraver, doing all necessary massaging at the iterator level.

That is a backend aspect.  2240 is not concerned with improving the
backend: its changes to the backend are just designed to keep LilyPond
produce the same graphical output given the same textual input.

The advantage is in a much more straightforward relation of input to
music expressions.  That makes experimenting with and programming
LilyPond more simple.

One example from the notation manual:

   For the `\tweak' command to work, it must remain immediately
adjacent to the object to which it is to apply after the input file has
been converted to a music stream.  At times, LilyPond may insert
additional items into the music stream during the parsing process.  For
example, when a note that is not explicitly part of a chord will be
placed in a chord by LilyPond, so notes to be modified with `\tweak'
must be placed inside a chord construct:

 \tweak #'color #red c4
 \tweak #'color #red c4

Guess what: both work just the same now.  \tweak is a music function.
Music functions inside of chords were special: they got chord
constituents as arguments and were expected to produce them again, as
opposed to normal music functions that received notes only wrapped in
EventChord.  If you were serious about making your music functions
maximally useful, you needed to check what you got and behave
accordingly.  Now music functions can get _multiple_ music arguments.
Will only the last be chord constituents when we have a chord music
function?  What if optional arguments are in between?  Actual the
optional argument scanning was so complex that it was only implemented
for main music functions, not for chord constituent music functions.

Because chord constituents are not artificially wrapped in EventChord
unless they are actually placed in a chord, the difference is _gone_.
_All_ music functions will work predictably inside of chords like
outside.  They don't see different input.  They don't need to produce
different output (of course, if they produce something inside of a ...
chord that has no place inside of such a chord, LilyPond will complain).

If you wrote note^postevent previously, the postevent ended up in
articulations of the NoteEvent when written inside of a chord, or as
an EventChord companion when not written in a chord.  Now it ends up in
articulations, period.

 My question is this: what is the basic advantage of having rhythmic
 events not wrapped in event chords?  I understand that it can be used
 to wedge a distinction between c and c, but how is this distinction
 useful?

URL:http://code.google.com/p/lilypond/issues/detail?id=1110#c26

 Especially given the perspective David addressed earlier that part of
 LilyPond's code base getting better will be it getting more uniform
 and boring, how is this move away from uniformity (meaning creating
 two channels for of handling rhythmic events) beneficial?  I think the
 question boils down to: is there an inherent difference between c
 and c and, if so, what is it and why is it meaningful?

The problem that I have been tackling is more: is there an inherent
difference between c-. and c-. and, if not so, why the heck do they look
utterly different in the music expression depending on whether inside of
  or outside?

Why does \tweak c require chord brackets to work?  Why does
\displaySchemeMusic produce oodles of layers for simple input?

Issue 2240 makes the relation between input and resulting music
expressions much more straightforward.

And the everything-is-an EventChord mantra gave you a false sense of

Re: 2.16 release candidate 3 imminent

2012-01-21 Thread David Kastrup
Carl Sorensen c_soren...@byu.edu writes:

 On 1/21/12 10:37 AM, David Kastrup d...@gnu.org wrote:



I have actually found out that I promised too much about string numbers
appearing on isolated notes: since the string number events _are_
listened to (likely by the tabstaff engraver team), the rhythmic music
iterator _does_ broadcast them instead of leaving them as articulations.

 The tabstaff engraver team listens to *both* string number events *and*
 articulations. Combining the two is a bit of a pain.

If nobody listens to string number events, they will stay articulations
except when placed explicitly on chords like c\3 and then you deserve
what you don't get.

 That's why I asked earlier to get some consistency.  If we can get
 string number events to always be in articulations, we don't need to
 broadcast string number events.  If the rhythmic music iterator can
 make them always show up as articulations, that would be great.

That would be the case.

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Carl Sorensen
On 1/21/12 11:16 AM, David Kastrup d...@gnu.org wrote:

Carl Sorensen c_soren...@byu.edu writes:

 On 1/21/12 10:37 AM, David Kastrup d...@gnu.org wrote:



I have actually found out that I promised too much about string numbers
appearing on isolated notes: since the string number events _are_
listened to (likely by the tabstaff engraver team), the rhythmic music
iterator _does_ broadcast them instead of leaving them as articulations.

 The tabstaff engraver team listens to *both* string number events *and*
 articulations. Combining the two is a bit of a pain.

If nobody listens to string number events, they will stay articulations
except when placed explicitly on chords like c\3 and then you deserve
what you don't get.

 That's why I asked earlier to get some consistency.  If we can get
 string number events to always be in articulations, we don't need to
 broadcast string number events.  If the rhythmic music iterator can
 make them always show up as articulations, that would be great.

That would be the case.

Great!  I'll make tabstaff engraver stop listening to string number events
once your patch is pushed.

Thanks,

Carl


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Marc Hohl

Am 21.01.2012 18:44, schrieb Carl Sorensen:

On 1/21/12 10:37 AM, David Kastrupd...@gnu.org  wrote:



I have actually found out that I promised too much about string numbers
appearing on isolated notes: since the string number events _are_
listened to (likely by the tabstaff engraver team), the rhythmic music
iterator _does_ broadcast them instead of leaving them as articulations.

The tabstaff engraver team listens to *both* string number events *and*
articulations. Combining the two is a bit of a pain.

That's why I asked earlier to get some consistency.  If we can get string
number events to always be in articulations, we don't need to broadcast
string number events.  If the rhythmic music iterator can make them always
show up as articulations, that would be great.
I must admit that I am lost here and do not quite understand what's 
going on,

but will there be any difference between

 c\3 e\2 g\1  and  c e g \3\2\1

once these changes are implemented?

The former displays circled string numbers in a normal staff,
whereas the latter doesn't. Tablature staffs are identical, of course.

Marc

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread m...@apollinemike.com
On Jan 21, 2012, at 7:12 PM, David Kastrup wrote:

 If you wrote note^postevent previously, the postevent ended up in
 articulations of the NoteEvent when written inside of a chord, or as
 an EventChord companion when not written in a chord.  Now it ends up in
 articulations, period.
 

I think it this is good - this is what will help scrap the fingering and script 
engraver.  It seems like this is a separate problem from wrapping notes in 
event chords or not: if all articulations are in an articulations list, then 
they can all go to the new fingering engraver.

 My question is this: what is the basic advantage of having rhythmic
 events not wrapped in event chords?  I understand that it can be used
 to wedge a distinction between c and c, but how is this distinction
 useful?
 
 URL:http://code.google.com/p/lilypond/issues/detail?id=1110#c26
 

Why couldn't this be solved on the iterator level?

 The problem that I have been tackling is more: is there an inherent
 difference between c-. and c-. and, if not so, why the heck do they look
 utterly different in the music expression depending on whether inside of
   or outside?
 

I absolutely agree that everything should be in an articulations list, but I 
think this can be done while preserving event chords.  It just means that 
EventChords will no longer contain articulation events and that all 
articulation events will be pulled out of NoteEvents or RestEvents and 
broadcast at the iterator level.

 And the everything-is-an EventChord mantra gave you a false sense of
 security: you thought if stuff worked with single notes, chords would be
 covered as they are the same.  Poppycock.
 
 When c-. works, that does not mean that c-. will also work.  Because
 suddenly it becomes quite different even though both are in a chord.
 

I'm not quite getting what you're saying here...

 With the current setup, the music expressions reflect the input, the
 Stream Events (and thus everything passing through engravers) reflects
 the old behavior that was previously hand-cranked in the parser.
 
 You can now synthesize single NoteEvents and have them work as expected.
 

I think that expected behavior depends on how we define it.  If there were 
synthesized articulation events that fell outside of an EventChord, LilyPond 
would not know what to do with them.  Similarly, if we simply say that a 
NoteEvent makes no sense outside of an EventChord, then there is no expected 
functionality for a dangling NoteEvent.

I'm not at all saying that this is a bad proposal, but rather that as I'm 
learning more about how iterators do their thing, I'm realizing that all 
articulations can be in a list attached to a rhythmic event and that event 
chords never need to carry articulations.

Some of this comes from my continued limitation in understanding what this 
patch does - I get the general concepts in your e-mails, but it is very 
difficult to understand how LilyPond works without seeing lily code.

So,
***
What would be really helpful is an e-mail that has almost no text explanation 
but that shows before and after examples of how this will change LilyPond.  
This can be syntax before versus syntax after or music stream before versus 
music stream after.  I know that adds an extra burden to your work, but I'd 
greatly appreciate it!
***

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread David Kastrup
Marc Hohl m...@hohlart.de writes:

 Am 21.01.2012 18:44, schrieb Carl Sorensen:
 On 1/21/12 10:37 AM, David Kastrupd...@gnu.org  wrote:


 I have actually found out that I promised too much about string numbers
 appearing on isolated notes: since the string number events _are_
 listened to (likely by the tabstaff engraver team), the rhythmic music
 iterator _does_ broadcast them instead of leaving them as articulations.
 The tabstaff engraver team listens to *both* string number events *and*
 articulations. Combining the two is a bit of a pain.

 That's why I asked earlier to get some consistency.  If we can get string
 number events to always be in articulations, we don't need to broadcast
 string number events.  If the rhythmic music iterator can make them always
 show up as articulations, that would be great.
 I must admit that I am lost here and do not quite understand what's
 going on,
 but will there be any difference between

  c\3 e\2 g\1  and  c e g \3\2\1

 once these changes are implemented?

The latter would not display anything anywhere.

-- 
David Kastrup


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Marc Hohl

Am 21.01.2012 19:41, schrieb David Kastrup:

Marc Hohlm...@hohlart.de  writes:


Am 21.01.2012 18:44, schrieb Carl Sorensen:

On 1/21/12 10:37 AM, David Kastrupd...@gnu.org   wrote:



I have actually found out that I promised too much about string numbers
appearing on isolated notes: since the string number events _are_
listened to (likely by the tabstaff engraver team), the rhythmic music
iterator _does_ broadcast them instead of leaving them as articulations.

The tabstaff engraver team listens to *both* string number events *and*
articulations. Combining the two is a bit of a pain.

That's why I asked earlier to get some consistency.  If we can get string
number events to always be in articulations, we don't need to broadcast
string number events.  If the rhythmic music iterator can make them always
show up as articulations, that would be great.

I must admit that I am lost here and do not quite understand what's
going on,
but will there be any difference between

  c\3 e\2 g\1  and  c e g\3\2\1

once these changes are implemented?

The latter would not display anything anywhere.

Great!

Thanks,

Marc


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread David Kastrup
m...@apollinemike.com m...@apollinemike.com writes:

 On Jan 21, 2012, at 7:12 PM, David Kastrup wrote:

 If you wrote note^postevent previously, the postevent ended up in
 articulations of the NoteEvent when written inside of a chord, or as
 an EventChord companion when not written in a chord.  Now it ends up in
 articulations, period.
 

 I think it this is good - this is what will help scrap the fingering
 and script engraver.  It seems like this is a separate problem from
 wrapping notes in event chords or not: if all articulations are in an
 articulations list, then they can all go to the new fingering
 engraver.

They won't be in an articulation list if they are on a chord.  Then they
are separate events inside of EventChord.  It is conceivable that we let
EventChord _also_ take articulations as a property.  It is not all that
clear to me who will be responsible for interpreting them, but it would
likely not be hard to just let the event chord iterator broadcast them
without thinking.  This would, however, be a more fundamental change.
The current syntax changes don't create music events that could not
previously also occur (just not everywhere).  EvantChord+articulation
would be new.

 My question is this: what is the basic advantage of having rhythmic
 events not wrapped in event chords?  I understand that it can be used
 to wedge a distinction between c and c, but how is this distinction
 useful?
 
 URL:http://code.google.com/p/lilypond/issues/detail?id=1110#c26
 

 Why couldn't this be solved on the iterator level?

There was no distinction between c and c at the iterator level
anymore.  Either case you had an EventChord around it.

 The problem that I have been tackling is more: is there an inherent
 difference between c-. and c-. and, if not so, why the heck do they
 look utterly different in the music expression depending on whether
 inside of   or outside?
 

 I absolutely agree that everything should be in an articulations list,
 but I think this can be done while preserving event chords.  It just
 means that EventChords will no longer contain articulation events and
 that all articulation events will be pulled out of NoteEvents or
 RestEvents and broadcast at the iterator level.

There is such a thing as a chord articulation.

 I'm not at all saying that this is a bad proposal, but rather that as
 I'm learning more about how iterators do their thing, I'm realizing
 that all articulations can be in a list attached to a rhythmic event
 and that event chords never need to carry articulations.

What do you do with c e g\p then?

-- 
David Kastrup

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Jean-Charles Malahieude

Le 21/01/2012 17:19, Graham Percival disait :

All release-Critical issues have patches which are either on a
current countdown, have been on a previous countdown, or don't
make sense to be on a countdown at all and will thus be pushed in
a few hours.

Unless any problem are found with the current countdown'ing
patches, 2.15.27 release candidate 3 will probably come out on
Monday.

There seems to be a desire to wait for 2 weeks instead of 1 week,
so that's what I'll announce?



Two weeks seems a reasonable time-window for the FTP mary-go-round as 
well as polishing and merging translations.


Cheers,
Jean-Charles

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Carl Sorensen
On 1/21/12 11:47 AM, Marc Hohl m...@hohlart.de wrote:


 I must admit that I am lost here and do not quite understand what's
 going on,
 but will there be any difference between

   c\3 e\2 g\1  and  c e g\3\2\1

 once these changes are implemented?
 The latter would not display anything anywhere.
Great!

I'm not sure you actually will find it great (although I think it is more
consistent).

If we don't want to have string numbers show up in the music, but we need
them for the tabstaff, right now we can do

c e g\3\2\1

In the future, c e g\3\2\1 won't assign the string numbers to the
tabstaff.  (And in fact, I can't find this usage documented in the NR).
Instead, as would be done regularly in lilypond, we would do

\once \override StringNumber #'stencil = ##f
c\3 e\2 g\1

This is consistent with how things are handled in lilypond, so I think we
ought to move in this direction.

Thanks,

Carl


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Julien Rioux

On 21/01/2012 11:19 AM, Graham Percival wrote:

Unless any problem are found with the current countdown'ing
patches, 2.15.27 release candidate 3 will probably come out on
Monday.


Once the fix for  (lilypond-book fails with html input) is in, I'll 
fix 2223 (Regtests for lilypond-book are not running). I've already done 
so locally, and looking at the result of lilypond-book regtests, we 
already have new regressions:


suffix-lyxml: looks suspicious, no image of music
tex-twocolumn: fails, lilypond snippet is fullpage-wide.
texinfo-language-detection: has a weird @lydoctitle popping up

--
Julien


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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Graham Percival
On Sat, Jan 21, 2012 at 02:28:15PM -0500, Julien Rioux wrote:
 I've already done so locally, and looking at the result of
 lilypond-book regtests, we already have new regressions:

ok, good to know!

I'm sure that you've done this already, but make sure that you
actually try those version in 2.14.0 or 2.12.3 or whatever -- I
wouldn't want to blindly assume that those tests actually worked
when they were added to git.

- Graham

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread m...@apollinemike.com
On Jan 21, 2012, at 7:58 PM, David Kastrup wrote:

 
 I absolutely agree that everything should be in an articulations list,
 but I think this can be done while preserving event chords.  It just
 means that EventChords will no longer contain articulation events and
 that all articulation events will be pulled out of NoteEvents or
 RestEvents and broadcast at the iterator level.
 
 There is such a thing as a chord articulation.
 

Why couldn't this distinction be captured via a different event name?
ChordArticulationEvent versus ArticulationEvent, for example.
 
 What do you do with c e g\p then?
 

\p is an AbsoluteDynamicEvent and is not treated like articulations.

What would really help are some before/after examples (ly code and/or music 
streams and/or brief text like before the patch, you could not do X, after, 
you can or this patch will allow me to experiment with implementing X) would 
help a great deal.  As if it were going into the Change Log, for example.

Cheers,
MS___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread m...@apollinemike.com
On Jan 21, 2012, at 10:15 PM, David Kastrup wrote:

 m...@apollinemike.com m...@apollinemike.com writes:
 
 On Jan 21, 2012, at 7:58 PM, David Kastrup wrote:
 
 
that all articulation events will be pulled out of NoteEvents or
 
RestEvents and broadcast at the iterator level.
 
 
There is such a thing as a chord articulation.
 
 
 
 Why couldn't this distinction be captured via a different event name?
 ChordArticulationEvent versus ArticulationEvent, for example.
 
 Where would be the point?
 

To not make the distinction in the parser.  I think that changing the parser 
should be a last resort if we can't figure out a way to represent information 
through different event classes.

 What would really help are some before/after examples (ly code and/or
 music streams and/or brief text like before the patch, you could not
 do X, after, you can or this patch will allow me to experiment with
 implementing X) would help a great deal.  As if it were going into
 the Change Log, for example.
 
 It's a bit hard since the whole design (perfected by the
 rhythmic-music-event) was intended to make no user-visible difference.
 The music expression has just become predictable.  You get an EventChord
 iff  ...  has been in the input.  You get articulations on NoteEvent
 for pitch-postevent regardless whether or not this is part of a chord.
 

Why can't we treat c as shorthand for c?  Having a compulsory wrapping around 
singletons is just as predictable as no wrapping at all.
As for articulations being on a NoteEvent whether or not this is part of a 
chord, I agree that this is a very good idea, but I think this can be 
accomplished by wrapping everything in an event chord and farming out the work 
to iterators.

 If you use \displayMusic on something that you might want to put into a
 chord, you don't get wrong input.  Tacking   around a construct does
 not change the structure of its inside.  It is not necessary to tack  
 around a construct to make a \tweak work (which is a user-visible
 change).
 

Why couldn't tweak make this distinction in the music function itself?
The music function could check if its input is an EventChord and, if so, feed 
it the first entry in the 'elements list of the EventChord.  This seems like a 
less intrusive change than changing the parser.

 You can use #{ #} for constructing material that ends up _inside_ of a
 chord.  Something like
 \displayLilyMusic  \displayLilyMusic ##{ c-. #}
 does not go up in flames but just does what one would expect.

This is indeed an interesting case.  Again, though, I would expect this to 
fail, precisely because #{#} manipulates the material.  If we define c as 
shorthand for c, then this would be like doing \displayLilyMusic  
\displayLilyMusic c , which I would also expect to fail.

I'm playing devil's advocate because it is an important change and I want to 
make sure that its benefit outweighs the cost of adding exceptions into the 
code base that facilitate the in/out of EventChord distinctions.

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


Re: 2.16 release candidate 3 imminent

2012-01-21 Thread Janek Warchoł
2012/1/21 Graham Percival gra...@percival-music.ca:
 All release-Critical issues have patches which are either on a
 current countdown, have been on a previous countdown, or don't
 make sense to be on a countdown at all and will thus be pushed in
 a few hours.

 Unless any problem are found with the current countdown'ing
 patches, 2.15.27 release candidate 3 will probably come out on
 Monday.

Sounds great even despite the fact that Julien discovered new regressions.

 There seems to be a desire to wait for 2 weeks instead of 1 week,
 so that's what I'll announce?

+1

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