<?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>Greg Surges &#187; Electronic Music</title>
	<atom:link href="http://gregsurges.com/category/original-music/electronic-music/feed/" rel="self" type="application/rss+xml" />
	<link>http://gregsurges.com</link>
	<description>Composer of Electronic and Chamber Music, Freelance Programmer</description>
	<lastBuildDate>Mon, 06 Feb 2012 02:08:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Simulating a Spring Reverb in C++</title>
		<link>http://gregsurges.com/original-music/electronic-music/simulating-a-spring-reverb-in-c/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/simulating-a-spring-reverb-in-c/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 00:55:05 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[pucktronix]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[spring reverb]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[vst]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1312</guid>
		<description><![CDATA[Recently, I implemented a spring reverb simulator VST in C++. The plugin was created for an assignment in Miller Puckette&#8217;s &#8220;The Vibrating Body&#8221; seminar at UCSD. We&#8217;d been talking about mass-spring systems and resonators, so I decided to use a bank of parallel resonant filters to simulate the springs. I implemented a Resonator class, following [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I implemented a spring reverb simulator VST in C++. The plugin was created for an assignment in Miller Puckette&#8217;s &#8220;The Vibrating Body&#8221; seminar at UCSD.</p>
<p>We&#8217;d been talking about mass-spring systems and resonators, so I decided to use a bank of parallel resonant filters to simulate the springs.</p>
<p>I implemented a Resonator class, following Robert Bristow-Johnson&#8217;s biquad formula for a resonant LPF [1]. Each resonator tends to ring at a particular frequency, and the impulse response looks like a decaying sinusoid.</p>
<p>By combining a few hundred of those simple resonators, each resonating at a different frequency and driven with a complex sound, you can approximate the sound of a spring reverb.</p>
<p><iframe src="http://www.youtube.com/embed/eA0Ru8aIOQg" frameborder="0" width="640" height="480"></iframe></p>
<p>Here&#8217;s the Resonator implementation file &#8211; the rest of the plugin source is on the bitbucket page linked below:<br />
<script type="text/javascript" src="https://bitbucket.org/pucktronix/pucktronix.verb/src/4de569e9ea89/source/resonator.cpp?embed=t"></script></p>
<p><a href="http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt" target="_blank">[1] http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/simulating-a-spring-reverb-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pucktronix.snake.corral &#8211; computer controlled dual 8 x 8 signal routing matrix</title>
		<link>http://gregsurges.com/original-music/electronic-music/pucktronix-snake-corral-computer-controlled-dual-8-x-8-signal-routing-matrix/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/pucktronix-snake-corral-computer-controlled-dual-8-x-8-signal-routing-matrix/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 19:20:55 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[pucktronix.snake.corral]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1306</guid>
		<description><![CDATA[Something new I&#8217;ve been working on&#8230; pucktronix.snake.corral is a computer-controlled dual 8 x 8 analog signal routing matrix. Two independent matrices are presented, each with 8 inputs and 8 outputs. Within each matrix, any input (or summed combination of inputs) can be routed to any output. The device can switch and route any type of [...]]]></description>
			<content:encoded><![CDATA[<p>Something new I&#8217;ve been working on&#8230;</p>
<div id="attachment_1307" class="wp-caption aligncenter" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2012/01/IMG_20120128_111414.jpg" rel="lightbox[1306]"><img class="size-medium wp-image-1307" title="pucktronix.snake.corral" src="http://gregsurges.com/wp-content/uploads/2012/01/IMG_20120128_111414-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">The finished PCB</p></div>
<p>pucktronix.snake.corral is a computer-controlled dual 8 x 8 analog signal routing matrix. Two independent matrices are presented, each with 8 inputs and 8 outputs. Within each matrix, any input (or summed combination of inputs) can be routed to any output. The device can switch and route any type of analog signal within the range of +/- 5V. The main electronic components of the pucktronix.snake.corral are a Teensy 2.0 and a pair of Zarlink MT8816 analog switching matrix ICs. The MT8816 is a bidirectional 8 x 16 matrix with minimal signal bleed. Like the USB-Octomod, the pucktronix.snake.corral is powered from the USB bus.</p>
<p>A Max/MSP patch which allows the user to define and switch between presets and/or apply various algorithmic rhythmic effects to the switching matrices has also been developed.</p>
<p>Using the pucktronix.snake.corral, a modest number of synthesis modules can be used to create interesting rhythmic and timbral variety. The ability to rapidly switch or reconfigure a large number of signal connections enables a level of rhythmic complexity which is difficult to obtain through other means. Sharp cuts between disparate types of musical material are made possible, and patches can be stored and quickly recalled.</p>
<p>PCBs will be available soon, and you can follow discussion on the project here:</p>
<p><a href="http://www.muffwiggler.com/forum/viewtopic.php?t=51389">http://www.muffwiggler.com/forum/viewtopic.php?t=51389</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/pucktronix-snake-corral-computer-controlled-dual-8-x-8-signal-routing-matrix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interfacing an MT8816 crosspoint switch with Arduino</title>
		<link>http://gregsurges.com/programming/interfacing-an-mt8816-crosspoint-switch-with-arduino/</link>
		<comments>http://gregsurges.com/programming/interfacing-an-mt8816-crosspoint-switch-with-arduino/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 03:35:11 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[pucktronix.snake.corral]]></category>
		<category><![CDATA[analog]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[mt8816]]></category>
		<category><![CDATA[synth]]></category>
		<category><![CDATA[teensy]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1280</guid>
		<description><![CDATA[I thought I would post a bit of information about using a Zarlink MT8816 crosspoint switch (datasheet) with an Arduino or similar microcontroller. The MT8816 is a 40-pin IC which allows you to route any of its 8 X pins to any of its 16 Y pins &#8211; the connections are bidirectional, so you have [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I would post a bit of information about using a Zarlink MT8816 crosspoint switch (<a href="http://www.zarlink.com/zarlink/zweb-mt8816-datasheet-jan10.pdf" target="_blank">datasheet</a>) with an Arduino or similar microcontroller. The MT8816 is a 40-pin IC which allows you to route any of its 8 X pins to any of its 16 Y pins &#8211; the connections are bidirectional, so you have do 8 ins, 16 outs or 16 ins, 8 outs. What you get from this is a cool matrix signal router &#8211; a great device to have for musical or other nefarious purposes.</p>
<p>Here&#8217;s the pinout:</p>
<p><a href="http://gregsurges.com/wp-content/uploads/2011/09/Screen-shot-2011-09-10-at-7.59.56-PM.png" rel="lightbox[1280]"><img class="aligncenter size-full wp-image-1282" title="Screen shot 2011-09-10 at 7.59.56 PM" src="http://gregsurges.com/wp-content/uploads/2011/09/Screen-shot-2011-09-10-at-7.59.56-PM.png" alt="Screen shot 2011-09-10 at 7.59.56 PM" width="293" height="334" /></a></p>
<p>Each of the pins beginning with &#8220;A&#8221; is an address pin &#8211; they&#8217;re how you address a specific X/Y connection. To interface this with an Arduino, you need to connect 11 digital output pins from the Arduino:</p>
<ul>
<li>7 address pins (AX0-AX3, AY0-AX2, these use a strange binary-ish number system &#8211; more on that later)</li>
<li>DATA (High or low to indicate whether to open or close the specified switch)</li>
<li>CS (Chip Select &#8211; you can just tie this high if you&#8217;re only using one)</li>
<li>STROBE (Setting this high writes the DATA to the indicated address)</li>
<li>RESET (I found that if I didn&#8217;t reset the chip upon powering the circuit, I&#8217;d get strange results)</li>
</ul>
<p>Other than that, you need to connect VDD, VSS, and VEE to +, GND, and &#8211; supplies.</p>
<p>So, as I mentioned, the addressing scheme is a little strange &#8211; and caused me 2 &#8211; 3 lost days of head-scratching and frustration. Here&#8217;s the info from the datasheet:</p>
<p><a href="http://gregsurges.com/wp-content/uploads/2011/09/Screen-shot-2011-09-10-at-8.10.24-PM.png" rel="lightbox[1280]"><img class="size-full wp-image-1284 alignnone" title="Screen shot 2011-09-10 at 8.10.24 PM" src="http://gregsurges.com/wp-content/uploads/2011/09/Screen-shot-2011-09-10-at-8.10.24-PM.png" alt="Screen shot 2011-09-10 at 8.10.24 PM" width="634" height="392" /></a></p>
<p>As you can see, the address pins indicate an address in a parallel, binary-ish scheme. So, if we&#8217;re going to select a particular matrix point &#8211; let&#8217;s use X3/Y1 &#8211; we use all of the address pins at once to indicate the numbers we need. Pins AX0 &#8211; AX3 give us 4 X address pins &#8211; 4four bits, which lets us count from 0 &#8211; 15 in binary. AY0 &#8211; AY2 give us 3 bits, 0 &#8211; 7 in binary. The 4-bit binary representation of our X address, 3, is 0011, and our Y address, 1, is 001. Consulting the table above, we can look up the value for X3 and see that it is actually 0110, and if we jump down a bit, we see that Y1 is 001. So, to represent our X3/Y1 we just turn our Arduino pins X1, X2, and Y0 high, and leave the others low.</p>
<p>This is all pretty clear, and the addressing follows binary counting rules until you get to X6. Look at the data sheet &#8211; X12 and X13 are actually represented by the binary numbers 6 (0110) and 7 (0111). I found an easy fix for my application, but long story short &#8211; never assume your chip follows any logic, and always read the datasheet thoroughly. I will admit to much profanity upon discovery of this design &#8220;feature&#8221; &#8211; you can see I had fun on this one&#8230;</p>
<p><a href="http://gregsurges.com/wp-content/uploads/2011/09/Screen-shot-2011-09-10-at-8.33.01-PM.png" rel="lightbox[1280]"><img class="alignnone size-full wp-image-1286" title="Screen shot 2011-09-10 at 8.33.01 PM" src="http://gregsurges.com/wp-content/uploads/2011/09/Screen-shot-2011-09-10-at-8.33.01-PM.png" alt="Screen shot 2011-09-10 at 8.33.01 PM" width="536" height="181" /></a></p>
<p>Here&#8217;s my code, apologies for crummy WordPress formatting. Note that I&#8217;m only using an 8 x 8 subset of the chip, so my compensation may not work for your needs.</p>
<p><code>void togglePins(int chip, uint8_t x, uint8_t y, int state){<br />
if(x &gt;= 6){ // compensate for strange x-axis addressing scheme<br />
x += 2;<br />
}<br />
digitalWrite(chip, HIGH);<br />
// next lines convert from integer to binary address<br />
// bitRead returns whether a given bit position in the binary representation of a value is high or low<br />
if(bitRead(x, 0)) digitalWrite(X0, HIGH);<br />
if(bitRead(x, 1)) digitalWrite(X1, HIGH);<br />
if(bitRead(x, 2)) digitalWrite(X2, HIGH);<br />
if(bitRead(x, 3)) digitalWrite(X3, HIGH);<br />
if(bitRead(y, 0)) digitalWrite(Y0, HIGH);<br />
if(bitRead(y, 1)) digitalWrite(Y1, HIGH);<br />
if(bitRead(y, 2)) digitalWrite(Y2, HIGH);<br />
// after address pins are set, set strobe high<br />
digitalWrite(STROBE, HIGH);<br />
// make sure DATA pin is the correct value<br />
digitalWrite(DATA, state);<br />
// reset all pins to low<br />
digitalWrite(STROBE, LOW);<br />
digitalWrite(X0, LOW);<br />
digitalWrite(X1, LOW);<br />
digitalWrite(X2, LOW);<br />
digitalWrite(X3, LOW);<br />
digitalWrite(Y0, LOW);<br />
digitalWrite(Y1, LOW);<br />
digitalWrite(Y2, LOW);<br />
digitalWrite(chip, LOW);<br />
}</code></p>
<p>It&#8217;s a pretty simple function, and you can see the rest of the program in my <a href="https://bitbucket.org/pucktronix/pucktronix.snake.corral/src/8d934c721f7a/pucktronix.snake.corral.firmware.pde" target="_blank">bitbucket repository</a>.</p>
<p>I&#8217;ll be posting more soon about the device I&#8217;m building &#8211; it&#8217;s called pucktronix.snake.corral. I hope this helps decipher the datasheet, and saves some possible head-scratching.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/interfacing-an-mt8816-crosspoint-switch-with-arduino/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>pucktronix.snake.corral computer-controlled analog signal routing matrix demo recordings</title>
		<link>http://gregsurges.com/original-music/pucktronix-snake-corral-computer-controlled-analog-signal-routing-matrix-demo-recordings/</link>
		<comments>http://gregsurges.com/original-music/pucktronix-snake-corral-computer-controlled-analog-signal-routing-matrix-demo-recordings/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 23:58:55 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[Original Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[analog]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[matrix]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[signal]]></category>
		<category><![CDATA[synth]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1277</guid>
		<description><![CDATA[here are some improvisations using a new dual 8 x 8 matrix switching device being developed at pucktronix]]></description>
			<content:encoded><![CDATA[<p>here are some improvisations using a new dual 8 x 8 matrix switching device being developed at pucktronix</p>
<object height="81" width=""><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Fgreg-surges%2Fpucktronix-snake-corral&amp;g=1&amp;"></param><param name="allowscriptaccess" value="always"></param><embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Fgreg-surges%2Fpucktronix-snake-corral&amp;g=1&amp;" type="application/x-shockwave-flash" width=""></embed></object>
<object height="81" width=""><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Fgreg-surges%2Fgenerative-analog-8-27-2011&amp;g=1&amp;"></param><param name="allowscriptaccess" value="always"></param><embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Fgreg-surges%2Fgenerative-analog-8-27-2011&amp;g=1&amp;" type="application/x-shockwave-flash" width=""></embed></object>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/pucktronix-snake-corral-computer-controlled-analog-signal-routing-matrix-demo-recordings/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>pucktronix.golgi.apparatus release</title>
		<link>http://gregsurges.com/programming/pucktronix-golgi-apparatus-release/</link>
		<comments>http://gregsurges.com/programming/pucktronix-golgi-apparatus-release/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 21:06:41 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[pucktronix.golgi.apparatus]]></category>
		<category><![CDATA[cellular automata]]></category>
		<category><![CDATA[golgi apparatus]]></category>
		<category><![CDATA[Max/MSP]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSC]]></category>
		<category><![CDATA[pucktronix]]></category>
		<category><![CDATA[sequencer]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1267</guid>
		<description><![CDATA[Here&#8217;s the first release! https://bitbucket.org/pucktronix/pucktronix.golgi.apparatus/ Right now, there&#8217;s an OS X Standalone App, a Max Collective, and all of the source code. If anyone is running Max on windows and can compile a standalone for me, that&#8217;d be great. Also, please retweet/facebook/blog this as much as you&#8217;d like &#8211; I&#8217;d love to have as many [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the first release!</p>
<p><a href="https://bitbucket.org/pucktronix/pucktronix.golgi.apparatus/  " target="_blank">https://bitbucket.org/pucktronix/pucktronix.golgi.apparatus/ </a></p>
<p>Right now, there&#8217;s an OS X Standalone App, a Max Collective, and all of the source code.</p>
<p>If anyone is running Max on windows and can compile a standalone for me, that&#8217;d be great.</p>
<p>Also, please retweet/facebook/blog this as much as you&#8217;d like &#8211; I&#8217;d love to have as many people as possible see this!</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/pucktronix-golgi-apparatus-release/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Second batch of tabulaRasa PCBs</title>
		<link>http://gregsurges.com/programming/second-batch-of-tabularasa-pcbs/</link>
		<comments>http://gregsurges.com/programming/second-batch-of-tabularasa-pcbs/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 18:30:48 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[tabulaRasa - wavetable oscillator Arduino shield]]></category>
		<category><![CDATA[atmega]]></category>
		<category><![CDATA[pcb]]></category>
		<category><![CDATA[tabulaRasa]]></category>
		<category><![CDATA[wavetable oscillator]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1253</guid>
		<description><![CDATA[A second batch of 12 tabulaRasa pcbs and programmed atmega328 chips has been ordered. The price for the pcb/chip combo is $60 including shipping anywhere. Contact me if interested.]]></description>
			<content:encoded><![CDATA[<p>A second batch of 12 tabulaRasa pcbs and programmed atmega328 chips has been ordered. The price for the pcb/chip combo is $60 including shipping anywhere. Contact me if interested.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/second-batch-of-tabularasa-pcbs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A preview&#8230;</title>
		<link>http://gregsurges.com/original-music/electronic-music/a-preview/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/a-preview/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 00:32:12 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ca_seq]]></category>
		<category><![CDATA[Max/MSP]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[sequencer]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1245</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://gregsurges.com/wp-content/uploads/2011/08/Screen-shot-2011-08-10-at-5.27.54-PM.png" rel="lightbox[1245]"><img class="aligncenter size-full wp-image-1246" title="ca_seq" src="http://gregsurges.com/wp-content/uploads/2011/08/Screen-shot-2011-08-10-at-5.27.54-PM.png" alt="ca_seq" width="530" height="205" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/a-preview/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>tabulaRasa Source Code</title>
		<link>http://gregsurges.com/original-music/electronic-music/tabularasa-source-code/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/tabularasa-source-code/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 00:37:55 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[tabulaRasa]]></category>

		<guid isPermaLink="false">http://gregsurges.com/uncategorized/tabularasa-source-code/</guid>
		<description><![CDATA[The source code and schematics for the tabulaRasa (along with other stuff) are now available: https://bitbucket.org/pucktronix I hope to use eventually use the bitbucket site as the landing page for my code and electronics work.]]></description>
			<content:encoded><![CDATA[<p style="clear: both">The source code and schematics for the <a href="http://www.gregsurges.com/circuitry/tabularasa/" target="_blank">tabulaRasa</a> (along with other stuff) are now available:</p>
<p style="clear: both"><a href="http://bitbucket.org/pucktronix" target="_blank">https://bitbucket.org/pucktronix</a></p>
<p style="clear: both">I hope to use eventually use the bitbucket site as the landing page for my code and electronics work.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/tabularasa-source-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tips for a Successful Open-source Hardware Project &#8211; Raising Funding</title>
		<link>http://gregsurges.com/programming/tips-for-a-successful-open-source-hardware-project-raising-funding/</link>
		<comments>http://gregsurges.com/programming/tips-for-a-successful-open-source-hardware-project-raising-funding/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 02:20:09 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[tabulaRasa - wavetable oscillator Arduino shield]]></category>
		<category><![CDATA[USB - Control Voltage Interface]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[fund raising]]></category>
		<category><![CDATA[funding]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[kickstarter]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[octomod]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[tabulaRasa]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1229</guid>
		<description><![CDATA[I decided to fund the two projects (Octomod and tabulaRasa, if anyone missed part one) in slightly different ways. The Octomod was funded through word-of-mouth, Twitter, Facebook, and various online forums. This had the advantage of allowing me to interact with almost everyone who decided to buy a circuit board. I really like the forum [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">I decided to fund the two projects (<a href="http://www.gregsurges.com/circuitry/usb-octomod/" target="_blank">Octomod</a> and <a href="http://www.gregsurges.com/circuitry/tabularasa/" target="_blank">tabulaRasa</a>, if anyone missed part one) in slightly different ways.</p>
<p> <br/></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>The Octomod was funded through word-of-mouth, Twitter, Facebook, and various online forums.</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">This had the advantage of allowing me to interact with almost everyone who decided to buy a circuit board. I really like the forum method, because I received a lot of valuable feedback and many great suggestions on the designs. On the other hand, these methods forced me to buy the materials up front. I also had to deal with taking orders and collecting money, which can get complicated &#8211; making a free, functional storefront through WordPress also seems to be nearly impossible.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>For the tabulaRasa, in addition to the social networks and forums, I decided to apply to Kickstarter.</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Kickstarter is a way to raise funds for a project, by allowing people to commit a certain amount of money in exchange for a &#8220;reward&#8221; if the full funding amount is met. If full funding isn&#8217;t reached, no money exchanges hands. This has two advantages &#8211; 1) the project owner doesn&#8217;t have to invest money in the project upfront (although I did, and I&#8217;m sure many others do as well), and 2) the people who are funding only end up paying if the project is fully funded.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>A couple of things I&#8217;ve learned after the Kickstarter experience:</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">I&#8217;m not sure that the video Kickstarter requires really made a difference in my case &#8211; but it can&#8217;t hurt.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>Make sure to set a good financial goal &#8211; not too high and not too low.</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Likewise, I realized I allowed for too many different funding tiers &#8211; this complicated things when it came time to provide the rewards. In the future, I&#8217;d go with only 3 or 4 funding levels, and minimize the number of different reward types.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>You definitely want to be responsive to questions and comments &#8211; both on Kickstarter and on email.</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Also, I found it important to remain flexible and willing to change the project. The music I make with my electronics doesn&#8217;t require a volt per octave tuning scale, so I designed the tabulaRasa without any sort of calibrated tuning. Many people contacted me asking about v/octave capabilities, so I spent some time doing the math and implementing a tuning algorithm. I made a video demonstrating it working, and had a bunch of people kick-in funding.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">The last step of the process was ordering and assembling the boards, which I&#8217;ll cover in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/tips-for-a-successful-open-source-hardware-project-raising-funding/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Tips for a Successful Open-source Hardware Project &#8211; Design Considerations</title>
		<link>http://gregsurges.com/programming/tips-for-a-successful-open-source-hardware-project-design-considerations/</link>
		<comments>http://gregsurges.com/programming/tips-for-a-successful-open-source-hardware-project-design-considerations/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 23:57:28 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[tabulaRasa - wavetable oscillator Arduino shield]]></category>
		<category><![CDATA[USB - Control Voltage Interface]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[kickstarter]]></category>
		<category><![CDATA[Modular Synth]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1217</guid>
		<description><![CDATA[Here are some things I&#8217;ve observed while developing the tabulaRasa and the USB-Octomod. Both projects are open-source hardware/software packages for use in modular synthesizers. For me, the process divides up into three stages: design, funding, and production. I&#8217;ll cover each stage in a separate post. Design Make sure to spend plenty of time brainstorming, prototyping, [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Here are some things I&#8217;ve observed while developing the <a href="http://www.gregsurges.com/circuitry/tabularasa/" target="_blank">tabulaRasa</a> and the <a href="http://www.gregsurges.com/circuitry/usb-octomod/" target="_blank">USB-Octomod</a>. Both projects are open-source hardware/software packages for use in modular synthesizers.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">For me, the process divides up into three stages: design, funding, and production. I&#8217;ll cover each stage in a separate post.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>Design</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong><br />
</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>Make sure to spend plenty of time brainstorming, prototyping, scrapping, and remaking your project.</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">You want to explore as many angles as possible. Often a redesign or code rewrite will make implementing new features easier, or allow you to optimize some aspect of the design. Both the Octomod and the tabulaRasa went through multiple stages of sketching, prototyping, pcb design (and fabrication) before I decided they were done.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>Aim to use common, versatile components.</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">You don&#8217;t want to use a single-supplier component in a design, unless there is no other option. The Octomod uses a Teensy 2.0 microcontroller unit which is available from only one source. Within a few days of announcing the availability of PCBs, the Teensy 2.0 went out of stock, and stayed that way for months. Besides limiting the usefulness of the PCBs, this left me fielding questions about the availability of a product over which I had no control. Some people are experiencing a similar issue with the SD card socket used in the tabulaRasa. Since the part is available from Sparkfun, I assumed it would be relatively simple for people to get. However, I didn&#8217;t consider that shipping to European countries from Sparkfun is either expensive or impossible. (Not sure which it is, I just know I got some questions about alternate sources.)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>Using a minimal amount of components is also an advantage.</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">My initial designs for the tabulaRasa used a separate DAC chip, interfaced to the mcu through SPI. Although this theoretically provides for much higher bit resolution, most DACs require 16 or more bits to be transmitted per sample. The additional chip also added significant cost to the project. I instead used a simple PWM DAC, using an RC lowpass filter to smooth out the built-in PWM output of the ATmega. Simple, cheap, and still of a high-enough quality for my needs.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><strong>Open-source is an asset.</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Many of the technical questions I received (usually related to compilation or misunderstanding of OSC) were easily solved because users could send me the exact error messages or line numbers they received. (On the other hand, asking users to compile their own code also led to confusion. I had a few people try to compile Arduino code in Processing, and vice-versa.)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><br/><strong>More to come on how I raised money for construction on Kickstarter, and my thoughts on the manufacturing process.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/tips-for-a-successful-open-source-hardware-project-design-considerations/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

