[CM] What motivated the change from CL to Scheme?
Michael Gogins
michael.gogins at gmail.com
Fri Nov 10 06:06:40 PST 2023
I'm taking the liberty to also reply to your question for Rick.
I have experience doing algorithmic composition since 1983 in (alphabetical
order, * means I have compositions on streaming music services or Web sites
realized using that language): Basic*, C, C++*, CMix, Csound, Common Lisp,
Fortran, Java*, JavaScript*, Lua and LuaJIT*, Mathematica, Pascal, Python*,
Quickbasic, Reaktor, Strudel*, Tidal Cycles, and Visual Basic.
I have worked professionally as a software engineer on trading systems
using C, C++, C#, Java, and Python.
In my opinion, there are too many systems for doing algorithmic composition
in too many languages. This has fragmented the field of algorithmic
composition and skilled people have wasted a great deal of their time
re-inventing the wheel. You can see from my list that I, myself, have
wasted a lot of that time. Currently, I use mostly JavaScript and C++,
compiled to WebAssembly (WASM) to be used by JavaScript.
The choice of language is secondary. The important things are community and
history. Look for the largest and most diverse community of composers that
you can find, with the longest history of compositions and the biggest
library of shareable code.
As far as actual programming languages go, if at all possible use industry
standard languages that have proved themselves in the real world and have
deep support. If we count only standard languages that feature algorithmic
composition software, that's essentially just C/C++, Python, and
JavaScript.
But I also include Common Lisp, because although it's not a standard
language it does have a deep history in algorithmic composition and an
important community, especially around OpenMusic.
And I include Scheme because the WASM implementation of s7 brings Scheme
into the Web browser or NPM world where it can be used with JavaScript.
In fact, I think WASM will become increasingly important because anything
compiled to WASM can be used from JavaScript, which thus serves to glue
together many different systems and packages in one environment.
Good luck,
Mike
-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com
On Fri, Nov 10, 2023 at 7:37 AM Rochus Keller <me at rochus-keller.ch> wrote:
> @ Rick:
>
>
> Thank you very much for your response. So it was mostly a technical reason
> to switch from CL to Scheme, not because of the language. It's also amazing
> to learn, that you even ported the system to Python.
>
>
> Since you therefore have experience in algorithmic composition in at least
> four languages - Common Lisp, Scheme, SAL and Python - the question arises
> which of these languages you consider most useful to represent compositions
> and musical information.
>
>
> I'm also curious whether you think object-orientation brings added value
> to algorithmic composition. In your papers and book you emphasized CLOS; in
> the Scheme version of Common Music object-orientation doesn't seem to be of
> importance, and - as far as I understood - SAL doesn't support
> object-orientation at all. Am I right to conclude from this that
> algorithmic composition has little benefit from object-orientation?
>
>
> Thanks
>
> R.K.
> _______________________________________________
> 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/20231110/1bd7dd8d/attachment.html>
More information about the Cmdist
mailing list