Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-18 Thread janek . lilypond

LGTM with a suggestion


https://codereview.appspot.com/60490050/diff/90001/Documentation/changes.tely
File Documentation/changes.tely (right):

https://codereview.appspot.com/60490050/diff/90001/Documentation/changes.tely#newcode122
Documentation/changes.tely:122: Scheme functions and identifiers can now
be used as output definitions.
An example would be probably nice - here's one:


coloredNotes =
#(define-scheme-function (parser location col)(color?)
   #{
 \layout {
   \context {
 \Staff
 \override NoteHead #'color = #col
   }
 }
   #})

\layout { \coloredNotes #blue }

{ c' }

https://codereview.appspot.com/60490050/

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-18 Thread dak

On 2014/02/18 16:27:25, janek wrote:

LGTM with a suggestion



https://codereview.appspot.com/60490050/diff/90001/Documentation/changes.tely

File Documentation/changes.tely (right):



https://codereview.appspot.com/60490050/diff/90001/Documentation/changes.tely#newcode122

Documentation/changes.tely:122: Scheme functions and identifiers can

now be used

as output definitions.
An example would be probably nice - here's one:




coloredNotes =
#(define-scheme-function (parser location col)(color?)
#{
  \layout {
\context {
  \Staff
  \override NoteHead #'color = #col
}
  }
#})



\layout { \coloredNotes #blue }



{ c' }


That example is disturbing since it is not really about using a function
as an output definition, but rather about using a function as a
_context_ definition.  You usually would not expect the above to work
but
\layout { indent = #0 \coloredNotes #blue }
to fail.  But exactly that will happen.  The actual purpose is more like
\layout {
\some-parameterized-function-from-my-standard-include-file-generating-the-whole-layout-block
  #first-parameter #second-parameter #third-parameter
  possibly additional tweaking
}

I think that turning \coloredNotes into a context definition producer by
just removing the \layout { and matching } without any other change
would work fine and make a nice example.  Just not an example for this
particular item.  And it turns out that a music function doing that
override would work equally well in this location, so even for context
definitions it might make more sense to use an example including
engravers (since you can't do _that_ with a music function).

Maybe something setting up completion engravers with some parameters?
On the other hand, you might want to do this using a context
_modification_ since that is easy to use in _different_ contexts.

It's suprisingly hard to find some really good and _necessary_ use for
all of those.  Still, it's better to have them working as expected
rather than not.

https://codereview.appspot.com/60490050/

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-18 Thread Janek Warchoł
2014-02-18 18:06 GMT+01:00  d...@gnu.org:
 That example is disturbing since it is not really about using a function
 as an output definition, but rather about using a function as a
 _context_ definition.  You usually would not expect the above to work
 but
 \layout { indent = #0 \coloredNotes #blue }
 to fail.  But exactly that will happen.  The actual purpose is more like
 \layout {
 \some-parameterized-function-from-my-standard-include-file-generating-the-whole-layout-block
   #first-parameter #second-parameter #third-parameter
   possibly additional tweaking
 }

I'm not sure if this will help you, but i can show you something
closer to a real-life example: i needed this stuff for generating
custom contexts with a fuction.

IIRC, before your improvement (i.e. before issue 3793) i had to do it
like this: 
https://github.com/openlilylib/snippets/commit/012328f4caaa192f17f99a2eab7a07b41d095878
Your change should make it possible to use define-scheme-function (and
drop the (ly:parser-define! parser '$defaultlayout #{ bit) - if i
remember correctly (haven't worked on it for some time).

See also create custom context definitions using a scheme function
thread on -user.


 I think that turning \coloredNotes into a context definition producer by
 just removing the \layout { and matching } without any other change
 would work fine and make a nice example.

You mean something like this?

coloredNotes =
#(define-scheme-function (parser location col)(color?)
   #{
 \layout {
   \context {
 \Staff
 \override NoteHead #'color = #col
   }
 }
   #})

\coloredNotes #blue

{ c' }

This example doesn't compile for me, i get error: bad expression
type (using 82bc9ad690, pretty close to current master)

Anyway, i'm sorry but i may not have more time to discuss this right now... :-(

best,
Janek

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-18 Thread dak

On 2014/02/18 18:09:08, janek wrote:


 I think that turning \coloredNotes into a context definition

producer by

 just removing the \layout { and matching } without any other change
 would work fine and make a nice example.



You mean something like this?



coloredNotes =
#(define-scheme-function (parser location col)(color?)
#{
  \layout {
\context {
  \Staff
  \override NoteHead #'color = #col
}
  }
#})



\coloredNotes #blue



{ c' }



This example doesn't compile for me, i get error: bad expression
type (using 82bc9ad690, pretty close to current master)


It would help to read the whole description from beginning to end.
It's just one sentence, so I did not expect it to be easy to
misinterpret it by wildly applying the second half to some place where
it has nothing to do with the first part of the sentence.

coloredNotes =
#(define-scheme-function (parser location col)(color?)
   #{
 \context {
   \Staff
   \override NoteHead #'color = #col
 }
   #})

\layout { \coloredNotes #blue }

{ c' }


And now also

\layout { indent = 0  \coloredNotes #blue }

will work.


https://codereview.appspot.com/60490050/

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-18 Thread Janek Warchoł
sorry, i don't understand what you mean :(

2014-02-18 19:17 GMT+01:00  d...@gnu.org:
 On 2014/02/18 18:09:08, janek wrote:

  I think that turning \coloredNotes into a context definition

 producer by

  just removing the \layout { and matching } without any other change
  would work fine and make a nice example.


 You mean something like this?


 coloredNotes =
 #(define-scheme-function (parser location col)(color?)
 #{
   \layout {
 \context {
   \Staff
   \override NoteHead #'color = #col
 }
   }
 #})


 \coloredNotes #blue


 { c' }


 This example doesn't compile for me, i get error: bad expression
 type (using 82bc9ad690, pretty close to current master)


 It would help to read the whole description from beginning to end.
 It's just one sentence, so I did not expect it to be easy to
 misinterpret it by wildly applying the second half to some place where
 it has nothing to do with the first part of the sentence.


 coloredNotes =
 #(define-scheme-function (parser location col)(color?)
#{
  \context {
\Staff
\override NoteHead #'color = #col
  }
#})

 \layout { \coloredNotes #blue }

 { c' }


 And now also

 \layout { indent = 0  \coloredNotes #blue }

 will work.


 https://codereview.appspot.com/60490050/

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-18 Thread dak

On 2014/02/18 18:29:22, janek wrote:

sorry, i don't understand what you mean :(


I quoted the original description, I quoted the code you posted, I
listed the code that one arrives at when actually following the
description, and I gave an example of what works with that changed code.

I suggest that you just forget about it until you have the leisure to
read and contemplate the full comment #15 including its quoted material.
 I don't see that we are getting anywhere in that manner.

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-18 Thread Janek Warchoł
2014-02-18 20:02 GMT+01:00  d...@gnu.org:

 I suggest that you just forget about it until you have the leisure to
 read and contemplate the full comment #15 including its quoted material.
  I don't see that we are getting anywhere in that manner.


yes, it seems you're right.  sorry...
j

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-14 Thread graham

LGTM

https://codereview.appspot.com/60490050/

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-08 Thread pkx166h

Reviewers: dak,

Message:
On 2014/02/08 12:45:33, dak wrote:

https://codereview.appspot.com/60490050/diff/1/Documentation/changes.tely

File Documentation/changes.tely (right):



https://codereview.appspot.com/60490050/diff/1/Documentation/changes.tely#newcode108

Documentation/changes.tely:108: Chord change detection in

@code{\repeat}

alternatives now happens in
This is a special case of several properties at the start of a repeat
alternative are reset to the value at the start of the first

alternative.  This

currently also affects the current meter, and the current measure

position.


We probably should also add the current key and active accidentals

here, but at

the current point of time it's the above.


Thanks, I've reworded the paragraph.

Would it be possible (useful?) to have some simple @code{} examples to
better illustrate some of the Scheme entries (rather than complete
@lilypond or @example examples)?

Description:
Changes.tely updated - 2.19.x before Feb 4th 2014

Documented all new enhancements and features since 2.19.0 was released
up until current master (Feb 4 2014).

Contains Information for the following fixed Tracker Issues

3753, 3761, 3772, 3780, 3793, 3810, 3814, 3815, 3817, 3818, 3821 and
3835

Please review this at https://codereview.appspot.com/60490050/

Affected files (+61, -0 lines):
  M Documentation/changes.tely


Index: Documentation/changes.tely
diff --git a/Documentation/changes.tely b/Documentation/changes.tely
index  
19f2da0da8509151116c6848edc83f36682715c9..e6f0bcdbdaa36829d4635892352c8962b4cdd9d5  
100644

--- a/Documentation/changes.tely
+++ b/Documentation/changes.tely
@@ -60,6 +60,67 @@ which scares away people.
 * only show user-visible changes.

 @end ignore
+@item
+@code{Partcombiner}'s handing of repeated note durations has been
+improved.
+
+@item
+@code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}.  Both
+now accept the same kind of delimited argument list that @code{\lyrics}
+and @code{\chords} accept.  Backward compatibility has been added so
+music identifiers (i.e. @code{\mus}) are permitted as arguments.  A
+@code{convert-ly} rule has been added that removes redundant uses of
+@code{\lyricmode} and rearranges combinations with context starters such
+that @code{\lyricsto} in general is applied last (i.e. like
+@code{\lyricmode} would be).
+
+@item
+Scheme functions and identifiers can now be used as output definitions.
+
+@item
+Scheme expressions can now be used as chord constituents.
+
+@item
+Improved visual spacing of small and regular @q{MI} Funk and Walker
+noteheads so they are now the same width as other shaped notes in
+their respective sets.  @code{SOL} noteheads are also now visually
+improved when used with both the normal Aiken and Sacred Harp heads, as
+well as with the thin variants.
+
+@item
+@code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical).  See
+@rinternals{LeftEdge}.
+
+@item
+Added a new @code{make-path-stencil} function that supports all
+@code{path} commands both relative and absolute:
+
+@code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
+@code{moveto}, @code{rmoveto}, @code{closepath}.  The function also
+supports @q{single-letter} syntax used in standard SVG path commands:
+
+@code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and
+@code{z}.  The new command is also backward-compatible with the original
+@code{make-connected-path-stencil} function.  Also see
+@file{scm/stencil.scm}.
+
+@item
+Chord change detection in @code{\repeat} alternatives now happens in
+relation to the chord active at the @emph{beginning} of the @emph{first}
+alternative.
+
+@item
+Improved MIDI output for breathe marks.  After tied notes, breaths take
+time @emph{only} from the last note of the tie; e.g.
+@code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead
+of @code{@{ c4 r8 @}}.  This is more consistent with articulations and
+how humans interpret breaths after ties.  It now also makes it easier to
+align simultaneous breathe marks over multiple parts, all with different
+note lengths.
+
+@item
+A new note head style for Tabulature has been added;
+@code{TabNoteHead.style = #'slash}.

 @item
 Four new Clefs have been added.  @emph{Double G}, @emph{Tenor G},



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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-08 Thread dak


https://codereview.appspot.com/60490050/diff/20001/Documentation/changes.tely
File Documentation/changes.tely (right):

https://codereview.appspot.com/60490050/diff/20001/Documentation/changes.tely#newcode64
Documentation/changes.tely:64: @code{Partcombiner}'s handing of repeated
note durations has been
It has not been improved but rather made to work at all.  Bug fix -
we don't mention it at all in the changes.

https://codereview.appspot.com/60490050/diff/20001/Documentation/changes.tely#newcode108
Documentation/changes.tely:108: Several @q{propeties} including chord,
key and accidental changes are
properties.  But this is a bit hand-wavy and confusing.  Let's see:

Context properties named in the @samp{alternativeRestores} property are
restored to their value at the start of the first alternative in
subsequent alternatives.

The default set restores measure position, current chord (for the sake
of showing chord changes) and current meter.

End of proposal... key and accidentals are not yet in the current set of
restored properties.  It might make sense to put them there as well.
What is somewhat tricky here is that the property restoration works via
iterators in whatever context may get to see the \repeat/\volta stuff.

So the key stuff might behave trickily.  We probably still want to try
it out and see whether people complain.  The safest bet is having
\repeat/\volta everywhere where you want it, and it's also safer when
using \unfoldRepeats.

https://codereview.appspot.com/60490050/

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-08 Thread pkx166h


https://codereview.appspot.com/60490050/diff/20001/Documentation/changes.tely
File Documentation/changes.tely (right):

https://codereview.appspot.com/60490050/diff/20001/Documentation/changes.tely#newcode64
Documentation/changes.tely:64: @code{Partcombiner}'s handing of repeated
note durations has been
On 2014/02/08 13:41:04, dak wrote:

It has not been improved but rather made to work at all.  Bug fix -

we don't

mention it at all in the changes.


removed

https://codereview.appspot.com/60490050/diff/20001/Documentation/changes.tely#newcode108
Documentation/changes.tely:108: Several @q{propeties} including chord,
key and accidental changes are
On 2014/02/08 13:41:04, dak wrote:

properties.  But this is a bit hand-wavy and confusing.  Let's see:



Context properties named in the @samp{alternativeRestores} property

are restored

to their value at the start of the first alternative in subsequent

alternatives.


The default set restores measure position, current chord (for the sake

of

showing chord changes) and current meter.


Thanks. I'll make a new patch with some @lilypond examples as I think I
get what is being said here and have created some simple examples.
Although if you think I have missed the point, feel free to edit them.

So this sounds like (and from my cursory experiments with lilypond-book
compiling snippets) that bits of the NR
http://lilypond.org/doc/v2.19/Documentation/notation/long-repeats are no
longer needed now.

--snip--
@lilypond[fragment,quote,relative=2]
\partial 4
\repeat volta 2 { e4 | c2 e | }
\alternative {
  {
f2 d |
\set Timing.measureLength = #(ly:make-moment 3/4)
g4 g g  % optional bar check is allowed here
  }
  {
\set Timing.measureLength = #(ly:make-moment 4/4)
a2 a |
  }
}
g1 |
@end lilypond
--snip--

When I compile this with and without the \set Timing command, it makes
no difference at all. So is this what is now 'changed'?

If so I'll make some edits in the NR too, while it is fresh in my head -
but in a new patch for a new tracker.



End of proposal... key and accidentals are not yet in the current set

of

restored properties.  It might make sense to put them there as well.

What is

somewhat tricky here is that the property restoration works via

iterators in

whatever context may get to see the \repeat/\volta stuff.



So the key stuff might behave trickily.  We probably still want to try

it out

and see whether people complain.  The safest bet is having

\repeat/\volta

everywhere where you want it, and it's also safer when using

\unfoldRepeats.

https://codereview.appspot.com/60490050/

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


Re: Changes.tely updated - 2.19.x before Feb 4th 2014 (issue 60490050)

2014-02-08 Thread dak

On 2014/02/08 19:38:38, J_lowe wrote:


So this sounds like (and from my cursory experiments with

lilypond-book

compiling snippets) that bits of the NR
http://lilypond.org/doc/v2.19/Documentation/notation/long-repeats are

no longer

needed now.



--snip--
@lilypond[fragment,quote,relative=2]
\partial 4
\repeat volta 2 { e4 | c2 e | }
\alternative {
   {
 f2 d |
 \set Timing.measureLength = #(ly:make-moment 3/4)
 g4 g g  % optional bar check is allowed here
   }
   {
 \set Timing.measureLength = #(ly:make-moment 4/4)
 a2 a |
   }
}
g1 |
@end lilypond
--snip--



When I compile this with and without the \set Timing command, it makes

no

difference at all. So is this what is now 'changed'?


Yes.  Though after removing the \set commands, the comment is wrong.


If so I'll make some edits in the NR too, while it is fresh in my head

- but in

a new patch for a new tracker.


Sounds good.


https://codereview.appspot.com/60490050/

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