<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>codehop &#187; SuperCollider</title>
	<atom:link href="http://codehop.com/category/computer-music-2/supercollider-computer-music-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://codehop.com</link>
	<description>#code #art #music</description>
	<lastBuildDate>Mon, 23 Apr 2012 18:37:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>For Ann (rising) by James Tenney</title>
		<link>http://codehop.com/for-ann-rising-by-james-tenney/</link>
		<comments>http://codehop.com/for-ann-rising-by-james-tenney/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 18:10:19 +0000</pubDate>
		<dc:creator><![CDATA[Jacob Joaquin]]></dc:creator>
				<category><![CDATA[Computer Music]]></category>
		<category><![CDATA[Csound]]></category>
		<category><![CDATA[SuperCollider]]></category>

		<guid isPermaLink="false">http://codehop.com/?p=1631</guid>
		<description><![CDATA[In 1969, American composer James Tenney wrote For Ann (rising), one of the &#8220;earliest applications of gestalt theory and cognitive science to music.&#8221; (source: wikipedia). The auditory illusion heard in the piece is achieved by layering multiple rising sine waves. &#8230; <a href="http://codehop.com/for-ann-rising-by-james-tenney/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><iframe width="584" height="438" src="http://www.youtube.com/embed/RqRd555v0Hg?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>In 1969, American composer <a href="http://en.wikipedia.org/wiki/James_Tenney">James Tenney</a> wrote <a href="http://en.wikipedia.org/wiki/For_Ann_(rising)">For Ann (rising)</a>, one of the &#8220;earliest applications of gestalt theory and cognitive science to music.&#8221; (source: <a href="http://en.wikipedia.org/wiki/For_Ann_(rising)">wikipedia</a>). The auditory illusion heard in the piece is achieved by layering multiple rising sine waves.</p>
<p>Tom Erbe recent wrote a blog post, <a href="http://musicweb.ucsd.edu/~tre/wordpress/?p=131">Some notes on For Ann (rising)</a>, in which he describes in detail the specifications of the piece. This includes a thorough description, an excerpt of <a href="http://csounds.com/">Csound</a> code, and a <a href="http://puredata.info/">PD</a> patch he recently created. The PD patch is available for download at his site.</p>
<p>I myself love studying classic computer music languages and instrument designs, so this afforded me the perfect opportunity to study the piece. For Ann (rising) is also a personal favorite of mine.</p>
<p>First, I assembled the Csound version based on Erbe&#8217;s notes and Csound code excerpt, which was a straight forward process. I copied the instrument without any modifications. Then I generated the score with the following two lines of Python code:</p>
<pre><code>for i in range(0, 240):
	print 'i 1 ' + str(i * 2.8) + ' 33.6'</code></pre>
<p>The Csound csd is available for download <a href="https://gist.github.com/1502516">here</a>.</p>
<p>The next thing I did was realize the piece in <a href="http://supercollider.sourceforge.net/">SuperCollider</a> based on Erbe&#8217;s Csound code. The technical simplicity of the instrument as well as the process for spawning voices allows for the piece to be expressed in less than 140 characters when translated into SuperCollider, making the following line of code twitter ready:</p>
<pre><code>fork{{play{SinOsc.ar(EnvGen.ar(Env.new([40,10240],[33.6],\exp)),0,EnvGen.ar(Env.linen(8.4,16.8,8.4),1,0.1,0,1,2))!2};2.8.wait}!240}//JTenney</code></pre>
<p>You can view the tweet <a href="http://twitter.com/#!/codehop/status/149187134711009281">here</a>.</p>
<p>I want to thank Tom Erbe for publicly sharing his work and insight, which has allowed this classical computer music piece to be reconstructed in multiple modern day mediums.</p>
]]></content:encoded>
			<wfw:commentRss>http://codehop.com/for-ann-rising-by-james-tenney/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mark Ballora &#8211; Opening Your Ears to Data</title>
		<link>http://codehop.com/mark-ballora-opening-your-ears-to-data/</link>
		<comments>http://codehop.com/mark-ballora-opening-your-ears-to-data/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 15:25:00 +0000</pubDate>
		<dc:creator><![CDATA[Jacob Joaquin]]></dc:creator>
				<category><![CDATA[SuperCollider]]></category>

		<guid isPermaLink="false">http://codehop.com/?p=1610</guid>
		<description><![CDATA[Utilizing the computer music language SuperCollider, Ballora translates data sets into audio. In this TEDxPSU talk, he discusses the potential role data sonification plays in understanding the natural world.]]></description>
				<content:encoded><![CDATA[<p><iframe width="584" height="329" src="http://www.youtube.com/embed/aQJfQXGbWQ4?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Utilizing the computer music language <a href="http://supercollider.sourceforge.net/">SuperCollider</a>, Ballora translates data sets into audio. In this TEDxPSU talk, he discusses the potential role data <a href="http://en.wikipedia.org/wiki/Sonification">sonification</a> plays in understanding the natural world.</p>
]]></content:encoded>
			<wfw:commentRss>http://codehop.com/mark-ballora-opening-your-ears-to-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overheard in Black Rock City</title>
		<link>http://codehop.com/overheard-in-black-rock-city/</link>
		<comments>http://codehop.com/overheard-in-black-rock-city/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 17:51:40 +0000</pubDate>
		<dc:creator><![CDATA[Jacob Joaquin]]></dc:creator>
				<category><![CDATA[SuperCollider]]></category>

		<guid isPermaLink="false">http://codehop.com/?p=1540</guid>
		<description><![CDATA[Overheard at 2:00 and Anniversary in Black Rock City. fork{{play{SinOsc.ar(0.2*WhiteNoise.ar*1943+1932)*EnvGen.ar(Env.new([1,0.4,0],[0.05,2],-4),2,1,0,1,2)};15.wait}!inf} // 2:00 &#038; Anniversary]]></description>
				<content:encoded><![CDATA[<p>Overheard at 2:00 and Anniversary in Black Rock City.</p>
<pre><code>fork{{play{SinOsc.ar(0.2*WhiteNoise.ar*1943+1932)*EnvGen.ar(Env.new([1,0.4,0],[0.05,2],-4),2,1,0,1,2)};15.wait}!inf} // 2:00 &#038; Anniversary</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://codehop.com/overheard-in-black-rock-city/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SuperCollider Bohlen-Pierce Tweet</title>
		<link>http://codehop.com/supercollider-bohlen-pierce-tweet/</link>
		<comments>http://codehop.com/supercollider-bohlen-pierce-tweet/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 00:17:43 +0000</pubDate>
		<dc:creator><![CDATA[Jacob Joaquin]]></dc:creator>
				<category><![CDATA[SuperCollider]]></category>

		<guid isPermaLink="false">http://codehop.com/?p=1527</guid>
		<description><![CDATA[There is definitely a Zen thing to composing in 140 characters or less. This next tweet features the Bohlen-Pierce scale. fork{loop{play{f=_*3.pow(17.rand/13);e=EnvGen.ar(Env.perc,1,0.3,0,1,2);PMOsc.ar(f.([438,442]),f.(880),f.(e))*e};[1/6,1/3].choose.wait}}]]></description>
				<content:encoded><![CDATA[<p>There is definitely a Zen thing to composing in 140 characters or less. This next tweet features the <a href="http://en.wikipedia.org/wiki/Bohlen%E2%80%93Pierce_scale">Bohlen-Pierce scale</a>.</p>
<pre><code>fork{loop{play{f=_*3.pow(17.rand/13);e=EnvGen.ar(Env.perc,1,0.3,0,1,2);PMOsc.ar(f.([438,442]),f.(880),f.(e))*e};[1/6,1/3].choose.wait}}</code></pre>
<object height="81" width="100%"><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F21826250&amp;g=1&amp;auto_play=false&amp;show_comments=true&amp;color=&amp;theme_color="></param><param name="allowscriptaccess" value="always"></param><embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F21826250&amp;g=1&amp;auto_play=false&amp;show_comments=true&amp;color=&amp;theme_color=" type="application/x-shockwave-flash" width="100%"> </embed></object>
]]></content:encoded>
			<wfw:commentRss>http://codehop.com/supercollider-bohlen-pierce-tweet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SuperCollider Markov Chain</title>
		<link>http://codehop.com/supercollider-markov-chain/</link>
		<comments>http://codehop.com/supercollider-markov-chain/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 12:31:20 +0000</pubDate>
		<dc:creator><![CDATA[Jacob Joaquin]]></dc:creator>
				<category><![CDATA[Csound]]></category>
		<category><![CDATA[SuperCollider]]></category>

		<guid isPermaLink="false">http://codehop.com/?p=1502</guid>
		<description><![CDATA[During my aggressive push to learn as much as possible about SuperCollider over the weekend, I&#8217;ve translated an earlier Csound etude of mine into SC code that generates a sequence in real-time using a Markov chain. I&#8217;ve come away with &#8230; <a href="http://codehop.com/supercollider-markov-chain/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://codehop.com/wp-content/uploads/2011/08/markovExpII.jpeg"><img src="http://codehop.com/wp-content/uploads/2011/08/markovExpII.jpeg" alt="" title="Markov Experiment II" width="500" height="422" class="alignnone size-full wp-image-1503" /></a></p>
<p>During my aggressive push to learn as much as possible about <a href="http://supercollider.sourceforge.net/">SuperCollider</a> over the weekend, I&#8217;ve translated an earlier <a href="http://csounds.com/">Csound</a> etude of mine into SC code that generates a sequence in real-time using a <a href="http://en.wikipedia.org/wiki/Markov_chain">Markov chain</a>. I&#8217;ve come away with a few thoughts.</p>
<p>While I believe Csound definitely has an sharp edge in the DSP department, SuperCollider excels in allowing users to compose their own algorithmic sequencers. Even though the syntax of this <a href="http://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a>-based language looks and feels very slippery to me, the SC code comes off as being much more concise and expressive than the Csound counterpart.</p>
<p>As for the work itself, I consider this to be very much a technical exercise; There is still so much about SuperCollider I&#8217;m completely ignorant of, including basic patterns and Pbinds, etc, and grinding against a problem like this is a big help in leveling up. Though it appears I&#8217;ll be able to build a generic Markov chain engine, separating the the SynthDefs from the nodes in a reusable function of some sort, which is the long term goal. This earliest of prototypes already goes pretty far in this direction, but there is plenty room for improvement.</p>
<object height="81" width="100%"><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F21613205&amp;g=1&amp;auto_play=false&amp;show_comments=true&amp;color=&amp;theme_color="></param><param name="allowscriptaccess" value="always"></param><embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F21613205&amp;g=1&amp;auto_play=false&amp;show_comments=true&amp;color=&amp;theme_color=" type="application/x-shockwave-flash" width="100%"> </embed></object>
<p>Grab the <a href="https://gist.github.com/1161256">SuperCollider code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://codehop.com/supercollider-markov-chain/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SuperCollider Quickies</title>
		<link>http://codehop.com/supercollider-quickies/</link>
		<comments>http://codehop.com/supercollider-quickies/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 04:19:21 +0000</pubDate>
		<dc:creator><![CDATA[Jacob Joaquin]]></dc:creator>
				<category><![CDATA[SuperCollider]]></category>

		<guid isPermaLink="false">http://codehop.com/?p=1472</guid>
		<description><![CDATA[Finished two tiny SuperCollider projects. The first is a reimplementation of the Csound modem instrument from this morning. The conversion to SuperCollider was straight forward; I basically swapped out randh for LFNoise1, limit and ceil for &#62; (greater than), and &#8230; <a href="http://codehop.com/supercollider-quickies/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Finished two tiny SuperCollider projects. The first is a reimplementation of the <a href="http://codehop.com/faux-modem-audio/">Csound modem instrument</a> from this morning. The conversion to SuperCollider was straight forward; I basically swapped out <strong>randh</strong> for <strong>LFNoise1</strong>, <strong>limit</strong> and <strong>ceil</strong> for <strong>&gt;</strong> (greater than), and <strong>oscil</strong> with sine table for <strong>SinOsc</strong>:</p>
<pre><code>play{SinOsc.ar(LFNoise1.ar(300) > 0 * 200 + 1070)}</code></pre>
<p>The second is an experiment short enough to tweet, <a href="http://twitter.com/#!/codehop/status/103320190586064896">which I did</a>:</p>
<pre><code>play{FreeVerb.ar(SinOsc.ar((440*LFNoise1.ar(99).ceil.clip)+300*Pulse.ar(1/4+4*SinOsc.ar(2)),0,0.5),SinOsc.kr(0.1,0,0.1,0.2),[0.3,0.2])}</code></pre>
<object height="81" width="100%"><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F21212883&amp;g=1&amp;auto_play=false&amp;show_comments=true&amp;color=&amp;theme_color="></param><param name="allowscriptaccess" value="always"></param><embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F21212883&amp;g=1&amp;auto_play=false&amp;show_comments=true&amp;color=&amp;theme_color=" type="application/x-shockwave-flash" width="100%"> </embed></object>
]]></content:encoded>
			<wfw:commentRss>http://codehop.com/supercollider-quickies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SuperCollider Blurps</title>
		<link>http://codehop.com/supercollider-blurps/</link>
		<comments>http://codehop.com/supercollider-blurps/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 02:33:13 +0000</pubDate>
		<dc:creator><![CDATA[Jacob Joaquin]]></dc:creator>
				<category><![CDATA[SuperCollider]]></category>

		<guid isPermaLink="false">http://codehop.com/?p=1466</guid>
		<description><![CDATA[Learning SuperCollider 20 minutes at a time in between everything else. Here&#8217;s a little synth ditty from earlier this evening. fork{{var t=0.2,x=t.rand;play{PMOsc.ar(100+400.rand,400+400.rand,1+4.0.rand,0,0.2)*EnvGen.kr(Env.linen(0,x,0,1),1,1,0,1,2)};(t-x).wait}!200}; Thanks to everyone on the SuperCollider Mailing List who helped me with my total n00b question.]]></description>
				<content:encoded><![CDATA[<p>Learning <a href="http://supercollider.sourceforge.net/">SuperCollider</a> 20 minutes at a time in between everything else. Here&#8217;s a little synth ditty from earlier this evening.</p>
<object height="81" width="100%"><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F21134923&amp;g=1&amp;auto_play=false&amp;show_comments=true&amp;color=&amp;theme_color="></param><param name="allowscriptaccess" value="always"></param><embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F21134923&amp;g=1&amp;auto_play=false&amp;show_comments=true&amp;color=&amp;theme_color=" type="application/x-shockwave-flash" width="100%"> </embed></object>
<pre><code>fork{{var t=0.2,x=t.rand;play{PMOsc.ar(100+400.rand,400+400.rand,1+4.0.rand,0,0.2)*EnvGen.kr(Env.linen(0,x,0,1),1,1,0,1,2)};(t-x).wait}!200};</code></pre>
<p>Thanks to everyone on the SuperCollider Mailing List who helped me with my <a href="http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/How-to-Programmatically-End-a-Process-td6685818.html">total n00b question</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://codehop.com/supercollider-blurps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
