lilypond-devel
[Top][All Lists]
Advanced

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

Re: How hard is something like CADB to do?


From: Carl D. Sorensen
Subject: Re: How hard is something like CADB to do?
Date: Sun, 31 Aug 2008 10:18:24 -0600



On 8/30/08 3:49 PM, "David Kastrup" <address@hidden> wrote:

> David Kastrup <address@hidden> writes:
>
>> CADB is sort of an international standard for transcribing diatonic
>> accordion music.  It consists of regular notes on one system, with
>> basically numbers arranged according to what button to press or pull in
>> another system below, then chords under that.
>>
>> An explanation of the notation can be found at
>> <URL:http://www.diato.fr/exptab2.htm>.  The same site has example
>> scores, like <URL:http://www.diato.fr/tablat/tab108.png>.
>
> [...]
>
>> So the problems boil down to
>>
>> a) the graphical representation (which requires fixed vertical space and
>> not normally additional horizontal space)

This is not particularly hard.  Initially it could be done as a markup (like
fret diagrams were).  Eventually it could become a context.

>>
>> b) some sort of fingering engine which one can feed the necessary
>> information for choosing its priorities

This would likely be done in scheme.  The tablature code is an example of
this.

>>
>> How would one go about implementing something like that in lilypond?
>> How would the work get structured?  What would require working on the
>> kernel, what on subsystems?  How well can the subsystems be separated?
>>

To get it done with a context, you would need to write some C++ code, along
with some lilypond code and some scheme code.  The FretBoards context would
likely serve as a template for this work, I would imagine.

>> How much intelligence can one reasonably program into the fingering
>> engine without having it explode in complexity?  It is thinkable to
>> tell it something like TeX's "badnesses" as overall penalties for
>> changing rows, changing bellows direction, and then let it minimize
>> over that?

Hard for me to say, since I don't understand how this works.  But lots of
the layout decisions are made in scheme code, so I would guess this is
doable.

>>
>> Or have a draft mode where, say, one has it pick one fingering
>> according to explicit priorities and indicate alternative fingerings
>> in different markup (small print, in parens or something), so that one
>> can incrementally override bad automatically chosen fingerings until
>> arriving at a good solution, in sort of a feedback loop?
>>

I don't see any problem with this -- but I don't know how one would
calculate these things.

>> Ok, but that's basically icing.  The main question is how hard it would
>> be to have it do the basic notation.
>
> Uh, this was not a feature request.  It was a request to the people who
> have actually implemented stuff in Lilypond to give me a sketch of the
> necessary work to be done, and in what areas they would need to be done,
> and how well-prepared Lilypond is for doing such things.

My take on this is that you will need to do the following:

1.  Write some C++ code to implement a translator

2.  Write some Scheme code to implement an engraver

3.  If you want to add to the input syntax, make changes to the parser.  But
I think it's possible you can do this with just named chords in chordmode,
which wouldn't require parser changes.

4.  Make some changes to assorted files to tie your new code into the
existing system (i.e. define grobs, grob-interfaces, etc.)

5.  Make some regression tests to demonstrate that the functionality works

6.  Write some documentation about how the functionality works.

The job is a fairly big job, but it can be started small and worked at in
manageable chunks.
>
> It was also a question about how well-prepared Lilypond is for embedding
> algorithms for what amounts to fingering instructions (converting to any
> kind of tablature has this problem: the more sparingly you can use
> hints for generating instrument-specific instructions, the better).
>

LilyPond is extremely well-prepared for embedding algorithms.  You will have
a great deal of flexibility in implementing your tablature.

The job will get bigger, though, when you need to investigate the status of
slurs, etc. to get your fingering instructions.


> So it's basically just a minute job on some questions.  They are just
> questions.  Just fire away, no preparation needed, no code.
>
> --
> David Kastrup, Kriemhildstr. 15, 44793 Bochum
>
>
>
>





reply via email to

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