lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Part Combiner


From: Kristof Bastiaensen
Subject: Re: Part Combiner
Date: Mon, 29 Aug 2005 03:03:57 +0200
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.7 (Sanjō) APEL/10.6 MULE XEmacs/21.4 (patch 17) (Jumbo Shrimp) (i386-debian-linux)

At Mon, 29 Aug 2005 00:52:17 +0200,
Han-Wen Nienhuys wrote:
> 
> ned Kristof Bastiaensen wrote:
> > Hi,
> > <snip>
> > 
> > I'd appriciate an answer for these issues.
> 
> Hi,
> 
> I'm somewhat reluctant to add the code, since it is a large body of code 
> that I don't understand well enough to deal with bugreports.

I am not sure if I could do something about this.  Perhaps I could
refactor the code a bit to make it clearer to understand.  Especially
the final part is too complicated.  I am considering if some kind of a
pattern-matcher could simplify the whole thing.

If there are comments that don't make sense, I would gladly modify
them.

> In addition, the whole design of the part-combiner will be trashed
> anyway when we have sensible music stream datastructures (see the
> mail in lilypond-devel by Erik S)
>

That looks interesting.  The music-stream datastructure looks to me
like an AST (Abstract Syntax Tree) for a compiler.  Many functional
languages (Haskell, Ocaml, SML) are based on such datatypes, and their
type-system makes handling such AST's especially easy, together with
other features like pattern-matching on types.

I don't see why these ideas affect the part-combiner.  The code is
already written, and integrating it in the current system would be
effortless (just patching it, basicly).  Fixing the last bugs would be
a bit of an effort, but I had the impression they were just small
bugs, and wouldn't require large rewrites of code.

> My conditions for integrating this patch are
> 
> - I will need a copyright disclaimer for the code
>

For me it is ok to add any (open-source) license.  I heard that
contributors for FSF owned projects need to sign a paper for copyright
issues.  If that is the case, then I'll fill in the necessary
paperwork (if I have the right papers).

> - There should be no regressions: ie. if your code should not have bugs 
> that the old code did not have.
>

It doesn't have as far as I know (as much as that is possible to say
about new code).  The regression tests that came with the previous
part-combiner will not work anymore, but that is deliberatly.  My
part-combiner only makes changes (from and to solo, a due, ...) for
larger blocks (with a rather complicated algorithm to determine the
beginning and end of blocks).  That is to prevent to many changes from
happening in a short time, making the score more cluttered and less
readable.  The regression tests are all small fragments, and my
part-combiner will likely put the whole fragment apart, a due or solo.

There are still bugs in it, but these bugs were also there in the old
part-combiner.  For example when there are two rests of different
length in the beginning of a measure, sometimes it eats the shorter
rest, leaving a hole where the shorter rest should have been.  I still
have a small file with examples that show these bugs.  If you would
like I could send them to the list.

> If you need the code, also consider to add it yourself;  \partcombine is 
> defined in ly/music-functions-init.ly , so it should not be hard to 
> write a partcombine-init.ly that defines a \myPartcombine and loads a 
> my-partcombine.scm file.
>

Ok, I'll probably do that for now.

> -- 
>   Han-Wen Nienhuys - address@hidden - http://www.xs4all.nl/~hanwen




reply via email to

[Prev in Thread] Current Thread [Next in Thread]