Abstract
In this article, we present CLAM, a C++ software framework, that offers a complete development and research platform for the audio and music domain. It offers an abstract model for audio systems and includes a repository of processing algorithms and data types as well as all the necessary tools for audio and control input/output. The framework offers tools that enable the exploitation of all these features to easily build cross-platform applications or rapid prototypes for media processing algorithms and systems. Furthermore, included ready-to-use applications can be used for tasks such as audio analysis/synthesis, plug-in development, feature extraction or metadata annotation. CLAM represents a step forward over other similar existing environments in the multimedia domain. Nevertheless, it also shares models and constructs with many of those. These commonalities are expressed in the form of a metamodel for multimedia processing systems and a design pattern language.
Similar content being viewed by others
References
Ackermann, P.: Direct manipulation of temporal structures in a multimedia application framework. In: Proceedings of the 1994 ACM Multimedia Conference, 1994
Alexandrescu A. (2001). Modern C++ design. Addison–Wesley, Pearson Education, New York
Amatriain, X.: An object-oriented metamodel for digital signal processing with a focus on audio and music. PhD thesis, Universitat Pompeu Fabra, Barcelona, Spain, 2004
Amatriain X. (2007). Clam: a framework for audio and music application development. IEEE Softw. 24(1): 82–85
Amatriain X. (2007). A domain-specific metamodel for multimedia processing systems. IEEE Trans. Multimed. 9(6): 1284–1298
Amatriain, X., Arumi, P.: Developing cross-platform audio and music applications with the CLAM Framework. In: Proceedings of International Computer Music Conference, 2005
Amatriain X., Bonada J., Loscos A. and Serra X. (2002). DAFX: Digital Audio Effects (Udo Z+áalzer ed.), chapter Spectral Processing. Wiley, New York, 373–438
Amatriain, X., de Boer, M., Robledo, E., Garcia, D.: CLAM: an OO framework for developing audio and music applications. In: Proceedings of the 2002 Conference on Object Oriented Programming, Systems and Application (OOPSLA 2002)(Companion Material), Seattle, USA. ACM, New York (2002)
Amatriain, X., Massaguer, J., Garcia, D., Mosquera, I.: The clam annotator: a cross-platform audio descriptors editing tool. In: Proceedings of the 2005 International Symposium on Music Information Retrieval, ISMIR ’05, 2005
Arumi, P., Garcia, D., Amatriain, X.: A dataflow pattern language for sound and music computing. In: Proceedings of Pattern Languages of Programming (PloP 06), 2006
Aucouturier, J.: Ten experiments on the modelling of polyphonic timbre. PhD thesis, University of Paris 6/Sony CSL Paris, 2006
Beck K. (2000). Test Driven Development by Example. Addison– Wesley, New York
Burbeck, S.: Application programming in smalltalk-80: how to use model-view-controller (mvc). Technical report, Xerox PARC, 1987
Chaudhary, A., Freed, A., Wright, M.: An open architecture for real-time audio processing software. In: Proceedings of the Audio Engineering Society 107th Convention, 1999
Cointe P., Briot J.P. and Serpette B. (1987). Object-Oriented Concurrent Programming, chapter The FORMES Language: a Musical Application of Object Oriented Concurrent Programming. MIT Press, Cambridge
Cook, P.: Synthesis Toolkit in C++. In: Proceedings of the 1996 SIGGRAPH, 1996
Dannenberg, R.B.: Combining visual and textual representations for flexible interactive audio signal processing. In: Proceedings of the 2004 International Computer Music Conference (ICMC’04) (2004)
Dannenberg, R.B.: Combining visual and textual representations for flexible interactive audio signal processing. In: Proceedings of the 2004 International Computer Music Conference (ICMC’04) (2004)
Fowler M., Beck K., Brant J., Opdyke W. and Roberts D. (1999). Refactoring: improving the design of existing code. Addison–Wesley, New York
François, A.R.J., Medioni, G.G.: A modular middleware flow scheduling framework. In: Proceedings of ACM Multimedia 2000, pp. 371–374, Los Angeles, CA, November 2000
François, A.R.J., Medioni, G.G.: A modular software architecture for real-time video processing. In: IEEE International Workshop on Computer Vision Systems, pp. 35–49. Vancouver, B.C., Canada, July 2001
Johnson R., Gamma E., Helm R. and Vlissides J. (1996). Design Patterns—Elements of Reusable Object-Oriented Software. Addison– Wesley, New York
Garcia, D., Amatrian, X.: XML as a means of control for audio processing, synthesis and analysis. In: Proceedings of the MOSART Workshop on Current Research Directions in Computer Music, Barcelona, Spain, 2001
Green T.R.G. and Petre M. (1996). Usability analysis of visual programming environments: a “cognitive dimensions” framework. J. Vis. Lang. Comput. 7(2): 131–174
Haas, J.: SALTO—a spectral domain saxophone synthesizer. In: Proceedings of MOSART Workshop on Current Research Directions in Computer Music, Barcelona, Spain, 2001
Hebel K.J. (1991). The well-tempered object. musical applications of object-oriented software technology, chapter Javelina: An Environment for Digital Signal Processor Software Development. MIT Press, Cambridge, 171–187
Hylands C. (2003). Overview of the Ptolemy Project. Technical report, Department of Electrical Engineering and Computer Science, University of California. Berklee, CA, USA
Johnson R.E. and Foote J. (1988). Designing Reusable Classes. J. Object Oriented Program. 1(2): 22–35
Lazzarini, V.: Sound processing with the SndObj Library: an overview. In: Proceedings of the 4th International Conference on Digital Audio Effects (DAFX ’01), 2001
Lee, E.A., Park, T.: Dataflow process networks. In: Proceedings of the IEEE, vol. 83, pp. 773–799 (1995)
Lindblad C.J. and Tennenhouse D.L. (1996). The VuSystem: A Programming System for Compute-Intensive Multimedia. IEEE J. Sel. Areas Commun. 14(7): 1298–1313
Lourens, T.: TiViPE—Tino’s visual programming environment. In: Proceedings of the 28th Annual International Computer Software and Applications Conference (COMPSAC’04), pp. 10–15, 2004
Lucid, H., Huljenid, D.: Developing multimedia services using high-performance concurrent communication design patterns. In: Proceedings of the 7th International Conference on Telecommunications. ConTEL 2003, 2003
Manolescu, D.A.: A dataflow pattern language. In: Proceedings of the 4th Pattern Languages of Programming Conference, 1997
Mayer-Patel, K., Rowe, L.: Design and performance of the Berkeley continuous media toolkit. In: Proceedings of Multimedia Computing and Networking 1997, pp. 194–206, San Jose, CA (1997)
Mellinger D.K., Garnett G.E. and Mont-Reynaud B. (1991). The Well- tempered Object Musical Applications of Object-Oriented Software Technology, chapter Virtual Digital Signal Processing in an Object-Oriented System. MIT Press, Cambridge, 188–194
Parks, T.M.: Bounded Schedule of Process Networks. PhD thesis, University of California at Berkeley, 1995
Pope S.T. (2001). Squeak: Open Personal Computing and Multimedia, chapter Music and Sound Processing in Squeak Using Siren. Prentice- Hall, Englewood Cliffs
Pope, S.T., Ramakrishnan, C.: The Create Signal Library (“Sizzle”): Design, Issues and Applications. In: Proceedings of the 2003 International Computer Music Conference (ICMC ’03), 2003
Puckette, M.: Pure data. In: Proceedings of the 1996 International Computer Music Conference, pp. 269–272 (1996)
Puckette M. (2002). Max at seventeen. Comput. Music J. 26(4): 31–43
Roberts, D., Johnson, R.: Evolve frameworks into domain-specific languages. In: Proceedings of the 3rd International Conference on Pattern Languages for Programming, Monticelli, IL, USA, September 1996
Robledo, E.: RAPPID: robust real time audio processing with CLAM. In: Proceedings of 5th International Conference on Digital Audio Effects, Hamburg, Germany, 2002
Scaletti, C., Johnson, R.E.: An interactive environment for object-oriented music composition and sound synthesis. In: Proceedings of the 1988 Conference on Objec-Oriented Programming, Systems, Languages, and Applications (OOPSLA’88), pp. 25–30, September 1988
Tzanetakis, G., Cook, P.: Marsyas3D: a prototype audio browser-editor using a large-scale immersive visual and audio display. In: Proceedings of the International Conference on Auditory Display (ICAD). IEEE, 2001
Tzanetakis G. and Cook P. (2002). Audio Information Retrieval using Marsyas. Kluewer, Dordrecht
Upson C. (1989). The application visualization system: a computational environment for scientific visualization. IEEE Comput. Graph. Appl. 9(4): 32–40
van Dijk, H.W., Sips, H.J., Deprettere, Ed F.: On context-aware process networks. In: Proceedings of the International Symposium on Mobile Multimedia & Applications (MMSA 2002), December 2002
Vercoe, B.L.: CSound. The CSound Manual Version 3.48. A Manual for the Audio Processing System and supporting program with Tutorials, 1992
Weinand, A., Gamma, E., Marty, R.: Design and implementation of ET++, a seamless object-oriented application framework. Struct. Program. 10(2) (1989)
Whelan P.F. and Molloy D. (2000). Machine Vision Algorithms in Java: Techniques and Implementation. Springer, Berlin
Wilson D.A. (1990). Programming With Macapp. Addison–Wesley, New York
Wright, M.: Implementation and performance issues with open sound control. In: Proceedings of the 1998 International Computer Music Conferen ce (ICMC ’98). Computer Music Association, 1998
www CLAM. CLAM website: http://www.iua.upf.es/mtg/clam, 2004.
www Dannenberg. Dannenberg website: http://www.cs.cmu.edu/rbd/doc/icmc2005workshop/, 2004
Young M., Argiro D. and Kubica S. (1995). Cantata: visual programming environment for the khoros system. Comput. Graph. 29(2): 22–24
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Amatriain, X., Arumi, P. & Garcia, D. A framework for efficient and rapid development of cross-platform audio applications. Multimedia Systems 14, 15–32 (2008). https://doi.org/10.1007/s00530-007-0109-6
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00530-007-0109-6