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

Re: Design and language for CASA implementation



Andrew,

As a reformed "author of CASA systems for music transcription using a
blackboard architecture", here's my tiny bit of insight:

You are going to need to develop and refine some signal-processing
primitives (filterbanks, envelope followers, onset detectors, harmonicity
detectors). For that, I would advise prototyping in Scilab or Octave and
then porting to C. The more you can isolate the signal-processing primitives
from your "CASA architecture", the happier you will be.

For implementing the architecture itself, I highly recommend Python. I'm not
that familiar with the Numeric and SciPy extensions, but I do know that it's
very easy to graft C functionality onto Python. Also, Python is very
readable, and it has excellent support for object-oriented programming
(which Octave -- if it is anything like Matlab -- does not). If you don't
take advantage of OO syntax, it's going to be hard to build a system of the
size and complexity you're talking about.

As for the architecture itself, I believe that you need a framework that
supports both bottom-up evidence gathering and top-down inference. Your
framework will eventually need to contain knowledge about the world, in the
form of instrument timbre models, constraints on how music is played, and so
on. The blackboard framework fits those requirements in a manner that allows
you to build intuitions about how the system works. There are probably other
architectures that will do the same, but I don't know of any.

Cheers,

--Keith

Disclaimer: I'm not familiar with Scilab.