Frequenly Asked Questions

From Clam

Contents

General

What is CLAM?

CLAM is a software framework for research and application development on the audio and music domain. It provides means to perform complex audio signal analysis, transformations and synthesis. It also provides a uniform interface to common tasks on audio applications such as accessing audio devices and audio files, thread safe communication with the user interface and DSP algorithms recombination and scaling.

You can use CLAM as a library to program your applications in C++ but you can also use graphical tools to build full applications without coding.

CLAM is distributed along with some example applications that are usefull by themselves.

What does CLAM stands for?

CLAM is the acronym for C++ Library for Audio and Music and it is also a pun on the catalan word 'clam' which means clamor, a continuous sound produced by a large number of people as to show approval or disapproval of a given event.

Is CLAM a "library" or a "framework"?

Despite the name, CLAM is a software framework as defined by Ralph E. Johnson. CLAM does not only offer a set of functionalities but also provides a conceptual metamodel or way of doing things. Read Amatriain's PhD thesis if you are interested on this theoretical discussion.

Will CLAM suit my needs?

This is of course the million dollar question. It is difficult to be sure whether CLAM can suit your needs until you really try it out. Nevertheless, here are a few hints that may help you decide:

  • CLAM can be used for audio analysis and synthesis It is specially well-suited for spectral analysis/synthesis
  • It includes features that make it suitable for Music Information Retrieval
  • It can be used to build real-time, efficient applications
  • In any case you should keep on reading the rest of this FAQ as well as any other CLAM documentation that can help you out in the decision.

Why does CLAM depend on so many 3rd party libraries?

CLAM aims at offering all necessary services for building an audio and music application. This implies many different tools and possible requirements. Some of those tools already exist and, as it makes no sense implementing them from scratch, all we do is take them and provide them all under an uniform interface that eases their combination.

CLAM would be unthinkable without the great work of all those developers.

Which other projects are using CLAM?

For third party (non-UPF) scientific citations take a look at CLAM citations.

For third party (non-UPF) software projects take a look at 3rd Party Projects Using CLAM.

Are there any similar frameworks?

There are a few frameworks that overlap with CLAM's goals.

If you are only interested in audio analysis and feature extraction you should check:

If you are interested only in audio synthesis you should check:

And if you are looking for a framework with both analysis and synthesis capabilities check:

In any case, CLAM presents both conceptual and practical differences with all of them. If you are interested in a thorough presentation of CLAM alternatives and how they compare to our framework please refer to X. Amatriain's phd.

Documentation

I want to start using CLAM, how do I approach CLAM as user or as developer?

The guide "Approaching CLAM" will advice you the proper steps to take depending on your goals and level of expertise.

I want to get involved with CLAM project, which steps should I take?

We often advice eventual contributors to follow those steps

I want to upgrade my code to a new CLAM version, what should I change?

The Version Migration Guide summarizes all the sensible changes that you will require to upgrade your code from one CLAM version to the next one.

Compilation

Why do I get an 'Undefined Interface' error when compiling the NetworkEditor

This error is normally caused because the moc command does not receive the proper '-I' option pointing to the path of Qt4's QtDesigner includes.

Often this error is due to a missconfiguration of the QTDIR environment path. But this problem is solved in a distinct way depending on the platform. Check the INSTALL file and the user contributed platform specific installation guides on the wiki.