Re: Limit looping in Grob::common_refpoint (issue 4079) (issue 134600043 by e...@ticalc.org)

2014-09-06 Thread m...@mikesolomon.org
On 7 sept. 2014, at 09:20, d...@gnu.org wrote:
> 
> I don't like it.  The maximum range of a variable is an arbitrary value
> and this "loop avoidance" will not do us much good on a 64-bit
> architecture.
> 
> If this is a real concern, we should be either using a tortoise/hare
> algorithm here in order to bomb out on circular references.
> 
> Or, much preferable, we should catch any such cases where the circular
> reference is established.  

This can usually be triggered by including certain engravers twice (dynamic 
align, for example). I tried once to write an algorithm that detected circular 
dependencies before allowing parent relationships to be created but it slowed 
LilyPond down by around 3%. I'm not sure of a good general solution without 
taking a performance hit.

Cheers,
MS


> This can only happen when an existing grob
> already established as a parent of some other grob gets its parent
> pointed to another existing grob.
> 
> Since it is much too late by the time Grob::common_refpoint is called to
> figure out the culprit in the circular refpoint chain, that's close to
> useless for debugging.
> 
> https://codereview.appspot.com/134600043/
> 
> ___
> lilypond-devel mailing list
> lilypond-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-devel

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


Re: Bug in Lookup::bezier_sandwich

2014-08-30 Thread m...@mikesolomon.org


Sent from my iPhone

> On 30 août 2014, at 18:54, "Jürgen Reuter"  wrote:
> 
>   Hi all,
>   there is a bug in Lookup::bezier_sandwich that severely affects ancient
>   notation.  This method was originally added to lookup.cc for
>   flexa/porrectus support.
> 
>   In version 2.14, the bezier_sandwich curve still looks correctly, see
>   here:
>   http://lilypond.org/doc/v2.14/Documentation/a9/lily-551aed0c.png
>   or (with more context) here:
>   http://lilypond.org/doc/v2.14/Documentation/notation/ancient-notation
> 
>   In version 2.15 and later, the bezier_sandwich curve has zero height at
>   its right end, which is bad; see here:
>   http://lilypond.org/doc/v2.15/Documentation/bf/lily-ac979051.png
>   or (with more context) here:
>   http://lilypond.org/doc/v2.15/Documentation/notation/ancient-notation
> 
>   I tried to track down the problem and found the following suspicious
>   commit:
> 
>   commit 35725a573e47be7c02c51964641ea534fb88be6b
>   Author: Mike Solomon 
>   Date:   Mon Feb 6 15:03:20 2012 +0100
>   Gets rid of bezier-sandwich stencil
>   diff --git a/lily/lookup.cc b/lily/lookup.cc
>   index 3f393e0..7b63b83 100644
>   --- a/lily/lookup.cc
>   +++ b/lily/lookup.cc
>   @@ -449,22 +449,32 @@ Lookup::slur (Bezier curve, Real curvethick, Real
>   linethick,
>Stencil
>Lookup::bezier_sandwich (Bezier top_curve, Bezier bottom_curve, Real
>   thickness)
>{
>   -  /*
>   -Need the weird order b.o. the way PS want its arguments
>   -  */
>   -  SCM list = SCM_EOL;
>   -  list = scm_cons (ly_offset2scm (bottom_curve.control_[3]), list);
>   -  list = scm_cons (ly_offset2scm (bottom_curve.control_[0]), list);
>   -  list = scm_cons (ly_offset2scm (bottom_curve.control_[1]), list);
>   -  list = scm_cons (ly_offset2scm (bottom_curve.control_[2]), list);
>   -  list = scm_cons (ly_offset2scm (top_curve.control_[0]), list);
>   -  list = scm_cons (ly_offset2scm (top_curve.control_[3]), list);
>   -  list = scm_cons (ly_offset2scm (top_curve.control_[2]), list);
>   -  list = scm_cons (ly_offset2scm (top_curve.control_[1]), list);
>   -
>   -  SCM horizontal_bend = scm_list_n (ly_symbol2scm ("bezier-sandwich"),
>   -ly_quote_scm (list),
>   +  SCM commands  = scm_list_n (ly_symbol2scm ("moveto"),
>   +  scm_from_double
>   (top_curve.control_[0][X_AXIS]),
>   +  scm_from_double
>   (top_curve.control_[0][Y_AXIS]),
>   +  ly_symbol2scm ("curveto"),
>   +  scm_from_double
>   (top_curve.control_[1][X_AXIS]),
>   +  scm_from_double
>   (top_curve.control_[1][Y_AXIS]),
>   +  scm_from_double
>   (top_curve.control_[2][X_AXIS]),
>   +  scm_from_double
>   (top_curve.control_[2][Y_AXIS]),
>   +  scm_from_double
>   (top_curve.control_[3][X_AXIS]),
>   +  scm_from_double
>   (top_curve.control_[3][Y_AXIS]),
>   +  ly_symbol2scm ("curveto"),
>   +  scm_from_double
>   (bottom_curve.control_[2][X_AXIS]),
>   +  scm_from_double
>   (bottom_curve.control_[2][Y_AXIS]),
>   +  scm_from_double
>   (bottom_curve.control_[1][X_AXIS]),
>   +  scm_from_double
>   (bottom_curve.control_[1][Y_AXIS]),
>   +  scm_from_double
>   (bottom_curve.control_[0][X_AXIS]),
>   +  scm_from_double
>   (bottom_curve.control_[0][Y_AXIS]),
>   +  ly_symbol2scm ("closepath"),
>   +  SCM_UNDEFINED);
>   +
>   +  SCM horizontal_bend = scm_list_n (ly_symbol2scm ("path"),
>   scm_from_double (thickness),
>   +ly_quote_scm (commands),
>   +ly_quote_scm (ly_symbol2scm
>   ("round")),
>   +ly_quote_scm (ly_symbol2scm
>   ("round")),
>   +SCM_BOOL_T, SCM_UNDEFINED);
> 
>  Interval x_extent = top_curve.extent (X_AXIS);
> 
>   I do not fully understand the rationale / implications of this change,
>   so I do really know what to do here without affecting other places in
>   the code.  By the way, ancient notation does not make use of the
>   "thickness" argument; probably it has been introduced for some other
>   use elsewhere.
> 
>   Could someone of the active developers look into this?  That would be
>   great!
> 
>   Thanks a lot,
>   Juergen
> ___
> lilypond-devel mailing list
> lilypond-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-devel

I can have a look at it this week - thanks for pointing it out!

~Mike
___
lilypond-devel mailing list
li

Re: Adds dimension stencil command to correct with-dimension (issue 12957047)

2013-08-24 Thread m...@mikesolomon.org


Sent from my iPhone

On 24 août 2013, at 12:47, pkx1...@gmail.com wrote:

> On 2013/08/24 08:25:14, dak wrote:
>> On 2013/08/24 08:05:13, mike7 wrote:
>> > On 24 août 2013, at 10:18, mailto:lemzw...@googlemail.com wrote:
>> >
>> > > LGTM, except of using `surrogate' in the name.  Given that the
> stencil
>> > > dimensions are actively overridden on request, I would like rather
> like
>> > > having `override'.  For me, the word `surrogate' suggests
> something
>> > > passive.
>> > >
>> > > https://codereview.appspot.com/12957047/
>> >
>> > The definition reads:
> 
>> It doesn't matter what the definition reads.  English has a live
> vocabulary of
>> over 15 words and there is no need to use all of them in
> identifiers.  We
>> want our identifier names to be boring and following our own
> terminology
>> elsewhere as well as that of other programs.
> 
>> If you pick a non-standard word with slightly different connotations,
> people
>> will think that the slightly different connotations are important,
> rather than
>> that this is just playing randomization games with a thesaurus.
> 
> Having to send highly technical responses to non-native English speakers
> daily as part of my job, I do get Werner's point. Surrogate isn;t
> immediately obvious unless you have a wide vocabulary. I don't know what
> this fix does, but could we use a word like 'alternate' or 'replace' or
> 'proxy' (assuming it is a function/command that has to take a value, and
> 'replace' it temporarily before it puts it back - see? I told you I
> didn't know what this does), or perhaps 'stand-in' or 'backup'.
> 
> We had a classically educated programmer once that used to produce
> beautifully composed 'event' messages and errors, however it just caused
> a lot of confusion to our non-English customers (even some American ones
> ;) ) that we went 'boring' as David so succinctly put it.
> 
> https://codereview.appspot.com/12957047/

The stencil command takes the skyline of stencil X and uses it as a replacement 
for skyline Y. We could use replacement-skyline-stencil as the command.

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


Cross-staff and skyline work

2013-05-16 Thread m...@mikesolomon.org
Hey all,

Just a quick note to say that I'm eye-deep in work but I'm reading the LilyPond 
list every other day.  I don't want anything related to my work to get bogged 
down by my absence.  If you have specific questions about how something works 
(or doesn't), don't hesitate to send me an e-mail and I'll do my best to 
respond.

I'll be back around the 28th.

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


Re: Avoids direction checking for cross-staff side-support-elements (issue 8557044)

2013-04-23 Thread m...@mikesolomon.org

On 24 avr. 2013, at 01:06, k-ohara5...@oco.net wrote:

> lgtm
> 
> Somewhere I'll have to write down the definition
> "cross-staff": true for a grob whose placement or size could depend on
> the spacing of staves on the page.

It's not quite that.  In the definition above, a treble clef on the 5th staff 
of a system is cross-staff because its placement depends on what is contained 
in the systems above.  What will not change is its placement with respect to 
its staff.  I like "Any grob that is not the element of a vertical axis group 
or whose relative extent with respect to the vertical axis group of which it is 
an element changes as a result of how far apart two or more vertical axis 
groups are." This opens up the definition to all vertical axis groups (i.e. 
Dynamics, ChordNames). But it is obviously too technical for a docstring.

Cheers,
MS


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


Re: Adds padding around extender of line-spanners. (issue 8819043)

2013-04-20 Thread m...@mikesolomon.org

On 20 avr. 2013, at 08:06, k-ohara5...@oco.net wrote:

> 
> https://codereview.appspot.com/8819043/diff/5001/lily/line-spanner.cc
> File lily/line-spanner.cc (right):
> 
> https://codereview.appspot.com/8819043/diff/5001/lily/line-spanner.cc#newcode371
> lily/line-spanner.cc:371: // actual stencil bounds may be different
> The actual stencil bounds are (inf , -inf) if someone sets style=none
> When I try this on input/regression/dynamics-alignment-no-line.ly the
> while loop in add_grobs_of_one_priority() takes forever.
> 
> https://codereview.appspot.com/8819043/diff/5001/lily/line-spanner.cc#newcode377
> lily/line-spanner.cc:377: Real new_left_y = minmax (-d, extremity,
> line_left[Y_AXIS] + d * skyline_spanner_padding);
> The smaller of the extent of the cresc.--- and the line padded by
> skyline_spanner_padding.  Is that what you want?
> 

Yeah, because we never want the padding going outside of the grob.

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


Re: [Lilypond-auto] Issue 3325 in lilypond: Stems should not pass between the letters of a word

2013-04-19 Thread m...@mikesolomon.org
Current master off of lilydev

Sent from my iPhone

On 19 avr. 2013, at 19:55, lilyp...@googlecode.com wrote:

> 
> Comment #3 on issue 3325 by k-ohara5...@oco.net: Stems should not pass 
> between the letters of a word
> http://code.google.com/p/lilypond/issues/detail?id=3325
> 
> I need to match your fonts.  What operating system and version do you want?
> 
> -- 
> You received this message because this project is configured to send all 
> issue notifications to this address.
> You may adjust your notification preferences at:
> https://code.google.com/hosting/settings
> 

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


Re: Gives DynamicTextSpanner a default skyline-horizontal-padding (issue 8799045)

2013-04-18 Thread m...@mikesolomon.org
On 18 avr. 2013, at 10:51, k-ohara5...@oco.net wrote:

> I suggest that you set the defaults consistently for all text grobs, so
> that I don't have to file bug reports one-at-a-time for every possible
> case:
> 
> \paper { indent = 0\mm
> line-width = 42.2\mm
> ragged-right = ##f }
> \score { << \new Staff { b1_\markup\huge"innocent" }
>\new Staff << { e''4 e''' r2 } \\ e'1 >> >> }
> 

They're different beasts - we need to figure out what is the best value for 
each one given its habitual size and content. Bigger grobs should get bigger 
default values. I'd like to raise separate issues for different families. For 
example, text spanner and dynamic next spanner make sense together in the same 
patch with the same default vale, but not text script and metronome mark.

Cheers,
MS

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

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


Re: Add callback factory grob::inherit-parent-property (issue 8726045)

2013-04-17 Thread m...@mikesolomon.org

On 17 avr. 2013, at 21:45, d...@gnu.org wrote:

> Reviewers: MikeSol,
> 
> Message:
> On 2013/04/17 18:27:05, MikeSol wrote:
>> Hey, I hadn't seen this. I just finished writing an equivalent patch.
> Yours is
>> better, so keep it.  You can use this for the
> inherit-X-parent-visibility and
>> eliminate the inherit-Y-parent-visibility callback, which is cruft and
> can be
>> replaced with the X one.
> 
> I did not actually replace anything because I was not sure of the intent
> of the code matching the actual code.
> 
> inherit-x-parent-visibility is used only once, so is
> inherent-y-parent-visibility.
> 
> Apart from the axis discrepancy, the only visible difference is that
> inherit-x-parent-visibility has a default of all-invisible, while
> inherit-y-parent-visibility has a default of '() and thus can
> distinguish the default use, possibly substituting something else.

I think the y callback should have never been added - you should use the x one 
instead.  I tested out replacing the y with x and didn't see any visual 
changes, so it should be ok.  I think the X parent of a FootnoteItem is the Y 
parent anyway.

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


Re: Add changes entry for Mike's work on skylines. (issue 8613043)

2013-04-16 Thread m...@mikesolomon.org

On 16 avr. 2013, at 22:12, d...@gnu.org wrote:

> On 2013/04/16 11:11:03, janek wrote:
>> 2013/4/16  :
>> > I hate it when I get last-minute realizations.  Here is another
> thing we
>> > need to do for the stable release: go through all problems of the
> "too
>> > snug" kind and work out defaults that avoid them.
> 
>> This might be impossible.  For example to avoid this problem {
>> d''4-.\downbow } we'd have to turn off or significantly pad Scripts
>> skylines, and that will result in wrong placement in other cases.
> 
> "Wrong placement"?  Seriously?  Can you give any articulation where
> you'd get bad behavior for considering just its bounding box?

f4->-.
In the bad old days, the staccato was spaced too far from the accent.

Cheers,
MS

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


Re: Add changes entry for Mike's work on skylines. (issue 8613043)

2013-04-16 Thread m...@mikesolomon.org
On 16 avr. 2013, at 12:59, d...@gnu.org wrote:

> On 2013/04/16 08:34:43, MikeSol wrote:
>> On 2013/04/16 07:51:46, dak wrote:
>> >
>> > I hate it when I get last-minute realizations.  Here is another
>> > thing we need to do for the stable release: go through all
>> > problems of the "too snug" kind and work out defaults that avoid
>> > them.  It's ok to tell people in our documentation how to get
>> > stuff move closer in case of necessity, but if we aren't talking
>> > about running text and similar things, looser spacing than
>> > necessary is _not_ a bug.
>> >
>> > Closer spacing than appropriate _is_ a bug.  One can publish a
>> > score with loose spacing, but one can't publish a score where
>> > things are sitting on each other.
>> >
>> > So for a stable release, we need conservative settings.  Settings
>> > that won't _force_ people to pepper their sources with overrides
>> > and tweaks just to throw them all out again when the next version
>> > arrives.
> 
>> This is a great time to ping the user list.  People who have been
>> using the development version for a while now have had a chance to
>> get used to scores with this spacing, and if they have anything that
>> they consider "too tight", then we can use simple skylines for those
>> things.
> 
> Actually, I'd very much prefer if we can make do with larger and/or
> different defaults for padding.  Throwing away skylines is a drastic
> measure.  Admittedly, one providing continuity with previous stable
> releases, but I think we still should try first working with
> parameterizing the new code differently before switching it off,
> providing a less uniform (though in some aspects more
> "backward-compatible") experience.

Didn't think of that...this is a better idea.

> 
>> We've already had some back-and-forth about text grobs but not much
>> else.
> 
> Text grobs might be somewhat special, admittedly.
> 

Agreed.

> The main problem we have right now is that most of our spacing is an
> all-or-nothing game:

Agreed.

> it does not figure in _benefits_ of tighter
> spacing like closing large white gaps separating _related_ items, or
> fitting additional systems in, or maintaining consistent distance
> between systems.  Basically one wants to typeset the score with
> _really_ tight skyline-based spacing first, and then let it "relax"
> into a state where skylines are increasingly padded as long as this
> does not cause major gaps or other problems, so that the tight spacing
> is retained only for those situations where it actually makes _sense_.
> 

Agreed, but now you're talking about padding being a spring instead of a 
number, which is a cool idea but LilyPond is wayy far away from that being 
possible.  Vertical spacing is controlled by springs at a marco level in 
page-layout-problem but implementing this at a micro level would take probably 
someone working full time for a year.

>> I think it is a percentage game, more than anything else.  Meaning
>> "what percent of users need to consider spacing too close before it
>> is inappropriate as a default."  If 90% like the new spacing and 10%
>> think it is too close,
> 
> You can't make bugs go away by a vote of confidence.  And that is a
> red herring anyway since nobody suggested switching off the skyline
> code.  It would not make sense to keep the associated code complexity
> while switching the code off.
> 
> So what we need is not a vote.  What we need is as much feedback as we
> can get about cases considered problematic, and we need to see whether
> we can change defaults in a way where they cease being a problem, at
> least to the degree where people will not bother fiddling with
> overrides in order to get rid of them.
> 
> So we need feedback from the heavy hitters, and we have annoyingly few
> of them I know about.  Kieren is one.  I don't know how many tweaks
> there are in Valentin's opera, but that might be another opportunity.
> You would be one, except that your kind of scores require oodles of
> overrides and tweaks anyway so they escape your notice.  People
> maintaining a large corpus of music would be relevant, but Mutopia is
> close to dead regarding its feedback with us, and more active
> score-maintaining sites like Scorio or Philomelos have not really
> moved onto even the 2.16 train (at least regarding last year's news).
> Other projects using LilyPond as backend might also be relevant:
> Denemo comes to mind.

We should hit up Jay: https://github.com/horndude77/open-scores. He'd have a 
good sense of this.

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


Re: Woodwind diagrams (issue 1425041)

2013-04-15 Thread m...@mikesolomon.org

On 15 avr. 2013, at 15:38, d...@gnu.org wrote:

> 
> https://codereview.appspot.com/1425041/diff/12001/ps/music-drawing-routines.ps
> File ps/music-drawing-routines.ps (right):
> 
> https://codereview.appspot.com/1425041/diff/12001/ps/music-drawing-routines.ps#newcode196
> ps/music-drawing-routines.ps:196: +% Note that filled is not boolean to
> permit for different graylevels (ie for trill keys)
> What's the reason for this falsehood?  "filled" is quite obviously
> boolean and used as such.

You're right, this comment is wrong.  Seems like filled is only being used for 
boolean.

Cheers,
MS


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


Re: Standardizes use of empty extents in pure heights and skylines. (issue 7310075)

2013-04-12 Thread m...@mikesolomon.org

On 12 avr. 2013, at 22:29, k-ohara5...@oco.net wrote:

> 
> https://codereview.appspot.com/7310075/diff/67001/lily/skyline.cc
> File lily/skyline.cc (right):
> 
> https://codereview.appspot.com/7310075/diff/67001/lily/skyline.cc#newcode370
> lily/skyline.cc:370: if (x1 >= last_end)
> Oops.  This controls whether to put an empty, -inf height, building in
> the gap. (When do we ever want Building data structures marking gaps?
> The skyline concept seems to allow for gaps.)
> 
> These zero-width anti-buildings would not have any effect, except that
> they are drawn (issue 3311) but they are not the boxes that surprised us
> when they disappeared (issue 3161).
> 
> Probably safest to put back the x1 > last_end + EPS
> 
> https://codereview.appspot.com/7310075/

Fair 'nuf. Can you write a patch?

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


Re: Wanting to be involved in lilypond project again

2013-04-10 Thread m...@mikesolomon.org

On 10 avr. 2013, at 16:13, "Fan Ziye"  wrote:

> Dear list,
>  
> Hi, I introduced myself to you several weeks ago – a fourth-year 
> undergraduate student of EECS wanting to be involved in lilypond’s 
> developing. And then Mike told me to read the CG. (Thank you very much!).
> But sorry for my absence in recent time, I was busy with my graduate project. 
> Luckily my project is about to be finished now, so I want to come back and 
> find something I can do.
>  
> I have just read through the CG and set up my developing environment ( 
> archlinux in a virtualbox, lily-git ). Is there any bug that would be 
> instructive to start with? Thanks! J
>  
> Regards,
> Fan Ziye
>  
> April 10, 2013
> ___
> lilypond-devel mailing list
> lilypond-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-devel

Hey Fan!

Welcome to the club. We are gearing up for a stable release and there are lots 
of little things that can help with that. I don't have a good sense of what 
those things are but I know they exist. Perhaps someone else can chime in?


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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-04-09 Thread m...@mikesolomon.org
On 9 avr. 2013, at 20:31, k-ohara5...@oco.net wrote:

> On 2013/03/26 04:10:38, mike7 wrote:
>> >> On 25 mars 2013, at 07:10, mailto:k-ohara5...@oco.net wrote:
>> >>
>> >>> Please do just one manual review of the regression suite between
>> >>> versions before adding another test of this length.
>> >>
>> I wanted to exhaust as many possibilities as I could think of (broken
> slurs over
>> one note, several notes, beginning broken, and broken, etc.) for both
> slur and
>> phrasing. Would it be better to split each system up into a separate
> test? Get
>> rid of some tests?
> 
> We need exhaustive test files while debugging, but probably we should
> reduce them to the essentials for the regtest that gets pushed.
> 
> Issue 3307 was plain to see in the regtest
> ‘rest-on-nonstandard-staff.ly’, but nobody succeeded in seeing the
> problem.
> 

Ok - feel free to chop this down however you see fit - I trust you.

Cheers,
MS

> https://codereview.appspot.com/7424049/

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


Re: Stable release state

2013-04-06 Thread m...@mikesolomon.org
On 6 avr. 2013, at 12:07, David Kastrup  wrote:

> 
> With the recent batch of material with missing documentation, extensive
> code changes and new functionality without previous exposure and moving
> interfaces (like
> commit 88d306d9c5666b5ade4a136df29cca19c5ff5ed7
> Author: Mike Solomon 
> Date:   Sat Apr 6 09:54:58 2013 +0200
> 
>Break slurs between alternative endings in repeats; issue 1698.
> 
>Create new event-types BreakPhrasingSlurEvent BreakSlurEvent,
>and a music-function \free so that users can create them.
>Create these event-types in the volta-repeat-iterator to break
>slurs between alternatives in a \repeat volta structure.
> 
> ) it is clear that master has stopped being suitable for turning into a
> stable branch.  There are several ways forward, none of them
> particularly endearing.

Quick note to say that I'm fine reverting this if it gets in the way of stable 
release plans and waiting till a stable release comes out before this goes in. 
In this case, what would help on the countdown is to know what is patch push 
straightaway and what is patch push after the next stable release.

Cheers,
MS

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

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


Re: Allows minimum-length to work for end-of-line spanners. (issue 7453046)

2013-04-02 Thread m...@mikesolomon.org
On 3 avr. 2013, at 01:57, d...@gnu.org wrote:

> On 2013/04/02 22:34:53, janek wrote:
>> I'll risk joining the discussion.
> 
>> I see valid points from both of you.  I agree that it's better to fix
> a broken
>> design than to patch it with red tape.
> 
> It isn't patched.  minimum-length is used in multiple
> contexts/interfaces, and Mike's patch muddies the situation further.
> 
>> However, if we only accepted code changes that were implementing the
>> Ultimate Solution, i'm afraid that the development process would
>> grind to a halt - Ultimate Solutions are obvioulsly best, but they
>> take much much more time to implement, and usually only experts can
>> write them.
> 
> That's the ultimate excuse to never bother about doing things right.
> 
>> This should not be an excuse for broken code, but i think that we
>> can accept patches that are iterations towards Ultimate Solution.
> 
> This one is an iteration away from a proper solution since it
> increases the inconsistency of minimum-length.
> 
>> As i see it, Mike's patch doesn't make matters worse - it's just a
>> piece of duct tape to make a temporary solution (i.e. current messy
>> code) less broken.
> 
> No, it makes it _more_ broken in order to paper over an annoying
> consequence of the brokenness.
> 
>> I think that we could add a FIXME to it and accept it, because it's
>> not making future rewrite harder (at least it seems so to me).
> 
> How does an increase in the inconsistency of minimum-length _not_ make
> a future rewrite harder?
> 
>> Also, we're trying to make a stable release soon, so this is not a
>> good time to start rewriting big pieces of code.
> 
> It is not a good time shoving in behavior that is not going to survive
> into the next stable release (assuming that this _is_ going to be
> fixed in a sensible manner) either.  The behavior of our stable
> releases should not be erratic but rather increasingly reliable.
> 
> 
> https://codereview.appspot.com/7453046/

The callback for minimum length is broken. This patch fixes a broken callback 
that used to work in a previous version of LilyPond. You are objecting to the 
patch because you don't like the naming of the property that he callback is 
attached to. I think the benefits of fixing this issue (which is a regression 
and IMHO should be marked as critical) far outweighs the disadvantages of 
continuing to use the bad naming scheme, especially as said scheme is used here 
as it is everywhere else in the documentation.

We can talk about how to better name things later, but that should not stop 
this regression from being fixed.

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


Re: rewrite Self_alignment_interface (issue 7768043)

2013-04-01 Thread m...@mikesolomon.org

On 2 avr. 2013, at 00:51, janek.lilyp...@gmail.com wrote:

> On Mon, Apr 1, 2013 at 1:20 PM, m...@mikesolomon.org
>  wrote:
>> X-extent is used in many things other than self alignment positioning,
>> so u don't want to change extents. Every positioning in LilyPond has
>> some notion of padding save this interface. It would be a good
> addition,
>> but could easily be in a follow-up patch.
> 
> Ok, i agree that some padding would be desirable.  What worries me is
> the multitude of paddings we have - they give me a headache; i quite
> frankly am lost in their different meanings.  As of now i'm unsure how
> to implement such padding without making things more complicated, so i
> suggest to wait until other design questions are answered.
> 
>>> As for chain_offset_callback, i've tried it (see attached patch),
>>> but i get a strange error:
> 
>>> Processing `input/regression/add-stem-support.ly'
>>> Parsing...
>>> Interpreting music...
>>> Preprocessing graphical objects...ERROR:
>>> In procedure ly:self-alignment-interface::x-align-grob:
>>> ERROR: Wrong number of arguments to
>>> #
> 
>>> quite frankly, i don't know what's wrong.
>>> I've looked at other uses of chain_offset_callback
>>> and it seems that i've written my code correctly.
> 
>> I'll look into it when I get home.
> 
> did you have any sucess with this stuff?
> 

Try making the function accept a second optional argument with a previous 
offset (check out the offset functions in side position interface)

Cheers,
MS

> thanks,
> janek
> 
> https://codereview.appspot.com/7768043/

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


Re: rewrite Self_alignment_interface (issue 7768043)

2013-04-01 Thread m...@mikesolomon.org
On 1 avr. 2013, at 14:13, Janek Warchoł  wrote:

> Hi all,
> 
> On Mon, Apr 1, 2013 at 7:52 AM,   wrote:
>> I'd recommend adding a sort of padding property to the
>> self-alignment-interface to get it completely there.
>> That is, imagine that we right align to a grob and we want
>> to be padded by 0.1  We should be able to do that.
>> That'd allow self-alignment-interface to be used
>> for grobs like InstrumentName.
> 
> I think that this should be done by manipulating extents:
> if i want an InstrumentName to be "horizontally-aligned-
> with-padding", i add desired padding value to its X-extent,
> and voilà!  LilyPond thinks that InstrumentName is slightly bigger,
> aligns it as if it was slightly bigger, and thus it ends up padded.
> What do you think?

X-extent is used in many things other than self alignment positioning, so u 
don't want to change extents. Every positioning in LilyPond has some notion of 
padding save this interface. It would be a good addition, but could easily be 
in a follow-up patch.

> 
> As for chain_offset_callback, i've tried it (see attached patch), but
> i get a strange error:
> 
> Processing `input/regression/add-stem-support.ly'
> Parsing...
> Interpreting music...
> Preprocessing graphical objects...ERROR:
> In procedure ly:self-alignment-interface::x-align-grob:
> ERROR: Wrong number of arguments to
> #
> 
> quite frankly, i don't know what's wrong.
> I've looked at other uses of chain_offset_callback
> and it seems that i've written my code correctly.
> 

I'll look into it when I get home.

> PS i'll look into Ambitus extent later - right now i'm getting some
> unexpected regressions after doing some additional modifications.
> <0001-use-chain-offsets-instead-of-setting-properties.patch>

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


instrument name patch reverted

2013-03-30 Thread m...@mikesolomon.org
Hey all,

I reverted the instrument name patch in staging.

Cheers,
MS

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


Re: Allows outside staff positioning for vertical axis groups with no staff (issue 8188044)

2013-03-30 Thread m...@mikesolomon.org

On 30 mars 2013, at 10:29, k-ohara5...@oco.net wrote:

> Simpler to just reverse the "special X-alignment" commit.
> 
> The old code, that followed the comment about a 'kldge' whatever that
> means, was rather elegant.  If we are placing something alongside an
> empty set, place it against the reference point for that set.  Having a
> special case for StanzaNumbers and another special case for empty
> VerticalAxisGroups gets messy.
> 
> https://codereview.appspot.com/8188044/

Fair enough, revert and I'll add a comment.

Cheers,
MS


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


Re: Allows outside staff positioning for vertical axis groups with no staff (issue 8188044)

2013-03-30 Thread m...@mikesolomon.org
On 30 mars 2013, at 08:33, k-ohara5...@oco.net wrote:

> Why not use the flat-line for empty VerticalAxisGroups specifically in
> side-position-interface.cc when placing something against the staff (in
> the clause if (include_staff) {} ) ?

include_staff is false for VerticalAxisGroups without staves because there is 
no staff grob.

> 
> If you make each empty VerticalAxisGroup into a line, wouldn't that
> prevent interleaving beteen left- and right-hand piano staves, if there
> is a Dynamics in between that happens to be empty ?

This wouldn't happen (at least I don't think it would after a quick test) - 
vertical axis group spacing is controlled in page-layout-problem.cc and doesn't 
use the same mechanisms.

Cheers,
MS


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


Re: [Lilypond-auto] Issue 3256 in lilypond: Patch: Eliminates side poisition calculations for system-start-text grobs.

2013-03-30 Thread m...@mikesolomon.org
On 30 mars 2013, at 08:27, lilyp...@googlecode.com wrote:

> Updates:
>   Labels: -Patch-push
> 
> Comment #8 on issue 3256 by d...@gnu.org: Patch: Eliminates side poisition 
> calculations for system-start-text grobs.
> http://code.google.com/p/lilypond/issues/detail?id=3256
> 
> This patch has broken incipits, like in input/regression/incipit.ly.  Its 
> commit message is _totally_ different from the issue description or the 
> Rietveld issue description.  It does not contain the issue number either.  
> You have not marked the issue as fixed, and the commit id is not to be found 
> anywhere.
> 
> In consequence, it is not possible to track the commit to this particular 
> issue and review.  It is not the first time, either.  Please keep the commit 
> messages and the issue and review descriptions the same and mark the issues 
> as fixed _including_ the commit id _right_ _after_ _pushing_.
> 
> The commit in question is
> commit 6e4e69f2735a764eab2e6f70f83546461da0203b
> Author: Mike Solomon 
> Date:   Fri Mar 29 05:55:13 2013 +0100
> 
>Uses special X alignment for instrument names.
> 
>Previously, instrument names used the side-position-interface for
>calculations in its alignment function.  This made no sense, as it never
>had any side-support elements, requiring a kludge to get them to
>align properly.
> 
>Here, we remove that kludge and align them by aligning them to their
>right end and adding padding.  We also change the name of the grob array
>in which vertical axis groups are stored to
>system-start-text-align-elements so that the grob is not accidentally
>treated as an axis-group implementing an elements array.
> 
> I propose reverting it since using the instrumentName for prefatory material 
> is documented and previously working behavior and it is not clear what this 
> will break in addition to incipits.  So it is not really fit to be included 
> in a stable release at this point of time.
> 


It is not clear what this patch does and doesn't break until people use it.  
Unfortunately, the regtest checker does not pick up on certain differences, so 
it is important for users testing the software to signal these.  I fix them 
right away.  You are absolutely right that it is not clear what this will break 
in addition to incipits, but I'd rather deal with that as it crops up as it is 
impossible to know given our current regtest checking suite. With Phil's pixel 
comparator this sort of problem will go away, but that'd need to get integrated 
into the build system.

Fixes are quick, so I just need to know the problem.  I can then fix it ASAP.

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


Re: More regtest differences

2013-03-29 Thread m...@mikesolomon.org
On 30 mars 2013, at 07:08, m...@mikesolomon.org wrote:

> On 30 mars 2013, at 06:42, Keith OHara  wrote:
> 
>> Phil Holmes  philholmes.net> writes:
>> 
>>> The second is the substantial change in the Les Nereides system 
>>> spacing.  Deliberate?
>> 
>> The second change is from the commit immediately before yours,
>> "Uses special X alignment for instrument names."
>> 
>> Text in a Dynamics line now has its baseline on the reference line of the
>> Dynamics.  This means it will collide with tempo marks (as in issue 3241)
>> or with text if someone puts text both above and below a Dynamics
>>  \new Dynamics {s_"bb"^"gg"}
>> 
>> Janek was just asking if issue 3241 would appear elsewhere.
>> 
>> "Les Néréides" looks better with the change (and there has a commented
>> override that would have done much the same!) but I will recommend that
>> Mike change this detail back, so that below-Dynamics things remain below
>> the Dynamics reference line.
>> 
> 
> Ah, OK, you answered my question. On it.
> 
> Cheers,
> MS

Patch posted as issue 3278 on the tracker.

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


Re: More regtest differences

2013-03-29 Thread m...@mikesolomon.org
On 30 mars 2013, at 06:42, Keith OHara  wrote:

> Phil Holmes  philholmes.net> writes:
> 
>> The second is the substantial change in the Les Nereides system 
>> spacing.  Deliberate?
> 
> The second change is from the commit immediately before yours,
> "Uses special X alignment for instrument names."
> 
> Text in a Dynamics line now has its baseline on the reference line of the
> Dynamics.  This means it will collide with tempo marks (as in issue 3241)
> or with text if someone puts text both above and below a Dynamics
>   \new Dynamics {s_"bb"^"gg"}
> 
> Janek was just asking if issue 3241 would appear elsewhere.
> 
> "Les Néréides" looks better with the change (and there has a commented
> override that would have done much the same!) but I will recommend that
> Mike change this detail back, so that below-Dynamics things remain below
> the Dynamics reference line.
> 

Ah, OK, you answered my question. On it.

Cheers,
MS

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

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


Re: Removes outside-staff-priority from dynamic-related objects in Dynamic context (issue 7655045)

2013-03-29 Thread m...@mikesolomon.org

> On 2013/03/27 21:50:02, janek wrote:
>> What was wrong with the skylines
>> that caused this bug?  Maybe this is just one instance of a more
>> general problem.
> 
> 
> The skylines themselves were fine, but objects above a Staff are not
> checked for collisions with objects below a Staff.
> 
> In the example a Dynamics was serving as the staff,  Dynamics has no
> staff-lines but does have a conceptual reference line.  The tempo mark
> is placed above the Dynamics and the forte "f" below.
> 
> Usually, above-staff things go above the reference line and below-staff
> things go below it, but DynamicLineSpanner had an override of its
> Y-offset, centering it on the reference line.  So adding the overrides
> to make DynamicLineSpanner *not* outside the staff seems sensible.
> 
> Other above- or below-staff objects still have the usual Y-offset =
> #side-position-interface::y-aligned-side  putting them clearly on one
> side or the other of the reference line, so the problem would not appear
> for other objects
> 
> ... until Mike changed side-position-interface::y-aligned-side() so that
> now below-staff text scripts now sit on top of the Dynamics reference
> line ?!
> 
> https://codereview.appspot.com/7655045/

Could you send an example of the text scripts doing this?

Cheers,
MS

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


Re: More regtest differences

2013-03-29 Thread m...@mikesolomon.org

On 29 mars 2013, at 20:36, Janek Warchoł  wrote:

> On Fri, Mar 29, 2013 at 7:04 PM, Phil Holmes  wrote:
>> - Original Message - From: "Janek Warchoł"
>> 
>> 
>>> On Fri, Mar 29, 2013 at 5:48 PM, Phil Holmes  wrote:
 it seems that all system start braces have
 been pushed a little bit further from the initial system clef.
>>> 
>>> Isn't this a rounding error introduced when converting postsript to
>>> raster image?  I tried compiling this regtest with these two commits
>>> and the resulting pdfs were the same.
>> 
>> Don't reckon so.  I've now taken PDFs from Lilypond built from master and
>> from my earlier commit, and they're different - master has moved the system
>> start bar, such that the barlines protrude over it.  See attached images,
>> created by rasterizing the PDFs at 1200 dpi and then downsizing them.
> 
> Indeed, you're right.  My master wasn't up to date - my bad.
> The faulty commit is either 6e4e69f2735a764eab2e6f70f83546461da0203b
> or 8a35d5d2e856fa07c42c626ae7966c69dde61fdb (both from Mike).
> 
> best,
> Janek

Created tracker issue 3277 to fix that.  The problem is that there are some 
grobs that position themselves on an empty set of grobs. 
8a35d5d2e856fa07c42c626ae7966c69dde61fdb ends this practice, but there are some 
residual grobs whose functioning were built on this behavior like 
StanzaNumbers.  I created a function to deal with this case.  Apparently 
SystemStartBars are the same, but as they don't show up in regtests this can't 
be seen.  So, I just used the StanzaNumber function for SystemStartBars 
(renaming the function to make it more general) and it works like a charm.

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


Re: More regtest differences

2013-03-29 Thread m...@mikesolomon.org
On 29 mars 2013, at 18:48, Phil Holmes  wrote:

> I've been comparing the result of my push of my pixel-based regtest 
> comparator (b4fe233aec83383bd2e6b6170fca67a31a8c492d) with current master 
> (6e4e69f2735a764eab2e6f70f83546461da0203b).  There are 2 changes that concern 
> me.  The first is that it seems that all system start braces have been pushed 
> a little bit further from the initial system clef.  You can see that if you 
> blink between the 2 attached accidental-piano images.  Is this deliberate?

No, but I am positive that this is my work.  I'll have a look at it.

> The second is the substantial change in the Les Nereides system spacing.  
> Deliberate?
> 

Also my work, but deliberate this time - my continual work on skylines makes 
everything more snug.

Cheers,
MS


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


Re: PATCHES: Countdown - for March 26th 19:00GMT

2013-03-28 Thread m...@mikesolomon.org
On 23 mars 2013, at 13:59, James  wrote:

> Hello,
> 
> Countdown – March 26th 2013 – 19:00 GMT   
> 
> 
> 
> 
> 
> 
> 
> 
> 3134  Enhancement Mike SolomonPushPatch: Removes the 
> translate_axis call from axis-group-interface outside-staff positioning.
> 
> 
> 
> 
> 
> 
> James
> ___
> lilypond-devel mailing list
> lilypond-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-devel

Hey all,

I'm holding off on this until 2.18 comes out, unless it becomes evident that 
2.18 is far away.  But it seems like it is imminent, as the general consensus 
is that the remaining critical issues are no longer critical (as they are no 
longer release blocking).

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


Re: critical issues

2013-03-26 Thread m...@mikesolomon.org

On 27 mars 2013, at 07:54, Werner LEMBERG  wrote:

> 
>> https://code.google.com/p/lilypond/issues/detail?id=2656
>> 
>> This is really bad.  I agree that it is critical.  I unfortunately
>> have no way to test this, but do people have an ETA for fixing this?
>> If not, it will hold 2.18 up for a long time, in which it may be
>> worth pushing the translate_axis patch that I've been holding in the
>> works.
> 
> As can be seen in comment #26, Behdad is willing to help, but a
> LilyPond developer (or power user) using a Windows box must step
> forward, using a current version of Pango (and probably Harfbuzz) to
> test the issue.  The results should then be added to GUB.
> 

Someone who "knows what they're doing" (tm) needs to head up the effort and 
send an e-mail to the LilyPond user list recruiting 2-3 power users.  A 1-2 
hour Skype session should be all that is needed for the data gathering.

I'm in wedding mode for the next 3-4 weeks, so that's a no go for me :-(

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


critical issues

2013-03-26 Thread m...@mikesolomon.org
There are two critical issues that we're going to have to start seriously 
thinking about now if 2.18 is going to happen anytime soon:

https://code.google.com/p/lilypond/issues/detail?id=2733

I'm not comfortable marking this critical: not because it is not critical for 
Laura, nor because it may not be our fault, but because there is not enough 
information to know where the problem comes from.  I have no problem on my 
homebrewed installation of LilyPond running LilyPond book.  I think that it is 
important to work with a user who is having a problem like this, especially if 
the user is active in soliciting developer help, but let's only mark it 
critical if it is somehow a generalized problem (i.e. for all users running a 
given OS).  What do you think?

https://code.google.com/p/lilypond/issues/detail?id=2656

This is really bad.  I agree that it is critical.  I unfortunately have no way 
to test this, but do people have an ETA for fixing this?  If not, it will hold 
2.18 up for a long time, in which it may be worth pushing the translate_axis 
patch that I've been holding in the works.

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


Re: Suggestions for participating institutions?

2013-03-26 Thread m...@mikesolomon.org
On 26 mars 2013, at 10:52, David Kastrup  wrote:

> 
> Hi,
> 
> I met a former colleague in the bus to Chemnitz, and he is at least
> knowledgeable about EU research programmes.  Do people here have ideas
> about possible institutions who could be made to participate?  I think
> the conditions are institutions from at least three EU countries, and
> monetary participation of at least 25%.  So we need some institution
> with a reasonable interest of its own to get to some LilyPond-related
> goals.
> 
> Objective ICT-2013.8.2 Technology-enhanced learning
> 
> Target Outcomes
> Research under this objective targets tailored, scaled and tested R&D
> for stimulating the take-up of learning technologies in different
> learning contexts, reinforces the evidence-base of effectiveness of
> learning technologies and encourages their innovative use.
> 
> a) ICT-enabled learning environments: joint pre-commercial procurement
> (PCP) of innovative solutions for teaching national curricular topic(s)
> in primary and/or secondary education, based on latest advances in
> pedagogical, cognitive and other relevant scientific disciplines.
> 
> These solutions should:
> • combine, and operate across different digital media and devices and
> stretch the boundaries of place, time, type and styles of active
> learning in the digital age;
> • include rich and intuitive interfaces for teachers and students and
> simulations and representations for teaching, learning and communicating
> about the topic;
> • adapt to different teaching practices and learning methods (e.g.
> collaborative, inquiry-based and personalised learning and 1:1 tutoring)
> and provide efficient support for the teacher in planning, monitoring,
> assessment and in the management of classroom activities.
> 
> The participatory design of the systems should involve all key
> stakeholders in the value chain, e.g. public authorities, researchers,
> developers and end-users, through iterative processes and take into
> account contextual variables that affect learning in particular contexts
> (e.g. local, regional and/or national situations, learner and teacher
> profiles, types and styles of learning). The proposed solutions should
> aim for wide adoption at local, regional or national level and their
> relevance and effectiveness for learning should be demonstrated by
> appropriate evaluation methods and benchmarking.
> 
> PCPs shall be implemented according to the conditions outlined in
> objective 11.1 and Appendix 6 and cover the full PCP life-cycle
> encompassing solution design, prototyping, and original development of a
> limited volume of products/services in the form of a validated test
> series. They should seek to contribute to standards in digital
> educational solutions.
> 
> ...
> 
> Expected Impact
> • Broaden use of ICT in education in at least one curricular topic
> leading to wider take up by end-users;
> • Effective public-private partnerships for providing digital learning
> solutions in Europe;
> • Stronger growth of the European ICT-enabled learning markets;
> • More efficient use of ICT for learning through the exploitation of
> learning analytics tools;
> • More timely and effective acquisition of skills/competences through
> learning technologies, in public administrations, indicated a.o. through
> % of decrease in time to proven competency and in time to carry out the
> tasks, and % of savings in study time;
> • Increased awareness on the benefit of the adoption of learning
> technologies.
> 
> Funding Schemes
> a) CP-CSA, b) STREP, CSA, c) IP/STREP d) CSA (CA only).
> Indicative budget distribution
> 
> CP-CSA, IP/STREP: EUR 22 million, of which a minimum of 25% allocated to
> CP-CSA (max 25% for the CSA part), a minimum of 40% to IPs and 30% to
> STREPs;
> 
> For outcome b) : 1-2 STREPS to be funded
> CSA: EUR 3 million
> 
> Call:
> FP7-ICT-2013-11
> 

This is the exact sorta thing I've been looking for.
I work with a group in France that'd be perfect for this (the Grame) - I'll ask 
them.
I also have some contacts to the Sibelius Academy in Finland...

Will keep you posted.

Cheers,
MS


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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-25 Thread m...@mikesolomon.org
On 26 mars 2013, at 05:58, "Keith OHara"  wrote:

> On Mon, 25 Mar 2013 00:29:35 -0700, m...@mikesolomon.org 
>  wrote:
> 
>> On 25 mars 2013, at 07:10, k-ohara5...@oco.net wrote:
>> 
>>> It looks like you try to use a common UP/DOWN direction for the portions
>>> of a broken slur, and the image you posted to the bug-tracker showed a
>>> common direction for each half of a broken slur, but the current patch
>>> gives me inconsistent directions (in every case but especially line 3).
>> 
>> I only use a common UP/DOWN if it is set by the user beforehand.  Otherwise, 
>> it is calculated with the usual callbacks.
> 
> I see.  I thought you were using the same machinery that breaks slurs at 
> line-breaks, which uses a common direction between halves.  I see now that 
> you are breaking earlier, at 'engraving', before all the notes under a slur 
> are engraved, thus befor the slur directions are determined. Shucks.

I can look into this.

> 
>>> Please do just one manual review of the regression suite between
>>> versions before adding another test of this length.
>> 
>> What do you mean here?
> 
> You'll see a large number of very small regression tests, and a few huge very 
> repetitive tests.  You might think the huge repetitive tests get in the way 
> of review.
> 
I wanted to exhaust as many possibilities as I could think of (broken slurs 
over one note, several notes, beginning broken, and broken, etc.) for both slur 
and phrasing. Would it be better to split each system up into a separate test? 
Get rid of some tests?

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-25 Thread m...@mikesolomon.org
On 25 mars 2013, at 07:10, k-ohara5...@oco.net wrote:

> Thanks for taking the time to do this.  No-one else knows enough of the
> various stages of processing to bring all the pieces together.
> 
> It looks like you try to use a common UP/DOWN direction for the portions
> of a broken slur, and the image you posted to the bug-tracker showed a
> common direction for each half of a broken slur, but the current patch
> gives me inconsistent directions (in every case but especially line 3).
> 

I only use a common UP/DOWN if it is set by the user beforehand.  Otherwise, it 
is calculated with the usual callbacks.

> 
>> After some consideration, I consider the name \broken
>> suboptimal since it implies two pieces.
> 
> Conceptually, of course, there *are* two pieces.  The other piece is
> probably at the other end of the repeat. The automatic behavior is quite
> good, so fortunately we will rarely need to look up whatever name the
> committee approves for the command to make a broken slur.
> 

It'd be a shame for this to get stuck in the pipes because we can't figure out 
a good name.  I am indifferent and I don't mind \broken or whatever really.

> 
> https://codereview.appspot.com/7424049/diff/65002/input/regression/repeat-slur.ly
> File input/regression/repeat-slur.ly (right):
> 
> https://codereview.appspot.com/7424049/diff/65002/input/regression/repeat-slur.ly#newcode2
> input/regression/repeat-slur.ly:2:
> Please do just one manual review of the regression suite between
> versions before adding another test of this length.
> 

What do you mean here?

Thanks for the review!

Cheers,
MS

> https://codereview.appspot.com/7424049/


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


Re: Snaps horizontally-offset fingerings to vertical column. (issue 7988043)

2013-03-25 Thread m...@mikesolomon.org
On 25 mars 2013, at 06:42, k-ohara5...@oco.net wrote:

> Code looks good, but we could get the same result with
>  \override Accidental #'horizontal-skylines = #'()
> 
> 

Conceptually, I'm a fan of the snapping idea, but you're right that it takes 
more time.  Would this \override fix all problems of a lack of "snapping"?  
Would it force accidentals to be that should be staggered?

If your idea gives a satisfactory result, we can go with that and keep my patch 
around in case one day we need something more fine-tuned.

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


Re: Eliminates side poisition calculations for system-start-text grobs. (issue 7574048)

2013-03-24 Thread m...@mikesolomon.org

On 24 mars 2013, at 14:59, d...@gnu.org wrote:

> 
> https://codereview.appspot.com/7574048/diff/5001/input/regression/instrument-name-x-align.ly
> File input/regression/instrument-name-x-align.ly (right):
> 
> https://codereview.appspot.com/7574048/diff/5001/input/regression/instrument-name-x-align.ly#newcode33
> input/regression/instrument-name-x-align.ly:33: \set Staff .
> instrumentName = \markup \right-column {
> Make no mistake: the previous code looked suspiciously asymmetric.  Is
> your change a cosmetic one, or is it related to other strange behaviors
> like the \left-column/\column mismatch we had noticed elsewhere?
> 
> https://codereview.appspot.com/7574048/

The latter - I noticed it clashed and have run into problems with right column 
in the past and decided to get rid of it.
I can put it in a different commit before pushing this one.

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


Re: Fingering not aligned in 2.17, ok in 2.16

2013-03-22 Thread m...@mikesolomon.org

On 22 mars 2013, at 18:32, SoundsFromSound  wrote:

> Hmm..I kind of like the new behavior too, it's easier on my eyes.  I like how
> it staggers to flow with the score, but I can see why some would want strict
> lined-up fingerings as well.
> 
> Just my 2 cents.
> 
> Ben
> 
> 
> Werner LEMBERG wrote
>>> See below. In 2.16.2, the fingering indications are vertically
>>> aligned.  In 2.17.14, they aren't.
>>> 
>>> \relative f'' {
>>>  \set fingeringOrientations = #'(left)
>>> 
>> 
>> 4
>>> }
>> 
>> Do you consider this a bug?  Actually, I like the new behaviour
>> better.  What does the literature say?
>> 
>> 
>>Werner
>> 
>> ___
>> lilypond-user mailing list
> 
>> lilypond-user@
> 
>> https://lists.gnu.org/mailman/listinfo/lilypond-user
> 

Ugh, my LilyPond development is going to screech to a halt now (too much work) 
but I have the solution sketched out in my head.  If someone wants to tackle it 
in C++ lemme know and I can give them the blueprint I have.

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


git-cl TransientError

2013-03-21 Thread m...@mikesolomon.org
Hey all,

I'm getting:

Unhandled exception.

 [TransientError]

from git-cl.  Any ideas as to what that's all about?

Cheers,
MS

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


(almost-)freezing current master

2013-03-21 Thread m...@mikesolomon.org
Hey all,

To prepare for 2.18, I think we can get it out fastish, but we need to more or 
less freeze current master aside from bug fixes and documentation.  I have a 
lot of stuff on the countdown or on patch push that I'm not gonna push for a 
few months until we get 2.18 out (Ferneyhough hairpins, repeat slurs, etc.).

Is everyone comfortable adopting a similar policy?  David has suggested 
2-months as a possible time frame, which I think is possible (there are no 
egregious, unfixable bugs).  I can hold off this long on pushing big patches.  
Any longer and it starts to become tedious w/ rebasing and further work and 
whatnot, so I am way-for an almost-freeze of current master.

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-20 Thread m...@mikesolomon.org

On 20 mars 2013, at 09:26, Trevor Daniels  wrote:

> 
> m...@mikesolomon.org
> 
>> I completely agree.  It's just that "fake" in English means false or 
>> counterfeit.  It needs another word, just don't know what yet.  unchained? 
>> free?
> 
> At the risk of prolonging the bike-shedding, here's my take.  For me, the key 
> consideration is to provide an easily remembered name that can be internally 
> vocalised as the slur is typed in.  And we need a user-centric (not 
> developer-centric) word - what is the user's conception of such a slur?  Also 
> we need an attribute of the end point of the slur, not the slur as a whole, 
> since it is to be applied to an end point.  The word should fit comfortably 
> as an adjective in the phrase "xxx slur start/end"  as "free slur end" to aid 
> vocalisation.
> 
> I'm not keen on \broken or \fake; they have other incorrect and unhelpful 
> connotations.  \detached or \free are better.  Others might be \floating, 
> \hanging, \loose, \dangling, although these are a bit long.  Of all the 
> suggestions so far I prefer \free.
> 
> Trevor

If we're not going to refer to unfinished bridges in Scotland (tear), I like 
\free and \loose.

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-20 Thread m...@mikesolomon.org
On 20 mars 2013, at 18:25, "m...@mikesolomon.org"  wrote:

> Sent from my iPhone
> 
> On 20 mars 2013, at 16:38, David Kastrup  wrote:
> 
>> Werner LEMBERG  writes:
>> 
>>>> I think any further proposals should _definitely_ explain how to write
>>>> the given example
>>>> 
>>>> g f e d( 
>>>> \repeat { c d) e f ( }
>>>> \alternatives {
>>>> { g) a b( a \fake) }
>>>> { \fake( e) d c( d \fake) }
>>>> { \fake( d) c d( e }
>>>> }
>>>> d c) d c
>>> 
>>> Hmm.  It's not clear to me why lilypond can't handle this
>>> automatically:
>>> 
>>> g f e d( 
>>> \repeat { c d) e f( }
>>> \alternatives {
>>>   { g) a b( a }
>>>   { e) d c( d }
>>>   { d) c d( e }
>>> }
>>> d c) d c
>> 
>> The example actually is a bit too orthogonal to illustrate all pertinent
>> points.  Here are some variations:
>> 
>> g f e d( \fake)
>> \repeat { \fake( c d) e f ( }
>> [...]
>> 
>> Now the first slur will _not_ lead into the repeat unbroken, a valid
>> variation.
>> 
>> g f e d( \fake)
>> \repeat { \fake\single\slurDotted( c d) e f 
>> [...]
>> 
>> This is typical for lyrics where there is a melisma leading into the
>> first repeat but not into all subsequent ones.  If there is no melisma
>> into the first repeat but in some alternative, you'd write instead
>> 
>> g f e d
>> \repeat { \fake\single\slurDotted( c d) e f }
>> [...]
>> 
>> Now since \unfoldRepeats would remove all \fake slurs, the result would
>> be fine here.  The opposite case, where a repeat leads into only some
>> alternatives, would be
>> 
>> \repeat { c d e f\single\slurDotted( \fake) }
>> 
>> which works less well.  One possible way around that would be to combine
>> tweaks from start and end slur events, leading to
>> 
>> \repeat { c d e f( \fake\single\slurDotted) }
>> 
>> which is still not good enough for unfolding unless one starts slur-less
>> alternatives with something like \fake( d\single\omit).  Which would not
>> work for audio so for that case we probably really need an explicit slur
>> killing command.
>> 
>> 
>> Here is another example:
>> 
>> g f e d(
>> \repeat { c d) e f }
>> \alternatives {
>> { g a b( a \fake) }
>> { e d c( d \fake) }
>> { d c d e }
>> }
>> d c d c
>> 
>> The suggested automatism would turn this into
>> 
>> g f e d(
>> \repeat { c d) e f }
>> \alternatives {
>> { g a b( a }
>> { e d c( d }
>> { d c d e }
>> }
>> d c d c
>> 
>> which makes for a lot of visually unpaired opening parens in the source
>> code.  Mind you: this is pretty much what I have asked for myself.  I
>> just have my doubts that an automatism for some cases will not make it
>> harder for other cases and will leave the music source in a less
>> convincing state.
>> 
>> I have to admit that leaving _all_ automatism aside does not seem
>> warranted: I can think of no case where inconsistent slur orientation
>> across visual jumps would be desirable.
>> 
>>> It seems that I've *completely* misunderstood the syntax we were
>>> talking about, so thanks for this detailed example.  However, I still
>>> don't like \fake.  Looking at your syntax about, the corresponding TeX
>>> name would be \phantom which I do now suggest.
>> 
>> Well, TeX uses \phantom for something which has dimensions but no visual
>> appearance, whereas we would use it for something which has visual
>> appearance (before unfolding) but no sound.
>> 
>> But TeX is separate enough from LilyPond that I actually like \phantom
>> rather well for this purpose.
> 
> Anything like phantom, fake and co doesn't sit right in English. Granted, the 
> majority of LilyPond users are non-native speakers, so this probably doesn't 
> make have the same impact. But, given that English is the language of 
> lilypond, I think it's important to pay heed to the underlying sense of 
> words. 'faux' in French, which means fake, would feel more suitable here, as 
> it also means false and can apply to real things. But LilyPond is not in 
> French.
> 
> Some other English ideas:
> 
> unhinged
> unbridled
> unanchored
> loose
> split
> chopped
> frayed
> 
> Cheers,
> MS

Even better, how about:

\anderston

The Anderston pedestrian bridge is a real life example of what we're talking 
about.

http://en.m.wikipedia.org/wiki/M8_Bridge_to_Nowhere#section_3

I'm totally for this - it would be fantastic if people called these things 
"Anderston slurs" or "Anderston beams."
Why not be poetic? There are plenty of musical terms that use 
metaphors/allusions.

So that's my new vote...

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-20 Thread m...@mikesolomon.org
Sent from my iPhone

On 20 mars 2013, at 16:38, David Kastrup  wrote:

> Werner LEMBERG  writes:
> 
>>> I think any further proposals should _definitely_ explain how to write
>>> the given example
>>> 
>>> g f e d( 
>>> \repeat { c d) e f ( }
>>> \alternatives {
>>>  { g) a b( a \fake) }
>>>  { \fake( e) d c( d \fake) }
>>>  { \fake( d) c d( e }
>>> }
>>> d c) d c
>> 
>> Hmm.  It's not clear to me why lilypond can't handle this
>> automatically:
>> 
>>  g f e d( 
>>  \repeat { c d) e f( }
>>  \alternatives {
>>{ g) a b( a }
>>{ e) d c( d }
>>{ d) c d( e }
>>  }
>>  d c) d c
> 
> The example actually is a bit too orthogonal to illustrate all pertinent
> points.  Here are some variations:
> 
> g f e d( \fake)
> \repeat { \fake( c d) e f ( }
> [...]
> 
> Now the first slur will _not_ lead into the repeat unbroken, a valid
> variation.
> 
> g f e d( \fake)
> \repeat { \fake\single\slurDotted( c d) e f 
> [...]
> 
> This is typical for lyrics where there is a melisma leading into the
> first repeat but not into all subsequent ones.  If there is no melisma
> into the first repeat but in some alternative, you'd write instead
> 
> g f e d
> \repeat { \fake\single\slurDotted( c d) e f }
> [...]
> 
> Now since \unfoldRepeats would remove all \fake slurs, the result would
> be fine here.  The opposite case, where a repeat leads into only some
> alternatives, would be
> 
> \repeat { c d e f\single\slurDotted( \fake) }
> 
> which works less well.  One possible way around that would be to combine
> tweaks from start and end slur events, leading to
> 
> \repeat { c d e f( \fake\single\slurDotted) }
> 
> which is still not good enough for unfolding unless one starts slur-less
> alternatives with something like \fake( d\single\omit).  Which would not
> work for audio so for that case we probably really need an explicit slur
> killing command.
> 
> 
> Here is another example:
> 
> g f e d(
> \repeat { c d) e f }
> \alternatives {
>  { g a b( a \fake) }
>  { e d c( d \fake) }
>  { d c d e }
> }
> d c d c
> 
> The suggested automatism would turn this into
> 
> g f e d(
> \repeat { c d) e f }
> \alternatives {
>  { g a b( a }
>  { e d c( d }
>  { d c d e }
> }
> d c d c
> 
> which makes for a lot of visually unpaired opening parens in the source
> code.  Mind you: this is pretty much what I have asked for myself.  I
> just have my doubts that an automatism for some cases will not make it
> harder for other cases and will leave the music source in a less
> convincing state.
> 
> I have to admit that leaving _all_ automatism aside does not seem
> warranted: I can think of no case where inconsistent slur orientation
> across visual jumps would be desirable.
> 
>> It seems that I've *completely* misunderstood the syntax we were
>> talking about, so thanks for this detailed example.  However, I still
>> don't like \fake.  Looking at your syntax about, the corresponding TeX
>> name would be \phantom which I do now suggest.
> 
> Well, TeX uses \phantom for something which has dimensions but no visual
> appearance, whereas we would use it for something which has visual
> appearance (before unfolding) but no sound.
> 
> But TeX is separate enough from LilyPond that I actually like \phantom
> rather well for this purpose.
> 

Anything like phantom, fake and co doesn't sit right in English. Granted, the 
majority of LilyPond users are non-native speakers, so this probably doesn't 
make have the same impact. But, given that English is the language of lilypond, 
I think it's important to pay heed to the underlying sense of words. 'faux' in 
French, which means fake, would feel more suitable here, as it also means false 
and can apply to real things. But LilyPond is not in French.

Some other English ideas:

unhinged
unbridled
unanchored
loose
split
chopped
frayed

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-20 Thread m...@mikesolomon.org
On 20 mars 2013, at 14:26, d...@gnu.org wrote:

> Yet another possibility would be \inner but that implies a hierarchy.
> More accurate would be \continued.
> 
> https://codereview.appspot.com/7424049/

I like \interrupted

Cheers,
MS

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-20 Thread m...@mikesolomon.org
On 20 mars 2013, at 14:52, David Kastrup  wrote:

> "m...@mikesolomon.org"  writes:
> 
>> On 20 mars 2013, at 14:26, d...@gnu.org wrote:
>> 
>>> Yet another possibility would be \inner but that implies a hierarchy.
>>> More accurate would be \continued.
>>> 
>>> https://codereview.appspot.com/7424049/
>> 
>> I like \interrupted
> 
> I considered that but self-censored because it leads to the visual
> pairings ( ... \interrupted) and \interrupted( ... ).
> 
> That is, \interrupted) talks about ) being interrupted when ) has not
> yet been seen.  For \interrupted( the naming choice works better.  I'd
> prefer it if we found a word that makes good sense in both
> places/directions, saving the user from dealing with a naming
> redundancy.
> 

I don't completely follow what you're saying above - could you say it another 
way?

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-19 Thread m...@mikesolomon.org

On 20 mars 2013, at 07:50, David Kastrup  wrote:

> "m...@mikesolomon.org"  writes:
> 
>> On 20 mars 2013, at 06:07, David Kastrup  wrote:
>> 
>>> "m...@mikesolomon.org"  writes:
>>> 
>>>> Trying to put myself in the shoes of the average user, \fake would
>>>> not mean a function that uses a fake post event, but rather a
>>>> function that produces a \fake something.  I would think "this makes
>>>> a fake slur", which is not the case.
>>> 
>>> It makes a fake slur start or end.
>> 
>> The word "fake" still doesn't sit right with me...  There is nothing
>> fake about the slur:
>> 
>> { a \fake ( b c d ) }
> 
> Mike, that code does not even make any sense.

If one is quoting another instrument starting in mid-measure, why wouldn't that 
make sense?

> You would not place a
> fake slur start or fake slur end anywhere except right after or right
> before a visual discontinuity from a repeat construct.  You probably did
> not understand what I wrote, probably because "it makes a fake slur
> start or end" is not grammatically clear.  I mean "It makes a fake
> slur-start or a fake slur-end" by that.

Ok, I'm getting what you're saying.  I still don't like "fake" just because the 
begin and start are still real.  They are just offset.

> 
>> It is real.
> 
> The slur is real.  The end point isn't.

What is not real about the endpoint?  If I jump on a train in between two 
stations, it is still a real getting-on-board.

> 
>> The function, to me, should describe an attribute of the slur.
> 
> But it doesn't.  It describes an attribute of its visual start or end
> point.

This is a good idea.

> 
>> The slur looks detached and broken, but not fake.
> 
> But the attachment is fake, and the slur will get properly attached to
> the proper end points when repeats are unfolded.

Perhaps non-musical?

> 
>> There are commands like slurDashed, slurDotted, etc. that describe
>> what the output will be like.
> 
> And the output will be like that even when repeats are unfolded.
> 
>> I think it's important to stay in that logic.  If we're going to use
>> this for many spanners, my vote would be \broken.
> 
> But it is not the slur that is "broken" but rather its visual connection
> to _one_ or even _two_ of its end points.  You can perfectly well and
> meaningfully have an alternative written as
> 
> { \fake\( c d e f \fake\) }
> 
> and when unfolding, the phrasing slur will start at some point preceding
> this passage and end at some point succeeding it.
> 
>> The slurs look broken,
> 
> If you want to, but the whole of
> ( \broken) \broken( \broken) \broken( )
> is just _one_ slur broken into three pieces, not one whole slur and two
> broken slurs.  That logic is more apparent with writing
> ( \fake) \fake( \fake) \fake( )
> 
> The breaking occurs at artificial points not related to the music
> function of the slur, and it will get dissolved when unfolding repeats.
> 
> The break of the slur does not occur where \broken is written, but
> rather it is at a visual discontinuity logically connected with matching
> pairs of \broken) ... \broken(.  Your above example suggests that this
> relation does not seem clear to you.
> 
>> and things like beams and hairpins will definitely look broken as well
>> if we split them using the same sort of algorithm.
> 
> Sure, and again the split will be between matching pairs of artificial
> end and start points that are not logical end and start points and will
> disappear when repeats are unfolded and the broken construct gets joined
> visually as well as logically.
> 
>> To me, something can look "broken" and this designation does not have
>> any bearing on if all the pieces are there or not.  It is a quality of
>> the object.
> 
> No, it is a quality of the respective visual (but not logical) start and
> end points.  And I would prefer a naming choice that makes it easier for
> people to understand what they are doing.  You are making a strong case
> for this being hard enough to make it prudent to avoid fallacious
> naming.

I completely agree.  It's just that "fake" in English means false or 
counterfeit.  It needs another word, just don't know what yet.  unchained? free?

Cheers,
MS


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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-19 Thread m...@mikesolomon.org

On 20 mars 2013, at 07:25, Werner LEMBERG  wrote:

> 
>> I can even imagine to use to commands, \start and \end to get, say,
>> `\start(' or `\end\>'.  Who knows, maybe this destinction is
>> advantageous sometime in the future.
> 
> Maybe even better \startOf and \endOf.
> 
> 
>Werner

The problem with \cut is that it is both a verb and adjective - the thing looks 
"cut", but people might think that cutting is done.
As for start/end, all spanners are started and ended by definition, so this may 
be confusing.

My vote:

1) \broken
2) \detached
3) \cut
4) \alignSpannerToNonMusicalPaperColumn
5) \fake

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-19 Thread m...@mikesolomon.org

On 20 mars 2013, at 06:07, David Kastrup  wrote:

> "m...@mikesolomon.org"  writes:
> 
>> Trying to put myself in the shoes of the average user, \fake would not
>> mean a function that uses a fake post event, but rather a function
>> that produces a \fake something.  I would think "this makes a fake
>> slur", which is not the case.
> 
> It makes a fake slur start or end.

The word "fake" still doesn't sit right with me...  There is nothing fake about 
the slur:

{ a \fake ( b c d ) }

It is real.  The function, to me, should describe an attribute of the slur.  
The slur looks detached and broken, but not fake.

There are commands like slurDashed, slurDotted, etc. that describe what the 
output will be like.  I think it's important to stay in that logic.  If we're 
going to use this for many spanners, my vote would be \broken.  The slurs look 
broken, and things like beams and hairpins will definitely look broken as well 
if we split them using the same sort of algorithm.  To me, something can look 
"broken" and this designation does not have any bearing on if all the pieces 
are there or not.  It is a quality of the object.

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


Re: reorganize self_alignment_interface (issue 7768043)

2013-03-19 Thread m...@mikesolomon.org

On 20 mars 2013, at 00:27, Janek Warchoł  wrote:

> Hi,
> 
> On Tue, Mar 19, 2013 at 11:40 PM, m...@mikesolomon.org
>  wrote:
>> The main reason that I suggest this is that exceptions in the code base lead 
>> to harder maintenance.
>> I am guilty of adding some from time to time (i.e. in stencil integral) but 
>> I try to get rid of them as fast as possible.
>> One example in the code base that I don't like: check out line 136.
> 
> In which file?  line 136 of self-alignment-interface.cc from master is empty.

separation-item.cc - sorry for the omission.

> 
>> Granted, whoever created it doesn't like it either from the looks of the 
>> comment.
>> It makes the code harder to read, maintain and understand.
>> The worst offender by far is the metronome mark - there are so many 
>> exceptions
>> concerning who its parent is that it leads to actual problems with layout in 
>> certain cases.
> 
> Sure, that's no good at all.
> 
>> I definitely like your idea of coming up with a single function, though.  
>> Perhaps try the following:
>> 
>> -) always decompose axis-groups into elements (recursively if need be)
> 
> What do you mean by axis-groups?  'hims' (a vector of grobs that me
> shoulld be aligned to)?
> 
>> -) create a non_musical flag that, if set, weeds out all grobs where 
>> non-musical is set to #t
> 
> I'm not quite surehow non-musical grobs are related to alignment code.
> Do you mean that this flag would be responsible for "getting rid of
> PaperColumn parent"?
> 

I'll try to propose a patch later today - it's easier to do that than 
explaining with words.

Cheers,
MS


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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-19 Thread m...@mikesolomon.org

On 20 mars 2013, at 03:24, d...@gnu.org wrote:

> On 2013/03/19 22:37:14, wl_gnu.org wrote:
>> >> After some consideration, I consider the name \broken suboptimal
> since
>> >> it implies two pieces.  Two other possibilities would be \detached
> and
>> >> \fake.
>> >
>> > I vote for detached.
> 
>> I vote for \broken.  For me, it doesn't imply two pieces.  This was
>> David's first, quick suggestion, and I think it's good for exactly
>> this reason.
> 
> The first suggestion just picked this off the proposed music event name.
> Here is why I consider \fake or \detached better:
> 
> when I see \broken\< or \broken\!, this does not really help me figure
> out where to use them.  \broken\! actually looks, uh, broken.  How do
> you break an end spanner?
> 
> However, \fake\< or \fake\! immediately make clear that we are talking
> about something still being used in the function of a starting and
> ending spanner, respectively.

Trying to put myself in the shoes of the average user, \fake would not mean a 
function that uses a fake post event, but rather a function that produces a 
\fake something.  I would think "this makes a fake slur", which is not the case.

I like \detached because it describes accurately what is going on - if I were 
reading the manual and saw that \detached ( created a slur detached from 
noteheads, I'd remember the command.  \broken slightly less because we are not 
always breaking something (we are only doing that with \breakSlur).

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-19 Thread m...@mikesolomon.org

On 19 mars 2013, at 23:37, Werner LEMBERG  wrote:

>>> After some consideration, I consider the name \broken suboptimal since
>>> it implies two pieces.  Two other possibilities would be \detached and
>>> \fake.
>> 
>> I vote for detached.
> 
> I vote for \broken.  For me, it doesn't imply two pieces.  This was
> David's first, quick suggestion, and I think it's good for exactly
> this reason.
> 
> 
>Werner

I amend my statement - I should have said that I don't have a preference.  
Anything that people like is fine.

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


Re: reorganize self_alignment_interface (issue 7768043)

2013-03-19 Thread m...@mikesolomon.org
On 19 mars 2013, at 22:04, janek.lilyp...@gmail.com wrote:

> Hi Mike & all,
> 
> On 2013/03/19 15:21:37, MikeSol wrote:
>> I like where you're going with this.
> 
> cool! :)
> 
>> I would recommend creating a function algined_on_grobs that accepts a
> grob, an
>> vector of grobs to align to, and an axis.  Then algined_on_parent
> becomes a
>> subset of this where the vector is of length one and is the parent.
>> Then, you can create a function
>> Self_alignment_interface::lyrics_algined_on_note_columns that invokes
>> aligned_on_grobs with a vector of note columns returned using the
> search method
>> in this function.
> 
> On 2013/03/19 15:28:45, MikeSol wrote:
>> With respect to my last review, this function should accept a pointer
> to a
>> vector of grob pointers:
> 
>> vector &hims
> 
>> so that you can do the note column stuff for lyrics.
> 
> I don't think this (defining special lyrics_algined_on_note_columns
> callback) is optimal approach.
> 
> With your suggestion, here's how i expect alignment stuff would look
> like:
> - there'd be a method Self_alignment_interface::aligned_on_grobs that
> can align a grob on another grob(s)
> - we'd have two callbacks:
>  Self_alignment_interface::lyrics_aligned_on_note_columns
>  and
>  Self_alignment_interface::lyrics_aligned_on_parent_notehead
> - we'd have to decide when which callback should be used.  How should
> LyricText definition in define-grobs.scm look like?  We should use
> lyrics_aligned_on_note_columns when lyrics are unassociated, and
> lyrics_aligned_on_parent_notehead when there is an associatedVoice - how
> to write that in define-grobs?
> 
> And the same thing will be repeated for many other grobs, for example
> DynamicTexts: we'll have to specify different callback for DynamicTexts
> attached to NoteHeads, and different one for standalone Dynamics (e.g.
> in Dynamic Context).
> 
> How alignment stuff would look like with my approach:
> - aligned_on_grobs would be more complicated, because it'd have to grab
> NoteColumn extent if 'him' turns out to be a PaperColumn
> - we'd have one callback for everything
> - we won't have to think about anything when defining grobs.  We'd just
> write X-offset = ly:self-alignment-interface::align-grob, and it would
> be aligned_on_grobs' job to align on appropriate grob if the default one
> (parent) is inappropriate.
> 
> The difference is conceptual: aligning on NoteColumn is an exception, an
> emergency exit needed only when grob doesn't have an ordinary parent.
> As far as i know, if grob's parent is a NoteHead or some other "normal"
> grob, we always want to align on that; and when grob's parent is a
> PaperColumn, we always want to align grob on an appropriate NoteColumn.
> 
> As for using a vector 'hims' instead of single 'him', maybe it's a good
> idea, but i don't see any uses for it (besides your above suggestion,
> which seems to be unnecessary).

The main reason that I suggest this is that exceptions in the code base lead to 
harder maintenance.  I am guilty of adding some from time to time (i.e. in 
stencil integral) but I try to get rid of them as fast as possible.  One 
example in the code base that I don't like: check out line 136.  Granted, 
whoever created it doesn't like it either from the looks of the comment.  It 
makes the code harder to read, maintain and understand.  The worst offender by 
far is the metronome mark - there are so many exceptions concerning who its 
parent is that it leads to actual problems with layout in certain cases.

I definitely like your idea of coming up with a single function, though.  
Perhaps try the following:

-) always decompose axis-groups into elements (recursively if need be)
-) create a non_musical flag that, if set, weeds out all grobs where 
non-musical is set to #t

This may achieve the same effect but it is a lot more general, as the 
distinction is between musical and non-musical rather than between note column 
and everything else.

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-03-19 Thread m...@mikesolomon.org
On 19 mars 2013, at 22:26, d...@gnu.org wrote:

> On 2013/03/19 15:22:41, MikeSol wrote:
>> Two backslashes
> 
> After some consideration, I consider the name \broken suboptimal since
> it implies two pieces.  Two other possibilities would be \detached and
> \fake.
> 
> https://codereview.appspot.com/7424049/

I vote for detached.

Cheers,
MS

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


Re: Creates more possibilities for vertical and horizontal skyline functions. (issue 7516048)

2013-03-19 Thread m...@mikesolomon.org
On 19 mars 2013, at 12:49, janek.lilyp...@gmail.com wrote:

> Mike,
> 
> i've read the patch 3 times and i don't understand how it solves the
> problem.
> 
> I see that you remove some weird c++ code, but why can you do this?
> Also, why marking some grobs as cross-staff helps with solving issue
> 3242, which is about manual beams over rests?
> What figured bass has to do with this at all?
> 
>> Creates more possibilities for vertical and horizontal skyline
> functions.
> 
> I think this sentence applied to first version of the patch; it seems
> unrelated to current patchset.
> 
> I'm sorry to say this, but i think this issue is unreviewable :/

Thanks for the feedback!  I've changed the message on Rietveld to be more in 
line with the current patch - you're right that it's bounced around quite a 
bit.  I've also added a couple comments.

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


Re: Adds Ferneyhough hairpins to LilyPond. (issue 7615043)

2013-03-17 Thread m...@mikesolomon.org

On 17 mars 2013, at 17:46, joseph.wakel...@gmail.com wrote:

> On a related issue: one thing that's probably clear looking at
> Ferneyhough scores is the way in which the vertical placement of hairpin
> endpoints is strongly coupled with the vertical placement of dynamic
> marks.
> 
> I don't think it's really appropriate to bundle all of this together
> into one feature request, but it would probably be useful as a
> complementary feature request to do some re-evaluation of Lilypond's
> vertical placement of hairpin end-points, and whether it's possible to
> automate the placement of angled hairpins so as to optimize the relative
> positions of hairpin start- and endpoints and nearby dynamic marks.
> 
> N.B. this is useful for all music, not just Ferneyhough.  It's a fairly
> consistent bugbear of mine that hairpin start- and endpoints are not
> better placed relative to dynamic marks.
> 
> I think this has already been touched on to an extent in the discussion
> above ... ?
> 
> https://codereview.appspot.com/7615043/

It's more swingable now that skylines are based on stencils for many grobs 
instead of extents.
This is the sorta thing I know how to do but that'd take a while.
If you can open a tracker issue w/ the full request, I'll try to get to it (I 
have some time next week and then again in late April).

Cheers,
MS


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


Re: Adds Ferneyhough hairpins to LilyPond. (issue 7615043)

2013-03-17 Thread m...@mikesolomon.org

On 17 mars 2013, at 17:25, joseph.wakel...@gmail.com wrote:

> 
> 
> Final remark: while it's nice to see Ferneyhough getting namechecked
> might it be worth naming this alteration as flared-hairpin rather than
> ferneyhough-hairpin?

My suggestion was flairpin, which is infinitely cheesier and thus way cooler.

Cheers,
MS

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


Re: Documents make-partial-ellipse-stencil (issue 7497046)

2013-03-17 Thread m...@mikesolomon.org

On 17 mars 2013, at 17:22, m...@hohlart.de wrote:

> Just one nitpick.
> 
> 
> https://codereview.appspot.com/7497046/diff/1/scm/stencil.scm
> File scm/stencil.scm (right):
> 
> https://codereview.appspot.com/7497046/diff/1/scm/stencil.scm#newcode251
> scm/stencil.scm:251: "Makes a list of angle/radius paris at intervals of
> PI/2 for
> s/paris/pairs/
> 

Too much time in France...
Pretty soon I'll be writing sentences like "angle/radius godewaersvelde"


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


Re: Adds Ferneyhough hairpins to LilyPond. (issue 7615043)

2013-03-17 Thread m...@mikesolomon.org
On 17 mars 2013, at 13:36, thomasmorle...@googlemail.com wrote:

> On 2013/03/17 07:27:37, MikeSol wrote:
>> On 2013/03/13 21:38:59, thomasmorley65 wrote:
> 
>> > https://codereview.appspot.com/7615043/diff/23001/scm/output-lib.scm
>> > File scm/output-lib.scm (right):
>> >
>> >
> 
> https://codereview.appspot.com/7615043/diff/23001/scm/output-lib.scm#newcode1061
>> > scm/output-lib.scm:1061: (thick (* thick (layout-line-thickness
> grob)))
>> > At first sight I was surprised about `layout-line-thickness´. Than I
>> remembered,
>> > it is defined in bar-line.scm
>> > How about making it public, moving it to lily-library.scm?
>> > It could be used then in local custom-definitions.
>> > Same with `layout-blot-diameter´.
>> > I know, it's another topic, though, what do you think about it?
> 
>> Great idea!
> 
> I'd have expected _this_ change in another patch.
> At least it should be mentioned in the commit-message.

Will do.

> 
>> >
> 
> https://codereview.appspot.com/7615043/diff/23001/scm/output-lib.scm#newcode1078
>> > scm/output-lib.scm:1078:
>> > What do you think about predefining sth like
>> > ferneyhoughHairpinOn/Off
>> > constanteHairpinOn/Off
>> > in /lyproperty-init.ly?
>> > i.e.
>> > ferneyhoughHairpinOn =
>> > \override Hairpin #'stencil = #ferneyhough-hairpin
> 
>> I'm not against this idea at all - I'd like to see it proposed in a
> different
>> patch set, if possible.  I am teerible at judging UI issues
> because I hack
>> so much.  It is true that shortcuts help, but there are many, many
> overrides
>> that are shortcut-worthy.  I'm not sure what standard determines which
> overrides
>> should get shortcuts and which shouldn't, so I leave that to a future
> (and
>> important!) conversation.
> 
> ok
> 
>> >
> 
> https://codereview.appspot.com/7615043/diff/23001/scm/output-lib.scm#newcode1082
>> > scm/output-lib.scm:1082: (define-public constante-hairpin
>> > I'm not happy with constante-hairpin.
> [...]
> 
>> The constante indication means that the dynamic should not change at
> all, so the
>> decision to use a hairpin that grows in a given direction is
> admittedly a hack.
>> The idea of dimMolto (or crescMolto) with constante is a contradiction
> (get very
>> quiet while not changing dynamic).
> 
> Yep.
> And this contradiction _is_ disturbing.

Agreed.

> 
>> Insofar as a hairpin represents a change in
>> dynamics, constante should, in theory, be a different grob.  My
> solution is not
>> ideal, but I think it is an OK middle-ground short of the creation of
> a separate
>> grob.  If people think it is too hackish, I will propose a new patch
> with a
>> Constante grob (or make the hairpin grow-direction = #CENTER default
> to
>> constante, which'd be difficult but doable).
> 
> For now I'd tend to let it as it stands.
> Nevertheless, it _is_ hackish and I think it should be replaced by one
> of your proposals later.

Agreed.

> 
> 
> Though, how about:
> 
>> Is it possible to make the hook-direction depending on the position of
> the
>> Hairpin i.e below or above the staff?
> ?
> 
> 

You'd have to have a wrapper function with a call to ly:scale-stencil with a -1 
to the Y axis based on the direction of the grob.
This is doable, but I'd wait to see from someone who knows how these things 
work if this is actually how they are printed.
I want to say that they are always printed with the line going up irrespective 
of the side of the staff, but I could be wrong.

Thanks for the review!

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


Re: alignment of unattached lyrics - opinions needed

2013-03-17 Thread m...@mikesolomon.org
On 17 mars 2013, at 12:29, Neil Puttock  wrote:

> 
> On Mar 17, 2013 11:10 AM, "m...@mikesolomon.org"  wrote:
> 
> > In the stop_translation_timestep method of the lyric engraver, lyrics are 
> > given note heads as parents.  Could you send a minimal where the lyrics are 
> > unassociated from note-heads?
> 
> \lyrics { do re mi }
> 
> If there's no associated voice the lyrics have no parent until the 
> Paper_column_engraver steps in.
> 
> Cheers,
> Neil
> 
Cool cool - thanks!
Then, going back to Janek's question, Janek - what would an appropriate 
note-column be?  If there are several, how do we know from user input which one 
the lyric should align to?

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


Re: alignment of unattached lyrics - opinions needed

2013-03-17 Thread m...@mikesolomon.org
On 17 mars 2013, at 11:05, Janek Warchoł  wrote:

> Hi,
> 
> On Sat, Mar 16, 2013 at 12:20 PM, David Kastrup  wrote:
>> Do we
>> really need a particular associated voice instead of being able to do
>> this with general music column alignment?
> 
> I'll write a full answer later today, but for now i can say that i
> don't know a way to do this.
> Let's say i have an unassociated LyricText grob.  It's parent is a
> PaperColumn.  Do you know how to grab an appropriate NoteColumn (if it
> exists)?
> (see self-alignment-interface.cc, line 134.  How to get a NoteColumn
> when all we have is 'him'?)
> 

Hey Janek,

Sorry for the lack of review - today is my first day off in a long time!

I saw in one of your patch sets that you use the word "parent" to name a 
function that takes grobs me and him.  If there is no longer a parental 
relationship built into the function, it's worth changing the name of the 
function.

In the stop_translation_timestep method of the lyric engraver, lyrics are given 
note heads as parents.  Could you send a minimal where the lyrics are 
unassociated from note-heads?

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


Re: Allows minimum-length to work for end-of-line spanners. (issue 7453046)

2013-03-17 Thread m...@mikesolomon.org

On 17 mars 2013, at 10:19, d...@gnu.org wrote:

> You don't fix your own work after it has been committed,

This is patently false.  Please do not write e-mails like this to a public list 
that can be read by future employers of mine that want to evaluate my integrity.

> so why would
> you fix inconsistencies afterwards that you felt ok to ignore in the
> first place?  Who is going to fix them?  "the community".  Please try
> acting as a part of "the community" instead of piling work on for "the
> community" that "somebody else (TM)" will at some time solve.
> 

"Please try acting as a part of the community" is insulting.  I fix bugs that 
I've cause and I have fixed numerous bugs that other people (including you) 
have introduced.

The more caustic your e-mails are, the more difficult it is to extract the 
useful parts from them.  Please tone down your language or, if that is too 
difficult, please send me e-mails privately.  Public e-mails of this nature 
will result eventually in my leaving the project.

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


Re: big-picture question regarding Lilypond's capabilities (current and potential)

2013-03-16 Thread m...@mikesolomon.org
On 16 mars 2013, at 17:17, Kieren MacMillan  
wrote:

> Hello all,
> 
> My two-act musical, "Robin Hood: The Legendary Musical Comedy", had a 
> three-week run at Toronto's Hart House Theatre in January. It was quite 
> successful, to the point that several parties have voiced an interest in 
> further developing and producing it.
> 
> In my dream world, people who are interested in producing any of my musicals 
> should be able to say (e.g.) the following:
> 
>1. “I would like PDFs for the full score, vocal score, vocal book, and 
> band parts for piano+bass+percussion."
>2. "I would like ‘Generosity’ transposed down a tone.”
>3. “In the opening number, I would like to cut mm. 101-117, and have mm. 
> 212-213 made into a vamp (i.e., with repeat signs and the word ‘vamp, cont. 
> on vox’ written above).”
> 
> This email is to determine to what degree these are possible now, or might be 
> possible in the future.
> 
> In particular, I'm interested in #3, since it could more seriously impact the 
> way I organize the input code. (For #1 and #2, it's mostly just figuring out 
> and perfecting the infrastructure for on-demand printing — nontrivial, to be 
> sure, but mostly post-input-code.)

I use tags with absolute note entry for this sorta thing all the time.

One thing that is relatively easy to do is to create code formatting tools that 
will parse .ly code and spit out, for example, one measure per line (for simple 
music) that are all tagged via some sorta system. Then, a music function can 
generate keepWithTag and removeWithTag stuff based on the bars you want.

In general, in the realm of code beautifying and formatting, there are lots of 
3rd party tools that can be developed around LilyPond. The less out-there the 
music, the easier it is to apply these and augment the music's plasticity.

Cheers,
MS

> 
> Given the current (v2.17) capabilities of Lilypond, what are the various ways 
> I could accomplish #3?
> What's likely the "best" way?
> Are functions like \partCombine, \extractMusic, etc. up to the task(s)?
> 
> Thanks,
> Kieren.
> ___
> lilypond-devel mailing list
> lilypond-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-devel

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


Re: Creates more possibilities for vertical and horizontal skyline functions. (issue 7516048)

2013-03-16 Thread m...@mikesolomon.org
On 16 mars 2013, at 04:26, k-ohara5...@oco.net wrote:

> good enough
> 
> 
> https://codereview.appspot.com/7516048/diff/1/scm/define-grobs.scm
> File scm/define-grobs.scm (right):
> 
> https://codereview.appspot.com/7516048/diff/1/scm/define-grobs.scm#newcode312
> scm/define-grobs.scm:312: (vertical-skylines .
> ,grob::simple-vertical-skylines-from-y-extent)
> I'm confused, because the fall-back for vertical-skylines seems to do
> exactly the same thing for Spanners, and it looks like this is a
> Spanner.
> 

That's only in the pure equivalent.  The unpure function doesn't have this.

> https://codereview.appspot.com/7516048/diff/1/scm/define-grobs.scm#newcode2237
> scm/define-grobs.scm:2237: (horizontal-skylines .
> ,grob::simple-horizontal-skylines-from-x-extent)
> The fall-back would be the same if this Grob were marked cross-staff =
> #t   Would it be more smarter to mark this and similar grobs cross-staff
> ?

Running regtests.

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


Re: Gives invisible stems point extents. (issue 7762049)

2013-03-14 Thread m...@mikesolomon.org
On 14 mars 2013, at 08:05, k-ohara5...@oco.net wrote:

> So then the convention for an extent is
> '(+inf.0 . -inf.0) is empty, but for skylines in the cross direction it
> is an infinite wall;
> '(0 . 0) is a point, but ignored for skylines;
> '(-inf.0 . +inf.0) is an infinite wall all the time.
> 
> Could you filter out this effect on RhythmicStaves ?
> 
> My heavy-metal band uses a flame-shaped glyph for some Stems, and it
> needed zero X-extent for some spacing reason.  While fixing another MIDI
> bug I had the Midi_performer listen for Stems and send a message, if on
> channel 10, when it sees a zero-width Stem, by convention.  That message
> fires the flamethrowers, so if you push this change I have to remind the
> boys to avoid that part of the stage in case the drummer has any beamed
> rests.
> 
> https://codereview.appspot.com/7762049/

New patch up that doesn't get in the way of your band!

Cheers,
MS

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


Re: Uses single algorithm for side-position spacing. (issue 6827072)

2013-03-14 Thread m...@mikesolomon.org

On 14 mars 2013, at 06:44, m...@mikesolomon.org wrote:

> 
> On 14 mars 2013, at 06:42, k-ohara5...@oco.net wrote:
> 
>> issue 3242
>> 
>> 
>> https://codereview.appspot.com/6827072/diff/38003/lily/axis-group-interface.cc
>> File lily/axis-group-interface.cc (right):
>> 
>> https://codereview.appspot.com/6827072/diff/38003/lily/axis-group-interface.cc#newcode902
>> lily/axis-group-interface.cc:902: Skyline_pair skylines
>> (inside_staff_skylines);
>> \relative c'' {
>> r2^\f r4 f8^[ r]
>> }
>> 
>> https://codereview.appspot.com/6827072/diff/38003/lily/stencil-integral.cc
>> File lily/stencil-integral.cc (right):
>> 
>> https://codereview.appspot.com/6827072/diff/38003/lily/stencil-integral.cc#newcode992
>> lily/stencil-integral.cc:992: xex.set_full ();
>> Oops.
>> 
>> https://codereview.appspot.com/6827072/
> 
> Yup, just caught this myself, we're on the same page.
> This set_full needs to happen for other grobs, but by giving invisible stems 
> a point stencil instead of an empty stencil, things are fixed.  Running the 
> regtests.
> 
> Cheers,
> MS

Another solution is to introduce the idea of "blocking grob."  The comment I 
put about SystemStartBracket and BassFigureAlignmentPositioning is because both 
of them conceptually need to extend forever in both directions to never be 
moved over/under/left/right of another grob.  This could perhaps be done via 
two properties:

horizontal-skyline-minimum-height

and

vertical-skyline-minimum-height

Thoughts?

Cheers,
MS


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


Re: Uses single algorithm for side-position spacing. (issue 6827072)

2013-03-13 Thread m...@mikesolomon.org

On 14 mars 2013, at 06:42, k-ohara5...@oco.net wrote:

> issue 3242
> 
> 
> https://codereview.appspot.com/6827072/diff/38003/lily/axis-group-interface.cc
> File lily/axis-group-interface.cc (right):
> 
> https://codereview.appspot.com/6827072/diff/38003/lily/axis-group-interface.cc#newcode902
> lily/axis-group-interface.cc:902: Skyline_pair skylines
> (inside_staff_skylines);
> \relative c'' {
>  r2^\f r4 f8^[ r]
> }
> 
> https://codereview.appspot.com/6827072/diff/38003/lily/stencil-integral.cc
> File lily/stencil-integral.cc (right):
> 
> https://codereview.appspot.com/6827072/diff/38003/lily/stencil-integral.cc#newcode992
> lily/stencil-integral.cc:992: xex.set_full ();
> Oops.
> 
> https://codereview.appspot.com/6827072/

Yup, just caught this myself, we're on the same page.
This set_full needs to happen for other grobs, but by giving invisible stems a 
point stencil instead of an empty stencil, things are fixed.  Running the 
regtests.

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


Re: convert-ly rule

2013-03-13 Thread m...@mikesolomon.org
On 13 mars 2013, at 11:56, David Kastrup  wrote:

> "m...@mikesolomon.org"  writes:
> 
>> On 13 mars 2013, at 11:00, David Kastrup  wrote:
>> 
>>> It might also be possible to let a callback check for the existing
>>> grob interfaces in possible cases of contention and only use the
>>> respective value if the grob had the proper interface.
>>> 
>>> So you'd have a callback that only looked at staff-padding in the
>>> tuplet-bracking-interface manner if the grob had that interface, and
>>> would look at it in the side-position-interface manner only if the
>>> grob had _that_ interface.
>>> 
>>> That would require giving grobs a set of interfaces that interpret
>>> any given property only in one manner.
>> 
>> Then that would mean that the tuplet bracket could never use side
>> position interface and vice versa.
> 
> Yes.  The set of interfaces is not user-changeable as far as I know.  So
> this would hamper the system programmers regarding the possible
> interface choices rather than the users.
> 
> Not fabulous, but I have a hard time at the current point of time coming
> up with something that does not either have significant naming
> redundancy and awkwardness, or is lacking flexibility.  At least when it
> is supposed to fit more or less with the current scheme of things.

Makes sense.

In my work with eliminating the translate_axis call, then, I'd need to create 
an:

outside-staff-interface

For all grobs that can be positioned outside the staff.  That way TupletBracket 
could be part of this without having bleedover from the 
side-position-interface's use of staff-padding.  It'd require adding a new 
interface to a lot of grobs, but it actually adds a lot of clarity, as in the 
documentation we can indicate that the internals reference shows all grobs that 
can be outside-staff positioned via this interface.

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


Re: convert-ly rule

2013-03-13 Thread m...@mikesolomon.org
On 13 mars 2013, at 11:00, David Kastrup  wrote:

> "m...@mikesolomon.org"  writes:
> 
>> Hey all,
>> 
>> I'm not too good at writing convert-ly rules.  Is there a model I can
>> use for replacing a property with another?  Specifically, I'd like to
>> write a patch changing:
>> 
>> TupletBracket.staff-padding
>> 
>> to:
>> 
>> TupletBracket.bracket-staff-padding
>> 
>> as one cannot currently use the side position interface callbacks on
>> TupletBrackets because staff-padding in the tuplet-bracket-interface
>> works differently than staff-padding in the side-position-interface.
>> 
>> Lemme know if anyone has a good solution.  Otherwise I'll hack away...
> 
> I am not happy about name proliferation.

Me neither.

> On the other hand, I don't
> know how something like
> 
> TupletBracket.tuplet-bracket-interface.staff-padding
> 
> could sensibly be implemented

Instead of using dots, you use another symbol like @. Then, the symbol is 
parsed into the before and after @. If there is no before, the property applies 
to all interfaces implementing after.

> and it would be pretty much impossible to
> know reliably when and when not a further qualification would be
> required to keep all callbacks properly informed.

It's true that this is a mess for override and revert...

> 
> It might also be possible to let a callback check for the existing grob
> interfaces in possible cases of contention and only use the respective
> value if the grob had the proper interface.
> 
> So you'd have a callback that only looked at staff-padding in the
> tuplet-bracking-interface manner if the grob had that interface, and
> would look at it in the side-position-interface manner only if the grob
> had _that_ interface.
> 
> That would require giving grobs a set of interfaces that interpret any
> given property only in one manner.

Then that would mean that the tuplet bracket could never use side position 
interface and vice versa.

> 
> That would work without convert-ly rules and a larger namespace set.  It
> would also mean that you would look at the interfaces of a grob in the
> documentation to decide which values were supported.  That there are
> some callbacks able to interpret the _same_ property differently
> depending on the interfaces of a given grob, in contrast, is an
> implementation detail buried deep enough to probably not appear
> disturbing to a user.
> 

This is the current state of things minus the verification step.
We are admittedly only talking about the world of overrides for now, but it 
seems that certain kludges exist in the code base to work around this problem 
(like for minimum-length). There are also documentation bugs, as these 
properties do multiple things but only have doc strings for a single case. In 
terms of extensibility, we should have a way to deal with the creation of new 
properties and the managing of old ones to avoid this sorta problem.

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

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


Re: convert-ly rule

2013-03-13 Thread m...@mikesolomon.org
On 13 mars 2013, at 10:51, David Kastrup  wrote:

> "m...@mikesolomon.org"  writes:
> 
>> Hey all,
>> 
>> I'm not too good at writing convert-ly rules.  Is there a model I can
>> use for replacing a property with another?  Specifically, I'd like to
>> write a patch changing:
>> 
>> TupletBracket.staff-padding
>> 
>> to:
>> 
>> TupletBracket.bracket-staff-padding
>> 
>> as one cannot currently use the side position interface callbacks on
>> TupletBrackets because staff-padding in the tuplet-bracket-interface
>> works differently than staff-padding in the side-position-interface.
> 
> Is bracket-staff-padding a smart name?  We also have OttavaBracket,
> VoltaBracket, PianoPedalBracket, ArpeggioBracket, BassFigureBracket,
> LigatureBracket, HorizontalBracket, SystemStartBracket...  This sounds
> like a recipe for the next naming collision.
> 
> Maybe tuplet-staff-padding instead?  What is it being used for?
> 

It's being used for ligature bracket and tuplet bracket.

I don't mind tuplet-bracket-staff-padding, but that is counterintuitive for 
ligature brackets...

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

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


convert-ly rule

2013-03-13 Thread m...@mikesolomon.org
Hey all,

I'm not too good at writing convert-ly rules.  Is there a model I can use for 
replacing a property with another?  Specifically, I'd like to write a patch 
changing:

TupletBracket.staff-padding

to:

TupletBracket.bracket-staff-padding

as one cannot currently use the side position interface callbacks on 
TupletBrackets because staff-padding in the tuplet-bracket-interface works 
differently than staff-padding in the side-position-interface.

Lemme know if anyone has a good solution.  Otherwise I'll hack away...

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


Re: Standardizes use of empty extents in pure heights and skylines. (issue 7310075)

2013-03-13 Thread m...@mikesolomon.org
On 12 mars 2013, at 23:44, janek.lilyp...@gmail.com wrote:

> Hi Mike,
> 
> i've read changes in code and i don't quite get what this change is for.
> What makes it possible that we can now accept boxes that are narrower
> than epsilon?  What can we achieve with that and why?
> 
> I'm sorry for asking such boring questions, but this is one of your
> smallest patches and therefore i'd like to actually understand what you
> are doing here - with your regular changes it's way too difficult for me
> ;)
> 
> cheers,
> Janek
> 
> https://codereview.appspot.com/7310075/

Good question!

Imagine that there is a notehead with a width smaller than epsilon.  We'd like 
to use it to position elements, but if skylines throw away anything with a 
width less than epsilon, the note head will not be part of the skyline and 
things will be positioned on top of it.

The concern before was a comment about numerical inaccuracy, but after having 
tested the patch, this seems not to be an issue.

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


Re: Adds Ferneyhough hairpins to LilyPond. (issue 7615043)

2013-03-13 Thread m...@mikesolomon.org
On 13 mars 2013, at 00:02, janek.lilyp...@gmail.com wrote:

> Nice hairpins!
> 
> Janek
> 
> 
> https://codereview.appspot.com/7615043/diff/23001/input/regression/ferneyhough-hairpins.ly
> File input/regression/ferneyhough-hairpins.ly (right):
> 
> https://codereview.appspot.com/7615043/diff/23001/input/regression/ferneyhough-hairpins.ly#newcode4
> input/regression/ferneyhough-hairpins.ly:4: texidoc = "LilyPond creates
> hairpins found in Ferneyhough scores.
> Please be more specific - a user might not know what Ferneyhough scores
> look like.
> For example, add "There are two variants of Ferneyhough hairpins: one is
> horizontal for its whole length with short vertical line at the end that
> is louder, and another one is similar to ordinary hairpin except that
> its width doesn't change evenly - it's narrower with a wide opening at
> the end"
> 

(ccing Trevor) Obviously I want the name that is the most appropriate for the 
object.  Trevor, having suggested it, may know what it is called in 
Anglo-American contemporary music circles (I like "flairpin" :)

Once we decide on a name, I'll add this to the texidoc.

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


Re: Adds Ferneyhough hairpins to LilyPond. (issue 7615043)

2013-03-11 Thread m...@mikesolomon.org
On 12 mars 2013, at 00:38, thomasmorle...@googlemail.com wrote:

> Hi Mike,
> 
> sorry to have some more nit-picks.
> 
> 
> https://codereview.appspot.com/7615043/diff/15001/scm/output-lib.scm
> File scm/output-lib.scm (right):
> 
> https://codereview.appspot.com/7615043/diff/15001/scm/output-lib.scm#newcode1051
> scm/output-lib.scm:1051: 0.1
> Hard-coded thickness.
> Why not multiply 'thickness-property from Hairpin and 'line-thickness as
> usual?

Good call!

> 
> https://codereview.appspot.com/7615043/diff/15001/scm/output-lib.scm#newcode1052
> scm/output-lib.scm:1052: 1.0
> I'd do the scaling here.
> ly:stencil-scale would be superfluous than.

I'll try it out.

> 
> https://codereview.appspot.com/7615043/diff/15001/scm/output-lib.scm#newcode1077
> scm/output-lib.scm:1077: (cons xtrans ytrans)))
> I'm not sure ytrans is needed.
> Setting it 0 seems to make no difference.
> Delete and use ly:stencil-translate-axis?

I'm not sure if it makes a difference either. The idea is that, conceptually, 
we want the stencil to have the same translation as the original (which is 
always 0 for now). If that changes in the hairpin print function, we want that 
to change in this function as well.

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


Re: Freezing for 2.18

2013-03-11 Thread m...@mikesolomon.org
On 11 mars 2013, at 16:32, "Trevor Daniels"  wrote:

> 
> David Kastrup wrote Sunday, March 10, 2013 5:32 PM
> 
>> 2.16 is growing old.
>> 
>> So I want to see 2.18 soon.  That means we need to stabilize work that
>> has already been done and cut down on experiments in the master branch.
> 
> Agreed.
> 
>> Stabilizing means more or less accepting the current feature set, and
>> making sure it works as intended, is a useful combination of things,
>> does not offer interfaces which are sure not to survive into the next
>> stable version, and most of all, is properly documented to the user.
> 
> Once the decision to stabilise is taken, further work on new features
> should take place in branches.  It doesn't have to stop.  That's how the 
> skyline code was developed before it was merged into 2.17 and that 
> procedure worked well.
> 
>> At any rate, I'd like to aim for 2.18 at about the end of May, and
>> getting into serious freeze at the end of April.  A focus on bug fixes,
>> in particular bugs introduced in the 2.17 development cycle, should take
>> priority.  Fixing long-standing bugs hard to address should likely be
>> left for early 2.19 and/or be done in a branch.
> 
> Why not freeze sooner?  The current state is sufficiently different from
> 2.16 to justify a new stable.
> 
> I'd also like to propose we adopt the same controls as we did for 2.16,
> if David is willing, since that also worked well.  That way we'll get a
> clear plan - what must be fixed, what must be documented, what is
> permitted to go into master, etc.  Otherwise we'll simply disagree for
> ever.
> 

I like the idea of freezing right away and releasing after two weeks of 
critical-bug-free lily. What is difficult for me is setting the freeze down the 
line without being able to wrap up work first.

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


Re: Freezing for 2.18

2013-03-11 Thread m...@mikesolomon.org
On 10 mars 2013, at 22:30, David Kastrup  wrote:

> Werner LEMBERG  writes:
> 
>>> So, to resume, I agree that a freeze is important.  When the freeze
>>> kicks in, I'd rather that we say something like "no new big projects
>>> starting on date X will be part of 2.18" so that developers can plan
>>> out their next few months accordingly.
>> 
>> +1
> 
> Actually, "no projects without a serious chance to get finished and
> debugged until date X" is a more important metric.  Take a look at the
> "full" \relative proposal: it is a biggy touching several thousands of
> lines.  But consequences are clear to estimate and shake out, so the
> decision to do this kind of big thing can be done quite late in the
> game.  Because the fallout is quite clear and limited.
> 
> The starting date is much less important than a realistic view of the
> wrapup date.
> 


I think it is important for everyone in the community of developers to tie off 
things that they feel to be important before putting out a stable release.  We 
should feel out where everyone is with their work, life plans and when/where a 
gel in adding things could fit into these things.  If LilyPond were a piece of 
commercial software I could understand one person imposing a limit, but as it 
is a team of peers working together, I think that everyone should set a limit 
that makes sense for them, announce it, and stick to it.  This may push a 
stable release date back some, but I'd rather there be a later stable release 
that every volunteer developer feels good about than an earlier one.

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


Re: Freezing for 2.18

2013-03-10 Thread m...@mikesolomon.org
On 10 mars 2013, at 18:32, David Kastrup  wrote:

> 
> Ok folks, it is this time of the year again: I am trying to make myself
> unpopular.

There's a time of the year for that?

> It also means that commits of the "this really does nothing, but it
> prepares the ground for $xxx, and I don't know just where this is going,
> so quite a bit of it might be changed into something different yet"
> should happen in a branch.  Actually, I am of the opinion that most of
> these changes should happen in a branch anyway.  A "commit" implies
> commitment, and if one has taken a bad path, redoing it is much harder
> if the dead end has already ended in the main code base.

As the world champion of this style of coding, I can conclusively say that I 
have no problem freezing all my experiments except the large translate_axis 
call patch, as I am sure that I know where its going and I almost have it 
wrapped up after many rounds of revision and review.

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


Re: Adds Ferneyhough hairpins to LilyPond. (issue 7615043)

2013-03-09 Thread m...@mikesolomon.org
On 10 mars 2013, at 01:47, thomasmorle...@googlemail.com wrote:

> Hi Mike,
> 
> decrescendo doesn't work!!

Yikes!  Will fix.  Thanks for spotting this.

> 
> My idea about "drag-hairpin" seems not too hard to implement, ofcourse
> there would be need to do a clean definition of the property, currently
> LilyPond returns a unsurprisingly warning:

I see what you're saying, but this is a more general issue about Hairpin 
rotation and non-linear DynamicLineSpanners that should be addressed 
conceptually as a separate issue.  However, it is an excellent idea and I'd be 
happy to work on it at some point later down the line.

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


Re: Allows minimum-length to work for end-of-line spanners. (issue 7453046)

2013-03-09 Thread m...@mikesolomon.org

On 9 mars 2013, at 09:51, d...@gnu.org wrote:

> On 2013/03/09 07:18:50, mike7 wrote:
>> On 8 mars 2013, at 14:10, mailto:d...@gnu.org wrote:
> 
>> >
>> >
> 
> https://codereview.appspot.com/7453046/diff/1/input/regression/minimum-length-end-line.ly
>> > File input/regression/minimum-length-end-line.ly (right):
>> >
>> >
> 
> https://codereview.appspot.com/7453046/diff/1/input/regression/minimum-length-end-line.ly#newcode10
>> > input/regression/minimum-length-end-line.ly:10: \override
>> > TextSpanner.springs-and-rods = #ly:spanner::set-spacing-rods
>> > Why is this override needed for the regtest?  The other overrides
> are
>> > obvious user-accessible overrides for triggering the tested
>> > functionality.
>> >
>> > But should _this_ override not be the default?
>> >
>> > https://codereview.appspot.com/7453046/
> 
>> Perhaps open a tracker issue for this?
>> The question is not only valid for text spanners but also hairpins,
> glissandos,
>> etc.
> 
> Last time I looked, this issue purportedly "Allows minimum-length to
> work for end-of-line spanners."  And according to the regtest, it does
> not do the job.  Without additional messing with springs-and-rods it
> does not allow minimum-length to work for end-of-line-spanners.
> 

The definition of "allow" in the New Oxford American Dictionary is "give the 
necessary time or opportunity for."  This patch gives spanners the opportunity 
to have minimum length work at the end of the line.

Additional messing with springs and rods is because minimum-length is currently 
implemented by four different interfaces (lyric-hyphen, multi-measure-rest, 
ottava-bracket and spanner) and is also looked up in lyric-extender in a way 
that does not correspond to its docstring.  So, certain uses of minimum length 
require the additional override whereas others don't.  I do not think this is 
ideal, which is why I proposed a few weeks ago standardizing property names 
across interfaces.  It seems like the issues you are raising above and below 
have less to do with this patch and more to do with the multiple implementation 
of minimum-length and the use of the springs-and-rods property.

> The only thing more frustrating than missing functionality is
> purportedly available functionality that needs non-user-comprehensible
> trickery to actually work.

I do not have a problem with the current need to set the springs-and-rods 
separately.
If you do, please file an issue then to fix this as well as the following 
snippets in the Documentation:
-) 
http://lilypond.org/doc/v2.17/Documentation/notation/expressive-marks-as-lines#index-glissando-1
-) http://lilypond.org/doc/v2.17/Documentation/notation/spanners.html, 
specifically "For some layout objects, the minimum-length property becomes 
effective only if the set-spacing-rodsprocedure is called explicitly. To do 
this, the springs-and-rods property should be set to 
ly:spanner::set-spacing-rods. For example, the minimum length of a glissando 
has no effect unless the springs-and-rodsproperty is set."


> So it is not clear that using this functionality would not
> break other things elsewhere.
> 

I'm positive it would because of the way that minimum-length is multiply 
defined.  That is why this patch is intended for the "some layout objects" 
discussed above like the TextSpanner.

I agree that the multiple use of the minimum-length property should be changed, 
but this seems like the business of another patch.

If the regtest is bothering you that much, I can just eliminate it from this 
patch.  It won't change the better functionality of this patch and will just 
stop shedding light on the issue I'm discussing above.  But that does not seem 
like a good solution, nor does setting springs-and-rods with a default property.

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


Re: Allows minimum-length to work for end-of-line spanners. (issue 7453046)

2013-03-08 Thread m...@mikesolomon.org
On 8 mars 2013, at 14:10, d...@gnu.org wrote:

> 
> https://codereview.appspot.com/7453046/diff/1/input/regression/minimum-length-end-line.ly
> File input/regression/minimum-length-end-line.ly (right):
> 
> https://codereview.appspot.com/7453046/diff/1/input/regression/minimum-length-end-line.ly#newcode10
> input/regression/minimum-length-end-line.ly:10: \override
> TextSpanner.springs-and-rods = #ly:spanner::set-spacing-rods
> Why is this override needed for the regtest?  The other overrides are
> obvious user-accessible overrides for triggering the tested
> functionality.
> 
> But should _this_ override not be the default?
> 
> https://codereview.appspot.com/7453046/

Perhaps open a tracker issue for this?
The question is not only valid for text spanners but also hairpins, glissandos, 
etc.

Cheers,
MS


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


Re: Adds Ferneyhough hairpins to LilyPond. (issue 7615043)

2013-03-08 Thread m...@mikesolomon.org

On 9 mars 2013, at 00:15, thomasmorle...@googlemail.com wrote:

> Hi Mike,
> 
> one thought.
> 
> The image Trevor Bača posted
> http://lists.gnu.org/archive/html/lilypond-user/2013-03/pngIGBdggySyh.png
> shows that the left ends of a decrecsendo-hairpin are vertical aligned
> even if the hairpin isn't extended horizontal but ascending.
> Currently the vertical alignment is gone if the hairpin is rotated, and,
> afaik, this is the only way an ascending hairpin is available (apart
> from constructing a new one from scratch).
> 
> (Similiar for cresc-hairpins.)
> 
> Is it possible to extend your code to achieve this?
> Might be an interesting feature for common hairpins as well.
> 
> Since I don't know of I explained myself well enough, here some
> markup-code which mimics it:
> 
> #(define drag-hairpin 5) % try different values
> 
> \markup
>  \postscript
>  #(string-append
>  "
>0 1.5 moveto
>0.5 -0.75 rlineto
>15
>"
>(number->string (+ -0.75 drag-hairpin))
>"
>rlineto
> 
>0 -1.5 moveto
>0.5 0.75 rlineto
>15
>"
>(number->string (+ 0.75 drag-hairpin))
>"
>rlineto
>stroke
> 
>% a red line to show vertical alignment:
> 
>gsave
>0 3 moveto
>1 0 0 setrgbcolor
>0 -6 rlineto
>stroke
>grestore
>   ")
> 
> 
> 
> 
> 
> 
> https://codereview.appspot.com/7615043/

 Hey Harm,

I think it's worth adding an issue to the tracker for this. You can make a 
minimal example with the hairpins in current master.

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


Re: Change name of Patch Handler to Patch Meister in CG (issue 7498045)

2013-03-06 Thread m...@mikesolomon.org
On 6 mars 2013, at 10:13, d...@gnu.org wrote:

> It's a mystery to me how anybody could interpret this text in any other
> manner, but there is no point in being less clear than possible, so
> LGTM.
> 
> https://codereview.appspot.com/7498045/


A "handler" handles things, i.e. is the person who physically handles 
something.  In UPS, if I talk about my "package handler", it is the person who 
is taking my package from point A to Z.  They put their "hand" on something, 
thus handle.

The patch mesiter does everything but handling when doing work like setting 
tags from new to review to countdown.

It is a misleading name that should be changed.  I thought I was the patch 
handler when reading that document because I am the one handling my patch.

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


Re: Cannot Merge Staging this mornining

2013-03-02 Thread m...@mikesolomon.org
On 2 mars 2013, at 10:28, David Kastrup  wrote:

> "m...@mikesolomon.org"  writes:
> 
>> On 2 mars 2013, at 10:16, David Kastrup  wrote:
>> 
>>> James  writes:
>>> 
>>>> From: James 
>>>> Subject: Cannot Merge Staging this mornining
>>>> Newsgroups: gmane.comp.gnu.lilypond.devel
>>>> To: Devel 
>>>> Date: Sat, 2 Mar 2013 09:02:37 + (4 minutes, 27 seconds ago)
>>>> 
>>>> Fails on Make.
>>>> 
>>>> Only one commit in staging
>>>> 
>>>> http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=commit;h=2ae751cb5169165c23e3b1a9a2da2182ef8c78ba
>>>> 
>>>> ---
>>>> 
>>>> Avoids measuring distances between empty and non-empty skylines
>>>> staging
>>> 
>>> Removed from staging.  See
>>> http://code.google.com/p/lilypond/issues/detail?id=3169#c12>
>>> 
>> 
>> Found the problem - I forgot to add skyline.scm in the commit.
> 
> How can you even do that when using git and git cl for reviews and
> Rietveld had it on display?

I make a diff off of my branch and then I do
git apply mydiff.diff
instead of merging.  This way I don't include the entire commit history of my 
local branch into LilyPond.  But it means that I need to manually add all new 
files.

Cheers,
MS


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


Re: Cannot Merge Staging this mornining

2013-03-02 Thread m...@mikesolomon.org
On 2 mars 2013, at 10:16, David Kastrup  wrote:

> James  writes:
> 
>> From: James 
>> Subject: Cannot Merge Staging this mornining
>> Newsgroups: gmane.comp.gnu.lilypond.devel
>> To: Devel 
>> Date: Sat, 2 Mar 2013 09:02:37 + (4 minutes, 27 seconds ago)
>> 
>> Fails on Make.
>> 
>> Only one commit in staging
>> 
>> http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=commit;h=2ae751cb5169165c23e3b1a9a2da2182ef8c78ba
>> 
>> ---
>> 
>> Avoids measuring distances between empty and non-empty skylines
>> staging
> 
> Removed from staging.  See
> http://code.google.com/p/lilypond/issues/detail?id=3169#c12>
> 

Found the problem - I forgot to add skyline.scm in the commit.  Thanks for 
removing.  I'll add with the file added.

Cheers,
MS


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


Re: Alternative pixel-based regtest checker

2013-03-02 Thread m...@mikesolomon.org

On 1 mars 2013, at 22:33, David Kastrup  wrote:

> "Phil Holmes"  writes:
> 
>> There's lots of improvements that could be made: parallelism, using
>> something other than diff, but it basically works.
>> 
>> Thoughts?
> 
> CMP(1)   User Commands  CMP(1)
> 
> NAME
>   cmp - compare two files byte by byte
> 
> SYNOPSIS
>   cmp [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]
> 
> DESCRIPTION
>   Compare two files byte by byte.
> 
> -- 
> David Kastrup

As LilyPond is non deterministic, it does not draw stencils to the page in the 
same order every time, which means (I think) that the same input can generate 
two different PNG files.  So, a bytewise comparison may trigger false positives.

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


Re: Alternative pixel-based regtest checker

2013-03-01 Thread m...@mikesolomon.org

On 1 mars 2013, at 20:15, Phil Holmes  wrote:

> 4 files attached.  To try this out: create a new directory and place 
> NoTagline.ly in it.  Create a subdirectory called input and put some regtest 
> files in there.  Run MakeOldPix.sh.  Make a change to lilypond.  Run 
> MakeNewPix.sh.  Run ComparePix.sh.  Om my tests there were some false alarms, 
> but it seems a fairly simple way to make an alternative regtest checker.
> 
> There's lots of improvements that could be made: parallelism, using something 
> other than diff, but it basically works.
> 
> Thoughts?
> 

Cool!

For me, one of the most important things in the regtests are the signature 
files.  We'd have to maintain the red flags popping up from those (which may 
not show up in the images).  But it is true that this sort of approach would 
catch issues like the bar line one.

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


Re: Allows inheritence for slur engravers (issue 7437048)

2013-03-01 Thread m...@mikesolomon.org

On 1 mars 2013, at 17:30, d...@gnu.org wrote:

> On 2013/03/01 14:45:27, mike7 wrote:
> 
>> > "doubleSlurs" is not generic but rather specific.  I'd use something
>> > like
>> > if (double_property_name_ && to_boolean (get_property
>> > (double_property_name_)))
>> > instead, then we can, if desired, have a separate doublePhrasingSlur
>> > property at some point of time.
> 
>> Done.  Had to make the check slightly different:
> 
>>  if ((double_property_name_ != "")
>>   && to_boolean (get_property (double_property_name_.c_str (
> 
> Oh, I'd have made double_property_name_ a const char * const instead
> of a string.  That can be 0, and you don't need to c_str on it.
> 
>> as GCC complains that there is no operator && for the check you're
> suggesting.

I've always avoided using const char * because I never understood how it works 
with memory management.

Given that we are creating a pointer (an array of chars), wouldn't we have to 
delete it in the destructor?  Furthermore, how does GCC know to allocate the 
correct amount of memory for the string?  Wouldn't that change depending on the 
length of the string?

That's probably the sort of thing you learn in a Freshman CS class...sorry for 
the basic question...

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


Re: Allows inheritence for slur engravers (issue 7437048)

2013-03-01 Thread m...@mikesolomon.org
Thanks for the review!

Cheers,
MS

> Thanks for the rebase!
> 
> 
> https://codereview.appspot.com/7437048/diff/1/lily/slur-engraver.cc
> File lily/slur-engraver.cc (right):
> 
> https://codereview.appspot.com/7437048/diff/1/lily/slur-engraver.cc#newcode51
> lily/slur-engraver.cc:51: event_name_ = "slur-event";
> As a matter of style, I'd declare all of those const and initialize them
> in the initializer list, so
> Slur_engraver::Slur_engraver () : grob_name_ ("Slur"), event_name_ ...

Done.

> 
> https://codereview.appspot.com/7437048/diff/1/lily/slur-engraver.cc#newcode64
> lily/slur-engraver.cc:64: context ()->set_property ("slurMelismaBusy", m
> ? SCM_BOOL_T : SCM_BOOL_F);
> Well, we have ly_bool2scm.  Not a fabulous code saver, but as long as we
> have it...

Done.

> 
> https://codereview.appspot.com/7437048/diff/1/lily/slur-engraver.cc#newcode70
> lily/slur-engraver.cc:70: internal_process_music ();
> I'd rather make this function the default behavior of
>   Slur_proto_engraver::process_music
> and make set_melisma a virtual function of Slur_proto_engraver that does
> nothing by default and is overriden by Slur_engraver::set_melisma.

Done.

> 
> https://codereview.appspot.com/7437048/diff/1/lily/slur-proto-engraver.cc
> File lily/slur-proto-engraver.cc (right):
> 
> https://codereview.appspot.com/7437048/diff/1/lily/slur-proto-engraver.cc#newcode119
> lily/slur-proto-engraver.cc:119: slurs_[i]->warning (_ (("unterminated
> "+warning_name_).c_str ()));
> I'd not use warning_name_ but rather something like object_name_.  After
> all, there is no logical connection to warnings.

Done.

> https://codereview.appspot.com/7437048/diff/1/lily/slur-proto-engraver.cc#newcode138
> lily/slur-proto-engraver.cc:138: && make_double_slur_)
> "doubleSlurs" is not generic but rather specific.  I'd use something
> like
> if (double_property_name_ && to_boolean (get_property
> (double_property_name_)))
> instead, then we can, if desired, have a separate doublePhrasingSlur
> property at some point of time.

Done.  Had to make the check slightly different:

 if ((double_property_name_ != "")
  && to_boolean (get_property (double_property_name_.c_str (

as GCC complains that there is no operator && for the check you're suggesting.

> 
> https://codereview.appspot.com/7437048/diff/1/lily/slur-proto-engraver.cc#newcode183
> lily/slur-proto-engraver.cc:183: slur->programming_error ("slur without
> a cause");
> warning_name_ (or, after my proposal, _object_name_) here.
> 

Done.

https://codereview.appspot.com/7437048/

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-02-28 Thread m...@mikesolomon.org

On 28 févr. 2013, at 22:29, Neil Puttock  wrote:

> 
> On Feb 28, 2013 8:37 PM, "m...@mikesolomon.org"  wrote:
> 
> > You're right, but I've opted for the breaking behavior in the most recent 
> > patch-set (\breakSlurHere).  Otherwise, slurs wouldn't be able to span only 
> > one musical moment.
> 
> Ok, so how about using an event of class break-span-event (like 
> \breakDynamicSpan)?
> 
> 

Brilliant!  Done.

> > We miss you!  Come back!
> 
> Thanks. :-)
> 
> I can feel the itch returning, but really need to get a laptop first unless I 
> can commandeer our new iMac when it arrives next month and work out how to do 
> things iOS fashion.
> 
> 

Good deal.  I'm a Mac user but I do all my development in a virtual box to keep 
from messing up my OS.

Looking forward to more of your contributions and reviews!

Cheers,
MS

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


Re: Allows slurs to break at barlines. (issue 7424049)

2013-02-28 Thread m...@mikesolomon.org
On 28 févr. 2013, at 21:30, n.putt...@gmail.com wrote:

> 
> https://codereview.appspot.com/7424049/diff/1/input/regression/repeat-slur.ly
> File input/regression/repeat-slur.ly (right):
> 
> https://codereview.appspot.com/7424049/diff/1/input/regression/repeat-slur.ly#newcode14
> input/regression/repeat-slur.ly:14: \alternative { { a' ) b' \set
> breakSlurAtBarLine = ##t c' ( d' }
> Can't you use 'to-barline for this?
> 
> https://codereview.appspot.com/7424049/
> 


You're right, but I've opted for the breaking behavior in the most recent 
patch-set (\breakSlurHere).  Otherwise, slurs wouldn't be able to span only one 
musical moment.

We miss you!  Come back!

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


Re: Musings on interfaces and properties

2013-02-28 Thread m...@mikesolomon.org

On 28 févr. 2013, at 12:47, David Kastrup  wrote:

> "m...@mikesolomon.org"  writes:
> 
>> On 28 févr. 2013, at 12:40, Werner LEMBERG  wrote:
>> 
>>> 
>>>>> Renaming properties which do something differently is the way to go
>>>>> IMHO.
>>>> 
>>>> Then the first step is finding all properties that are defined in
>>>> multiple interfaces and changing their names.
>>> 
>>> Maybe a naïve question: Are there many?
>>> 
>> 
>> 
>> I'd guess between 10 and 20.
> 
> One can probably boil the set actually causing conflicts down.
> 

Absolutely, but the goal should be to eliminate this sort of thing entirely. 
Conflicts can easily be caused if people use different overrides than the 
habitual ones.

Cheers,
MS


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


Re: Musings on interfaces and properties

2013-02-28 Thread m...@mikesolomon.org
On 28 févr. 2013, at 12:40, Werner LEMBERG  wrote:

> 
>>> Renaming properties which do something differently is the way to go
>>> IMHO.
>> 
>> Then the first step is finding all properties that are defined in
>> multiple interfaces and changing their names.
> 
> Maybe a naïve question: Are there many?
> 


I'd guess between 10 and 20.

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


Re: Musings on interfaces and properties

2013-02-28 Thread m...@mikesolomon.org

On 28 févr. 2013, at 12:16, Werner LEMBERG  wrote:

> 
>> I think that at the current point of time, we should try getting
>> along with a flat namespace approach.  That might imply renaming
>> properties like "padding" to "side-padding" if we can't achieve
>> reasonable results otherwise.  Not sure about that.
> 
> I support that.  Renaming properties which do something differently is
> the way to go IMHO.
> 
> 

Then the first step is finding all properties that are defined in multiple 
interfaces and changing their names.  This'll be one heck of a convert-ly 
rule...

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


Re: Uses only unpure-pure containers to articulate unpure-pure relationships. (issue 7377046)

2013-02-28 Thread m...@mikesolomon.org
On 28 févr. 2013, at 06:48, d...@gnu.org wrote:

> On 2013/02/27 23:00:48, mike7 wrote:
>> On 27 févr. 2013, at 19:06, mailto:d...@gnu.org wrote:
> 
>> >
>> >
> 
> https://codereview.appspot.com/7377046/diff/17001/input/regression/scheme-text-spanner.ly
>> > File input/regression/scheme-text-spanner.ly (right):
>> >
>> >
> 
> https://codereview.appspot.com/7377046/diff/17001/input/regression/scheme-text-spanner.ly#newcode129
>> > input/regression/scheme-text-spanner.ly:129:
>> > side-position-interface::y-aligned-side)
>> > I really don't understand why you ask on the developer list about
>> > gratuitous prefix changes because of a different implementation
> language
>> > when you propose such changes right afterwards.
>> >
> 
>> In my e-mail, I stated:
>> "I'd prefer if all native Scheme functions did not have the ly: prefix
> - it
>> helps to know what things are where."
> 
> So why do you ask when you ignore the answer?
> 
>> side-position-interface::y-aligned-side above is a native Scheme
> function that
>> does not have the ly: prefix.
> 
> You remove the prefix in this patch set.

Sorry, but I still don't understand what you mean.
ly:side-position-interface::y-aligned-side is defined in 
side-position-interface.cc
side-position-interface::y-aligned-side is defined in output-lib.scm
The function defined in C++ has the ly: prefix, whereas the function defined in 
Scheme doesn't.

> 
>> > https://codereview.appspot.com/7377046/diff/17001/lily/grob.cc
>> > File lily/grob.cc (right):
>> >
>> >
> https://codereview.appspot.com/7377046/diff/17001/lily/grob.cc#newcode866
>> > lily/grob.cc:866: if (to_boolean (scm_object_property
>> > (me->get_property_data ("stencil"), ly_symbol2scm ("ly:stencil?"
>> > Where is this object property being set?
> 
>> In define-grobs.scm.
> 
> I've looked very thoroughly without success.  I can't find a setting
> of the ly:stencil? object property in your patch set, and I can't find
> it in the current code base, either.
> 
> Care for a line number?

Ah, OK, I misunderstood your question.
In your reasking it, I now see (a) exactly what you mean; and (b) that I 
screwed up this test.  I fixed the test and posted a new patch set.

Cheers,
MS


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


Re: Uses only unpure-pure containers to articulate unpure-pure relationships. (issue 7377046)

2013-02-27 Thread m...@mikesolomon.org
On 27 févr. 2013, at 19:06, d...@gnu.org wrote:

> 
> https://codereview.appspot.com/7377046/diff/17001/input/regression/scheme-text-spanner.ly
> File input/regression/scheme-text-spanner.ly (right):
> 
> https://codereview.appspot.com/7377046/diff/17001/input/regression/scheme-text-spanner.ly#newcode129
> input/regression/scheme-text-spanner.ly:129:
> side-position-interface::y-aligned-side)
> I really don't understand why you ask on the developer list about
> gratuitous prefix changes because of a different implementation language
> when you propose such changes right afterwards.
> 

In my e-mail, I stated:
"I'd prefer if all native Scheme functions did not have the ly: prefix - it 
helps to know what things are where."
side-position-interface::y-aligned-side above is a native Scheme function that 
does not have the ly: prefix.

> https://codereview.appspot.com/7377046/diff/17001/lily/axis-group-interface.cc
> File lily/axis-group-interface.cc (right):
> 
> https://codereview.appspot.com/7377046/diff/17001/lily/axis-group-interface.cc#newcode261
> lily/axis-group-interface.cc:261: if (!g->is_live ())
> Shouldn't you check for liveness before anything else?

The call to check the cross-staff property above could trigger the suicide.
In general, it is better to access properties first, suicide later.

> 
> https://codereview.appspot.com/7377046/diff/17001/lily/grob-property.cc
> File lily/grob-property.cc (right):
> 
> https://codereview.appspot.com/7377046/diff/17001/lily/grob-property.cc#newcode345
> lily/grob-property.cc:345: if (is_simple_closure (unpure))
> This is not related to this patch and review, but can anybody explain
> why this simple_closure $#!+ can't be replaced by a callable closure
> created using a smob type made callable via scm_set_smob_apply?  Is it
> because of the delayed arg?  Can't we deal with that by using a fluid
> (in Scheme, a parameter) in evaluate_with_simple_closure?  These pseudo
> "simple" closures really make my head ache, and being able to throw all
> of them out would be quite a boon.

Agreed.

> 
> https://codereview.appspot.com/7377046/diff/17001/lily/grob-scheme.cc
> File lily/grob-scheme.cc (right):
> 
> https://codereview.appspot.com/7377046/diff/17001/lily/grob-scheme.cc#newcode454
> lily/grob-scheme.cc:454: SCM_ASSERT_TYPE (ly_is_procedure (proc) ||
> is_unpure_pure_container (proc), proc, SCM_ARG2, __FUNCTION__,
> "procedure or unpure pure container");
> Possibly worth a named type predicate of its own?

Possibly.  Could be in a separate patch.

> 
> https://codereview.appspot.com/7377046/diff/17001/lily/grob.cc
> File lily/grob.cc (right):
> 
> https://codereview.appspot.com/7377046/diff/17001/lily/grob.cc#newcode866
> lily/grob.cc:866: if (to_boolean (scm_object_property
> (me->get_property_data ("stencil"), ly_symbol2scm ("ly:stencil?"
> Where is this object property being set?

In define-grobs.scm.

> 
> https://codereview.appspot.com/7377046/diff/17001/scm/output-lib.scm
> File scm/output-lib.scm (right):
> 
> https://codereview.appspot.com/7377046/diff/17001/scm/output-lib.scm#newcode61
> scm/output-lib.scm:61: (define-public
> (grob::wrap-in-unpure-pure-container fn)
> After issue 3200 passed, this is just ly:make-unpure-pure-container.
> Remove, change all its callers.

Ok. I'll try to remember for this patch set.

> 
> https://codereview.appspot.com/7377046/diff/17001/scm/output-lib.scm#newcode89
> scm/output-lib.scm:89: (define-public
> grob::always-vertical-skylines-from-stencil
> I don't think that these are worth a definition of their own.  Better
> expand them inline.  An unpure-pure container is cheap enough that
> having separate containers for each use is not really a problem.
> 

They reappear several times.  It is a useful heuristic so that if I need to 
change how this works, I only need to change it in one place instead of several.

Thanks for the review!

Cheers,
MS


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


Re: Includes empty skylines in minimum translation calculations (issue 7304068)

2013-02-27 Thread m...@mikesolomon.org

On 27 févr. 2013, at 07:06, k-ohara5...@oco.net wrote:

> Also needs some decruftification.
> 
> 
> https://codereview.appspot.com/7304068/diff/22001/lily/align-interface.cc
> File lily/align-interface.cc (right):
> 
> https://codereview.appspot.com/7304068/diff/22001/lily/align-interface.cc#newcode299
> lily/align-interface.cc:299: vector non_empty_elems;
> The disassembly and reassembly of the array is ridiculous, but with the
> comment at least people will not be confused, merely laugh.
> 
> https://codereview.appspot.com/7304068/diff/22001/scm/define-grobs.scm
> File scm/define-grobs.scm (right):
> 
> https://codereview.appspot.com/7304068/diff/22001/scm/define-grobs.scm#newcode2031
> scm/define-grobs.scm:2031: (horizon-padding . 100)
> You don't need this anymore, and it will terribly confuse some poor
> songwriter somewhere, if left in.

Removed.

Thanks for the review!

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


Re: Standardizes use of empty extents in pure heights and skylines. (issue 7310075)

2013-02-27 Thread m...@mikesolomon.org

On 27 févr. 2013, at 07:03, k-ohara5...@oco.net wrote:

> Just needs cleanup of some leftover unneeded complications.
> 
> 
> https://codereview.appspot.com/7310075/diff/38001/lily/skyline.cc
> File lily/skyline.cc (right):
> 
> https://codereview.appspot.com/7310075/diff/38001/lily/skyline.cc#newcode488
> lily/skyline.cc:488: will be ignored.
> What do you mean by "they will be ignored"?  On line 501, empty segments
> seem to be reversed, making non-empty segments.
> 

Fixed. Bad copy and paste.

> https://codereview.appspot.com/7310075/diff/38001/ly/engraver-init.ly
> File ly/engraver-init.ly (right):
> 
> https://codereview.appspot.com/7310075/diff/38001/ly/engraver-init.ly#newcode896
> ly/engraver-init.ly:896: \override Clef.Y-extent =
> #grob::all-heights-from-stencil
> Why the \overrride to the same value as its default ?

Fixed.

> 
> https://codereview.appspot.com/7310075/diff/38001/ly/gregorian.ly
> File ly/gregorian.ly (right):
> 
> https://codereview.appspot.com/7310075/diff/38001/ly/gregorian.ly#newcode103
> ly/gregorian.ly:103: \once \override BreathingSign.Y-extent =
> #grob::all-heights-from-stencil
> This is now the default, so no need for overrides.

Fixed.

> 
> https://codereview.appspot.com/7310075/diff/38001/scm/define-grobs.scm
> File scm/define-grobs.scm (right):
> 
> https://codereview.appspot.com/7310075/diff/38001/scm/define-grobs.scm#newcode1825
> scm/define-grobs.scm:1825: (Y-extent .
> ,grob::unpure-empty-pure-point-height)
>   (Y-extent . ,grob::all-heights-from-stencil)
> 
> We do not /want/ to allow outside-staff objects to slide down alongside
> note-heads protruding from the staff, if by doing so they overlap any
> repeat ties that might be there.

I'll take this for a spin...not sure if it'll work but no harm regtesting it.  
My goal was to preserve the original behavior, but if this is better no harm in 
using it. 

> 
> https://codereview.appspot.com/7310075/diff/38001/scm/define-grobs.scm#newcode1992
> scm/define-grobs.scm:1992: ; should preserve the span bar's presence for
> horizontal spacing
> "want this to be ignored" when ?
> Presumably during staff-spacing, but what problem could it cause if not
> ignored ?
> 

It will be part of the skyline, potentially blocking things that shouldn't be 
blocked.

> If staves would otherwise move away trying to make room for it, the
> SpanBar avoids this using cross-staff = ##t

The SpanBar has no height, so it is never taken into account in spacing.

> 
> https://codereview.appspot.com/7310075/diff/38001/scm/define-grobs.scm#newcode1993
> scm/define-grobs.scm:1993: (Y-extent .
> ,grob::unpure-empty-pure-point-height)
> (Y-extent . (0 . 0))
> 

See above.

> https://codereview.appspot.com/7310075/diff/38001/scm/lily-library.scm
> File scm/lily-library.scm (right):
> 
> https://codereview.appspot.com/7310075/diff/38001/scm/lily-library.scm#newcode629
> scm/lily-library.scm:629: (define-public small-empty-interval '(0.01 .
> -0.01))
> orphaned
> 

Abandoned.

> https://codereview.appspot.com/7310075/diff/38001/scm/output-lib.scm
> File scm/output-lib.scm (right):
> 
> https://codereview.appspot.com/7310075/diff/38001/scm/output-lib.scm#newcode69
> scm/output-lib.scm:69: (ly:make-unpure-pure-container #f '(0 . 0)))
> The changes to define-grobs.scm work for me, so this can be orphaned,
> thankfully.

I'm with you on RepeatTie, but not SpanBarStub.  SpanBarStub needs to only have 
height in Separation_item::boxes which is accomplished via the addition of 
extra-spacing-height.  Otherwise we don't want the spacing engine to know it's 
there.  This can be accomplished (for now) by having a point pure height and 
adding the extra-spacing-height.  The problem is that the notion "horizontal 
spacing equals pure height plus extra spacing height" is hardcoded into 
Separation_item::boxes.  There should be horizontal-spacing-height and 
horizontal-spacing-width instead of extra-spacing-height and 
extra-spacing-width that has set as a default pure-height and width unless 
specified otherwise.

But changing that would be a UI nightmare, so I'm reluctant to do it.

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


Re: Uses only unpure-pure containers to articulate unpure-pure relationships. (issue 7377046)

2013-02-27 Thread m...@mikesolomon.org

On 27 févr. 2013, at 07:22, k-ohara5...@oco.net wrote:

> The cardinal cantle seems meldable, but first the cruft needs to be
> strained.
> 
> 
> https://codereview.appspot.com/7377046/diff/11001/scm/define-grobs.scm
> File scm/define-grobs.scm (right):
> 
> https://codereview.appspot.com/7377046/diff/11001/scm/define-grobs.scm#newcode1827
> scm/define-grobs.scm:1827: (Y-extent .
> ,grob::unpure-empty-pure-point-height)
>  (Y-extent . ,grob::always-Y-extent-from-stencil)

Are you sure we want this?  This isn't what was there previously.  Previously, 
there was no height for these grobs save '(0 . 0) as a pure height.

> 
> This leaked in from another patch set.
> 
> https://codereview.appspot.com/7377046/diff/11001/scm/output-lib.scm
> File scm/output-lib.scm (right):
> 
> https://codereview.appspot.com/7377046/diff/11001/scm/output-lib.scm#newcode108
> scm/output-lib.scm:108: ;; decisions, so we make their unpure height #f.
> This gives a way for an object to say: "Please leave space for me as if
> I were just a dot, while I am still a virgin (before page-breaking) but
> once I have carnal knowledge (during final page-layout) feel free to
> print other things right on top of me."
> Eeew.
> 

As a developer whose work is pure as snow, I can't even fathom what you mean.  
My brain is going into catatonic mode to protect my innocence.

Cheers,
MS


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


Musings on interfaces and properties

2013-02-27 Thread m...@mikesolomon.org
Hey all,

Working on eliminating the translate_axis call from axis-group-interface, I've 
found a less-than-ideal situation in the naming/using of interfaces and 
properties that I'd like to clean up, but it'd be a major, major change and 
would take time to implement.  So, before starting it as a project, I want to 
know if people think it is a good idea.

Currently, interfaces can have whatever properties they want, leading things 
like `padding' or `staff-padding' to mean different things in different 
interfaces (tuplet-bracket-interface and side-position-interface, for example). 
 This is bad when you try to mix functions from the two interfaces together 
that think these properties mean different things.

To avoid this, there are a few steps we could take:

1) Require that, for a grob to use a callback from an interface, it must 
implement that interface.
2) Require that, for a callback to lookup a property, the property must be 
implemented by the interface that the callback is part of (i.e. 
ly:side-position-interface::y-aligned-side can only look up properties from 
side-position-interface).
3) Have interface multiple inheritance so that, for example, all properties of 
grob-interface are accessible by side-position-interface.
4) In cases where a grob implements multiple interfaces that have the same 
property, the property must be specified as property@interface 
(padding@side-position-interface).  Otherwise, LilyPond issues a warning and 
sets all paddings to the value for all pertinent interfaces.
5) In define-grob-properties.scm, specify all interfaces for properties.

What do people think?

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


Re: Caches the interior skylines of vertical axis groups and systems. (issue 7185044)

2013-02-25 Thread m...@mikesolomon.org

On 25 févr. 2013, at 23:34, m...@mikesolomon.org wrote:

> 
> On 25 févr. 2013, at 16:29, d...@gnu.org wrote:
> 
>> On 2013/02/24 16:20:53, mike7 wrote:
>>> On 24 févr. 2013, at 17:18, David Kastrup <mailto:d...@gnu.org> wrote:
>> 
>>>> "m...@mikesolomon.org" <mailto:m...@mikesolomon.org> writes:
>>>> 
>>>>> On 24 févr. 2013, at 16:37, mailto:d...@gnu.org wrote:
>>>>> 
>>>>>> On 2013/02/24 13:27:39, mike7 wrote:
>>>>>>> On 24 févr. 2013, at 12:40, mailto:d...@gnu.org wrote:
>>>>>> 
>>>>>>>> Stupid question: could you not just check whether
>>>>>>>> outside-staff-priority has been set, and if it has, pass the
>> buck
>>>>>>>> to the right kind of callback automatically?  That way, the user
>>>>>>>> does not need to meddle with callbacks himself.
>>>>>> 
>>>>>>> Yup, but it'd require creating an Outside_staff_callback engraver
>>>>>>> with a call to acknowledge_grob.  Calls to acknowledge_grob are
>>>>>>> expensive and should be used only if there's no other viable
>>>>>>> solution.
>>>>>> 
>>>>>> Why can't the current Y-offset callback check
>> outside-staff-priority
>>>>>> on the grob?  Why would there be a need for an acknowledger?
>>>>> 
>>>>> That's exactly how the new Y-offset callbacks are implemented in
>> this
>>>>> patch set.  The problem is that not all grobs have a Y-offset
>>>>> callback.
>>>> 
>>>> Well, something heeded outside-staff-priority previously, apparently
>>>> calculating an offset based on it.  What happened to it?
>> 
>>> Before, there was a call to translate_axis.  It wasn't done as a
>>> callback for a Y-offset property but rather a vertical-skylines
>>> property for VerticalAxisGroup that called translate_axis many times
>>> (follow, in current master,
>>> Axis_group_interface::calc_vertical_skylines to
>>> avoid_outside_staff_collisions and you'll see how this is done).
>>> This makes it impossible to wipe caches and recompute properties
>>> with more information.  The goal of this patch is to eliminate that
>>> call to translate_axis so that the callback(s) for Y-offset
>>> calculate the entire offset, which means we can cache and recache
>>> pure equivalents.
>> 
>> This is really like pulling teeth.  Something _obviously_ consults
>> Y-offset, or overriding it with a callback would not have an effect.
>> Now said something can also check Y-offset for being unset (presumably
>> the default) and outside-staff-priority for being set (the
>> non-default) and call up the most likely of the totally dissimilarly
>> named callbacks you mention in changes.tely without bothering to say
>> which one to choose under what circumstances.
>> 
>> Can you _merge_ those callbacks?  Then there is no need to pick one.
>> 
> 
> They are currently merged in that y-aligned-side automatically calls 
> calc-outside-staff-y-offset at the end.  I forget why I didn't merge them 
> completely - there was a reason at one point, but they may be mergeable.  
> Will look into it.

I see now why I didn't merge these two functions.

The tuplet-bracket-interface currently implements a property called 'padding 
that would be read by helper functions called via 
ly:side-position-interface::y-aligned-side.  We don't want this, so we write a 
second function that circumvents this and only does outside staff positioning.

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


Re: Caches the interior skylines of vertical axis groups and systems. (issue 7185044)

2013-02-25 Thread m...@mikesolomon.org

On 25 févr. 2013, at 16:29, d...@gnu.org wrote:

> On 2013/02/24 16:20:53, mike7 wrote:
>> On 24 févr. 2013, at 17:18, David Kastrup <mailto:d...@gnu.org> wrote:
> 
>> > "m...@mikesolomon.org" <mailto:m...@mikesolomon.org> writes:
>> >
>> >> On 24 févr. 2013, at 16:37, mailto:d...@gnu.org wrote:
>> >>
>> >>> On 2013/02/24 13:27:39, mike7 wrote:
>> >>>> On 24 févr. 2013, at 12:40, mailto:d...@gnu.org wrote:
>> >>>
>> >>>>> Stupid question: could you not just check whether
>> >>>>> outside-staff-priority has been set, and if it has, pass the
> buck
>> >>>>> to the right kind of callback automatically?  That way, the user
>> >>>>> does not need to meddle with callbacks himself.
>> >>>
>> >>>> Yup, but it'd require creating an Outside_staff_callback engraver
>> >>>> with a call to acknowledge_grob.  Calls to acknowledge_grob are
>> >>>> expensive and should be used only if there's no other viable
>> >>>> solution.
>> >>>
>> >>> Why can't the current Y-offset callback check
> outside-staff-priority
>> >>> on the grob?  Why would there be a need for an acknowledger?
>> >>
>> >> That's exactly how the new Y-offset callbacks are implemented in
> this
>> >> patch set.  The problem is that not all grobs have a Y-offset
>> >> callback.
>> >
>> > Well, something heeded outside-staff-priority previously, apparently
>> > calculating an offset based on it.  What happened to it?
> 
>> Before, there was a call to translate_axis.  It wasn't done as a
>> callback for a Y-offset property but rather a vertical-skylines
>> property for VerticalAxisGroup that called translate_axis many times
>> (follow, in current master,
>> Axis_group_interface::calc_vertical_skylines to
>> avoid_outside_staff_collisions and you'll see how this is done).
>> This makes it impossible to wipe caches and recompute properties
>> with more information.  The goal of this patch is to eliminate that
>> call to translate_axis so that the callback(s) for Y-offset
>> calculate the entire offset, which means we can cache and recache
>> pure equivalents.
> 
> This is really like pulling teeth.  Something _obviously_ consults
> Y-offset, or overriding it with a callback would not have an effect.
> Now said something can also check Y-offset for being unset (presumably
> the default) and outside-staff-priority for being set (the
> non-default) and call up the most likely of the totally dissimilarly
> named callbacks you mention in changes.tely without bothering to say
> which one to choose under what circumstances.
> 
> Can you _merge_ those callbacks?  Then there is no need to pick one.
> 

They are currently merged in that y-aligned-side automatically calls 
calc-outside-staff-y-offset at the end.  I forget why I didn't merge them 
completely - there was a reason at one point, but they may be mergeable.  Will 
look into it.

> Setting something like outside-staff-priority is still stuff that
> users can comprehend (and that's actually documented in the manuals).
> Having to pick one of several totally differently named callbacks
> without useful documentation is _not_ a user interface.
> 
> That's internals.

The goal of the patchset is for all outside-staff grobs to still respond to 
outside-staff-priority.  Are there any outside-staff grobs (Slur, Script, 
TupletBracket, whatever) that currently don't function like they used to in the 
given patch set?  I didn't find a single one.

> 
>> I think the current patch is fine.
> 
> It does not have a usable user interface.  It is not an option for a
> user to choose between several undocumented callbacks.
> 

I will document those two callbacks or the one callback if I merge them.  What 
I'd appreciate is a list of outside-staff grobs as defined in the documentation 
that, with my patch set apply, no longer respond to outside-staff-priority.  I 
believe that I've covered all the pertinent grobs.

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


Re: Regtest 2.17.13

2013-02-25 Thread m...@mikesolomon.org
On 25 févr. 2013, at 15:10, David Kastrup  wrote:

> James  writes:
> 
>>> On 25 February 2013 12:00, David Kastrup  wrote:
>>> 
>>>"Phil Holmes"  writes:
>>> 
 I've run my pixel comparator on 2.17.13 versus 2.17.12 (note -
 the output shows this as 2.17.11 since the windows exe
 contained the wrong version number). Output is at
 
 http://philholmes.net/lilypond/regtestresults/2.17.13/
 
 As might be supposed, most of the differences are connecting
 bar lines.
>>> 
>>> 
>>>Good grief. Yes. A real pity that our default regtest comparisons
>>>blanked those out.
>>> 
>>> 
>>> Well it could always be a case of me missing that assuming I did the
>>> check.
> 
> Unlikely.  It is pretty likely that I also looked at regtest
> differences, and the differences are far from subtle and rare.  So I am
> pretty sure that the tests were not given any visual presentation,
> instead just being filtered prematurely based on the metrics.
> 
> -- 
> David Kastrup
> 
> 
> ___
> lilypond-devel mailing list
> lilypond-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-devel

This is the case. Span Bar heights do not come from stencils (I believe they 
have an empty height by default), so changes in the stencils won't appear in 
the regtests comparisons, which focus exclusively on changes in height and 
width.

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


  1   2   3   4   >