Technical Program
Educators' Symposium
Doctoral Symposium
Student Research

Student Volunteers
Special Events
Housing Information
Registration Information

Wednesday 11:00-11:45 – Convention Ctr - Exhibit Hall 4A

2 CLAM: An OO Framework for Developing Audio and Music Applications

Xavier Amatriain
Music Technology Group - UPF, xavier.amatriain@iua.upf.es
Maarten de Boer
Music Technology Group - UPF, maarten@iua.upf.es
Enrique Robledo
Music Technology Group - UPF, erobledo@iua.upf.es
David Garcia
Music Technology Group - UPF, dgarcia@iua.upf.es

CLAM (C++ Library for Audio and Music) is a framework for developing cross-platform applications and research works in the audio and music domain. The framework offers general infrastructure and services that dramatically improve development speed and final code quality, thus enhancing re-usability and portability.

In the CLAM framework data types as well as processing and flow control entities are objects that respond to a well-defined and clean interface. For doing so we have had to fight against a well established idea in the DSP community: well structured code compromises run-time performance.

CLAM is unique and different to other existing solutions in many senses: it is more OO, it is written in C++, it is cross-platform, it is Free Software and it is efficient.

For implementing CLAM services the multiparadigm nature of the C++ programming language has been exploited. OO techniques have been combined with template metaprogramming, static dispatching or C-like macros to reduce the programmer’s effort.

The demo will consist of the execution of some sample applications such as: Spectral Delay: Real-time multiband delayRapidd: A real-time application that may be used in liveperformancesAnalysis/Synthesis: an offline application for spectral analysis, synthesis and transformations.Salto: A real-time midi-controlled sax synthesizer All demos will be run on Windows and Debian-Linux on a regular PC platform. Code will be shown for all applications and issues related to efficiency, robustness, code simplicity and readability will also be discussed.