lilypond-devel
[Top][All Lists]
Advanced

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

How hard is something like CADB to do?


From: David Kastrup
Subject: How hard is something like CADB to do?
Date: Fri, 29 Aug 2008 15:49:21 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

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>.

The transcription of notes is not unique: a diatonic accordion will have
most notes available on both push and pull, and some available in more
than one row.  Different diatonic accordions have different layouts.
Bass notes and chords are (with the exception of one bass note IIRC)
usually unique and determine push or pull.  Legato will require not
changing the bellows direction.  For non-legato play, it is usually a
reasonable idea to have a balance between pushing and pulling so as not
to run out of air.

So there is quite a bit of intelligence involved into picking the right
way to play a note.

The decisions can be classed into a group of criteria, like deciding
whether to push or pull and/or deciding which row to use.

So the problems boil down to

a) the graphical representation (which requires fixed vertical space and
not normally additional horizontal space)

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

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?

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?

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?

Ok, but that's basically icing.  The main question is how hard it would
be to have it do the basic notation.

All the best,

-- 
David Kastrup





reply via email to

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