KITTy: A package for external patches communication management in Max/MSP – a progress report
António de Sousa Dias*, Paulo Ferreira Lopes**
Centre de Recherche Informatique et Création Musicale (CICM) – Université Paris VIII
Fundação para a Ciência e Tecnologia (FCT) — Lisbon
* firstname.lastname@example.org, ** email@example.com
We present KITTy, a package programmed in Max/MSP allowing users to design their own network of integrated external patches. This package provides persistence and state-storage mechanisms within a network scheme. Another important feature relies upon the capability to integrate stand- alone applications written in Max/MSP by other users.
Sound synthesis/processing, Musical Information: Normalization, Storage, Transmission. Environments for Music Composition
Approaches to software design for musical composition assistance and/or sound synthesis generally fall within two main categories. On one side we have a closed solution approach, a software tool supposed to carry a complete and specialized task, enough general as to serve a wide community but nonetheless closed to individual adaptation. On the other hand, there is an open solution approach, providing the possibility of software tailoring. The last approach presents itself generally in an environmental or kit form, allowing the adaptation of the software to the user needs at the cost of time-spent programming. Of course, there are solutions situated somewhere in between, as, for example, the use of plug-ins (e g, VST plug-ins), or the possibility of adding new modules to the original code, as in Csound (Vercoe 1986) or Max/MSP (Zicarelli 1998), or even that of generating a stand-alone application from a patch.
These different approaches correspond also to different composition approaches. In our own composition approach the use of different software tools (in the form of programs or patches constituting a network) led us to prefer an open solution, due to the compositional strategies we use, mainly with the Max/MSP/Jitter environment, along with the use of other software as Csound, OpenMusic (Agon 1997), among others.
The problem concerning the use of different external patches in Max/MSP lies in the lack of a method to keep track of external patches interconnection state. KITTy (provisory name) stands within the second category of software design approach described above, presenting itself in the form of a package containing a main patch and a series of proposed external patches allowing the constitution of a network where different patches contribute to sound processing.
The research direction carried with the development of KITTy can be traced out from two different issues. The first one deals with problems related to interface design and interaction (Ferreira Lopes, 2004). Concerning this point our research tries to establish a communication management facility by proposing to the user a surface structure (an interface) that enables him to trace his own path directing the emergence of an abstracted and underlying structure (an instrument).
Within this framework, among the various operations and transformations proposed in KITTy implementation, we observe that the achievement of the processes in which the computer is integrated as a mediator agent in the functionalities of instrument access, depends mainly on qualities of the interface, implemented interaction typologies and conversion models applied to different types of representation. This means that the total structure of operation of KITTy, conceived beforehand in the form of representations classified in symbolic systems categories, strongly depends on the interactions resulting from the various transformation operations, among which arithmetic operations, under a sub-symbolic level, translate directly extrapolated paradigms of the musical operations inside the major structure (the instrument).
The second issue focus the problems arising from the need of data transfer between different plateforms as a mean of preservation and knowledge constitution. This problem has been stressed in some of Risset writings (see for example Risset 1999) and there are some proposed solutions available (Risset, 1969, 1995, 2002; Lorrain, 1980; Sousa Dias, 2003).
Also, and prior to KITTy conception, one must mention the important conceptual aspects brought by Duchez (1991) and Solomos (1998) regarding the transformation of musical material, as well as the flexible and dynamical approaches provided by Bayle (1993), in the electro-acoustic music qualitative domain, or Vaggione (1998, 2001; see also Budon 2000) in a more specifically digital-based system, integrating the concepts of network, dynamics, flux and different types of representation within a compositional context. The use of some concepts borrowed from information science in the conception of KITTy can be traced from database systems theory (e. g. Delobel et al, 1991 or Benzaken, 1993); for a discussion on the artistic impact of these concepts see Manovich (2001).
3 KITTyÕs overview and description
Briefly, this work consists in the design of a Max/MSP patch responsible for sound output, which is able to manage a network of associated external patches to sound generation (a "Setup"), keeping all information concerning each patch current state, and also "photographs" ("Snapshots") of selected states of this network taken at different times.
The main difference between KITTy and other similar approaches consists in the existence of a memory allowing the permanence of the network in time, i. e., one can save a specific network, along with some of his states, for future re-use.
The external patches can be provided by the user, and their constitution corresponds somehow to the Òdegenerated instrumentsÓ referred by Mathews (1969), i. e., instruments that generate or process some kind of signal but not the final result.
3.1 General Structure
KITTy constitution is as follows:
á A main patch (see Fig. 1);
á Several text files: (1) a file containing the description of the signal input-output labels (ÒMatrixMenuÓ), (2) a file containing the local syntax (ÒOutput-matrix.stxÓ), (3) a file containing the names of associated patches (ÒPatchesMenuÓ), (4) a file keeping the persistence (Òtemp.stpÓ, at the application level - here Max/MSP) and (5) various files containing the description of different setups (<name>.stp);
á A folder for the subpatches containing: (1) a subfolder with all subpatches either used by the main patch, or to integrate in the associated external patches; (2) different folders for the associated external patches (not compulsory as it depends on the path preferences definitions).
Fig. 1 - Main patch (left) and three associated external patches, showing an example of audio signal flow.
3.2 Main features
There are some important features and properties of this "environment" that we must point out:
á Persistency. Once the main patch loads, it recovers the last network assembled as well as his current state before the patch closing.
á This environment is based upon a principle of delegation or trust. The main patch keeps all information concerning all associated external patches, but it doesn't know their meaning. Each external patch is responsible for the management of his own local syntax previously defined by the user.
á Presets have a double behaviour/. They are shared by all the instances of the same patch (presets are saved in the form of a common ÒcollÓ text file). However, even if modifications are not saved in the local presets files, they are saved in the Setup, allowing a cross-use of local-global states.
Fig. 2 - Patch template.
4 Association of External Patches
Patches are not integrated in the main patch: they are associated, but they keep their autonomy. Nevertheless, joining the network, that is, when invoked by the main patch, they become, in some way, instances of a class.
4.1 Description of the components to add to associated patches
Even if keeping their autonomy, are there changes to carry out in the external associated Patches. Those relate to the signal input and output, and to the introduction of Presets and local syntax. There is a patch template (Fig. 2) providing all subpatches to include in an external patch along with some help. Template textual files are also provided, in order to keep this process as simple as possible.
The list of the modules and modifications to make are as follows:
á Incorporation of a bypatcher containing a patch for the signal input (optional if it is a sound generator patch)
á Incorporation of a bypatcher containing a patch for signal output.
á A subpatches ensemble constituted by subpatches to the management and control of the messages local syntax and a Bypatcher whose purpose is the management of Presets.
á Finally one has to create two text files containing the syntax for the messages (<name of file>.stx) and Presets (<name of file>.prs). By default, these files have the name taken from their file-class with a different extension.
4.2 Main patch modifications
On the main patch level, this association is accomplished by means of the addition of a text line containing the name of the patch in a text file outside the main patch, in a ÒcollÓ text file syntax style. Thus, it is not necessary to make adaptations to the patch himself. This is valid also for the signal communication with external patches from other authors: once one gets the names of the "Send~"and"Receive~" objects in these Patches one only has to add these names to another text file containing the signal input and output names (ÒMatrixMenuÓ).
Hence, if KITTy can act, on the one hand, as a musical instrument, on the other hand it moves away from the concept of traditional instrument because it allows to reach:
á A gesture quantification of the corresponding musical contents.
á A temporal non-synchronization between the handling of control elements and the interface, and their repercussion in the musical results
á Musical results not directly related to the interface handling causality.
At the time of the writing of this paper, there are important aspects, among others, whose implementation is still in progress:
(1) Larger flexibility at the auto-reprogramming level: as an example, for the moment, all the inputs and outputs remain bi-channel (stereo). At the present moment, we are programming the possibility of different channel number controlled by scripts.
(2) The need for the introduction of control patches. Besides the parameter circulation between the main patch and external associated patches, the only circulating data type in the network is the audio signal data type. We are tackling the problems arising from the implementation of other types of data circulation, including, for example, MIDI data.
(3) The limitation of the memorization of some network instantaneous states ("Snapshots"). We are dealing with the design of mechanisms to record actions carried out along a certain time span, i. e., "gestural movies".
(4) Improved parsing methods to keep track of inconsistencies generated by the continuous network reorganization.
We have just presented KITTy, a package for patch network handling in Max/MSP, allowing users to interconnect their own external patches in a progressive, flexible but systematic way.
We believe that the main interest point in KITTy relies on the possibility of memory capabilities integration in a system preserving at the same time the flexibility of patch programming, responding to compositional needs.
The fact that KITTyÕs core is presented as a patch instead of a stand alone application, allows the interconnection with other Max/MSP stand alone applications as, for example, Irin Ð former Mixage (Caires, 2003) or Source_Mov Ð Spatial sound diffusion application (Ferreira Lopes 1999).
We would like to thank Horacio Vaggione for his support on this research as well as his advise and comments. We would like also to thank Carlos Caires for the stimulating discussions on this subject.
This work is developed with the support of Funda‹o para a Cincia e Tecnologia, in Lisbon.
[Agon 1997] Agon, C. and Assayag, G. (1997). OpenMusic (OM) 4.4 User's Manual Reference & Tutorial. Paris : IRCAM - Centre Georges Pompidou.
[Benzaken 1993] Benzaken, V. (1993). Bases de DonnŽes OrientŽes Objet - Origines et Principes. Paris : Armand Colin ƒditeur.
[Budon 2000] Budon, O. ÒComposing with Objects, Networks and Time Scales: An Interview with Horacio VaggioneÓ, Computer Music Journal 24:3, pp. 9-22.
[Caires 2003] Caires, C. (2003). Ç Vers une Žcriture des processus de micromontage È in Actes des diximes JournŽes dÕInformatique Musicale, Montbeliard : AFIM.
[Delobel et al 1991] Delobel, C.; LŽcluse, Ch.; Richard, Ph (1991). Bases de DonnŽes : des systŽmes Relationnels aux systmes ˆ Objets. Paris: InterEditions.
[Duchez 1991] Duchez, M.-E. (1991). "LÕŽvolution scientifique de la notion de matŽriau musical" in : Barrire, Jean-Baptiste (ƒd.), Le Timbre - MŽtaphore pour la composition. Paris : Christian Bourgois / IRCAM, pp47-81.
[Ferreira Lopes 1999] Ferreira Lopes, P. (1999). Rapport de Recherche. Karlsruhe: Zentrum fŸr Kunst Medientechnologie / Funda‹o Cincia e Tecnologia; 1999.
[Ferreira Lopes 2004] Ferreira Lopes, P. (2004). ƒtude de modlesinteractifs et dÕinterfaces de contr™le en temps rŽel pour la composition musicale. Paris : UniversitŽ Paris VIII (Thse de doctorat).
[Lainhart 1993] Lainhart, R.; Chadabe, J.; Zicarelli, D. (1997-2003). M - An Intelligent Musical Instrument: Manual v2.6. San Francisco, CA: Cycling74.
[Lorrain 1980] Lorrain, D. (1980). Analyse de la bande magnŽtique de l'oeuvre de Jean-Claude Risset "Inharmonique". Paris : Centre Georges Pompidou (Rapport IRCAM n¡ 26/80).
[Manovich 2001] Manovich, L. (2001). The Language of New Media. Cambridge, MA: The MIT Press.
[Mathews 1969] Mathews, Max V. et al. (1969). The Technology of Computer Music. Cambridge, MA: The MIT Press.
[Risset 1969] Risset, J.-C. (1969). An introductory catalog of computer-synthesized sounds. Reprinted with C.D. Wergo 2033-2, The historical CD of digital sound synthesis (1995), 109-254.
[Risset 1995] Risset, J.-C. (1995). ÒMy 1969 Sound Catalogue : Looking Back from 1992Ó. in C.D. Wergo 2033-2, The historical CD of digital sound synthesis (1995), 88-108.
[Risset 1999] Risset, J.-C. (1999). Òƒvolution des outils de crŽation sonoreÓ. In : Vinet, H.; Delalande, F. (eds.), Interfaces homme-machine et crŽation musicale. Paris: Herms, pp. 17-36.
[Risset 2002] Risset, J.‑C., Arfib, D., de Sousa Dias, A., Lorrain, D., Pottier, L. (2002). Ç De "Inharmonique" ˆ "Resonant Sound Spaces" : temps rŽel et mise en espace È in Actes des neuvimes JournŽes dÕInformatique Musicale, Marseille : ADERIM-GMEM, 83‑88.
[Solomos 1998] Solomos, M. (1998). "Le devenir du matŽriau musical au Xxme sicle" in Soulez, A.; Schmitz, F.; Sebestik, J. (eds.) Musique, rationalitŽ, langage Ñ L'harmonie : du monde au matŽriau, Cahiers de philosophie du langage (n¼3). Paris : L'Harmattan, pp137-151.
[Sousa Dias 2003] de Sousa Dias, A. (2003). Ç Transcription de fichiers Music V vers Csound au travers de OpenMusic È in Actes des diximes JournŽes dÕInformatique Musicale, Montbeliard : AFIM.
[Vaggione 1998] Vaggione, H. (1998). "Composer avec des rŽseaux d'objets", in : AcadŽmie Bourges, Actes III 1997 Ð Composition / Diffusion en Musique Electroacoustique. Bourges : Acteon Ð MnŽmosyne.
[Vaggione 2001] Vaggione, H. (2001); Ç Some Ontological Remarks about Music Composition Processes È in Computer Music Journal, 25:1, pp. 54Ð61.
[Vercoe 1986] Vercoe, B. (1986). CSOUND: A Manual for the Audio Processing System and Supporting Programs. Cambridge MA: MIT Media Laboratory.
[Zicarelli 1998] Zicarelli, D. (1998). ÒAn Extensible Real-Time Signal Processing Environement for MaxÓ. In Proceedings of the International Computer Music Conference 1998. Ann Arbor: International Computer Music Association., pp463-466.