[CM] What motivated the change from CL to Scheme?
Brandon Hale
bthaleproductions at gmail.com
Thu Nov 9 08:01:48 PST 2023
This is a very interesting thread that I always wondered about.
> 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.
Do you think something like incudine <https://incudine.sourceforge.net/>
and/or cm-incudine <https://github.com/ormf/cm-incudine> would have
fixed the problem of relying on C, even though it is too late at this point?
Brandon Hale
On 11/9/23 8:33 AM, bil at ccrma.Stanford.EDU wrote:
> 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.
>
> _______________________________________________
> Cmdist mailing list
> Cmdist at ccrma.stanford.edu
> https://cm-mail.stanford.edu/mailman/listinfo/cmdist
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cm-mail.stanford.edu/pipermail/cmdist/attachments/20231109/dd4978ee/attachment.html>
More information about the Cmdist
mailing list