[PlanetCCRMA] Re: any hints for realtime algorithmic composing environment?

bH atorima at vfemail.net
Tue Dec 4 15:58:01 2007


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
<blockquote cite="midPine.LNX.4.64.0712041347010.9449@ttleush"
 type="cite"><font face="serif">On Tue, 4 Dec 2007, Kjetil S.
Matheussen wrote:
  <br>
  <br>
  </font>
  <blockquote type="cite"><font face="serif"><br>
"Matthew Barber":
    <br>
    </font>
    <blockquote type="cite"><font face="serif"><br>
&nbsp;Hello
      <br>
      <br>
&nbsp;Would not supercollider itself fulfill your demands, as an algorithmic
      <br>
&nbsp;composition tool, event generator, event interpreter, front-end, and
      <br>
&nbsp;sound-maker, in an emacs environment with gui-building capabilities?
      <br>
      <br>
      </font>
    </blockquote>
    <font face="serif"><br>
Hmm, Smalltalk is very nice, but not a functional language.
    <br>
    <br>
    </font></blockquote>
  <font face="serif"><br>
I shouldn't have said that. I don't know enough about Supercollider to
say anything about whether its a functional
  <br>
language or not.
  <br>
  <br>
  </font></blockquote>
<font face="serif">&nbsp; I don't know much about Supercollider either but,&nbsp;
reading the
Wikipedia entry on it (<a class="moz-txt-link-freetext"
 href="http://en.wikipedia.org/wiki/SuperCollider">http://en.wikipedia.org/wiki/SuperCollider</a>)&nbsp;
it
seems that it might&nbsp; fulfill any number needs here.<br>
<br>
A few highlights:<br>
<br>
<b>"SuperCollider</b> is an environment and <a
 href="http://en.wikipedia.org/wiki/Programming_language"
 title="Programming language">programming language</a> for <a
 href="http://en.wikipedia.org/wiki/Real_time" title="Real time">real
time</a> <a href="http://en.wikipedia.org/wiki/Audio_synthesis"
 title="Audio synthesis">audio synthesis</a> and <a
 href="http://en.wikipedia.org/wiki/Algorithmic_composition"
 title="Algorithmic composition">algorithmic composition</a>."<br>
<br>
" It is an efficient and expressive <a
 href="http://en.wikipedia.org/wiki/Dynamic_programming_language"
 title="Dynamic programming language">dynamic programming language</a>
which makes it an interesting framework for <a
 href="http://en.wikipedia.org/wiki/Acoustics" title="Acoustics">acoustic
research</a>, <a
 href="http://en.wikipedia.org/wiki/Algorithmic_composition"
 title="Algorithmic composition">algorithmic music</a> and <a
 href="http://en.wikipedia.org/wiki/Interactive_programming"
 title="Interactive programming">interactive programming</a>."<br>
<br>
"<i>SC Language</i> combines the object oriented structure of <a
 href="http://en.wikipedia.org/wiki/Smalltalk" title="Smalltalk">Smalltalk</a>
and features from <a
 href="http://en.wikipedia.org/wiki/Functional_programming"
 title="Functional programming">functional programming languages</a>
with a <a
 href="http://en.wikipedia.org/wiki/C_%28programming_language%29"
 title="C (programming language)">C programming language</a> family
syntax.
</font>
<p><font face="serif">The <i>SC Server</i> application supports a
simple C plugin API
making it easy to write efficient sound algorithms (<a
 href="http://en.wikipedia.org/wiki/Unit_generator"
 title="Unit generator">unit generators</a>)
which can then be combined into graphs of calculations. Due to the fact
that all external control in the server happens via open sound control,
it is possible to access its functionality from other languages or
applications (see "Clients", below)."<br>
</font></p>
<p><font face="serif">"<span class="mw-headline">Language Features</span></font></p>
<ul>
  <li><font face="serif">Constant time message lookup</font></li>
  <li><font face="serif">Real time <a
 href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29"
 title="Garbage collection (computer science)">garbage collection</a></font></li>
  <li><font face="serif">Lexical <a
 href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29"
 title="Closure (computer science)">closure</a></font></li>
  <li><font face="serif">Functions as <a
 href="http://en.wikipedia.org/wiki/First_class_%28computing%29"
 title="First class (computing)">first class</a> objects, <a
 href="http://en.wikipedia.org/wiki/Function_composition"
 title="Function composition">function composition</a></font></li>
  <li><font face="serif"><a
 href="http://en.wikipedia.org/wiki/Coroutines" title="Coroutines">Coroutines</a></font></li>
  <li><font face="serif">Default argument values, variable length
argument lists and any
order keyword arguments</font></li>
  <li><font face="serif">Both lexical and dynamic <a
 href="http://en.wikipedia.org/wiki/Scope_%28programming%29"
 title="Scope (programming)">scope</a></font></li>
  <li><font face="serif">Closure creation via partial application
(i.e., explicit <a href="http://en.wikipedia.org/wiki/Currying"
 title="Currying">currying</a>
/ <a href="http://en.wikipedia.org/wiki/Moses_Sch%C3%B6nfinkel"
 title="Moses Sch&ouml;nfinkel">sch&ouml;nfinkelling</a>)</font></li>
  <li><font face="serif"><a
 href="http://en.wikipedia.org/wiki/Tail_call" title="Tail call">Tail
call</a> optimization</font></li>
  <li><font face="serif"><a
 href="http://en.wikipedia.org/wiki/List_comprehension"
 title="List comprehension">List comprehensions</a></font></li>
  <li><font face="serif"><a
 href="http://en.wikipedia.org/wiki/Reflection_%28computer_science%29"
 title="Reflection (computer science)">Reflective</a> and <a
 href="http://en.wikipedia.org/wiki/Literate_Programming"
 title="Literate Programming">Literate Programming</a></font></li>
  <li><font face="serif">allows to represent properties such as time
and pitch in variable
degrees of abstraction</font></li>
</ul>
<font face="serif"><span class="mw-headline">Clients</span>:<br>
<br>
"SuperCollider is two separate applications: the <b>server</b> (sound
synthesis engine), and the <b>client</b> application to control it.
Because the communication uses <a
 href="http://en.wikipedia.org/wiki/OpenSound_Control"
 title="OpenSound Control">OpenSound Control</a>, a variety of
applications can be used to control the server including systems such
as <a href="http://en.wikipedia.org/wiki/Pure_data" title="Pure data">Pure
data</a>.
"Third-party" clients for the SuperCollider server exist, including <a
 href="http://www.alphalink.com.au/%7Erd/sw/scheme.html"
 class="external text"
 title="http://www.alphalink.com.au/~rd/sw/scheme.html" rel="nofollow">rsc</a>,
a <a
 href="http://en.wikipedia.org/wiki/Scheme_%28programming_language%29"
 title="Scheme (programming language)">Scheme</a> client, and <a
 href="http://www.slavepianos.org/rd/f/207949/" class="external text"
 title="http://www.slavepianos.org/rd/f/207949/" rel="nofollow">hsc</a>,
based on Haskell. More examples are listed on the SuperCollider wiki"<br>
<br>
The "hsc" client looks interesting based on, at least, some of the
stated needs.<br>
<br>
"</font>hsc3 provides Sound.SC3, a Haskell module that facilitates using<br>
<pre>Haskell as a client to the SuperCollider synthesis server.  

The hsc3 interaction environment is written for GNU Emacs."

  <a class="moz-txt-link-freetext" href="http://slavepianos.org/rd/">http://slavepianos.org/rd/</a>
  <a class="moz-txt-link-freetext" href="http://haskell.org/">http://haskell.org/</a>
  <a class="moz-txt-link-freetext" href="http://audiosynth.com/">http://audiosynth.com/</a>
  <a class="moz-txt-link-freetext" href="http://gnu.org/software/emacs/">http://gnu.org/software/emacs/</a></pre>
<font face="serif"><br>
<br>
</font>
</body>
</html>