caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Diego Olivier Fernandez Pons <Diego-Olivier.FERNANDEZ-PONS@cicrp.jussieu.fr>
To: "Kontra, Gergely" <kgergely@mlabdial.hit.bme.hu>
Cc: Caml-list@inria.fr
Subject: Re: [Caml-list] types & design advices (musical program)
Date: Sat, 19 Oct 2002 16:54:49 +0200 (DST)	[thread overview]
Message-ID: <Pine.A41.4.44.0210191605260.3915850-100000@ibm1.cicrp.jussieu.fr> (raw)
In-Reply-To: <Pine.LNX.4.21.0210181614080.3940-100000@mlabdial.hit.bme.hu>

    Bonjour,

I did all my musical studies in France, so I may not use the same
vocabulary than you. If you do not understand what I mean (or think I
misunderstood what you were telling me), just feel free to ask more
explanations.

> Thx in advance. My future plan is automatic transcription from
> numeral bass to 4-voice choir (automatic music-theory example
> solver).

If you mean harmonisation, it is a well known problem and has been
studied in constraint programming world (since it is a declarative
problem). You should look to the Principles and Practice of Constraint
Programming Conference Proceedings (Springer LNCS) (I will give more
information monday)

I remember a research report from LIP6 (in english) explaining how
they did a oriented object constraint solver for music harmonisation
in SmallTalk, but LIP6 server being down, I haven't been able to
localize it.

There is also some papers by Xavier Rodet's and alii at Ircam (they
adapted the well known Lisp constraint programming engine Screamer to
solve music constraints in Open Music)

What you need is a small constraint solver. There is already one
in Caml (FaCiLe) which has been used to handle air traffic control by
the ENAC.

http://www.recherche.enac.fr/opti/facile/

If what you want to do is simple, it should be enougth.

But I am afraid FaCiLe code is not very clean. I read it once because
I wanted to include a simplex algorithme and I gave up. Roughtly it
uses :
- Objects to handle constraints
- A simple constraint repository
- AC6 constraint propagation algorithm
- Finite domains are represented by simply linked lists

If you face a combinatorial explosion problem, you may need to use
smarter tricks (but I really don't think it will be the case unless
you are trying to solve very huge music problems).

First try to define you own goals, constraint propagation rules and
search strategy (see advanced usage in FaCiLe manual). If it still
doesn't improve enought, then you will have to write down your own
constraint solver with smarter algorithms like :
- Diet trees to represent finite domains
- DAC or PC constraint propagation (only an idea, but I don't think
there is much to gain here, unless your problem has special
mathematical properties)
- Heuristics and a priority-search queue for your exploration
algorithms

I have written a prototype general purpose constraint solver (written
over Baire and my graph library) inpired by ALICE (Laurière 78) but it
is still at an experimental stage and will need several months of more
work, so do not hold your breath.

        Diego Olivier

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  parent reply	other threads:[~2002-10-19 14:56 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-18 11:11 Kontra, Gergely
2002-10-18 12:29 ` Diego Olivier Fernandez Pons
2002-10-18 14:40   ` Kontra, Gergely
2002-10-18 15:15     ` Thorsten Ohl
2002-10-19 14:54     ` Diego Olivier Fernandez Pons [this message]
     [not found] <Pine.LNX.4.21.0210210935280.26877-100000@mlabdial.hit.bme.hu>
2002-10-21 12:09 ` Diego Olivier Fernandez Pons

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.A41.4.44.0210191605260.3915850-100000@ibm1.cicrp.jussieu.fr \
    --to=diego-olivier.fernandez-pons@cicrp.jussieu.fr \
    --cc=Caml-list@inria.fr \
    --cc=kgergely@mlabdial.hit.bme.hu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).