[CM] cvs and new features

Rick Taube taube@uiuc.edu
Fri, 8 Jul 2005 06:48:42 -0500

CVS will be very unstable for the next 1-2 weeks as we try to get some 
new features going. I've saved a snapshot from yesterday on pinhead 
that should work:


The snapshot does contain one unannounced new feature: Portmidi. This 
is a light-weight midi lib that can be used in place of midishare. its 
essentially a thin portability layer on top of a host midi system: 
CoreMidi in the case of OSX, Alsa on Linux and whatever on Windows.  I 
have CM<->Portmidi working now in sbcl, cmucl and openmcl on OSX (my 5 
year old pounded away on the keybord for 5 minutes driving 
supercollider FM synthesis via the midi input without us ending up in 
the kernel debugger so I think its basically working..) It should also 
be working on Linux but I have no access to a local linux machine. I 
can load the lib and read the time but I cant test sound output since 
the ccrma machine I'm using is 2000 miles away...

If you are on linux and have some awareness of Alsa, and an external 
keyboard for input it would be great if you could help me out. If it 
doesnt work ootb my guess is it is not hard to get it working since it 
runs in sbcl and cmu already on osx .

Here is a url to the portmidi tarball to install:


This is the regular portmidi source install but with its Makefile 
hacked for saving shared libraries (thank you tobias and david 
psenicka) and with an added Xcode target to make shared libs on OSX 
(project is under pm_mac/). To install on Linux: untar, cd portmidi, 
make, then move libportmidi.so and libportime.so to /usr/local/lib and 
build cm from scratch (delete any cmu or sbcl subdirectories of cm/)  
If you are on OSX and you want to try it out, you should just download 
this (binary) tarball and install as per the readme.


When the dust settles ill send the Makefile modifications to the 
portmidi list, hopefully they will include the shared library stuff.

To read about the new portmidi support see:


For now you can pretty much treat portmidi like a midishare or a  midi 
file, ie write midi objects to it (set :latency > 0) Hopefully if 
things work out in some days I will post another note list explaining 
some more interesting things that can be done with portmidi (and with 
supercollider) that we are attempting to add.