Csound Csound-dev Csound-tekno Search About

cmusic Was: Csound and other synthesis systems

Date1999-06-17 03:29
FromRobin Whittle
Subjectcmusic Was: Csound and other synthesis systems
Pete Moss pointed out that what I described as my long term plan (a
framework for C++ to support realtime synthesis) is akin to cmusic.

I think this is true.  This post looks at what I understand about
cmusic and how it only produces a single sample of audio per ugen
call, compared to Csound which produces ksmps samples, and so can be
very much faster.

Looking at Dave Philip's marvellous link-farm on software synthesis:
   
   http://www.bright.net/~dlphilp/linux_soundapps.html

leads me to Tim Thompson's venerable PLUM page on music languages,
which should be at:
  
   http://www.nosuch.com/plum

but this file is absent at present. (I emailed Tim.)

Searching for "cmusic" is tricky, but I found something from 1994 at:

   ftp://ccrma-ftp.stanford.edu/pub/cmusic/

I also found some descriptive text at:

   http://www.gsu.edu/webfs01/mus/musrst/public_html/cara/courses/
         Csound_Users_Seminar/acoustic.html

which states that cmusic was written in 1980 by F. R. (Dick) Moore.
Like Csound, cmusic's lineage is traceable to Music V.

Please correct me if I am wrong, but it is my understanding that both
Music V and cmusic call the code for a unit-generator, and that code
produces just one sample of audio output.  Csound's distinguishing
characteristic is that it has a variable "ksmps" which tells the unit
generator how many samples to calculate.  ksmps can be 1, but then
Csound runs rather slowly, as would Music V and cmusic.  Generally
ksmps is 5 to 25 or so - and so the overhead of running the central
loops and calling unit generator functions is spread over the
production of many more audio samples.

Csound therefore has "k" and "a" rate signals, with the orchestra file
determining the ksmps rato between them.  This makes for some ugly
complications trying to maintain and translate between two separate
kinds of variable, but it makes Csound run ***lots*** faster.  This is
particularly true in "draft" mode where you set ksmps rather high to
test the composition out, albeit with lousy sound quality.  When the
composition is complete, then set ksmps to 2 or 3 and leave the
computer cooking overnight to produce the final rendering.

Speed is absolutely crucial in this field, since computers are still
slow compared to the rich analogue world of zillion-path reverberation
which we know and love.

I remember trying to understand cmusic a few years ago, but I never
got very far.  Perhaps it was because I discovered it could not run as
fast as Csound. 

Does anyone have more information about cmusic?

Generally with other software synthesis programs I have looked, I lost
interest when I found that either they did not support ksmps samples
per call (this includes most programs and Kyma/Capybara 
http://www.symbolicsound.com ), or they start with a particular
high-level model of what constitutes "music" which doesn't suit me. 
Kyma looks amazing and is certainly an inspiration, but it runs on
specialised hardware, uses integers rather than floats and has a
limited memory capacity per CPU.  


- Robin  


===============================================================

Robin Whittle    rw@firstpr.com.au  http://www.firstpr.com.au
                 Heidelberg Heights, Melbourne, Australia 

First Principles Research and expression: Consulting and 
                 technical writing. Music. Internet music 
                 marketing. Telecommunications. Consumer 
                 advocacy in telecommunications, especially 
                 privacy. M-F relationships. Kinetic sculpture.
                  
Real World       Electronics and software for music including:
Interfaces       Devil Fish mods for the TB-303, Akai sampler 
                 memory and Csound synthesis software.