<div dir="ltr">With regard to your comments (can&#39;t recall whether they were here or on hacker news) about CLOS - Common Music 3 does include a CLOS-style object system. I am also building such a thing for Scheme for Max as part of my PhD work. My intent is to make something CLOSish, but more targeted at live-coding and scoring in scheme - so supporting conventions that make the code one must type as compact as possible. I hope to have this out sometime mid next year.<div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 9, 2023 at 7:33 AM Iain Duncan &lt;<a href="mailto:iainduncanlists@gmail.com">iainduncanlists@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">For what it&#39;s worth, I think that language is indeed Scheme. I wrote Scheme for Max after looking for the right language to use inside the Max environment for representing music symbolically, and I looked at a lot of options. I chose s7 for the combination of three factors: great for representing music and music symbols, used in other computer music projects, and super easy to embed. I mean, I haven&#39;t learnt every language obviously, but of the dozen odd I&#39;ve used (including Python, Ruby, and JS), representing music in Scheme is so much nicer IMHO.  (I am aware that there are those who would argue an ML family language is better, but I think they are outnumbered by the Lispers). I wrote a bit about this in my thesis paper here: <a href="https://iainctduncan.github.io/papers/design.html#why-use-a-lisp-language" target="_blank">https://iainctduncan.github.io/papers/design.html#why-use-a-lisp-language</a><div><div><br></div><div>Having looked closely at other options (CL, Clojure, Racket, Gambit, etc), nothing except Guile came close to as easy for embedding, and this made a huge difference to the practicality of making Scheme for Max and Scheme for Pd. The ease of extension with the FFI is wonderful.</div></div><div><br></div><div>If you want to see the performance of the Scheme code running a large amount of code in realtime while the host does heavy audio rendering, here is a demo video of a comprehensive sequencing system running inside Max inside Ableton Live. TLDR: it&#39;s totally practical on modern machines. (Especially Apple Silicon!)</div><div><br></div><div><a href="https://vimeo.com/user29372309/scmseq-demo" target="_blank">https://vimeo.com/user29372309/scmseq-demo</a><br></div><div><br></div><div>(project page here, btw: <a href="http://github.com/iainctduncan/scheme-for-max" target="_blank">http://github.com/iainctduncan/scheme-for-max</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 9, 2023 at 6:50 AM Rochus Keller &lt;<a href="mailto:me@rochus-keller.ch" target="_blank">me@rochus-keller.ch</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><u></u>
<div style="font-family:&quot;Droid Sans&quot;;font-size:8pt;font-weight:normal;font-style:normal">
<table border="0" style="margin:2px">
<tbody><tr>
<td style="border:none">
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">@ Mike, Bil:</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">Thank you both very much for your quick response and the interesting information.</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">&gt; Scheme is a somewhat easier language to learn and use ... I think the motivation was to simplify teaching computer music.</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">Ok, that seems like a decent motivation to switch to Scheme, since it is or was used in basic programming courses at universities anyway. But am I wrong to assume that this change created a rather incompatible version, i.e. all existing compositions based on CLOS, and the published papers and books about Common Music became virtually obsolete, and the way to compose with version 3 is significantly different than with version 2? Or do I have a misconception in this respect?</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">&gt; if you are looking to use specifically Common Lisp for computer-based composition</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">Actually I currently rather try to find out which language is best suited to represent music on a symbolic, compositional (not physical or sound design) level. I&#39;m not sure Common Lisp or Scheme are the best solution, neither Python. SAL is an interesting approach, but essentially Scheme with a kind of Pascal syntax as far as I understand it.</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">&gt; so I wrote s7, starting with TinyScheme</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">Can I conclude from this that your change from Lisp to Scheme and finally your own interpreter was an important reason for Common Music to follow?</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">I had a look at S7 and its implementation which is impressive. Have you also experimented with threaded interpreters? Is the performance of the Scheme code an issue at all in this application domain?</span></p>
<p style="margin:0px;text-indent:0px;font-family:Arial;font-size:10pt"><br></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">Best</span></p>
<p style="margin:0px;text-indent:0px"><span style="font-family:Arial;font-size:10pt">R.K.</span></p></td></tr></tbody></table></div>_______________________________________________<br>
Cmdist mailing list<br>
<a href="mailto:Cmdist@ccrma.stanford.edu" target="_blank">Cmdist@ccrma.stanford.edu</a><br>
<a href="https://cm-mail.stanford.edu/mailman/listinfo/cmdist" rel="noreferrer" target="_blank">https://cm-mail.stanford.edu/mailman/listinfo/cmdist</a><br>
</div></blockquote></div>
</blockquote></div>