Subject: Re: Design and language for CASA implementation From: "Martin, Keith" <Keith_Martin(at)BOSE.COM> Date: Mon, 28 Apr 2003 13:20:09 -0400
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.