Re: Fixes position of mensural c clef (issue 6503091)

2012-09-08 Thread Werner LEMBERG

 I think some of the confusion could be avoided by running all mf
 files through expand(1).

This is a good idea, and I will do so after Phil has done his work.

 I'm really bewildered that it is apparently so hard for many
 contributors to format and indent new code in the same manner as
 the surrounding code.  Is this lack of experience?  Is this
 ignorance?  Is it arrogance?

 I would rather keep this neutral from any accusation of ignorance or
 arrogance -- in *both* directions.  I could easily argue it either
 way.

Certainly.  Note that I don't *accuse* anyone, especially not Phil.
I'm grateful that he's working on the code, but I'm really astonished
about his replies.

 1. reject any offers of help from contributors who do not follow the
existing formatting.

 2. educate each contributor individually, go through multiple rounds
of each patch to adjust the formatting, etc.

 3. use an automatic formatting tool.

 4. combine 2 and 3: use an automatic formatting tool for most of the
code style, but still require some additional manual formatting
(and go through a few rounds of reviews if necessary).

 I favor either 3 or 4; we are not in a position to be gratuitously
 rejecting patches, and having finicky manual formatting will
 discourage some contributors.

I fully agree.  Since we have no support for (3) yet, I will do a bit
of (2), and I really hope that Phil can bear with me :-)


Werner

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


Re: Approximates cross-staff slurs in VerticalAxisGroup vertical-skylines. (issue 6498077)

2012-09-08 Thread Keith OHara

On Fri, 07 Sep 2012 09:23:08 -0700, m...@mikesolomon.org m...@mikesolomon.org 
wrote:



On 7 sept. 2012, at 09:34, k-ohara5...@oco.net wrote:


Having the invisible Grobs taking up space will confuse the innocent.


I tried to add comments about this in the source - perhaps the CG needs an 
invisible grob bit, as we have StemStubs and SpanBarStubs as well.


People who have read the source code and contributors guide are not the 
innocent.



In measure 36 of my example, it seems I used a text script for custom
fingering placement.  That 4 moves to avoid the SlurStub.  (How would
you put it back where it belongs, as a user? )


\override TextScript #'avoid-slur = #'inside


But, looking at the output, the 4 is /already/ inside the slur, so why would 
anybody think to try that?  These invisible grobs pushing things around would cause 
confusion in released code.


http://codereview.appspot.com/6498077/




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


release 2.16.1

2012-09-08 Thread Federico Bruni
Can you announce here the release of 2.16.1 at least a week before the 
actual release?

So translators will have time to complete their works.

I have a patch which will be ready next week and I hope it won't miss 
next stable release.


Thanks
--
Federico

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


Re: release 2.16.1

2012-09-08 Thread David Kastrup
Federico Bruni fedel...@gmail.com writes:

 Can you announce here the release of 2.16.1 at least a week before the
 actual release?
 So translators will have time to complete their works.

 I have a patch which will be ready next week and I hope it won't miss
 next stable release.

No danger.  By far the most important regressions requiring a release of
2.16.1 are the line_count fixes, and those have not been completed and
have not seen exposure in an unstable release yet.  I don't see the
point in releasing 2.16.1 without them, so there are still at least
several weeks of buffer.

In the mean time, I am investigating garbage collection problems: the
needs-work problems of issue 2815
URL:http://code.google.com/p/lilypond/issues/detail?id=2815 point to
parts of the parse stack keeping marked objects around after their
proper logical demise, possibly in areas allocated with alloca and
considered released by Bison's parse stack management: this might have
always been the case, or be related to other fixes I want to cherry-pick
because of performance reasons, but the patch in 2815 might exacerbate
it.

We also have no clue about the GhostScript-related problems, but it does
not appear like there is active work going on, so that is, somewhat
unfortunately, not something considered delaying 2.16.1.

So the collection and selection of patches into the stable branch is
proceeding quite leisurely at the current point of time.  I don't expect
a release of 2.16.1 before end of September.

-- 
David Kastrup


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


Re: Issue 2758. ly_module_lookup caused deprecation warnings with Guile V2.06. (issue 6458159)

2012-09-08 Thread dak

On 2012/09/06 23:24:04, Ian Hulin (gmail) wrote:

On 2012/09/06 18:07:53, dak wrote:



 When we go Guilev2, we don't want to search for all the backward
compatibility.
 So I'd say you use something like

 #if GUILEV1

 for splicing in the compatibility stuff, and define it as either 0

or 1 in

 lily-guile.hh, depending on the conditional you use here.

 Once we decide to go Guilev2 proper, we rip out the definition in
lily-guile.hh,
 and all uses of GUILEV1 will bomb out.

 That way we at least don't overlook the compatibility crutches.



Nice idea, but probably better to define the macro in

guile-compatibility.hh,

which lily-guile.hh pulls in. I can then use as complementary GUILEV2

macro

which will be needed for the Guile V2-specific bits in main.cc.


Sounds like a plan.  I guess neither of us are fond of the old use of
undocumented (and by now deprecated, as opposed to module-variable)
internal Guile functions.  We disagree about what to replace it with: I
would use the Scheme functions, saving the need for distinguishing
Guilev1/Guilev2, you want to use the C functions and keep different
versions for Guilev1 and Guilev2.

If you implement the compatibility in the manner I propose (with your
modification), we are sure that the ugly code does not stick around
after going Guilev2-only.  So that's ok with me as well.  Having the
GUILEv1 macro temporarily defined will also help the transition
elsewhere, and we should probably also use a similar strategy at the
Scheme level.

http://codereview.appspot.com/6458159/

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


Heinrich Ignaz Franz Biber

2012-09-08 Thread Werner LEMBERG

Folks,

due to the discussion about funny accidental placements in music
written for strings with scordatura, I had a closer look at the Rosary
Sonatas from Biber.  As a result, I'm playing the 14th sonata with my
daughter in a concert[1], among other pieces :-)

In case you like baroque music which sounds like Irish folk tunes, you
might listen to this nice recording:

  http://www.youtube.com/watch?v=O2vZPX9oTr0


Werner


[1] Sept. 30th, 17:00, Lutherkirche Hörde, Dortmund

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


Re: Heinrich Ignaz Franz Biber

2012-09-08 Thread Joseph Rushton Wakeling

On 08/09/12 10:17, Werner LEMBERG wrote:

due to the discussion about funny accidental placements in music
written for strings with scordatura, I had a closer look at the Rosary
Sonatas from Biber.  As a result, I'm playing the 14th sonata with my
daughter in a concert[1], among other pieces :-)


Wonderful, wonderful music.  Very best wishes for your concert. :-)

Actually, it's been in the back of my head for a while that those pieces could 
be a great demo for Lilypond, particularly in respect of being able to generate 
both written and sounding-pitched parts for violin from the same material 
without any stupid tricks.


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


Re: Fixes position of mensural c clef (issue 6503091)

2012-09-08 Thread PhilEHolmes

A quick note to Werner.  1) apologies for being rather brusque, but I'd
pretty much killed my self getting this sorted - the original code had
some very odd calculation methods in it, and it's the first time I'd
ever touched metafont.  Your follow up is helpful - please ignore my
recent comment on Google - I'm minus a monitor at present and working on
a little used laptop and don't have mail at present, so I'm not working
linearly in time.  I'll look at changing the lengths - I was aware of a
slight difference, although actually I'm not certain it's that important
- these are machine drawn glyphs intending to replicate hand-drawn clefs
from the 15th century.  How important is 0.1 staff space?

As for the indents, I now understand what you're saying.  I use Gedit
and by default for mf files it puts tabs at 4 spaces, and so the
indenting looked completely awry.  IMHO mixing tabs and spaces is a
really bad idea for that reason - different editors indent different
ways.  I just tidied a few of the more obvious ones near my code, but
will get rid of those once I have a working monitor.

As for the overlaps.  Ditto I'll look at that.  The original code
calculated end points in a very odd way - it allowed, for example, of
different amounts of shift between the breves, and then ignored that in
the calculation of the decorations.  I'll see if I can improve this.



http://codereview.appspot.com/6503091/

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


Development releases

2012-09-08 Thread Phil Holmes
It was my plan to try to do a development release about every 2 weeks - 
running on a Sunday.  This Sunday would have been the first.  However, my 
large screen monitor has just died and I've nicked the one from my wife's 
computer, and as a result I'm on a very much smaller desktop that I'm used 
to.  I do realise that Unix started on 80 characters, but I'd prefer my 
normal environment to do stuff (i.e. Gub compile and upload) with which I'm 
not too familiar - I like to have loads of space to type in one window while 
reading the CG in another.


Therefore, unless there are screams of pain - the next release (2.17.2) will 
be next Sunday, the 16th (or will possibly start on the 15th).


--
Phil Holmes



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


Solving Issue 185 RhythmicStaff squishing chords should produce single notes

2012-09-08 Thread Johannes Rohrer
This is a follow-up on a discussion from the issue tracker comments at

http://code.google.com/p/lilypond/issues/detail?id=185,

where I suggested a kludgy fix for a favorite LilyPond pet peeve of 
mine. I am interested in making it less kludgy. As I am new to the 
LilyPond codebase, please bear with some ignorance.

Some context:

My original proposal
http://codereview.appspot.com/6495107

 Make RhythmicStaff show single notes for chords (issue 185)
 
 RhythmicStaff uses Pitch_squash_engraver to move all note heads to a
 common vertical position. With chords, at least two problems arise:
 
 (1) As all notes from one chord collide now, so some of them used to
 
 be moved aside. Hence, for each chord, two adjacent note heads
 would appear in the output.
 
 (2) For chords with dotted duration, Dot_column_engraver would put one
 
 dot per note head into a DotColumn, where they would be spaced
 apart. So for every note in the chord, one separate dot would be
 visible.
 
 Solve (1) by explicitly setting X-offset to 0 for squashed note heads
 in the Pitch_squash_engraver.
 
 Solve (2) by replacing Dot_column_engraver with a new
 Squashed_dot_column_engraver. This variant puts only at most one dot
 per time step onto a DotColumn, and marks any further ones as
 transparent.


* d...@gnu.org comprehensibly suggested instead:

 Wouldn't it make sense to let the Pitch_squash_engraver suicide all
 duplicate grobs at a time step? It would actually be even better if it
 could just kill the respective events before other engravers even get
 to see them. Also it would seem that only duplicates in the same Voice
 should be squashed.

and later

 Maybe we need an engraver listening to Stems and shooting all
 NoteHeads except the first per stem.  This should take place before
 collision resolution.

but I fail to find an exploitable connection between stems and chords. 
As far as I understand, Stems are grouped with note heads into 
NoteColumns by Rhythmic_column_engraver only, which operates at Voice 
level, hence too late.

Judging from this engraver, it looks to me like one could implement a 
Chord_thinout_engraver at Voice level simply by acknowledging 
rhythmic_heads and killing all but the first per timestep. But I need 
this functionality at Staff level.

(One could include such an engraver into all Voice contexts, but trigger 
it with a Staff-level property. Sounds kludgy again.)

So far, the most viable route to me seems to make use of this

 ...an acknowledger is called not just with a grob but also with the
 originating engraver instance announcing the grob, and so one can
 indeed figure out the originating context of an announcement _if_ the
 grob is produced from a Voice-level engraver instance.

to write a Staff-level Chord_thinout_engraver that still works per 
voice. Is that the way to go? Other ideas?

Best regards,

Johannes Rohrer

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


Re: [GLISS] why the hell all this fuss

2012-09-08 Thread Han-Wen Nienhuys
On Fri, Sep 7, 2012 at 4:42 AM, David Kastrup d...@gnu.org wrote:
 There's one thing worth clarifying: when i say syntax changes, i
 mean changes in how user input looks like.  So a renaming of a
 command is a syntax change to me (despite the fact that no grammar
 rules change).
 That's probably confusing - what word should i use when i mean
 changes in how user input looks like?

 No idea.  What we have under the umbrella of syntax discussion
 contains three things: lexical units, grammar and vocabulary, mostly
 implemented in lexer.ll, parser.yy, and *.ly respectively.  In order to
 keep syntax predictable, we want to be able to solve most problems just
 by extending the vocabulary.  That means that lexical units and grammar
 should be as generic, powerful, and simple as possible.  Specialized
 lexical modes take power from the vocabulary.  We want to avoid them as
 much as possible given our historic constraints.

I completely agree with this. I have been giving some people a hard
time in this discussion, but that is primarily for wanting to mess
with either lexer.ll or parser.yy. As long as you don't that, I will
not object fiercely to what syntax proposal anyone comes up with.

-- 
Han-Wen Nienhuys - han...@xs4all.nl - http://www.xs4all.nl/~hanwen

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


Re: Heinrich Ignaz Franz Biber

2012-09-08 Thread Werner LEMBERG
 Actually, it's been in the back of my head for a while that those
 pieces could be a great demo for Lilypond, particularly in respect
 of being able to generate both written and sounding-pitched parts
 for violin from the same material without any stupid tricks.

Indeed, typesetting the first few bars of one of the Biber sonatas,
together with correct MIDI output, would yield a very nice example.


Werner

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


Re: [GLISS] why the hell all this fuss

2012-09-08 Thread David Kastrup
Han-Wen Nienhuys hanw...@gmail.com writes:

 On Fri, Sep 7, 2012 at 4:42 AM, David Kastrup d...@gnu.org wrote:
 There's one thing worth clarifying: when i say syntax changes, i
 mean changes in how user input looks like.  So a renaming of a
 command is a syntax change to me (despite the fact that no grammar
 rules change).
 That's probably confusing - what word should i use when i mean
 changes in how user input looks like?

 No idea.  What we have under the umbrella of syntax discussion
 contains three things: lexical units, grammar and vocabulary, mostly
 implemented in lexer.ll, parser.yy, and *.ly respectively.  In order to
 keep syntax predictable, we want to be able to solve most problems just
 by extending the vocabulary.  That means that lexical units and grammar
 should be as generic, powerful, and simple as possible.  Specialized
 lexical modes take power from the vocabulary.  We want to avoid them as
 much as possible given our historic constraints.

 I completely agree with this. I have been giving some people a hard
 time in this discussion, but that is primarily for wanting to mess
 with either lexer.ll or parser.yy. As long as you don't that, I will
 not object fiercely to what syntax proposal anyone comes up with.

Actually, is there a particular reason we are generating a C parser
rather than a C++ parser?  The implications regarding marking and
garbage collection of semantic values are rather awful.

Probably historic because Bison did not use to come with C++ skeleton
files?

-- 
David Kastrup

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


Re: Heinrich Ignaz Franz Biber

2012-09-08 Thread David Kastrup
Werner LEMBERG w...@gnu.org writes:

 Actually, it's been in the back of my head for a while that those
 pieces could be a great demo for Lilypond, particularly in respect
 of being able to generate both written and sounding-pitched parts
 for violin from the same material without any stupid tricks.

 Indeed, typesetting the first few bars of one of the Biber sonatas,
 together with correct MIDI output, would yield a very nice example.

Three staffs: true pitch, scordatura, tablature.

Entry would be presumably in true pitch plus string number (where not in
lowest terms).

-- 
David Kastrup


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


Re: [GLISS] why the hell all this fuss (was: modern-straight-flag)

2012-09-08 Thread Han-Wen Nienhuys
On Thu, Sep 6, 2012 at 7:28 AM, Joseph Rushton Wakeling
joseph.wakel...@webdrake.net wrote:
 Has anyone ever actually engaged with any major publishers to identify the
 factors that are of interest to them in engraving software, and the features
 that Lilypond would have to implement in order to meet their requirements?

I have in the past talked with people from Henle; also, Schirmer has a
style guide that you can order as a book.

My overall impression is that they are primarily interested in:

* Strict adherence to their publisher style
* Delivering printed parts on a low budget.

Once the edition is printed, there is little reason to keep the files
around, and in some cases (due to editing PS output), it's not useful
at all. Music publishers (at least a few years ago) are still very
much focused on putting ink on dead trees in large quantities in the
most uniform and cost-efficient way possible, a business model which
makes ever less sense in the digital age.

--
Han-Wen Nienhuys - han...@xs4all.nl - http://www.xs4all.nl/~hanwen

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


Re: [GLISS] why the hell all this fuss

2012-09-08 Thread Han-Wen Nienhuys
On Sat, Sep 8, 2012 at 12:00 PM, David Kastrup d...@gnu.org wrote:
 Han-Wen Nienhuys hanw...@gmail.com writes:

 On Fri, Sep 7, 2012 at 4:42 AM, David Kastrup d...@gnu.org wrote:
 There's one thing worth clarifying: when i say syntax changes, i
 mean changes in how user input looks like.  So a renaming of a
 command is a syntax change to me (despite the fact that no grammar
 rules change).
 That's probably confusing - what word should i use when i mean
 changes in how user input looks like?

 No idea.  What we have under the umbrella of syntax discussion
 contains three things: lexical units, grammar and vocabulary, mostly
 implemented in lexer.ll, parser.yy, and *.ly respectively.  In order to
 keep syntax predictable, we want to be able to solve most problems just
 by extending the vocabulary.  That means that lexical units and grammar
 should be as generic, powerful, and simple as possible.  Specialized
 lexical modes take power from the vocabulary.  We want to avoid them as
 much as possible given our historic constraints.

 I completely agree with this. I have been giving some people a hard
 time in this discussion, but that is primarily for wanting to mess
 with either lexer.ll or parser.yy. As long as you don't that, I will
 not object fiercely to what syntax proposal anyone comes up with.

 Actually, is there a particular reason we are generating a C parser
 rather than a C++ parser?  The implications regarding marking and
 garbage collection of semantic values are rather awful.

Right; all that should go away with guile v2 though, which uses Boehm GC

 Probably historic because Bison did not use to come with C++ skeleton
 files?

Correct. The best we had was the pure_parser option.

-- 
Han-Wen Nienhuys - han...@xs4all.nl - http://www.xs4all.nl/~hanwen

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


Re: [GLISS] why the hell all this fuss

2012-09-08 Thread David Kastrup
Han-Wen Nienhuys hanw...@gmail.com writes:

 On Sat, Sep 8, 2012 at 12:00 PM, David Kastrup d...@gnu.org wrote:
 Han-Wen Nienhuys hanw...@gmail.com writes:

 On Fri, Sep 7, 2012 at 4:42 AM, David Kastrup d...@gnu.org wrote:
 There's one thing worth clarifying: when i say syntax changes, i
 mean changes in how user input looks like.  So a renaming of a
 command is a syntax change to me (despite the fact that no grammar
 rules change).
 That's probably confusing - what word should i use when i mean
 changes in how user input looks like?

 No idea.  What we have under the umbrella of syntax discussion
 contains three things: lexical units, grammar and vocabulary, mostly
 implemented in lexer.ll, parser.yy, and *.ly respectively.  In order to
 keep syntax predictable, we want to be able to solve most problems just
 by extending the vocabulary.  That means that lexical units and grammar
 should be as generic, powerful, and simple as possible.  Specialized
 lexical modes take power from the vocabulary.  We want to avoid them as
 much as possible given our historic constraints.

 I completely agree with this. I have been giving some people a hard
 time in this discussion, but that is primarily for wanting to mess
 with either lexer.ll or parser.yy. As long as you don't that, I will
 not object fiercely to what syntax proposal anyone comes up with.

 Actually, is there a particular reason we are generating a C parser
 rather than a C++ parser?  The implications regarding marking and
 garbage collection of semantic values are rather awful.

 Right; all that should go away with guile v2 though, which uses Boehm GC

Wrong.  If the parse stack sits in an automatic or heap array, no
garbage collector in the world has a chance of knowing that values
beyond the hand-implemented stack pointer are stale, will never get read
again, should not be marked, and can be collected.

Believing in magic will only get us so far.

 Probably historic because Bison did not use to come with C++ skeleton
 files?

 Correct. The best we had was the pure_parser option.

Ok.  I'll probably change that after cross-checking with the
unfortunately non-orthogonal GLR parser option that might facilitate
moving the complexity for dealing with ambiguities from the grammar to
the parser generator.  Given the current grammar complexity, not an
option to be lightly discarded.

-- 
David Kastrup

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


Re: Uses horizontal skylines in accidental placement (issue 6489086)

2012-09-08 Thread m...@mikesolomon.org

On 8 sept. 2012, at 08:46, k-ohara5...@oco.net wrote:

 On 2012/09/08 05:28:02, Keith wrote:
 now I measure it 2% /faster/ than master.
 
 Of course that makes no sense.  I got confused of which executable I had
 when switching between patches.  This patch is still about 6% slower
 than master, buy maybe worth it.
 
 Also, 'accidental-single-double.ly' is broke for me as well with
 starting with patch set 2, so nothing mysterious there.
 
 (It works if I just bypass the test for restore-first.)
 
 http://codereview.appspot.com/6489086/

OK - I'll be able to fix all the broken stuff on Monday or Tuesday.

~Mike

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


Re: Approximates cross-staff slurs in VerticalAxisGroup vertical-skylines. (issue 6498077)

2012-09-08 Thread m...@mikesolomon.org

On 8 sept. 2012, at 09:06, Keith OHara k-ohara5...@oco.net wrote:

 On Fri, 07 Sep 2012 09:23:08 -0700, m...@mikesolomon.org 
 m...@mikesolomon.org wrote:
 
 
 On 7 sept. 2012, at 09:34, k-ohara5...@oco.net wrote:
 
 Having the invisible Grobs taking up space will confuse the innocent.
 
 I tried to add comments about this in the source - perhaps the CG needs an 
 invisible grob bit, as we have StemStubs and SpanBarStubs as well.
 
 People who have read the source code and contributors guide are not the 
 innocent.

Ah, ok. I can put the idea of stubs in the docs too - this is an entirely 
comprehensible concept for those who understand basic engraving principles, as 
this is how engravers reserve space in many cases. They use physical objects 
that take up space but are never printed to block other objects.

 
 
 In measure 36 of my example, it seems I used a text script for custom
 fingering placement.  That 4 moves to avoid the SlurStub.  (How would
 you put it back where it belongs, as a user? )
 
 \override TextScript #'avoid-slur = #'inside
 
 But, looking at the output, the 4 is /already/ inside the slur, so why 
 would anybody think to try that?  These invisible grobs pushing things around 
 would cause confusion in released code.

Hmm...will think it over.  I agree with you that it's confusing - I think that 
a combination of documentation and perhaps warnings would help users with this.

Cheers,
MS

 
 http://codereview.appspot.com/6498077/
 
 


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


Re: new mailing list: lilypond-syntax-explorations

2012-09-08 Thread Ian Hulin
On 07/09/12 01:14, Graham Percival wrote:
 On Mon, Sep 03, 2012 at 08:15:27PM +0100, Graham Percival wrote:
 For the past 6 days, we've performed an experiment: can we have a
 On Thursday, I will create a new mailing list, with the tentative
 name lilypond-syntax-explorations.  Alternate name suggestions
 are welcome.
 
 I'm re-thinking the name.  It's not ideal to pinpoint syntax in
 the list name, since this could be a useful venue to discuss other
 ideas[1].  I'm now leaning towards:
   lilypond-loony-bin
 
 Other possibilities are:
   lilypond-free-discussion
   lilypond-random-discussion
   lilypond-explorations
   lilypond-loonies   % Canadian joke: our $1 coin is a loonie
   % http://en.wikipedia.org/wiki/Loonie
 
How about
lilypond-language-discussion

as it's sort of about how we can extend/develop/rationalise the LilyPond
markup language[1] to produce beautifully engraved scores.

Cheers,
Ian

[1] I mean the whole LilyPond language, not just the \markup stuff.




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


Re: Fixes position of mensural c clef (issue 6503091)

2012-09-08 Thread Reinhold Kainhofer

On 2012-09-08 08:11, Werner LEMBERG wrote:

1. reject any offers of help from contributors who do not follow the
existing formatting.

2. educate each contributor individually, go through multiple rounds
of each patch to adjust the formatting, etc.

3. use an automatic formatting tool.

4. combine 2 and 3: use an automatic formatting tool for most of the
code style, but still require some additional manual formatting
(and go through a few rounds of reviews if necessary).

I favor either 3 or 4; we are not in a position to be gratuitously
rejecting patches, and having finicky manual formatting will
discourage some contributors.


I fully agree.  Since we have no support for (3) yet, I will do a bit
of (2), and I really hope that Phil can bear with me :-)


Is it really such a big deal if the code formatting is not perfectly 
consistent in every little detail?

In particular, I would favor option

  5. (relax 2 a bit) educate each contributor individually when giving
 feedback about the patch. Don't insist on a new patch for
 formatting alone, but tell the submitter that (s)he should (i.e.
 following the RFC terminology strongly recommended, but not
 absolutely required) fix the indentation before applying.

Cheers,
Reinhold


--
--
Reinhold Kainhofer, reinh...@kainhofer.com, http://www.kainhofer.com
 * Financial  Actuarial Math., Vienna Univ. of Technology, Austria
 * http://www.fam.tuwien.ac.at/, DVR: 0005886
 * Edition Kainhofer, Music Publisher, http://www.edition-kainhofer.com

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


[GLISS] Music functions using keyword parameters?

2012-09-08 Thread Ian Hulin
This is just a toe-in-the-water enquiry.

Given the work David put in to allow optional music function parameters
in the 2.16 release, how much work would it be able to do something like

\afterGrace :#note d1 :#grace { c16[ d]} :#fraction 15/16
or
\afterGrace :#fraction 15/16 :#note d1 :#grace { c16[ d]}


Notes:
Both the above would produce the same output.
I've used the default Scheme keyword introducer ':#' for the keyword.
I know currently \afterGraceFraction needs to be defined in Scheme
as
#(define afterGraceFraction (cons 15 16))
to do this rather than use a rational.

Is this feasible?

Is this desirable?

Specifically, does it cause huge disruption with the current
parser/lexer code.

Thoughts please? Especially welcome from those who've got down and dirty
with the parser code.

Cheers,

Ian


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


Re: Heinrich Ignaz Franz Biber

2012-09-08 Thread Werner LEMBERG
 Indeed, typesetting the first few bars of one of the Biber sonatas,
 together with correct MIDI output, would yield a very nice example.

 Three staffs: true pitch, scordatura, tablature.

 Entry would be presumably in true pitch plus string number (where
 not in lowest terms).

Why tablature?  A digital scan of the original manuscript/print can be
seen here:

  http://daten.digitale-sammlungen.de/~db/0002/bsb00020682/images/

It's a violin part using a G-clef, together with a basso continuo
staff.


Werner
inline: slash.png___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 2758. ly_module_lookup caused deprecation warnings with Guile V2.06. (issue 6458159)

2012-09-08 Thread ianhulin44

On 2012/09/08 09:13:17, dak wrote:

On 2012/09/06 23:24:04, Ian Hulin (gmail) wrote:
 On 2012/09/06 18:07:53, dak wrote:

  When we go Guilev2, we don't want to search for all the backward
 compatibility.
  So I'd say you use something like
 
  #if GUILEV1
 
  for splicing in the compatibility stuff, and define it as either 0

or 1 in

  lily-guile.hh, depending on the conditional you use here.
 
  Once we decide to go Guilev2 proper, we rip out the definition in
 lily-guile.hh,
  and all uses of GUILEV1 will bomb out.
 
  That way we at least don't overlook the compatibility crutches.

 Nice idea, but probably better to define the macro in

guile-compatibility.hh,

 which lily-guile.hh pulls in. I can then use as complementary

GUILEV2 macro

 which will be needed for the Guile V2-specific bits in main.cc.



Sounds like a plan.  I guess neither of us are fond of the old use of
undocumented (and by now deprecated, as opposed to module-variable)

internal

Guile functions.  We disagree about what to replace it with: I would

use the

Scheme functions, saving the need for distinguishing Guilev1/Guilev2,

you want

to use the C functions and keep different versions for Guilev1 and

Guilev2.


If you implement the compatibility in the manner I propose (with your
modification), we are sure that the ugly code does not stick around

after going

Guilev2-only.  So that's ok with me as well.  Having the GUILEv1 macro
temporarily defined will also help the transition elsewhere, and we

should

probably also use a similar strategy at the Scheme level.


I'll upload another patch-set.

Unfortunately things may slow down at my end again as I'm back teaching
and starting another round of mind-bending meds.

Cheers,
Ian

http://codereview.appspot.com/6458159/

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


Re: [GLISS] Music functions using keyword parameters?

2012-09-08 Thread David Kastrup
Ian Hulin i...@hulin.org.uk writes:

 This is just a toe-in-the-water enquiry.

 Given the work David put in to allow optional music function parameters
 in the 2.16 release, how much work would it be able to do something like

 \afterGrace :#note d1 :#grace { c16[ d]} :#fraction 15/16
 or
 \afterGrace :#fraction 15/16 :#note d1 :#grace { c16[ d]}


 Notes:
 Both the above would produce the same output.
 I've used the default Scheme keyword introducer ':#' for the keyword.

Uh no.  The default would be '#:'.  In order not to introduce yet
another special case in the lexer, using ##: from LilyPond would seem to
make sense.

 I know currently \afterGraceFraction needs to be defined in Scheme
 as
 #(define afterGraceFraction (cons 15 16))
 to do this rather than use a rational.

Sigh.  Why not just use an ordinary optional argument here?  15/16 in
LilyPond syntax gets translated to (cons 15 16) anyway.  The actual
problem right now is that a mandatory argument after a non-present
optional argument needs to be closed music.  With \afterGrace, not
being able to use a simple note without braces would be embarrassing.

But that's on the agenda to fix.

 Is this feasible?

Likely.

 Is this desirable?

Unlikely.

 Specifically, does it cause huge disruption with the current
 parser/lexer code.

Pretty much.  The lexer could remain unchanged when heeding the above
change suggestion.  The parser would be invasive.  Probably somewhat
straightforward, but invasive.  Keyword arguments would likely have to
come first.

 Thoughts please? Especially welcome from those who've got down and
 dirty with the parser code.

The stuff for matching LilyPond arguments to signatures would have to be
reworked.  Not as much messing with the parser as with the parser
support code (like define-music-function, and the syntax constructors).

I don't like the consequences on the syntax.  We have sort of a
keyword interface in unquoted strings, like \tweak takes as an
optional argument.  Meddling with true keywords causes more fine
distinctions than I care for.  I think that it is saner to try matching
semantics to the existing optional arguments, and I think that this will
become reasonably straightforward in the case of \afterGrace once the
closed issue disappears.  Actually, I think that if you don't use an
optional fraction but rather a _duration_, the please be closed issue
might possibly be absent with the current code base.  I don't promise
that this might not change transitorily, however, so it would probably
not make much sense to design a possibly inferior interface based on
that.

-- 
David Kastrup


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


Re: [GLISS] why the hell all this fuss

2012-09-08 Thread Han-Wen Nienhuys
On Sat, Sep 8, 2012 at 12:27 PM, David Kastrup d...@gnu.org wrote:

 No idea.  What we have under the umbrella of syntax discussion
 contains three things: lexical units, grammar and vocabulary, mostly
 implemented in lexer.ll, parser.yy, and *.ly respectively.  In order to
 keep syntax predictable, we want to be able to solve most problems just
 by extending the vocabulary.  That means that lexical units and grammar
 should be as generic, powerful, and simple as possible.  Specialized
 lexical modes take power from the vocabulary.  We want to avoid them as
 much as possible given our historic constraints.

 I completely agree with this. I have been giving some people a hard
 time in this discussion, but that is primarily for wanting to mess
 with either lexer.ll or parser.yy. As long as you don't that, I will
 not object fiercely to what syntax proposal anyone comes up with.

 Actually, is there a particular reason we are generating a C parser
 rather than a C++ parser?  The implications regarding marking and
 garbage collection of semantic values are rather awful.

 Right; all that should go away with guile v2 though, which uses Boehm GC

 Wrong.  If the parse stack sits in an automatic or heap array, no
 garbage collector in the world has a chance of knowing that values
 beyond the hand-implemented stack pointer are stale, will never get read
 again, should not be marked, and can be collected.

 Believing in magic will only get us so far.

Can you clarify? Boehm GC should also be inspecting the stack for what
might be pointers to memory that cannot be reclaimed.  See also

http://www.gnu.org/software/guile/manual/html_node/Conservative-GC.html

if your point is that some blocks will not be GC'd, then that is
nothing new; pre-1.8 guile does not guarantee that, and in general
conservative GC cannot guarantee that. Conservative GC is problematic
if the heap is large compared to the address space; everything then
starts looking like a pointer.

-- 
Han-Wen Nienhuys - han...@xs4all.nl - http://www.xs4all.nl/~hanwen

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


Re: Heinrich Ignaz Franz Biber

2012-09-08 Thread David Kastrup
Werner LEMBERG w...@gnu.org writes:

 Indeed, typesetting the first few bars of one of the Biber sonatas,
 together with correct MIDI output, would yield a very nice example.

 Three staffs: true pitch, scordatura, tablature.

 Entry would be presumably in true pitch plus string number (where
 not in lowest terms).

 Why tablature?

To illustrate the power of LilyPond for extracting information useful
for music theory and understanding.

-- 
David Kastrup

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


Re: [GLISS] why the hell all this fuss

2012-09-08 Thread David Kastrup
Han-Wen Nienhuys hanw...@gmail.com writes:

 On Sat, Sep 8, 2012 at 12:27 PM, David Kastrup d...@gnu.org wrote:

 No idea.  What we have under the umbrella of syntax discussion
 contains three things: lexical units, grammar and vocabulary, mostly
 implemented in lexer.ll, parser.yy, and *.ly respectively.  In order to
 keep syntax predictable, we want to be able to solve most problems just
 by extending the vocabulary.  That means that lexical units and grammar
 should be as generic, powerful, and simple as possible.  Specialized
 lexical modes take power from the vocabulary.  We want to avoid them as
 much as possible given our historic constraints.

 I completely agree with this. I have been giving some people a hard
 time in this discussion, but that is primarily for wanting to mess
 with either lexer.ll or parser.yy. As long as you don't that, I will
 not object fiercely to what syntax proposal anyone comes up with.

 Actually, is there a particular reason we are generating a C parser
 rather than a C++ parser?  The implications regarding marking and
 garbage collection of semantic values are rather awful.

 Right; all that should go away with guile v2 though, which uses Boehm GC

 Wrong.  If the parse stack sits in an automatic or heap array, no
 garbage collector in the world has a chance of knowing that values
 beyond the hand-implemented stack pointer are stale, will never get read
 again, should not be marked, and can be collected.

 Believing in magic will only get us so far.

 Can you clarify? Boehm GC should also be inspecting the stack for what
 might be pointers to memory that cannot be reclaimed.

It does not help.  If I have SCM stack[100] indexed by int stackpointer
with a current value of 42, Boehm GC has no way of knowing that
stack[43]..stack[100] will never get used again because every increment
of stackpointer will be accompanied with overwriting the respective
stack entry.

 See also

 http://www.gnu.org/software/guile/manual/html_node/Conservative-GC.html

 if your point is that some blocks will not be GC'd, then that is
 nothing new; pre-1.8 guile does not guarantee that, and in general
 conservative GC cannot guarantee that. Conservative GC is problematic
 if the heap is large compared to the address space; everything then
 starts looking like a pointer.

It also does not help with any stack implementation that does not clean
out cells as they become unused by virtue of the stackpointer moving
across them.

-- 
David Kastrup

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


Re: Heinrich Ignaz Franz Biber

2012-09-08 Thread Keith OHara
David Kastrup dak at gnu.org writes:

 
 Werner LEMBERG wl at gnu.org writes:
 
  Actually, it's been in the back of my head for a while that those
  pieces could be a great demo for Lilypond, particularly in respect
  of being able to generate both written and sounding-pitched parts
  for violin from the same material without any stupid tricks.
 
  Indeed, typesetting the first few bars of one of the Biber sonatas,
  together with correct MIDI output, would yield a very nice example.
 
 Three staffs: true pitch, scordatura, tablature.
 
 Entry would be presumably in true pitch plus string number (where not in
 lowest terms).
 

... and then a music function inspired by those that figure string-number
for tablature to generate the false-pitches for scordatura.

On the other hand, the existing sources are manuscripts written in 
false-pitch, so writing a function to convert from false-pitch to true-pitch
would make initial entry easier.  There are some tricks required either way.

Since staff-positions correspond to scale steps one-to-one, a natural
LilyPond kind of pseudo-scordatura would have the staff lines and ledger 
lines at un-equally-spaced positions -- distorting the staff lines to 
represent the tuning but leaving the note-head positions alone.


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


Re: change defaults for dot spacing in repeat sign to accommodate tab staves (issue 6488097)

2012-09-08 Thread k-ohara5a5a


http://codereview.appspot.com/6488097/diff/3001/scm/bar-line.scm
File scm/bar-line.scm (right):

http://codereview.appspot.com/6488097/diff/3001/scm/bar-line.scm#newcode178
scm/bar-line.scm:178: ;; the default distance between centre of dots is
composed of
Have you considered working entirely in staff-positions?
.. placing repeat dots at the first pair of positions with at least a
full staff-position gap for each dot.

Then style changes (tiny, heavy staves for miniature scores, or
widely-spaced tabStaff that really should have fatter repeat-dots) will
not change the position of the dots.

http://codereview.appspot.com/6488097/

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


Re: change defaults for dot spacing in repeat sign to accommodate tab staves (issue 6488097)

2012-09-08 Thread dak

On 2012/09/08 18:54:07, Keith wrote:

http://codereview.appspot.com/6488097/diff/3001/scm/bar-line.scm
File scm/bar-line.scm (right):



http://codereview.appspot.com/6488097/diff/3001/scm/bar-line.scm#newcode178

scm/bar-line.scm:178: ;; the default distance between centre of dots

is composed

of
Have you considered working entirely in staff-positions?
.. placing repeat dots at the first pair of positions with at least a

full

staff-position gap for each dot.



Then style changes (tiny, heavy staves for miniature scores, or

widely-spaced

tabStaff that really should have fatter repeat-dots) will not change

the

position of the dots.


I agree with Keith that ignoring the various thicknesses altogether
would likely make things more predictable.

http://codereview.appspot.com/6488097/

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


Re: change defaults for dot spacing in repeat sign to accommodate tab staves (issue 6488097)

2012-09-08 Thread Benkő Pál
ok, thinking about a new patch.

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


Re: Fixes position of mensural c clef (issue 6503091)

2012-09-08 Thread Werner LEMBERG
 I fully agree.  Since we have no support for (3) yet, I will do a bit
 of (2), and I really hope that Phil can bear with me :-)
 
 Is it really such a big deal if the code formatting is not perfectly
 consistent in every little detail?  In particular, I would favor
 option
 
   5. (relax 2 a bit) [...]

My `a bit of (2)' is exactly your (5).


Werner

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


Re: Heinrich Ignaz Franz Biber

2012-09-08 Thread Werner LEMBERG

 It's a violin part using a G-clef, together with a basso continuo
 staff.

Oops, please ignore the attached image.


Werner

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


Doc: Typos to LM - Fundamental and tweaks.itely (issue 6497103)

2012-09-08 Thread tdanielsmusic


http://codereview.appspot.com/6497103/diff/1/Documentation/learning/fundamental.itely
File Documentation/learning/fundamental.itely (right):

http://codereview.appspot.com/6497103/diff/1/Documentation/learning/fundamental.itely#newcode2921
Documentation/learning/fundamental.itely:2921: f16 ees f d g aes g f ees
d e8 ees16 f ees d |
Sorry James, the tie was correct.  It's
the pitch that was wrong - should be ees8 ~

http://codereview.appspot.com/6497103/diff/1/Documentation/learning/tweaks.itely
File Documentation/learning/tweaks.itely (right):

http://codereview.appspot.com/6497103/diff/1/Documentation/learning/tweaks.itely#newcode1701
Documentation/learning/tweaks.itely:1701: be necessary to override this
automatic  behavior.  This can be done for
Don't need 2 spaces here

http://codereview.appspot.com/6497103/diff/1/Documentation/learning/tweaks.itely#newcode1702
Documentation/learning/tweaks.itely:1702: whole sections of music or
even  for an individual note.  The property
... or here

http://codereview.appspot.com/6497103/diff/1/Documentation/learning/tweaks.itely#newcode1703
Documentation/learning/tweaks.itely:1703: which controls this  behavior
is the @code{direction} property of each
... or here

http://codereview.appspot.com/6497103/diff/1/Documentation/learning/tweaks.itely#newcode1705
Documentation/learning/tweaks.itely:1705: number of  ready-made commands
which avoid your having to code explicit
... or here

http://codereview.appspot.com/6497103/

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


Re: change defaults for dot spacing in repeat sign to accommodate tab staves (issue 6488097)

2012-09-08 Thread Keith OHara

I guess you are thinking we bring the dots inside the staff if there is at 
least one staff-postion of space for each dot (as in 2-line percussion staves) 
and continue to move them closer to the center if we find locations with at 
least two-staff-positions of space for each dot, or more space than we have 
found so far.


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


Re: Fixes position of mensural c clef (issue 6503091)

2012-09-08 Thread lemzwerg

I was aware of a slight difference, although actually I'm
not certain it's that important - these are machine drawn
glyphs intending to replicate hand-drawn clefs from the
15th century.  How important is 0.1 staff space?


This is not the point.  Your are changing the shape without documenting
this fact.  And the problem is not 0.1 staff space but loosing the
vertical symmetry for no good reasons.


I use Gedit and by default for mf files it puts tabs at 4 spaces,
and so the indenting looked completely awry.


Good goodness!  This is a plain wrong default.  If in doubt, *always*
use 8 spaces for a tab.  This is UNIX standard since the very beginning.
 Everything else is evil.


IMHO mixing tabs and spaces is a really bad idea for that
reason - different editors indent different ways.


Hmm, the rule `1 physical tab = 8 spaces' is standard on UNIX boxes
since 30 years? 40 years?


As for the overlaps.  Ditto I'll look at that.  The original code
calculated end points in a very odd way - it allowed, for example,
of different amounts of shift between the breves, and then ignored
that in the calculation of the decorations.  I'll see if I can
improve this.


Thanks.


http://codereview.appspot.com/6503091/

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


Re: Fixes position of mensural c clef (issue 6503091)

2012-09-08 Thread Phil Holmes
- Original Message - 
From: lemzw...@googlemail.com
To: philehol...@googlemail.com; w...@gnu.org; gra...@percival-music.ca; 
m...@philholmes.net

Cc: lilypond-devel@gnu.org; re...@codereview-hr.appspotmail.com
Sent: Saturday, September 08, 2012 9:52 PM
Subject: Re: Fixes position of mensural c clef (issue 6503091)



I was aware of a slight difference, although actually I'm
not certain it's that important - these are machine drawn
glyphs intending to replicate hand-drawn clefs from the
15th century.  How important is 0.1 staff space?


This is not the point.  Your are changing the shape without documenting
this fact.  And the problem is not 0.1 staff space but loosing the
vertical symmetry for no good reasons.


My point is that there is no vertical symmetry in hand-drawn 15C clefs, so 
there is no point it trying to recreate it in 21C machine drawn clefs. 
Whoever created the original clef made it arbitrarily symmetrical, with no 
justification, so changing this needs no other justification.


--
Phil Holmes 



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


Re: change defaults for dot spacing in repeat sign to accommodate tab staves (issue 6488097)

2012-09-08 Thread benko . pal

sorry, I'm confused.
do we want to support
- NR 2.5.1 style 2-line percussion staves (setting both line-count and
staff-space to 2 instead of setting just line-positions to (-2 2))?
- default TabStaff's (even line-count, 1.5 staff-space)?

if we want to support both of those without changing dot size,
calculations cannot be based on line-positions only, staff-space must be
considered.  if we consider staff-space, issue 2648 must be taken care
of.

http://codereview.appspot.com/6488097/

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


Re: change defaults for dot spacing in repeat sign to accommodate tab staves (issue 6488097)

2012-09-08 Thread Keith OHara

On Sat, 08 Sep 2012 15:26:21 -0700, benko@gmail.com wrote:


do we want to support
- NR 2.5.1 style 2-line percussion staves (setting both line-count and
staff-space to 2 instead of setting just line-positions to (-2 2))?
- default TabStaff's (even line-count, 1.5 staff-space)?

if we want to support both of those without changing dot size,
calculations cannot be based on line-positions only, staff-space must be
considered.


I suggest you consider both the gaps between line-positions (prefer gap of 2 
staff-positions)
and the full range of line-positions (prefer to have repeat dots within the 
staff)

If someone writes tablature and wants a staff-space = 2 for some reason, he 
probably want the repeat dots in their usual positions. (His choice on whether 
to also increase the dot size.)

If someone writes 2-line percussion somewhat more narrow, he will probably want 
the repeat dots inside the staff.



http://codereview.appspot.com/6488097/



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