Another Audio Library?

What makes CLAM different from other similar solutions that already exist? In section 3.3 we will then make a more extensive study on the differences between CLAM and the environments presented in chapter 2. But it is interesting to highlight from the start what are the most important features of our framework that make it different to anything else.

  1. To begin with, CLAM is truly object-oriented. Extensive software engineering techniques have been applied in order to design a framework that is both highly (re)usable and understandable. Although the term sound object has been around for many years, and OO techniques have also been applied in many audio and music related applications, few of these have conceptually applied the ``everything is an object'' maxima. In our framework, all data types and processing or flow control entities are well-behaved objects.
  2. CLAM is comprehensive since it not only includes classes for processing but also for audio and MIDI input/output, XML serialization services, algorithm and data visualization and interaction, and multi-threading handling.
  3. CLAM deals with a wide variety of extensible data types that range from low-level signals (such as audio or spectrum) to higher-level semantic structures (such as musical phrase or segment).
  4. The framework is cross-platform. All the code is ANSI C++ and it is regularly compiled under Linux, Windows and Mac OSX using the most commonly used compilers. Even the code for input/output, visualization and multi-threading is cross-platform down to the lowest possible layer.
  5. The project is licensed under the GPL (GNU Public License) terms and conditions. Although we maintain the option of double licensing the framework (i.e. offering an alternative commercial license), everything offered in the public version is GPL and the project is therefore Free Software, open-source, and collaborative.
  6. CLAM is bound to survive. Even though its public success is by no means guaranteed, CLAM will surely remain the basis for all future developments in the MTG and thus will be maintained and updated on a regular basis.
  7. The framework can be used either as a regular C++ library or as a prototyping tool. In the first mode, the user can extend, adapt or optimize the framework functionality in order to implement a particular application. In the second mode, the user can easily build a prototype application in order to test a new algorithm or signal processing application.