A framework for efficient and rapid development of cross-platform audio applications

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.

[1]  Udo Zoelzer,et al.  DAFX: Digital Audio Effects , 2011 .

[2]  Ralph E. Johnson,et al.  An interactive environment for object-oriented music composition and sound synthesis , 1988, OOPSLA '88.

[3]  David H. Laidlaw,et al.  The application visualization system: a computational environment for scientific visualization , 1989, IEEE Computer Graphics and Applications.

[4]  Stephen Travis Pope The well-tempered object: musical applications of object-oriented software technology , 1991 .

[5]  Roger B. Dannenberg Combining Visual and Textual Representations for Flexible Interactive Audio Signal Processing , 2004, ICMC.

[6]  Xavier Amatriain,et al.  A dataflow pattern catalog for sound and music computing , 2006, PLoP '06.

[7]  Steve Kubica,et al.  Cantata: visual programming environment for the Khoros system , 1995, COMG.

[8]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[9]  Xavier Amatriain,et al.  A Domain-Specific Metamodel for Multimedia Processing Systems , 2007, IEEE Transactions on Multimedia.

[10]  C Haythornwaite,et al.  Gamma, E., Helm, R., Johnson, R. & Vlissides, J. Design Patterns: Elements of Reusable Object Oriented Software. New York: Addison-Wesley, 1995. , 2002 .

[11]  Amar Chaudhary,et al.  An Open Architecture for Real-Time Audio Processing Software , 1999 .

[12]  David A. Wilson,et al.  C++ Programming With Macapp , 1990 .

[13]  Tino Lourens,et al.  TiViPE - Tino's Visual Programming Environment , 2004, Proceedings of the 28th Annual International Computer Software and Applications Conference, 2004. COMPSAC 2004..

[14]  Gérard G. Medioni,et al.  A modular middleware flow scheduling framework (poster session) , 2000, ACM Multimedia.

[15]  Gérard G. Medioni,et al.  A Modular Software Architecture for Real-Time Video Processing , 2001, ICVS.

[16]  Joachim Haas SALTO A Spectral Domain Saxophone Synthesizer , 2001 .

[17]  Philipp Ackermann,et al.  Direct manipulation of temporal structures in a multimedia application framework , 1994, MULTIMEDIA '94.

[18]  Ralph Johnson,et al.  An interactive environment for object-oriented music composition and sound synthesis , 1988, OOPSLA 1988.

[19]  Stephen L. Burbeck,et al.  Applications programming in smalltalk-80: how to use model-view-controller (mvc) , 1987 .

[20]  Xavier Amatriain CLAM: A Framework for Audio and Music Application Development , 2007, IEEE Software.

[21]  Edward A. Lee,et al.  Overview of the Ptolemy project , 2001 .

[22]  Jean-Julien Aucouturier,et al.  Ten Experiments on the Modeling of Polyphonic Timbre. (Dix Expériences sur la Modélisation du Timbre Polyphonique) , 2006 .

[23]  Donald Roberts Evolve Frameworks into Domain-Specific Languages , 1997 .

[24]  David García,et al.  The CLAM Annotator: A Cross-Platform Audio Descriptors Editing Tool , 2005, ISMIR.

[25]  Dragoş-Anton Manolescu,et al.  A Data Flow Pattern Language , 1997 .

[26]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[27]  Victor Lazzarini SOUND PROCESSING WITH THE SndObj LIBRARY: AN OVERVIEW , 2001 .

[28]  Alexandre R. J. François,et al.  A modular middleware flow scheduling framework (poster session) , 2000, ACM Multimedia.

[29]  Ed F. Deprettere,et al.  Context-aware process networks , 2003, Proceedings IEEE International Conference on Application-Specific Systems, Architectures, and Processors. ASAP 2003.

[30]  Pierre Cointe,et al.  The Formes system: a musical application of object-oriented concurrent programming , 1987 .

[31]  Xavier Amatriain,et al.  An Object-oriented metamodel for digital signal processing with a focus on audio and music , 2005 .

[32]  David García,et al.  CLAM: an OO framework for developing audio and music applications , 2002, OOPSLA '02.

[33]  Chandrasekhar Ramakrishnan,et al.  The CREATE Signal Library ("Sizzle"): Design, Issues, and Applications , 2003, ICMC.

[34]  Paul F. Whelan,et al.  Machine Vision Algorithms in Java: Techniques and Implementation , 2000 .

[35]  H. Lucic,et al.  Developing multimedia services using high-performance concurrent communication design patterns , 2003, Proceedings of the 7th International Conference on Telecommunications, 2003. ConTEL 2003..

[36]  Guy E. Garnett,et al.  Virtual digital signal processing in an object-oriented system , 1989 .

[37]  Edward A. Lee,et al.  Dataflow process networks , 2001 .

[38]  George Tzanetakis,et al.  MARSYAS3D: A PROTOTYPE AUDIO BROWSER-EDITOR USING A LARGE SCALE IMMERSIVE VISUAL AND AUDIO DISPLAY , 2001 .

[39]  Marian Petre,et al.  Usability Analysis of Visual Programming Environments: A 'Cognitive Dimensions' Framework , 1996, J. Vis. Lang. Comput..

[40]  Lawrence A. Rowe,et al.  Design and performance of the Berkeley Continuous Media Toolkit , 1997, Electronic Imaging.

[41]  Andrei Alexandrescu,et al.  Modern C++ Design , 2001 .

[42]  Stephen Travis Pope,et al.  The Well-Tempered Object: Musical Applications of Object-Oriented Software Technology , 1992 .

[43]  Mark Guzdial,et al.  Squeak - open personal computing and multimedia , 2001 .

[44]  Kent L. Beck,et al.  Test-driven Development - by example , 2002, The Addison-Wesley signature series.

[45]  Erich Gamma,et al.  Design and Implementation of ET++, a Seamless Object-Oriented Application Framework , 1989, Struct. Program..

[46]  Erich Gamma,et al.  Design and Implementation of ET++, a Seamless Object-Oriented Application Framework 1 , 1989 .

[47]  Pau Arumí,et al.  Developing Cross-Platform audio and Music Applications with the CLAM Framework , 2005, ICMC.

[48]  Miller Puckette,et al.  Pure Data , 1997, ICMC.

[49]  Perry R. Cook,et al.  Synthesis toolkit in C , 2002, SIGGRAPH 1996.

[50]  Miller Puckette,et al.  Max at Seventeen , 2002, Computer Music Journal.

[51]  Pau Arumí,et al.  A Data Flow Pattern Language for Audio and Music Computing , 2006 .

[52]  Barry Vercoe,et al.  A Manual for the Audio Processing System and Supporting Programs with Tutorials , 2001 .

[53]  David L. Tennenhouse,et al.  The VuSystem: A Programming System for Compute-Intensive Multimedia , 1996, IEEE J. Sel. Areas Commun..

[54]  Matthew Wright Implementation and Performance Issues with OpenSound Control , 1998, ICMC.

[55]  X. Amatriain,et al.  XML as a means of control for audio processing, synthesis and analysis , 2001 .