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?
- 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:
- 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.
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:
- 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
- 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 is quite straightforward (please refer to the download page). In any case, once CLAM is deployed in your system all you will have to do is compile the required example.
- 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++.
- 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:
- Read and write multichannel audio files in virtually any format (wav, aiff, mp3, ogg...)
- Implement filters in the frequency domain
- Implement applications based on the FFT
- Compute statistical descriptors on the sound and its spectral features
- Passivate/activate objects into XML
- Use graphical plots to debug signal data objects
- Implement applications based on the LPC model
- Play audio in any platform Use frame-based signal constructs and dump them into XML or SDIF
- Connect simple Processing objects dynamically to form Networks
- Use the event-based Control mechanism to control run-time behaviour of Processing objects
- Create statical compositions of Processing objects
- Convert MIDI files into XML
- Implement a basic MIDI-controlled synthesizer
- Input and output MIDI messages into a system
- Implement spectral analysis based applications
- Implement a complex synthesizer based on the SMS model
- Implement analysis/synthesis applications including transformations and graphical user interface
- Create real-time spectral-domain analysis/synthesis applications, controlled from a GUI
- Define Processing Networks graphically and dynamically so as to build rapid prototypes
- ...
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.
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:
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 and CREATE at the University of California, Santa Bargara. Our group is distributed between sunny Barcelona and also sunny Santa Barbara. The team is lead by Xavier Amatriain from California and Pau Arumi from Barcelona. 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. At this moment it is being developed under a grant from the Catalan Government.
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.
![[CLAM]](../images/clamlogo.jpg)
![[MTG]](../images/mtglogo.png)