[CM] What motivated the change from CL to Scheme?

bil at ccrma.Stanford.EDU bil at ccrma.Stanford.EDU
Thu Nov 9 05:33:52 PST 2023


I can speak to the CLM/Snd side of this which was closely associated 
with Common Music.
I followed Rick's lead, but I was already searching for an alternative 
to
Common Lisp.  The sound editor, Snd, was a C version of an earlier 
editor named
Dpysnd, written in SAIL at SAIL in the 70's and 80's.  I wanted to add 
an
extension language, but at the time (say mid-to-late 90's), this was all 
but
impossible in Common Lisp (like later Schemes, CL wanted to be the "main 
program").
I looked at elisp (emacs), then someone mentioned Guile, so I started 
using it.

The Common Lisp Music system which grew out of Mus10
at SAIL, had become unmanageable because (despite the insistent hype) 
the only
way to get any performance was to write the generators in C and tie them 
into
Lisp via the clumsy FFI's of the day.  Even that was too slow, so CLM 
ended
up writing C code on-the-fly for entire instruments (or rather the "run 
loop" portion),
compiling that and loading it into CL, sort of like Chicken Scheme.
This was a nightmare to debug, and it was obvious to me that my sanity 
depended
on finding a simpler way (while staying in the lisp family of course -- 
Cmix and
CSound had the C-side covered).  Guile filled the bill for awhile, so 
both
Snd and CLM used it.

Guile became comatose in the 2000's, then came back to life as a 
compiler.
The new Guile was not compatible with my code, so I wrote s7, starting 
with
TinyScheme.  At this point I am very happy with s7+C in both programs.
If I need something from s7, I can just implement it.  If I were using
CL, nothing would happen because that community is hyper-conservative,
and if using any other Scheme than my own, nothing would happen because
Schemers love to bicker until everyone is exhausted.  With s7 I can just
sit and type and hum a happy tune.



More information about the Cmdist mailing list