Siren external interfaces

These files implement Smalltalk DLLCC external interfaces that allow VisualWorks
users to access several audio/MIDI/DSP libraries. The facilities at present are
the following:

libsndfile_lite -- interface to Erik de Castro Lopo's libsndfile
See http://www.zip.com.au/~erikd/libsndfile/
Supports multiple open files using integer indeces (like FILE)
Currently supports and file types, but only 16-bit linear and 32-bit floating-point sample I/O to Smalltalk.

portmidi_lite -- interface to the portmidi library
See http://www-2.cs.cmu.edu/~music/portmusic/
Supports multiple open 1-way streams using integer indeces (like FILE)
MIDI input is via a blocking read function that's called from a threaded DLLCC interface.
Supports cached controllers.

portaudio_lite -- interface to the portaudio library
See http://www.portaudio.com/
See http://www-2.cs.cmu.edu/~music/portmusic/
Supports a single PortAudio stream
Uses callbacks via Smalltalk semaphores and shared I/O sample buffers

fftw_lite.h -- interface to the FFTW FFT library
See http://www.fftw.org

Building the DLLCC libraries

There are 4 pairs of header/source files for portMIDI, portAudio, libSndFile, and FFTW.
I use the command-line make utility and the output looks like the following.

make

cc -c portmidi_lite.c -O0 -fno-common -dynamic -I../../7.2/DLLC/dllcc/src
ld -o portmidi_lite.dylib portmidi_lite.o \
        /System/Library/Frameworks/CoreMIDI.framework/Versions/Current/CoreMIDI \
        -lcc_dynamic -dynamic -bundle -flat_namespace -undefined suppress /usr/lib/bundle1.o -lportmidi -L/usr/local/lib 

cc -c portaudio_lite.c -O0 -fno-common -dynamic -I../../7.2/DLLC/dllcc/src
ld -o portaudio_lite.dylib portaudio_lite.o -lcc_dynamic -dynamic -bundle -flat_namespace \
	-undefined suppress /usr/lib/bundle1.o -lportaudio -L/usr/local/lib 

cc -c sndfile_lite.c -O0 -fno-common -dynamic -I../../7.2/DLLC/dllcc/src
ld -o sndfile_lite.dylib sndfile_lite.o -lcc_dynamic -dynamic -bundle -flat_namespace \
	-undefined suppress /usr/lib/bundle1.o -lsndfile -L/usr/local/lib

It would be trivial to make project files for other development systems; read the Makefile.

Notes
 
Most of the API calls return 0 on success.
They return other values (like -1) on non-fatal errors and use oeFail() on fatal errors.
These all print error messages to stdout.
