Introduction

At the time CLAM was started the Music Technology Group of the Pompeu Fabra University had about thirty researchers involved in different projects all of them related to the development of algorithms and applications for Signal and Music Processing. Most of these applications were implemented in C++. It was then clear that the amount and quality of the lines of code coming from the different projects was becoming hardly manageable. Although the code had been written using an OO-might-be language like C++ and some classes existed here and there, basic design principles had not been observed and the result was highly unstructured, difficult to understand and hardly reusable. Flexibility and re-usability had been sacrificed in the sake of what was though to be ``more efficient''. This situation made it extremely difficult and time-consuming to integrate newcomers or new projects into the group. Bearing those ideas in mind, the CLAM project was started . Since then, an average of five programmers-developers have been working on it. (See more details on those practical issues in Annex A).

For designing the framework we had to fight against an idea that still has high acceptance in the DSP community: unstructured C-like code assures high performance at run-time. One of the main goals of our work has been to prove that a clean and structured design in general, and OO techniques in particular, do not have to imply an overhead in computational efficiency nor a limitation in flexibility for implementing different models belonging to a particular domain.

The framework has been already used successfully for a number of internal projects - some of them with high run-time performance requirements - like high quality time-stretching, sax synthesizer and high-level feature analysis, and it seems to have reached a somewhat mature stage. The project saw its first public release in November 2002, in the course of the AGNULA IST European project. AGNULA [www-Agnula, ] (A GNU Linux Audio distribution) focused on offering a complete Linux distribution, both in Debian and RedHat versions, promoting the use of free software in the audio and music domain.

The initial goal of the CLAM project was ``To offer a complete, flexible and platform independent Sound Analysis/Synthesis C++ platform to meet current and future needs of all MTG projects'' (quoted from CLAM's first Working Draft). Those initial objectives have slightly changed since then, mainly to accommodate to the fact that the library is no longer seen as an internal tool for the MTG but as a library that is licensed under the GPL [Free Software Foundation, ] (GNU Public License) terms and conditions.



Subsections
2004-10-18