<?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>Colin Sullivan &#187; work</title>
	<atom:link href="http://colin-sullivan.com/main/archives/tag/work/feed" rel="self" type="application/rss+xml" />
	<link>http://colin-sullivan.com/main</link>
	<description>Thoughts and stories from Colin&#039;s brain.</description>
	<lastBuildDate>Mon, 30 Aug 2010 15:37:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Kenyon Finally Launches!</title>
		<link>http://colin-sullivan.com/main/archives/645</link>
		<comments>http://colin-sullivan.com/main/archives/645#comments</comments>
		<pubDate>Mon, 05 Apr 2010 15:50:20 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[home]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.colin-sullivan.com/main/?p=645</guid>
		<description><![CDATA[My Symfony project is finally complete. I cannot take credit for the design, but I am quite proud of how the backend came out. Of course, all of the coolness is stuff the general public cannot see. Symfony worked out quite well, I would certainly use it again if I had to do a PHP [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.colin-sullivan.com/main/archives/522">My Symfony project</a> is finally complete.  I cannot take credit for the design, but I am quite proud of how the backend came out.  Of course, all of the coolness is stuff the general public cannot see.  Symfony worked out quite well, I would certainly use it again if I had to do a PHP project in the future.<br />
<span id="more-645"></span><br />
Integrating the site with Paypal&#8217;s Payflow Link service was very easy as well.  They give you many options for testing, and the service is very well documented.  The only problem I couldn&#8217;t figure out how to get around is this JavaScript alert that is thrown every time a user completes a purchase, warning them that their data is being sent insecurely back to the merchant&#8217;s site.  This is not a very helpful error in my opinion, as they are not sending any credit card information and it will undoubtedly just scare users.  Overall, the service works quite well.</p>
]]></content:encoded>
			<wfw:commentRss>http://colin-sullivan.com/main/archives/645/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IBM: Extreme Blue Internship</title>
		<link>http://colin-sullivan.com/main/archives/629</link>
		<comments>http://colin-sullivan.com/main/archives/629#comments</comments>
		<pubDate>Mon, 29 Mar 2010 23:36:42 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[home]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.colin-sullivan.com/main/?p=629</guid>
		<description><![CDATA[This summer I will be interning at IBM in Austin, TX. I will be part of the Extreme Blue team of interns, working for IBM&#8217;s Emerging Technologies division on a project called Big Sheets. I will be doing mostly JavaScript interface work, and am looking forward to the experience.  Over the summer I&#8217;ll write as [...]]]></description>
			<content:encoded><![CDATA[<p>This summer I will be interning at <a href="http://ibm.com">IBM</a> in Austin, TX.  I will be part of the <a href="http://ibm.com/extremeblue">Extreme Blue</a> team of interns, working for IBM&#8217;s <a href="http://www-01.ibm.com/software/ebusiness/jstart/index.html">Emerging Technologies</a> division on a project called <a href="http://www-01.ibm.com/software/ebusiness/jstart/bigsheets/">Big Sheets</a>.  I will be doing mostly JavaScript interface work, and am looking forward to the experience.  Over the summer I&#8217;ll write as much as I am legally able to about my time at IBM.</p>
]]></content:encoded>
			<wfw:commentRss>http://colin-sullivan.com/main/archives/629/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fibonacci Composition</title>
		<link>http://colin-sullivan.com/main/archives/582</link>
		<comments>http://colin-sullivan.com/main/archives/582#comments</comments>
		<pubDate>Thu, 25 Feb 2010 21:22:18 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[home]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[fibonacci]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.colin-sullivan.com/main/?p=582</guid>
		<description><![CDATA[This semester, for &#8220;Interactive Arts Programming&#8221; class, I will be making an interactive composition based on the Fibonacci sequence. The piece will involve me playing the bass line of my composition, while a computer takes my performance as input and generates algorithmically determined accompaniments. Objective My objective is to write a bass guitar composition and [...]]]></description>
			<content:encoded><![CDATA[<p>This semester, for &#8220;Interactive Arts Programming&#8221; class, I will be making an interactive composition based on the Fibonacci sequence.  The piece will involve me playing the bass line of my composition, while a computer takes my performance as input and generates algorithmically determined accompaniments.<br />
<span id="more-582"></span></p>
<h3>Objective</h3>
<p>My objective is to write a bass guitar composition and design algorithmically determined accompaniments, all based on the Fibonacci sequence.</p>
<h3>Goals</h3>
<ul>
<li>Finish writing a composition that I once started on my bass revolving around the Fibonacci numbers</li>
<li>Design various accompaniments to this bass line also revolving around the Fibonacci sequence</li>
<li>Experiment with digital audio effects, the parameters of which are manipulated based on Fibonacci sequence</li>
<li>Experiment with manual manipulation of different parameters of the auto-accompaniments</li>
<li>Experiment with multi-channel audio</li>
<li>Use a MIDI foot pedal, or other sensors (accelerometer), to manipulate these parameters during performance of the piece</li>
</ul>
<h3>Implementation</h3>
<p>I am hoping to achieve these goals by creating a few smaller projects to tackle each of them, and then bringing all of the techniques together in the end.</p>
<div style="margin-left: 20px">
<h4>Input</h4>
<p>Using the MIDI pickup on my bass guitar, I will not only depend on pitch analysis from the audio signal, but a mixture of information from the MIDI and the audio signal, to ensure that the correct note value is used throughout the rest of the program.</p>
<h4>Accompaniments</h4>
<p>The MIDI from the accompaniments will be generated with Max, then sent via MIDIpipe or some other method to Logic or Live, so it wont sound like garbage.</p>
<h4>Digital Audio Effects</h4>
<p>Instead of creating effects from scratch, I will experiment with MSP/ChucK patches that have already been created, and merely manipulate various parameters of them based on Fibonacci sequence.</p>
<h4>Manual parameter manipulation</h4>
<p>I will experiment with manipulation of the parameters of the accompaniments themselves, as well as parameters of the audio effects/channels, to see what sounds good.</p>
<h4>Multi-channel audio</h4>
<p>It would be interesting to send these accompaniments through multiple channels, to achieve a surround sound effect.  I will do the audio channel management in Max/MSP.</p>
</div>
<p>In the end I hope to have flushed out this composition I have in mind, and to have some natural sounding, algorithmically determined accompaniments in the piece.  My goal is not to merely generate these accompaniments in an arbitrary way, but to ensure that the piece is still pleasing to listen to.  I do not want knowledge of my development process to be a prerequisite for listening to the piece.  It should stand on its own.</p>
]]></content:encoded>
			<wfw:commentRss>http://colin-sullivan.com/main/archives/582/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CMS in Symfony</title>
		<link>http://colin-sullivan.com/main/archives/522</link>
		<comments>http://colin-sullivan.com/main/archives/522#comments</comments>
		<pubDate>Sat, 20 Feb 2010 17:01:53 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[home]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.colinsullivan.dreamhosters.com/main/?p=522</guid>
		<description><![CDATA[I was recently hired by Synthetic Cinema to develop a content management system for kenyonappliances.com.  I developed the entire backend using the Symfony PHP framework, and implemented some Javascript functionality on the frontend. Features Entire e-commerce solution, so Kenyon can sell their products directly to customers. Dealer login, enabling dealers to select which products they [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently hired by Synthetic Cinema to develop a content management system for <a href="http://kenyonappliances.com">kenyonappliances.com</a>.  I developed the entire backend using the Symfony PHP framework, and implemented some Javascript functionality on the frontend.<br />
<span id="more-522"></span></p>
<h3>Features</h3>
<ul>
<li>Entire e-commerce solution, so Kenyon can sell their products directly to customers.</li>
<li>Dealer login, enabling dealers to select which products they carry</li>
<li>Google Maps &#8220;Dealer Locator&#8221; which can be specific to items carried by dealer</li>
<li>Administrative users can receive notification of low stock and product invoices</li>
<li>Unlimited number of static pages, all editable through administrative interface</li>
<li>All products &amp; product categories handled through admin interface</li>
</ul>
<h3>Implementation</h3>
<ul>
<li>PHP Symfony web framework</li>
<li>Symfony plugins</li>
<li>Javascript
<ul>
<li>Google Maps API</li>
<li>jQuery/Ajax</li>
</ul>
</li>
<li>MySQL</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://colin-sullivan.com/main/archives/522/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bass Distortion with ChucK</title>
		<link>http://colin-sullivan.com/main/archives/343</link>
		<comments>http://colin-sullivan.com/main/archives/343#comments</comments>
		<pubDate>Thu, 22 Oct 2009 17:01:09 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[home]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[multimedia]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sound]]></category>

		<guid isPermaLink="false">http://colin-sullivan.com/main/?p=343</guid>
		<description><![CDATA[This semester I have been pursuing an independent study in DSP Programming for Music/Audio Applications. For my final project, I will be designing an Overdrive/Distortion effect that is customized for the sound of my bass. I&#8217;ve decided to implement this using a programming language called ChucK, which so far has been working out extremely well. [...]]]></description>
			<content:encoded><![CDATA[<p>This semester I have been pursuing an independent study in DSP Programming for Music/Audio Applications.  For my final project, I will be designing an Overdrive/Distortion effect that is customized for the sound of my bass.<span id="more-343"></span></p>
<p>I&#8217;ve decided to implement this using a programming language called <a href="http://chuck.cs.princeton.edu/">ChucK</a>, which so far has been working out extremely well.  <a href="http://chuck.cs.princeton.edu/">ChucK</a> is a relatively new multimedia programming language which allows you to accomplish some complicated tasks in very little time.  Since I have not really done any DSP Programming before, it is extremely gratifying to be able to hear results immediately.</p>
<p>The way Independent Study works at RPI, is you make proposals, set goals, and complete them.  Here is my proposal for my end-of-semester project: <a href='http://colin-sullivan.com/main/wp-content/uploads/2009/10/Colin-Sullivan-IS-Project-Proposal.pdf'>Project Proposal</a></p>
<p><a href="http://www.arts.rpi.edu/crb/">Curtis Bahn</a> is my advising professor for this project, and he has been more than helpful.</p>
<p>Here is an audio sample of the effect in action.  There are no other alterations to the bass signal besides mixing in a bit of clean as well.  The affected signal was recorded through my stack (GK-700RBII, Ampeg SVT410HLF) using my Zoom H4n.  The distortion increases as I play my bass louder, as you can hear towards the end of the clip.</p>
<!-- degradable html5 audio and video plugin --><div class="audio_wrap html5audio"><audio controls autobuffer id="html5audio-0" class="html5audio"><source src="http://colin-sullivan.com/main/wp-content/uploads/2009/12/Overdrive_test.ogg" type="audio/ogg" /><source src="http://colin-sullivan.com/main/wp-content/uploads/2009/12/Overdrive_test.mp3" type="audio/mpeg" /><a href="http://colin-sullivan.com/main/wp-content/uploads/2009/12/Overdrive_test.mp3" title="Click to open" id="f-html5audio-0">Audio MP3</a><script type="text/javascript">AudioPlayer.embed("f-html5audio-0", {soundFile: "http://colin-sullivan.com/main/wp-content/uploads/2009/12/Overdrive_test.mp3"});</script></audio></div>
<p>ChucK ended up working very well.  I think the effect sounds pretty good.  As you can see below, there are infinitely many options available for the coefficients of the wavetable function (Gen17 object in ChucK).  I can spend hours tweaking them, but the ones I settled on are uncommented below.</p>
<p><a id="hiddenButton-0" class="show">Click to show code.</a></p>
<div class="hidden code" id="hidden-0">
<pre class="brush: cpp;">/**
*  Overdrive/Distortion effect (meant for bass guitar)
*
*  Copyright (c) 2009 Colin Sullivan
*
*  Permission is hereby granted, free of charge, to any person obtaining a copy
*  of this software and associated documentation files (the "Software"), to deal
*  in the Software without restriction, including without limitation the rights
*  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
*  copies of the Software, and to permit persons to whom the Software is
*  furnished to do so, subject to the following conditions:
*
*  The above copyright notice and this permission notice shall be included in
*  all copies or substantial portions of the Software.
*
*  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
*  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
*  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
*  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
*  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
*  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
*  THE SOFTWARE.
**/

// patch
//envelope follower
adc => Gain g => OnePole p => blackhole;
//clean lows
adc => LPF lowpass => Gain lowClean => Gain mix;
//overdrive on lows
lowpass => Gen17 lowOD => mix;
//clean highs
adc => BPF highpass => Gain highClean => mix;
//overdrive on highs
adc => highpass => Gen17 highOD => mix;
//mix them together
mix => dac;

//master Levels
mix.gain(0);
1  => float masterVolumeLimit;

//low levels
lowClean.gain(1); //1
lowOD.gain(0); //0.3

//high levels
highClean.gain(1); //0.3
highOD.gain(0); //1

//frequency of pass filters
lowpass.freq(1000);
highpass.set(1000, 1000/(1200-800) );

//square input
adc => g;
//multiply
3 => g.op;
// set pole position
0.9999 => p.pole;

// load up the coeffs; amplitudes for successive partials
lowOD.coefs( [ 1., 0.5, 0, 0.5, 1. ] ); //Nice fat fuzz
//lowOD.coefs( [1., 0.5, 0, -0.5, -1.] );  //thrashy, but buzz
//lowOD.coefs( [.99, .88, 0, .88, -.99] );	//loud and farty fuzz
// load up the coeffs; amplitudes for successive partials
//highOD.coefs( [ 1., 0.5, 0, 0.5, 1. ] );
//highOD.coefs( [1., 0.5, 0, -0.5, -1.] );
//highOD.coefs( [.99, .88, 0, .88, -.99] );
//highOD.coefs( [0.5, 0, -0.5] );
highOD.coefs( [.256, -.576, .432, -.120, .9] ); //not grungy enough

//master volume
0 => float masterVolume;
0 => float i;

// will hold last value of filter
0 => float pLast;
// full overdrive flag
0 => int fullOD;

// Allows output to chuck~ object outlet in Max/MSP
MaxMessage m;

while (true) {
  while(masterVolume < masterVolumeLimit) {
    mix.gain(masterVolume);
    0.001 +=> masterVolume;
    1::ms => now;
  }

  // Get last value of filter
  p.last()*50 => pLast;

  // Debug to max
  //pLast => m.floatout;

  // Set high overdrive gain based on dynamics of playing
  if(pLast < 1 &#038;&#038; fullOD == 0)
  {
    highOD.gain(pLast);
    lowOD.gain(0.3*pLast);
  }
  else if(pLast >= 1)
  {
    highOD.gain(1);
    lowOD.gain(0.3);
    1 => fullOD;
  }
  else if(pLast < 0.5 &#038;&#038; fullOD == 1)
  {
    // turn fullOD flag off if done lowering
    if(highOD.gain() - pLast < 0.001)
    {
      0 => fullOD;
    }
    else
    {
      // Lower gain
      highOD.gain(highOD.gain() - 0.001);
    }
  }
  0.01 +=> i;
  1::ms => now;
}
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://colin-sullivan.com/main/archives/343/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://colin-sullivan.com/main/wp-content/uploads/2009/12/Overdrive_test.mp3" length="2446720" type="audio/mpeg" />
		</item>
		<item>
		<title>RPInventory</title>
		<link>http://colin-sullivan.com/main/archives/341</link>
		<comments>http://colin-sullivan.com/main/archives/341#comments</comments>
		<pubDate>Thu, 22 Oct 2009 16:53:27 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[home]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://colin-sullivan.com/main/?p=341</guid>
		<description><![CDATA[RPInventory is a web-based inventory system designed for use by clubs at RPI. I have been working on the RPInventory team for the past year, doing mostly Ajax/Javascript interface work. We use jQuery for all manipulations and Ajax calls, and PHP/MySQL for the back-end. For more information about the project, http://www.rpinventory.com/.]]></description>
			<content:encoded><![CDATA[<p>RPInventory is a web-based inventory system designed for use by clubs at RPI.  I have been working on the RPInventory team for the past year, doing mostly Ajax/Javascript interface work.<span id="more-341"></span></p>
<p>We use jQuery for all manipulations and Ajax calls, and PHP/MySQL for the back-end.</p>
<p>For more information about the project, <a href="http://www.rpinventory.com/">http://www.rpinventory.com/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://colin-sullivan.com/main/archives/341/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choice Merchant Solutions &#8211; CMS</title>
		<link>http://colin-sullivan.com/main/archives/244</link>
		<comments>http://colin-sullivan.com/main/archives/244#comments</comments>
		<pubDate>Wed, 21 Oct 2009 18:56:59 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[home]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://localhost:8888/colin-sullivan.com/main/?p=244</guid>
		<description><![CDATA[The content management system that I designed for Choice Merchant Solutions allows administrators to control which pages users have access to, effectively modifying the &#8220;navigation&#8221; section of the website for each user independently. Written in PHP/MySQL/Ajax, it is another dynamic web application.]]></description>
			<content:encoded><![CDATA[<p>The content management system that I designed for Choice Merchant Solutions allows administrators to control which pages users have access to, effectively modifying the &#8220;navigation&#8221; section of the website for each user independently.<span id="more-244"></span></p>
<p>Written in PHP/MySQL/Ajax, it is another dynamic web application.</p>
]]></content:encoded>
			<wfw:commentRss>http://colin-sullivan.com/main/archives/244/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyroInventory</title>
		<link>http://colin-sullivan.com/main/archives/173</link>
		<comments>http://colin-sullivan.com/main/archives/173#comments</comments>
		<pubDate>Wed, 21 Oct 2009 03:04:49 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[home]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.colin-sullivan.com/?p=173</guid>
		<description><![CDATA[&#8220;PyroInventory&#8221; is a complete inventory system for fireworks and explosives, customized for a Pyrotechnics Entertainment company called &#8220;Pyro/FX&#8221;.  Written in PHP/MySQL, it is a dynamic, database-driven web application. I&#8217;ve been working on PyroInventory for the past two months, and am pretty proud of it.  A demo will be available soon.]]></description>
			<content:encoded><![CDATA[<p>&#8220;PyroInventory&#8221; is a complete inventory system for fireworks and explosives, customized for a Pyrotechnics Entertainment company called &#8220;Pyro/FX&#8221;.  Written in PHP/MySQL, it is a dynamic, database-driven web application.<span id="more-173"></span></p>
<p>I&#8217;ve been working on PyroInventory for the past two months, and am pretty proud of it.  A demo will be available soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://colin-sullivan.com/main/archives/173/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
