<?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</title>
	<atom:link href="http://gregsurges.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gregsurges.com</link>
	<description>Composer of Electronic and Chamber Music, Freelance Programmer</description>
	<lastBuildDate>Fri, 27 Aug 2010 17:04:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Using OSC, Processing, and a Microcontroller to connect Max/MSP and a DAC IC.</title>
		<link>http://gregsurges.com/programming/osc-processing-microcontroller-connect-maxmsp-dac-ic/</link>
		<comments>http://gregsurges.com/programming/osc-processing-microcontroller-connect-maxmsp-dac-ic/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 17:04:06 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[USB - Control Voltage Interface]]></category>
		<category><![CDATA[analog synthesis]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[bit shifting]]></category>
		<category><![CDATA[DAC]]></category>
		<category><![CDATA[Max/MSP]]></category>
		<category><![CDATA[max5250]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[OSC]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[serial]]></category>
		<category><![CDATA[teensy]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=786</guid>
		<description><![CDATA[My most recent project, the USB-Octomod, uses Processing to create an OpenSoundControl (OSC) interface between any OSC-ready software and a hardware DAC device I built. I&#8217;m going to break down the connections between different pieces of software and hardware, in order to explain how the system works and to provide the basis for a future [...]]]></description>
			<content:encoded><![CDATA[<p>My most recent project, the <a href="http://gregsurges.com/circuitry/usb-octomod/">USB-Octomod</a>, uses <a href="http://www.processing.org/">Processing</a> to create an <a href="http://www.opensoundcontrol.org/">OpenSoundControl</a> (OSC) interface between any OSC-ready software and a hardware DAC device I built. I&#8217;m going to break down the connections between different pieces of software and hardware, in order to explain how the system works and to provide the basis for a future tutorial on how one might use the device.</p>

<p>You can read more about the Octomod <a href="http://gregsurges.com/circuitry/usb-octomod/">here</a>, but it essentially allows computer control over the analog control voltages commonly used in analog synthesizers. Input a number 0 &#8211; 1023, and the device will output an analog voltage from -5V to +5V.</p>

<p>The OSC interface presents the inputs to the device, in the form of 8 numbered channels. The user sends an OSC message from their software of choice, and the interface program receives, processes, and communicates the data to the microcontroller in the device. I used a <a href="http://www.pjrc.com/teensy/">Teensy 2.0</a>, which is very similar to Arduino, and any of this information should easily translate to the Arduino.</p>

<p><strong>The OSC Interface</strong></p>

<p>The OSC interface is simple. In your host program, you need to create a message formatted as follows:</p>

<p><code>/dac chanOne chanTwo chanThree chanFour chanFive chanSix chanSeven chanEight</code></p>

<p>For example:</p>

<p><code>/dac 256 273 50 1020 756 902 840 111</code></p>

<p>The trick here is that instead of sending an individual message whenever a channel changes, you can reduce network traffic by packaging all of the channels in one message, and updating that message at the rate of the most rapidly changing channel.</p>

<p><strong>Sending OSC from Max/MSP</strong></p>

<p>Here&#8217;s what it looks like in Max:</p>

<p><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-25-at-8.55.57-AM.png"><img class="aligncenter size-medium wp-image-794" title="Screen shot 2010-08-25 at 8.55.57 AM" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-25-at-8.55.57-AM-300x197.png" alt="Screen shot 2010-08-25 at 8.55.57 AM" width="300" height="197" /></a></p>

<p>What is this code doing?
<ol>
    <li>The <code>pak</code> object outputs all eight of its inputs as a list whenever any one of the inputs changes.</li>
    <li>The message box below appends the <code>/dac</code> prefix to the list. Now the OSC message is formatted correctly.</li>
    <li>We don&#8217;t want the message to send automatically whenever a channel updates, so we buffer it with the second message box. This is done by sending the first message to the right inlet of the second message box.</li>
    <li>Finally, the <code>metro</code> object triggers the full OSC message to be sent once every 10ms.</li>
</ol>
The OSC interface application is expecting data on port <code>9999</code>, and we&#8217;re going to be using the software locally, so we use the localhost address: <code>127.0.0.1</code>. The Max <code>udpsend</code> object takes those two numbers as arguments, and transmits the OSC message.</p>

<p><strong>Receiving OSC in Processing</strong></p>

<p>The OSC interface program is written in Processing. OSC is easy to use in Processing as well. With a couple of lines of code, we&#8217;re ready to go:</p>

<p><code>
<pre>import oscP5.*; // import the oscP5 library
import netP5.*; // the netP5 library is also required for the osc library
OscP5 oscP5;
oscP5 = new OscP5(this, 9999); // all you need to start oscp5 listening on port 9999</pre>
</code>
<p style="text-align: left;">Now all we have to do is tell our program what to do when an OSC message is received. This is done by defining the oscEvent function.</p>
<p style="text-align: left;">After parsing out each of the eight input numbers, we check if a given channel needs to update its state. If so, we pass it to the <code>writeValue()</code> function. If not, we ignore it and don&#8217;t have to waste processor time sending the redundant data over the serial port. In my experience, this allows update rates of up to (possibly beyond) 1ms.</p></p>

<p><code> </code></p>

<p><code>
<pre>void oscEvent(OscMessage theOscMessage){
 if(theOscMessage.checkAddrPattern("/dac")==true){
   for(int i = 0; i &lt; 8; i++){
     data[i] = theOscMessage.get(i).intValue();
     channelData[i] = data[i];
   }
   for(int i = 0; i &lt; 8; i++){
     writeValue(i, data[i]);
   }
 }
}</pre>
</code></p>

<p><strong>Writing Serial Data to the Teensy</strong></p>

<p><code> </code></p>

<p><code>
<pre>Serial teensy;
teensy = new Serial(this, Serial.list()[0], 19200);</pre>
</code></p>

<p>The above lines are used in Processing to initialize a <code>Serial</code> object, allowing both read and write operations. The <code>Serial.list()[0]</code> argument indicates which actual serial port we want to write to. On my system, the Teensy always shows up as port 0 &#8211; this might be different on yours. Finally, the baud rate of <code>19200</code> is specified. Baud rate is the number of distinct signal events per second, and is a measure of data transfer speed.</p>

<p>Below is our <code>writeValue()</code> function, which was referenced above. The function is called repeatedly, once for each new sample to be written. First, we have to choose which of our two DAC chips should receive the data. Channels 0 &#8211; 3 go to chip A, 4 &#8211; 7 to chip B.</p>

<p>The MAX5250 is expecting a two byte word, which is assembled in the next section of code.
<p style="text-align: left;">The SPI data expected by the MAX5250 DAC is as follows:
<a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-27-at-10.48.25-AM.png"><img style="display: block; margin-left: auto; margin-right: auto; border: 0px initial initial;" title="Screen shot 2010-08-27 at 10.48.25 AM" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-27-at-10.48.25-AM.png" alt="Screen shot 2010-08-27 at 10.48.25 AM" width="487" height="145" /></a></p>

<p>The first two bits select which of the four-per-chip channels to use, the second two bits allow us to write data with or without updating the actual voltage outputs, the next 10 bits are the actual data to be assigned, and the last two bits are unused. So, to write a data value of <code>512</code> to channel 3 and immediately output a voltage, we would send <code>1011001110110100</code>.</p>

<p>As you can see, it&#8217;s a bit involved, and that&#8217;s why we want to avoid running all of this code unless the data has actually changed. We end up with three bytes to send to the Teensy 2.0, a one byte digit to indicate which DAC we want to write to, and the two additional SPI bytes. These are put into a buffer (really just an array) which is only transmitted when the buffer is full. This is to circumvent some timing weirdness in the USB to Serial conversion hardware.</p>

<p><code> </code></p>

<p><code>
<pre>void writeValue(int &#95;channel, int &#95;data){
 if(_channel &gt; 3) { // assign one of two dac chips to respond
    dacChip = 1;
  } else {
    dacChip = 0;
  }</p>

<p>/* bit shifting and masking to assemble proper list of bits for the DAC */
  _channel = _channel &lt;&lt; 14;
  updateBits = 3 &lt;&lt; 12;
  _channel = _channel | updateBits;
  _data = _data &lt;&lt; 2;   spiWord = _channel | _data;
  binaryString = binary(spiWord, 16); // at this point, we've assembled our proper list of 16 bits
  outputData.add(byte(dacChip)); // so we'll throw them into an array, to facilitate transfer over serial
  outputData.add(byte(unbinary(binaryString.substring(0, 8))));
  outputData.add(byte(unbinary(binaryString.substring(8, 16))));
  if(outputData.size() &gt;= 24){
    outputBytes = new byte[outputData.size()];
    for(int i = 0; i &lt; outputData.size(); i++){
      outputBytes[i] = outputData.get(i);
    }
    teensy.write(outputBytes);
    dataIndex = 0;
    outputData = new ArrayList();
    previousUpdate = currentTime;
  }
}</pre>
</code></p>

<p><strong>Initializing SPI on the Teensy 2.0</strong></p>

<p>Here&#8217;s an explanation of SPI from Wikipedia:
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;">The SPI bus specifies four logic signals.</p></p>

<ul style="line-height: 1.5em; list-style-type: square; margin-top: 0.3em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 1.5em; list-style-image: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); padding: 0px;">
    <li style="margin-bottom: 0.1em;">SCLK — Serial Clock (output from master)</li>
    <li style="margin-bottom: 0.1em;">MOSI/SIMO — Master Output, Slave Input (output from master)</li>
    <li style="margin-bottom: 0.1em;">MISO/SOMI — Master Input, Slave Output (output from slave)</li>
    <li style="margin-bottom: 0.1em;">SS — Slave Select (active low; output from master)</li>
</ul>

<p>Essentially, the Master (Teensy 2.0 here) triggers the Slave chip by setting the SS pin low. Then the SCLK pin outputs a periodic clock pulse while the MOSI pin transmits the data (holding the SS pin low for the entire transfer). Here&#8217;s an image of the transmission from the MAX5250 datasheet &#8211; note that they use DIN (Data In) instead of MOSI, but it&#8217;s the same thing.
<p style="text-align: center;"><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-27-at-10.24.55-AM1.png"><img class="aligncenter size-full wp-image-829" title="Screen shot 2010-08-27 at 10.24.55 AM" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-27-at-10.24.55-AM1.png" alt="Screen shot 2010-08-27 at 10.24.55 AM" width="485" height="123" /></a></p></p>

<p>The first bit of code here is just a couple of statements to simplify our SPI communication. The DACs have a &#8220;Slave Select&#8221; pin, which allows them to either receive or ignore incoming data. This allows for easier wiring, you can connect all of the SPI lines to each chip, and just select which chip should respond at a given moment. Our DAC select byte (from above, in the writeValue() function) interfaces with the Slave Select code on the Teensy, and allows us to route data to the appropriate chip.Below, in the setup() function, we set the SS pins to output and set them both HIGH, so that no data is accidentally received by the DACs.</p>

<p>Finally, we call the <code>setup&#95;spi()</code> function, found in Andrew Smallbone&#8217;s SPI library. These settings define how the Teensy should handle SPI, whether the DACs read the data on the rising or falling edge of the clock pulse, the SPI transmission rate as related to the Teensy clock, and a couple of other settings. You might notice that the serial interface is being initialized with a baud rate of <code>9600</code>. The Teensy 2.0 actually ignores any baud rate argument and runs at full USB 2.0 speed.</p>

<p><code> </code></p>

<p><code>
<pre>&#35;define SELECT&#95;DAC&#95;ONE digitalWrite(PORTB0, LOW);
&#35;define DESELECT&#95;DAC&#95;ONE digitalWrite(PORTB0, HIGH);
&#35;define SELECT&#95;DAC&#95;TWO digitalWrite(PORTD0, LOW);
&#35;define DESELECT&#95;DAC&#95;TWO digitalWrite(PORTD0, HIGH);</p>

<p>void setup(){
  CPU&#95;PRESCALE(CPU&#95;4MHz);
  pinMode(PORTB0, OUTPUT);
  pinMode(PORTD0, OUTPUT);
  Serial.begin(9600);
  DESELECT&#95;DAC&#95;ONE;
  DESELECT&#95;DAC&#95;TWO;
  setup_spi(SPI&#95;MODE&#95;0, SPI&#95;MSB, SPI&#95;NO&#95;INTERRUPT, SPI&#95;MSTR&#95;CLK2);
}</pre>
</code>
<p style="text-align: left;">The last bit of code here reads incoming serial data, and immediate sends it out to the proper DAC. The serial buffering on the Teensy is a little bit different than the Arduino, in that it receives an entire USB packet at a time. The timing of the calls to <code>Serial.read()</code> can then be an issue. We want to make sure that we&#8217;re reading our three bytes in the proper order, and not getting out of phase with the host app, so we check that our first byte is either a 1 or a 0. Since the SPI interface packs data into the first and last bits of our data word (the second two bytes), a byte with the value of 1 or 0 will only appear as the first byte in the series. Timing is also important here, we need to introduce some brief delays so that we&#8217;re not reading or writing data too quickly.</p></p>

<pre><code>void loop(){
  pollAndWrite();
}

void pollAndWrite(){
 data = false;
 while(!data){
  if(Serial.available()) { // look into the receive buffering - not receiving from Max properly
    firstByte = Serial.read();
    delayMicroseconds(100);
    if(firstByte == B00000000) {
      secondByte = Serial.read();
      delayMicroseconds(100);
      thirdByte = Serial.read();
      SELECT_DAC_ONE;
      send_spi(secondByte);
      send_spi(thirdByte);
      delayMicroseconds(10);
      DESELECT_DAC_ONE;
      data = true;
    }
      if(firstByte == B00000001){
        secondByte = Serial.read();
        delayMicroseconds(100);
        thirdByte = Serial.read();
        SELECT_DAC_TWO;
        send_spi(secondByte);
        send_spi(thirdByte);
        delayMicroseconds(10);
        DESELECT_DAC_TWO;
        data = true;
    }
  }
 }
}</code></pre>

<p>So that&#8217;s the software side of the USB-Octomod. Although it&#8217;s fairly involved, there are only a few tricky spots, and the OSC interface greatly simplifies what the end-user actually has to think about during composition or performance.  Once the Processing and Teeny code is compiled and loaded, it becomes a plug-and-play device.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/osc-processing-microcontroller-connect-maxmsp-dac-ic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lazers! Release on Stasisfield</title>
		<link>http://gregsurges.com/original-music/lazers-release-stasisfield/</link>
		<comments>http://gregsurges.com/original-music/lazers-release-stasisfield/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 13:16:04 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[MP3]]></category>
		<category><![CDATA[Original Music]]></category>
		<category><![CDATA[electroacoustic improvisation]]></category>
		<category><![CDATA[free release]]></category>
		<category><![CDATA[Lazers!]]></category>
		<category><![CDATA[netlabel]]></category>
		<category><![CDATA[Stasisfield]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=720</guid>
		<description><![CDATA[

The Lazers! release, clocking in at around 100 minutes of music, is now available for free at Stasisfield.

Stasisfield curator John Kannenberg eloquently describes the recording:
Lazers! is a Milwaukee-based trio of composer/performers including David Collins, Steve Schlei, and Greg Surges. Their collective work focuses on custom-built instruments and indeterminate notation, incorporating situational, playful approaches to performance [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stasisfield.com/releases/year08/sf-8004.html"><img class="aligncenter size-medium wp-image-721" title="Lazers! Cover Art" src="http://gregsurges.com/wp-content/uploads/2010/08/cover_350-300x300.jpg" alt="Lazers! Cover Art" width="300" height="300" /></a></p>

<p>The Lazers! release, clocking in at around 100 minutes of music, is now available for free at <a href="http://stasisfield.com/releases/year08/sf-8004.html">Stasisfield</a>.</p>

<p>Stasisfield curator John Kannenberg eloquently describes the recording:
<blockquote>Lazers! is a Milwaukee-based trio of composer/performers including David Collins, Steve Schlei, and Greg Surges. Their collective work focuses on custom-built instruments and indeterminate notation, incorporating situational, playful approaches to performance while generating exploratory sonic spaces. Electronic instrumentation comingles with structures and forms rooted in the acoustic realm of improvisation: look for beats elsewhere, this material is more about sound&#8217;s relationship to negative space than pattern and rhythm. A multitude of approaches and scenarios makes each track on their debut album a fresh experience, its own uniquely impermanent world.</blockquote>
<p style="text-align: center;">Tracklist:</p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-01.mp3">Improvisation (Silver) Part A</a></p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-02.mp3">Mediation &#8211; David Collins, 2009</a></p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-03.mp3">Improvisation (Silver) Part B</a></p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-04.mp3">RadioGamelan &#8211; Greg Surges, 2010</a></p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-05.mp3">Fission (Three Parts) &#8211; Greg Surges, 2009</a></p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-06.mp3">Improvisation (Coumarin)</a></p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-07.mp3">Fission (One Part) &#8211; Greg Surges, 2009</a></p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-08.mp3">Improvisation (Stilbene)</a></p>
<p style="text-align: center;"><a href="http://stasisfield.com/mp3z_08/SF-8004-lazers-09.mp3">Improvisation (Pink)</a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/lazers-release-stasisfield/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-01.mp3" length="21222611" type="audio/mpeg" />
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-02.mp3" length="26130508" type="audio/mpeg" />
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-03.mp3" length="39447721" type="audio/mpeg" />
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-04.mp3" length="28662295" type="audio/mpeg" />
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-05.mp3" length="14863381" type="audio/mpeg" />
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-06.mp3" length="27458545" type="audio/mpeg" />
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-07.mp3" length="16643884" type="audio/mpeg" />
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-08.mp3" length="31738447" type="audio/mpeg" />
<enclosure url="http://stasisfield.com/mp3z_08/SF-8004-lazers-09.mp3" length="42148773" type="audio/mpeg" />
		</item>
		<item>
		<title>USB Control Voltage Interface &#8211; Progress So Far</title>
		<link>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-control-voltage-interface-progress/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-control-voltage-interface-progress/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 16:28:07 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[USB - Control Voltage Interface]]></category>
		<category><![CDATA[analog synthsis]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[control voltage interface]]></category>
		<category><![CDATA[hardware hacking]]></category>
		<category><![CDATA[max5250]]></category>
		<category><![CDATA[teensy]]></category>
		<category><![CDATA[usb control voltage interface]]></category>
		<category><![CDATA[usb to cv]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=680</guid>
		<description><![CDATA[With the arrival of the first prototype PCB today, I thought I would post a bit about the the design process thus far.

Moving from the very first Arduino-based prototype (breadboarded on a Radioshack experiment lab), I decided that a Teensy 2.0 would be a better solution. Cheaper, faster, breadboard capable, and a true serial peripheral, [...]]]></description>
			<content:encoded><![CDATA[<p>With the arrival of the first prototype PCB today, I thought I would post a bit about the the design process thus far.</p>

<p>Moving from the very first Arduino-based prototype (breadboarded on a Radioshack experiment lab), I decided that a Teensy 2.0 would be a better solution. Cheaper, faster, breadboard capable, and a true serial peripheral, the chip works great and can be programmed using a slightly-modified version of the Arduino environment. You can also use the usual AVR toolchain if you prefer.</p>

<p><div id="attachment_681" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0163.JPG"><img class="size-medium wp-image-681" title="Prototype interface on experiment board." src="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0163-300x225.jpg" alt="This is the original, very minimal prototype on a Radioshack experiment board." width="300" height="225" /></a><p class="wp-caption-text">This is the original, very minimal prototype on a Radioshack experiment board.</p></div></p>

<p><div id="attachment_682" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0182.JPG"><img class="size-medium wp-image-682" title="Setting up the Teensy 2.0. " src="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0182-300x225.jpg" alt="Setting up the Teensy 2.0 for breadboarding." width="300" height="225" /></a><p class="wp-caption-text">Setting up the Teensy 2.0 for breadboarding.</p></div></p>

<p>The next thing to do was to work on the software side of things. Originally, I developed a Max/MSP patch which directly translated integers into the proper binary string, as required by the MAX5250 DAC ICs. I wanted to make the project completely open source, so I decided to create a stand-alone program using Processing. The program essentially listens for specific OSC messages (which can be sent from any program or process the user chooses), and then translates those messages into 5250-compatible binary data. I think the solution works well, and removes any necessity for the user to own specific software.</p>

<p><div id="attachment_683" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-16-at-11.17.45-AM.png"><img class="size-medium wp-image-683" title="Software example" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-16-at-11.17.45-AM-300x174.png" alt="Above, a Max/MSP patch transmits data over OSC, to the program below, which converts the received integers into binary data required by the DAC ICs." width="300" height="174" /></a><p class="wp-caption-text">Above, a Max/MSP patch transmits data over OSC, to the host program (below), which converts the received integers into binary data required by the DAC ICs.</p></div></p>

<p>After some final touches to the layout, (applying low-pass filters to smooth the output voltages, converting the unipolar output of the DAC to a bipolar voltage) I laid the circuit out in Eagle.</p>

<p><div id="attachment_684" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-03-at-1.19.44-PM1.png"><img class="size-medium wp-image-684" title="Interface PCB" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-03-at-1.19.44-PM1-300x286.png" alt="Here's the PCB layout as sent in for fabrication. There are a few small errors..." width="300" height="286" /></a><p class="wp-caption-text">Here&#39;s the PCB layout as sent in for fabrication. There are a few small errors...</p></div></p>

<p><div id="attachment_692" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0718.JPG"><img class="size-medium wp-image-692" title="Front of Proto PCB" src="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0718-300x225.jpg" alt="This is the silk-screened front of the PCB prototype." width="300" height="225" /></a><p class="wp-caption-text">This is the silk-screened front of the PCB prototype.</p></div></p>

<p><div id="attachment_693" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0719.JPG"><img class="size-medium wp-image-693" title="The back side, ground plane and all." src="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0719-300x225.jpg" alt="The back side, ground plane and all." width="300" height="225" /></a><p class="wp-caption-text">The back side, ground plane and all.</p></div></p>

<p>I&#8217;d say the board looks pretty good. I got it from BatchPCB.com, part of Sparkfun. Not exactly the cheapest or the fastest, but good for a one-off. (They gave me two&#8230;?)</p>

<p>Here&#8217;s the front again, with my hand for scale. The board is 2.9&#8243; x 3.05&#8243;.</p>

<p><a href="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0717.JPG"><img class="alignnone size-medium wp-image-694" title="The board with a hand to show scale." src="http://gregsurges.com/wp-content/uploads/2010/08/DSCN0717-300x225.jpg" alt="The board with a hand to show scale." width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-control-voltage-interface-progress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hand-routed PCB</title>
		<link>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/hand-routed-pcb/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/hand-routed-pcb/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 18:22:10 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[USB - Control Voltage Interface]]></category>
		<category><![CDATA[analog synthesis]]></category>
		<category><![CDATA[control voltage]]></category>
		<category><![CDATA[cv]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[hand-routing]]></category>
		<category><![CDATA[pcb]]></category>
		<category><![CDATA[usb control voltage interface]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=673</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_674" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-03-at-1.19.44-PM.png"><img class="size-medium wp-image-674" title="Screen shot 2010-08-03 at 1.19.44 PM" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-03-at-1.19.44-PM-300x286.png" alt="I ended up hand-routing the PCB. Here it is, as sent for fabrication." width="300" height="286" /></a><p class="wp-caption-text">I ended up hand-routing the PCB. Here it is, as sent for fabrication.</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/hand-routed-pcb/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>USB-CV Interface PCB Images</title>
		<link>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-cv-interface-pcb-images/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-cv-interface-pcb-images/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 00:02:37 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[USB - Control Voltage Interface]]></category>
		<category><![CDATA[analog synthesizer]]></category>
		<category><![CDATA[control voltage]]></category>
		<category><![CDATA[DAC]]></category>
		<category><![CDATA[Eagle]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[pcb]]></category>
		<category><![CDATA[schematic]]></category>
		<category><![CDATA[usb interface]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=666</guid>
		<description><![CDATA[Here are some images of the pcb for my USB-CV device, made using the Eagle schematic/layout editor.
]]></description>
			<content:encoded><![CDATA[<p>Here are some images of the pcb for my USB-CV device, made using the Eagle schematic/layout editor.</p>

<p><div id="attachment_667" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-01-at-6.55.30-PM.png"><img class="size-medium wp-image-667" title="USB-CV PCB  Image One" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-01-at-6.55.30-PM-300x207.png" alt="A closeup of the board, including part of the DAC IC." width="300" height="207" /></a><p class="wp-caption-text">A closeup of the board, including part of the DAC IC.</p></div></p>

<p><div id="attachment_668" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-01-at-6.55.44-PM.png"><img class="size-medium wp-image-668" title="USB-CV Closeup Two" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-01-at-6.55.44-PM-300x199.png" alt="Part of the microcontroller, DAC, and opamp." width="300" height="199" /></a><p class="wp-caption-text">Part of the microcontroller, DAC, and opamp.</p></div></p>

<p><div id="attachment_669" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-01-at-12.16.36-PM.png"><img class="size-medium wp-image-669" title="USB-CV Closeup Three" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-01-at-12.16.36-PM-300x192.png" alt="Voltage regulator, capacitor, and DAC." width="300" height="192" /></a><p class="wp-caption-text">Voltage regulator, capacitor, and DAC.</p></div></p>

<p><div id="attachment_670" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-01-at-6.55.01-PM.png"><img class="size-medium wp-image-670" title="USB-CV Full Layout" src="http://gregsurges.com/wp-content/uploads/2010/08/Screen-shot-2010-08-01-at-6.55.01-PM-300x287.png" alt="Finally, the full layout. Dimensions (in.) are 3.05 x 2.90." width="300" height="287" /></a><p class="wp-caption-text">Finally, the full layout. Dimensions (in.) are 3.05 x 2.90.</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-cv-interface-pcb-images/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>USB to Control Voltage Generator Proof of Concept</title>
		<link>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-control-voltage-generator-proof-concept/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-control-voltage-generator-proof-concept/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 02:16:49 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[USB - Control Voltage Interface]]></category>
		<category><![CDATA[analog synthesis]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[control voltage]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[synthesizer]]></category>
		<category><![CDATA[teensy]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=661</guid>
		<description><![CDATA[This is a demonstration of the USB -&#62; CV PC/Analog Synthesizer interface I&#8217;m developing.

In this clip, sample data is being sent from Max/MSP over the serial port to a Teensy 2.0 microcontroller. The controller sends the incoming data over an ISP connection to a DAC, the output of which can be used as a modulation [...]]]></description>
			<content:encoded><![CDATA[<p>This is a demonstration of the USB -&gt; CV PC/Analog Synthesizer interface I&#8217;m developing.</p>

<p>In this clip, sample data is being sent from Max/MSP over the serial port to a Teensy 2.0 microcontroller. The controller sends the incoming data over an ISP connection to a DAC, the output of which can be used as a modulation source for analog synthesis modules.</p>

<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13317081&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=13317081&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

<p><a href="http://vimeo.com/13317081">Computer Generated Control Voltage Generator</a> from <a href="http://vimeo.com/gregsurges">Greg Surges</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-control-voltage-generator-proof-concept/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>&#8220;Buzzcloud&#8221; Video</title>
		<link>http://gregsurges.com/original-music/electronic-music/buzzcloud-video/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/buzzcloud-video/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 22:50:00 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Buzzcloud]]></category>
		<category><![CDATA[closeup]]></category>
		<category><![CDATA[Daniele Sosio]]></category>
		<category><![CDATA[experimental]]></category>
		<category><![CDATA[textures]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=650</guid>
		<description><![CDATA[Italian filmmaker Daniele Sosio and I just finished our collaboration on &#8220;Buzzcloud.&#8221; Check it out below, and check out the rest of Daniele&#8217;s work here.



Buzzcloud &#8211; Greg Surges from Daniele Sosio on Vimeo.
]]></description>
			<content:encoded><![CDATA[<p>Italian filmmaker Daniele Sosio and I just finished our collaboration on &#8220;<a href="http://www.gregsurges.com/compositions/buzzcloud/">Buzzcloud</a>.&#8221; Check it out below, and check out the rest of Daniele&#8217;s work <a href="http://vimeo.com/user3188757">here</a>.</p>

<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12796377&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=12796377&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

<p><a href="http://vimeo.com/12796377">Buzzcloud &#8211; Greg Surges</a> from <a href="http://vimeo.com/user3188757">Daniele Sosio</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/buzzcloud-video/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gates (No. 1)</title>
		<link>http://gregsurges.com/original-music/gates-no-1/</link>
		<comments>http://gregsurges.com/original-music/gates-no-1/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 13:37:13 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[Original Music]]></category>
		<category><![CDATA[Electronic]]></category>
		<category><![CDATA[Feedback]]></category>
		<category><![CDATA[Improvisation]]></category>
		<category><![CDATA[Instrument Building]]></category>
		<category><![CDATA[Interactive]]></category>
		<category><![CDATA[Pure Data]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=642</guid>
		<description><![CDATA[I just added this to the page for my piece Gates (No. 1).

Gates (No. 1) is a software instrument, programmed in Pure Data. Inspired by other instrument builders, particularly David Tudor&#8217;s electronic instruments, Gates (No. 1) provides the performer with high-level control of musical events, while the moment-to-moment details emerge from the patch itself.

Central to [...]]]></description>
			<content:encoded><![CDATA[<p>I just added this to the page for my piece <a href="http://gregsurges.com/compositions/gates-no-1/"><em>Gates (No. 1</em>)</a>.</p>

<p><em>Gates (No. 1) </em>is a software instrument, programmed in <a href="http://www.pure-data.info">Pure Data</a>. Inspired by other instrument builders, particularly David Tudor&#8217;s electronic instruments, <em>Gates (No. 1) </em>provides the performer with high-level control of musical events, while the moment-to-moment details emerge from the patch itself.</p>

<p><div id="attachment_633" class="wp-caption alignnone" style="width: 297px"><a href="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.02.48-AM.png"><img class="size-medium wp-image-633 " title="Gates (No. 1) - Greg Surges: Main Interface" src="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.02.48-AM-287x300.png" alt="The main interface for Gates (No. 1)." width="287" height="300" /></a><p class="wp-caption-text">The main interface for Gates (No. 1).</p></div></p>

<p>Central to the sound of the instrument is a set of three feedback networks. Implemented using recursive delay lines, each network emphasizes a particular frequency range: low, medium, and high. The frequency ranges are user-selectable, allowing for coarse control over the register of a particular musical event. Slight changes in delay time and filter cutoffs destabilize the feedback, producing glissandi and other effects.</p>

<p><div id="attachment_634" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.03.11-AM.png"><img class="size-medium wp-image-634" title="Feedback network producing low frequency sounds." src="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.03.11-AM-300x230.png" alt="Feedback network producing low frequency sounds." width="300" height="230" /></a><p class="wp-caption-text">Feedback network producing low frequency sounds.</p></div></p>

<p>The pitch register is selected through a combination of key-presses, which also determines other parameters of the sound. The first of those other parameters is a selection of one of 6 sound-processing algorithms which is applied to the selected feedback network. The 6 processing types are: amplitude modulation by line segments, ring modulation by filtered noise, ring modulation by a sine wave, recursive delay with delay time modulation, a chorus effect, and a set of bandpass filters in series (creating phase cancellations).</p>

<p><div id="attachment_637" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.04.27-AM.png"><img class="size-medium wp-image-637" title="ASCII-based input module." src="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.04.27-AM-300x158.png" alt="ASCII-based input module." width="300" height="158" /></a><p class="wp-caption-text">ASCII-based input module.</p></div></p>

<p><div id="attachment_635" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.03.24-AM.png"><img class="size-medium wp-image-635" title="Inner workings of the patch." src="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.03.24-AM-300x224.png" alt="Inner workings of the patch. Above are the different processing modules, routed through an echo effect, and out to the DAC." width="300" height="224" /></a><p class="wp-caption-text">Inner workings of the patch. Above are the different processing modules, routed through an echo effect, and out to the DAC.</p></div></p>

<p>The second parameter is a selection of one of 50 different, hand-drawn wave shapes. The wave shapes provide control data for the modulation sources described above.</p>

<p><div id="attachment_636" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.04.06-AM.png"><img class="size-medium wp-image-636" title="Wave Shapes" src="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.04.06-AM-300x146.png" alt="One set of wave shapes, used to control the sound processing modules." width="300" height="146" /></a><p class="wp-caption-text">One set of wave shapes, used to control the sound processing modules.</p></div></p>

<p>The key-press combination also determines the duration and number of repeats of a sound, ranging from short, repetitive events to long drones. Finally, the performer can choose to route the output of the instrument through a secondary processing unit, which modifies its processing algorithms according to the rhythmic onsets of the generated sound.</p>

<p><div id="attachment_639" class="wp-caption alignnone" style="width: 310px"><a href="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.04.50-AM.png"><img class="size-medium wp-image-639" title="Secondary effects module." src="http://gregsurges.com/wp-content/uploads/2009/09/Screen-shot-2010-06-28-at-8.04.50-AM-300x198.png" alt="The secondary effects module adds a layer of digital grit, contrasting with the cleaner sounds of the instrument." width="300" height="198" /></a><p class="wp-caption-text">The secondary effects module adds a layer of digital grit, contrasting with the cleaner sounds of the instrument.</p></div></p>

<p>The variety and diversity of sound generation, processing, and control algorithms ensure that the instrument is never fully under the control of the performer. Rather than a flaw, this is a feature, as it ensures an exciting challenge for the performer, and produces performances which can retain similar characteristics while varying widely in structure and duration.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/gates-no-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Updated Synth Modules</title>
		<link>http://gregsurges.com/original-music/electronic-music/updated-synth-modules/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/updated-synth-modules/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 14:41:44 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[Modular Synth]]></category>
		<category><![CDATA[Paint Pen]]></category>
		<category><![CDATA[Panel Design]]></category>
		<category><![CDATA[synth]]></category>
		<category><![CDATA[VCA]]></category>
		<category><![CDATA[vcf]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=628</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><div class="wp-caption alignnone" style="width: 507px"><img src="http://sphotos.ak.fbcdn.net/hphotos-ak-ash1/hs326.ash1/28476_796326633148_26707893_43719028_729464_n.jpg" alt="Updated panel for SVF. " width="497" height="606" /><p class="wp-caption-text">Updated panel for SVF. </p></div></p>

<p><div class="wp-caption alignnone" style="width: 507px"><img src="http://sphotos.ak.fbcdn.net/hphotos-ak-ash1/hs326.ash1/28476_796326613188_26707893_43719027_1615858_n.jpg" alt="New panel design for VCA. Knobs arent installed yet." width="497" height="593" /><p class="wp-caption-text">New panel design for VCA. Knobs aren&#39;t installed yet.</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/updated-synth-modules/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>4 x 4 Matrix Mixer and State-Variable VCF</title>
		<link>http://gregsurges.com/original-music/4-4-matrix-mixer-state-variable-vcf/</link>
		<comments>http://gregsurges.com/original-music/4-4-matrix-mixer-state-variable-vcf/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 14:53:40 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Electronic Music]]></category>
		<category><![CDATA[Original Music]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[matrix mixer]]></category>
		<category><![CDATA[modular]]></category>
		<category><![CDATA[synth]]></category>
		<category><![CDATA[synthesizer]]></category>
		<category><![CDATA[vcf]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=618</guid>
		<description><![CDATA[I&#8217;ve recently built both a 4 x 4 audio matrix mixer and a state-variable vcf. Here are some images:


]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently built both a 4 x 4 audio matrix mixer and a state-variable vcf. Here are some images:</p>

<p><div class="wp-caption alignnone" style="width: 476px"><img class="   " src="http://sphotos.ak.fbcdn.net/hphotos-ak-ash1/hs339.ash1/29130_789373307668_26707893_43419670_2818288_n.jpg" alt="This is the inside of the 4 x 4 matrix mixer." width="466" height="350" /><p class="wp-caption-text">This is the inside of the 4 x 4 matrix mixer.</p></div></p>

<p><div class="wp-caption alignnone" style="width: 476px"><img class="   " src="http://sphotos.ak.fbcdn.net/hphotos-ak-ash1/hs339.ash1/29130_789373282718_26707893_43419669_684652_n.jpg" alt="Some of the inner circuitry." width="466" height="350" /><p class="wp-caption-text">Some of the inner circuitry.</p></div></p>

<p><div class="wp-caption alignnone" style="width: 477px"><img class=" " title="Finished Matrix Mixer (Back Panel)" src="http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs330.snc3/29130_789373362558_26707893_43419676_5537478_n.jpg" alt="This is the back panel w/ outputs and power." width="467" height="350" /><p class="wp-caption-text">This is the back panel w/ outputs and power.</p></div></p>

<p><div class="wp-caption alignnone" style="width: 483px"><img class=" " title="Finished Matrix Mixer" src="http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs330.snc3/29130_789373332618_26707893_43419673_3982018_n.jpg" alt="This is the finished matrix mixer." width="473" height="354" /><p class="wp-caption-text">This is the finished matrix mixer.</p></div></p>

<p><div class="wp-caption alignnone" style="width: 483px"><img class=" " src="http://hphotos-snc3.fbcdn.net/hs659.snc3/32540_794310263968_26707893_43637284_2189674_n.jpg" alt="The mostly populated VCF PCB. " width="473" height="355" /><p class="wp-caption-text">The mostly populated VCF PCB. </p></div></p>

<p><div class="wp-caption alignnone" style="width: 481px"><img class=" " src="http://sphotos.ak.fbcdn.net/hphotos-ak-ash1/hs559.ash1/32540_794310278938_26707893_43637286_4454140_n.jpg" alt="Panel wiring and testing the VCF circuit." width="471" height="354" /><p class="wp-caption-text">Doing the panel wiring and testing the VCF circuit.</p></div></p>

<p><div class="wp-caption alignnone" style="width: 487px"><img src="http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs659.snc3/32540_794309585328_26707893_43637264_1572060_n.jpg" alt="The finished enclosure: a power-indication LED will fit in the hole on the left." width="477" height="635" /><p class="wp-caption-text">The finished enclosure: a power-indication LED will fit in the hole on the left.</p></div></p>

<p><img src="file:///Users/Greg/Library/Caches/TemporaryItems/moz-screenshot.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/4-4-matrix-mixer-state-variable-vcf/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
