ï~~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