ï~~Cmix on Non-UNIX Platforms Alistair Riddell Music Department La Trobe University amr@farben.latrobe.edu.au Abstract MacCmix and BeCmix are recent ports of Cmix to non-UNIX environments. Both ports make Cmix available to users possibly unfamiliar with the UNIX operating system yet retain much or all of the original Cmix charm. This paper describes some of the interface and implementation details. MacCmix is available from: ftp://ftp.latrobe.edu.au/pub/music 1. Overview Cmix is a toolkit for analysis, synthesis and processing of sound. It has been available for UNIX machines for more than ten years. It has been used, modified and augmented by many computer music practitioners and in the process become one of the "stayers" in the computer music world. For further information see Paul Lansky's [ 1990] overview and history of Cmix. Two ports of Cmix are described here. The first is to the Power Macintosh environment. It makes Cmix available to Mac users in a way that retains much of the original Cmix environment. The second is to the Be box. This was a more straightforward undertaking because of the Be's POSIX compliance. Documentation for MacCmix can be found at: http://farben.latrobe.edu.au/MacCmix/ with most of the information straight from the original Princeton Cmix distribution. 2. MacCmix The MacCmix port, undertaken in 1995, necessitated significant alterations to the low level code of Cmix. We begin by outlining the key attributes of Cmix that were interesting challenges during the porting process. A cross sectional view of Cmix reveals several functional "layers" which give some idea of where the critical porting issues are located. The layers are: Ross Bencina Music Department La Trobe University rossb@klang.latrobe.edu.au " Compositional Interface " Utility and Signal processing functions " Script language dispatch " Soundfile I/O The first layer can be independent of basic Cmix operations. This is where the composer decides how to control Cmix functionality. Consequently, this layer was of no immediate concern to us except that the port should in no way hamper the users activities. The next layer concerns the suite of tools for analysis, mixing and signal processing. The tools are typically coded in C and call the lower level functions. Some of the tools e.g. LPC, have proven difficult to port, primarily because of their dependence on certain low level sound file 110 functions. We are still looking into these. The final two layers are where the interesting porting issues of Cmix can be found. The following issues were addressed and for the most part involved changes to the kernel code. " Convert code to ANSI C " Convert disk I/O from UNIX to ANSI I/O and EBICSF to AIFF format " Create a shell / window environment " Applescript replaces Minc Convert code to ANSI C Making the Cmix code ANSI standard was important and intended to speed porting to other platforms in the future (there are plans for a version running under win95!). For the non-unix ports it was decided that certain attributes should change to accommodate future extensions. The most important changes deal with the soundfile data structures. A set of arrays, one for each soundfile property, becomes an array of structs, one for each soundfile. Other changes were more cosmetic and often only involved a change in coding style. ICMC Proceedings 1996 263 Riddell & Bencina 0
Top of page Top of page