CLAM FAQ


Will CLAM suit my needs?
What should be my background in order to use CLAM?
What can CLAM do?
Why does CLAM depend on so many 3rd party libraries?
Why is CLAM so hard to install/deploy?
Is CLAM a "library" or a framework?
Are there any similar frameworks?
Who is behind CLAM?
How should I approach CLAM?
What is the future of CLAM?
What if I want to use CLAM in a Proprietary system?




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:

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.

What should be my background in order to use CLAM?

CLAM can be used at many different levels and for different purposes so you background may vary depending on your particular requirements. In this sense we can distinguish at least the following three levels of usage:

  1. You just want to use a pre-compiled example such as SMSTools: In this case you are only required to have some previous signal processing knowledge in order to understand what is going on
  2. You want to use one of the provided examples: Then you will need to install CLAM and compile the example you are interested on. Installing CLAM in MS Windows is quite straightforward but in GNU/Linux it may be tricky depending on your distribution and whether you meet CLAM's requirements (please refer to the appropiate chapter in the documentation). In any case, once CLAM is deployed in your system all you will have to do is compile the required example. This is a one-liner in GNU/Linux but you will fight to fight your way in MS Visual C++ on Windows.
  3. You want to develop your own application: Appart from the previous requirements you will need some knowledge in C++ programming. It is true that some people learn CLAM and C++ at the same time but this might not be a gentle way of learning a language such as C++.
  4. You want to become a CLAM developer: All you need after the previous step is to send us in your code!

What can CLAM do?

Although CLAM can be used for many different purposes a good way to learn what it can do is to review the functionalities illustrated in the examples available in the repository. According to these examples you may use CLAM to:

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 adapt them to the CLAM interface or "way of doing things". Put in other words, CLAM would be unthinkable without the great work of all those developers.

Note that a different question is "why do I need library X if I am not going to use its features?". That is a flaw in CLAM's current deployment system on GNU/Linux that will be soon fixed (read next FAQ for more related details).

Why is CLAM so hard to install/deploy

This question refers to the difficulties of deploying CLAM on a GNU/Linux distribution though some questions may apply to other platforms.

The task of installing new non-standard components to a GNU/Linux distribution may be a tricky task anyhow but there are some reasons that make CLAM especially bound to give problems. These can be summarized in the following list:

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

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 X. Amatriain's phd if you are interested on this theoretical discussion

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:

  • STK
  • Open Sound World
  • Aura
  • 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 .

    Who is behind CLAM?

    CLAM is currently supported and developed by some members of the Music Technology Group at the Universitat Pompeu Fabra. Our group is located in sunny Barcelona and our head is Dr. Xavier Serra. CLAM has always had a stable core of four to 6 developers though none of us can really work even halftime on it

    CLAM has had support from a number of public European projects such as AGNULA or SIMAC and is used in many of our internal projects.

    How should I approach CLAM?

    There are different ways to approach CLAM that depend on your previous background. Our usual way to introduce CLAM to newbies is to point them to the "Introduction" and then to the CLAM "tutorial". This tutorial, though, is quite long and introduces other concepts appart from CLAM (such as the SMS model). In your case it might be easier to start off by reading some simpler examples. You will have to do it anyhow at some point.

    What is the future of CLAM?

    CLAM should soon be more stable once it reaches its 1.0 release. Read the CLAM Roadmap to learn what are the previsions. CLAM will be used internally so its continuity is more or less guaranteed. Nevertheless we hope that it can soon become more "collaborative" and we can start accepting contributions from external users

    What if I want to use CLAM in a non-Free project?

    CLAM is GPL and therefore Free as defined by the Free Software Foundation. This means that you can use it with no restrictions as long as the result remains Free. If you want to use it from within a proprietary application then you should definitely talk to us. We use a double licensing scheme (ala FFTW) so CLAM can be (and as a matter of fact has already been) licensed for non-free usages.