<?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>Soulwire &#187; Design</title>
	<atom:link href="http://blog.soulwire.co.uk/category/art-design/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.soulwire.co.uk</link>
	<description>Art + Technology</description>
	<lastBuildDate>Thu, 27 May 2010 16:18:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Recursive Polygon Subdivision</title>
		<link>http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision</link>
		<comments>http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision#comments</comments>
		<pubDate>Thu, 27 May 2010 12:51:48 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Experiments]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1131</guid>
		<description><![CDATA[
This is a little algorithm I sketched in my moleskin on the train and for once had the free time to build. The idea is to split a convex polygon between two line segments, creating two new polygons. Each shape is pushed into a queue ready to be subdivided itself. Despite the simplicity of the [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata' rel='bookmark' title='Permanent Link: 2D Cellular Automata'>2D Cellular Automata</a></li>
<li><a href='http://blog.soulwire.co.uk/code/actionscript-3/webcam-motion-detection-tracking' rel='bookmark' title='Permanent Link: AS3 Webcam Motion Tracking'>AS3 Webcam Motion Tracking</a></li>
<li><a href='http://blog.soulwire.co.uk/code/open-source/as3-drag-drop-shuffle-grid-menu' rel='bookmark' title='Permanent Link: AS3 Shuffle Grid Class'>AS3 Shuffle Grid Class</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/SD001.swf"  rel="lightbox;width=900;height=650;" ><img src="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/SD001_001.jpg" alt="Recursive Subdivision" title="Recursive Subdivision" width="710" height="360" class="alignnone size-medium wp-image-1134" /></a></p>
<p>This is a little algorithm I sketched in my <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.moleskine.co.uk/products/"  target="_blank">moleskin</a> on the train and for once had the free time to build. The idea is to split a convex polygon between two line segments, creating two new polygons. Each shape is pushed into a queue ready to be subdivided itself. Despite the simplicity of the algorithm, the results are quite nice and with certain configurations often far removed from what I would have expected &#8211; surprise is always good.<span id="more-1131"></span></p>
<h3>The Subdivide Algorithm</h3>
<p>Here are the basic steps used to create the <a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/SD001.swf"  rel="lightbox;width=900;height=650;" >sketch</a> above:</p>
<ul>
<li>Create the first polygon</li>
<li>Pick two adjacent vertices at random</li>
<li>Use linear interpolation to find a point between them <em>(P1)</em></li>
<li>You now have a point on one line segment connecting the two vertices</li>
<li>Choose another line segment from the polygon</li>
<li>Find a point along this line segment <em>(P2)</em></li>
<li>Build a new polygon by moving clockwise from <em>P1</em> to <em>P2</em></li>
<li>Build a second polygon by moving clockwise from <em>P2</em> back to <em>P1</em></li>
<li>Splice the original polygon from the list and insert the two new ones</li>
<li>Choose a polygon from the list and <em>(&uarr;repeat)</em></li>
</ul>
<p>Very simple, but you can start to have fun with each of these steps to produce different results. Here are some of the variations which can be created with the <a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/SD001.swf"  rel="lightbox;width=900;height=650;" >demo</a>.</p>
<ul>
<li>Choose line segments to cut at random</li>
<li>Always subdivide between the two longest line segments</li>
<li>Always interpolate (choose points) half way along segments</li>
<li>Choose points at random positions along line segments</li>
<li>Only mark some polygons eligible for subdivision</li>
<li>Vary the minimum area of divisible polygons</li>
</ul>
<h3>Source Code</h3>
<p>The <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://code.google.com/p/soulwire/source/browse/trunk/projects/Subdivide/SD001/src/geom/Polygon.as"  target="_blank">Polygon</a> class is a DisplayObject (it extends Sprite) and implements it&#8217;s own draw method. I&#8217;ve had a lot of fun filling the shapes with textures, but kept it minimal for the example. One technique which I found worked well was to choose two vertices and compute the angle between them. From this I created a transformation matrix to use with <em>Graphics.beginBitmapFill</em>, giving the sketch a more 3 dimensional feel as if the collection of polygons was a 3D mesh with textures mapped to it. I&#8217;ll put these examples on Flickr soon.</p>
<p>If you&#8217;re interested in the source code, it&#8217;s available in my <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://code.google.com/p/soulwire/"  target="_blank">code repository</a> or you can download the archive below (for the demo GUI, I am using <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://minimalcomps.com/"  target="_blank">minimal comps</a> courtesy of Keith Peters and for image encoding, Ian McLean&#8217;s <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.auricom.com/devote/an-asynchronous-vector-optimized-jpeg-encoder"  target="_blank">asynchronous JPEG encoder</a> &#8211; thanks guys :).</p>
<a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=Subdivision.zip" class="download" title="Recursive Subdivision: Recursive Polygon Subdivision demo and source code"  rel="nofollow"><strong>Download:</strong> Recursive Subdivision</a>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata' rel='bookmark' title='Permanent Link: 2D Cellular Automata'>2D Cellular Automata</a></li>
<li><a href='http://blog.soulwire.co.uk/code/actionscript-3/webcam-motion-detection-tracking' rel='bookmark' title='Permanent Link: AS3 Webcam Motion Tracking'>AS3 Webcam Motion Tracking</a></li>
<li><a href='http://blog.soulwire.co.uk/code/open-source/as3-drag-drop-shuffle-grid-menu' rel='bookmark' title='Permanent Link: AS3 Shuffle Grid Class'>AS3 Shuffle Grid Class</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Hello Dynamic Sprite</title>
		<link>http://blog.soulwire.co.uk/code/actionscript-3/managing-runtime-loaded-dynamic-assets</link>
		<comments>http://blog.soulwire.co.uk/code/actionscript-3/managing-runtime-loaded-dynamic-assets#comments</comments>
		<pubDate>Fri, 21 May 2010 16:56:04 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Utilities]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1080</guid>
		<description><![CDATA[
If you are building a multilingual application (or any application that requires dynamic, runtime loaded assets), swapping and managing assets can easily become tedious and messy.
Recently, for projects requiring special characters (such as Chinese, Arabic, Japanese and Hindi) and where dynamic or input text is not required, we have been creating library SWFs for each [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/code/open-source/two-sided-planes-in-flash-player-10' rel='bookmark' title='Permanent Link: Double Sided 3D Plane in FP10'>Double Sided 3D Plane in FP10</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-flocking-steering-behaviors' rel='bookmark' title='Permanent Link: Flipping you the Boid'>Flipping you the Boid</a></li>
<li><a href='http://blog.soulwire.co.uk/code/actionscript-3/webcam-motion-detection-tracking' rel='bookmark' title='Permanent Link: AS3 Webcam Motion Tracking'>AS3 Webcam Motion Tracking</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/DynamicSpriteExample.swf?v=2" rel="lightbox;width=800;height=550;" ><img src="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/dynamic-sprite-demo.jpg" alt="DynamicSprite Demo Application" title="DynamicSprite Demo Application" width="710" height="360" class="size-medium wp-image-1092" /></a></p>
<p>If you are building a multilingual application (or any application that requires dynamic, runtime loaded assets), swapping and managing assets can easily become tedious and messy.</p>
<p>Recently, for projects requiring special characters (such as Chinese, Arabic, Japanese and Hindi) and where dynamic or input text is not required, we have been creating library SWFs for each language and using static textfields to populate content. This saves file size, as unnecessary characters are not embedded, and it eases the process of including different character sets (and even fonts) for each language. It also means that we can include text in the same runtime loaded library as general display assets.<span id="more-1080"></span></p>
<h3>Introducing DynamicSprite</h3>
<p>Using this process, a language specific library SWF is loaded at startup, or at runtime when the users selects a language, and once complete all dynamic assets are updated accordingly. This can get very messy for two reasons. Firstly, it means that each individual asset has to be destroyed and tidied up to release memory before it is replaced. Secondly, if you have a complex application architecture, you will end up dispatching a ton of events and implementing countless methods within every view or component, in order to rollout the update to each desired DisplayObject.</p>
<p>This is where <strong>DynamicSprite</strong> comes in handy. Using DynamicSprite you can effortlessly update any amount of DisplayObjects from any amount of library SWFs at runtime, whilst keeping the SWF loading logic centralised in your proxy or loader class. No events, no asset update APIs in your views and no cleaning up after yourself.</p>
<blockquote><p>Bored? Skip straight to the <a href="#example">examples</a> and download</p></blockquote>
<h3>How It Works</h3>
<p>The concept is very simple. Each instance of DynamicSprite is registered globally at a class level, you need only call a static update method once and all DynamicSprite instances will update themselves automatically. Each instance of DynamicSprite is given a class definition, which can be set or changed at runtime if desired. When a new library is loaded, it will look inside the SWFs <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/system/ApplicationDomain.html"  target="_blank">applicationDomain</a> and if it finds a matching asset, update itself and destroy any existing instances of that asset it might own. You can also create DynamicSprite instances at runtime anytime after an asset library has been loaded &#8211; they will check previously loaded libraries for their class definition when created. This works with any display asset, <strong>Sprites</strong>, <strong>MovieClips</strong>, <strong>Bitmaps</strong> (etc)  &#8211; <strong>BitmapDatas</strong> are also detected and destroyed during the cleanup process.</p>
<p>Furthermore, you can load any amount of libraries per language, at different times if necessary &#8211; DynamicSprites will <em>only update themselves when applicable</em>, making it easy to manage your language specific libraries and even individual libraries per language if you choose to (each type of library has it&#8217;s own ID).</p>
<p>A DynamicSprite instance will also dispatch an event (named <strong>DynamicSprite.INSTANCE_UPDATED</strong>) when it has changed it&#8217;s asset. You can listen for this event if you need to respond to new asset dimensions. You can also listen for two events on the class itself (through a static, encapsulated EventDispatcher) which are dispatched when a library is added or updated but before all instances have changed (<strong>DynamicSprite.LIBRARY_UPDATE_START</strong>) and when all instances have finished updating themselves (if necessary) from the added / updated library SWF (<strong>DynamicSprite.LIBRARY_UPDATE_COMPLETE</strong>).</p>
<h3>Example Implementation<a name="example">&nbsp;</a></h3>
<p>Here is a simple example of how to use DynamicSprite. Although this example only loads one SWF (the code for the multi SWF example is included in the download), it demonstrates how DynamicSprite can also be useful for single language applications where you still choose to load your assets at runtime.</p>
<pre>
public function SimpleExample()
{
	// Create a DynamicSprite instance and provide a class definition for it's asset
	var example : DynamicSprite = new DynamicSprite("assets.example.HelloWorld");
	addChild(example);

	// Load a library SWF
	var loader : Loader = new Loader();
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
	loader.load(new URLRequest("assets_en.swf"));
}

private function onLoadComplete(event : Event) : void
{
	// Call the static update method once to update all DynamicSprites
	DynamicSprite.update("example", LoaderInfo(event.target).content);
}
</pre>
<p>Another advantage of DynamicSprite is that you need not worry about synchronising loading with the update process. Any existing DynamicSprite instance will be updated if required when a library is loaded, however you can also create new instances after a required library has been loaded (useful for highly dynamic content) and any loaded libraries will be searched for matching assets upon creation. This snippet demonstrates this feature.</p>
<pre>
public function SimpleExample()
{
	// Load a library SWF
	var loader : Loader = new Loader();
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
	loader.load(new URLRequest("assets_en.swf"));
}

private function onLoadComplete(event : Event) : void
{
	// Register this library
	DynamicSprite.update("example", LoaderInfo(event.target).content);

	// Creating a DynamicSprite after a library is loaded still works fine
	var example : DynamicSprite = new DynamicSprite("assets.example.HelloWorld");
	addChild(example);
}
</pre>
<h3>Download DynamicSprite</h3>
<p>You can download the DynamicSprite class and the demo below. Also check my code <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://code.google.com/p/soulwire/source/browse/trunk/projects/DynamicSprite/src/uk/co/soulwire/display/DynamicSprite.as"  title="Soulwire SVN repository" target="_blank">repository</a> for updates. If you find any bugs or have any suggestions please leave them in the comments.</p>
<a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=DynamicSprite.zip" class="download" title="DynamicSprite: DynamicSprite is a utility class for easily managing runtime loaded assets"  rel="nofollow"><strong>Download:</strong> DynamicSprite</a>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/code/open-source/two-sided-planes-in-flash-player-10' rel='bookmark' title='Permanent Link: Double Sided 3D Plane in FP10'>Double Sided 3D Plane in FP10</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-flocking-steering-behaviors' rel='bookmark' title='Permanent Link: Flipping you the Boid'>Flipping you the Boid</a></li>
<li><a href='http://blog.soulwire.co.uk/code/actionscript-3/webcam-motion-detection-tracking' rel='bookmark' title='Permanent Link: AS3 Webcam Motion Tracking'>AS3 Webcam Motion Tracking</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/code/actionscript-3/managing-runtime-loaded-dynamic-assets/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Generative Prints for Ishihara</title>
		<link>http://blog.soulwire.co.uk/art-design/illustration/generative-illustrations-for-ishihara</link>
		<comments>http://blog.soulwire.co.uk/art-design/illustration/generative-illustrations-for-ishihara#comments</comments>
		<pubDate>Fri, 12 Feb 2010 00:28:10 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Illustration]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Sketchbook]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Drawing]]></category>
		<category><![CDATA[Experiments]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1042</guid>
		<description><![CDATA[
These are some old prints that I made for an exhibition called Ishihara, back in 2008. They&#8217;re created using a tool I built called Rotator, which degrades vector drawings as they are printed to a bitmap, whilst following the path of a random wander. I found them on an old hard drive and thought I&#8217;d [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/art-design/illustration/illustrated-iching-hexagrams' rel='bookmark' title='Permanent Link: Illustrated IChing'>Illustrated IChing</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1043" title="Ishihara Drawing 1" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara-cover.jpg" alt="Ishihara Drawing 1" width="710" height="360" /></p>
<p>These are some old prints that I made for an exhibition called <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.facebook.com/group.php?gid=35280706927" >Ishihara</a>, back in 2008. They&#8217;re created using a tool I built called <em>Rotator</em>, which degrades vector drawings as they are printed to a bitmap, whilst following the path of a random wander. I found them on an old hard drive and thought I&#8217;d share.<span id="more-1042"></span></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara001.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 001" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara001-710x471.jpg" alt="Ishihara Rotator Print 001" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara002.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 002" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara002-710x471.jpg" alt="Ishihara Rotator Print 002" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara003.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 003" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara003-710x471.jpg" alt="Ishihara Rotator Print 003" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara004.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 004" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara004-710x471.jpg" alt="Ishihara Rotator Print 004" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara005.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 005" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara005-710x471.jpg" alt="Ishihara Rotator Print 005" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara006.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 006" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara006-710x471.jpg" alt="Ishihara Rotator Print 006" width="710" height="471" /></a></p>
<p>On reflection, the morphing shapes mixed with simple line drawings remind me of James Paterson&#8217;s work over at <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.presstube.com" >presstube</a> or Victor Taba&#8217;s <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.victortaba.com/" >animations</a> (but not as good as either). I&#8217;ll see if the hard drive has the Rotator AIR app these were made with on there somewhere too, it could be fun to play around with adding some colour and using more complicated vectors.</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/art-design/illustration/illustrated-iching-hexagrams' rel='bookmark' title='Permanent Link: Illustrated IChing'>Illustrated IChing</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/art-design/illustration/generative-illustrations-for-ishihara/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Smack My Glitch Up</title>
		<link>http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator</link>
		<comments>http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator#comments</comments>
		<pubDate>Wed, 03 Feb 2010 21:37:51 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Transmissions]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Colour]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Glitch]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1003</guid>
		<description><![CDATA[
Sometimes it&#8217;s good to break things&#8230;
During a recent project I needed to find a way of simulating digital interference on an image / video stream. At first, it seemed the best approach might be to use the graphics API or Bitmap effects, but why imitate when you can have the real thing.
The principle is incredibly [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art' rel='bookmark' title='Permanent Link: Webcam Glitch Art'>Webcam Glitch Art</a></li>
<li><a href='http://blog.soulwire.co.uk/code/actionscript-3/as3-ase-adobe-swatch-exchange-encoder' rel='bookmark' title='Permanent Link: ASE (Adobe Swatch Exchange) Encoder'>ASE (Adobe Swatch Exchange) Encoder</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/glitchmap.swf" title="AS3 Glitch Generator" rel="lightbox;width=900;height=650;" ><img class="alignnone size-full wp-image-1006" title="Glitchmap - AS3 Glitch Generator" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/glitch-generator.jpg" alt="Glitchmap - AS3 Glitch Generator" width="710" height="360" /></a></p>
<p><em>Sometimes it&#8217;s good to break things&#8230;</em></p>
<p>During a recent project I needed to find a way of simulating digital interference on an image / video stream. At first, it seemed the best approach might be to use the graphics API or Bitmap effects, but why imitate when you can have the real thing.<span id="more-1003"></span></p>
<p>The principle is incredibly simple. Corrupt / alter a byte (or several bytes) in the ByteArray of a JPEG and then load this back into a DisplayObject using <em>Loader.loadBytes()</em>. Because of the way in which <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://en.wikipedia.org/wiki/JPEG#Syntax_and_structure" >JPEGs work</a>, the image will still display but the corrupt bytes will mangle the output to varying degrees, depending on how many bytes have been corrupted. The result is an interesting glitch pattern, a bit like those which were accidentally created <a href="http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art" title="Webcam glitch images" >when my webcam drivers lost the plot</a>.</p>
<p>It is also possible to corrupt other image formats (png, gif etc) in the same way, by first passing the image ByteArray through a <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/images/JPGEncoder.as" >JPEGEncoder</a>.</p>
<p>I&#8217;ve implemented this technique in the <strong>Glitchmap</strong> class, which you can download and play with at the bottom of this post. I hope that it will provide a few moments of fun, if not a practical use <em>(I&#8217;m thinking image gallery transitions or <a href="http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation" >music </a><a href="http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations" >visualisations</a>)</em>.</p>
<p>The small gottcha is that it isn&#8217;t desirable to mess with the JPEG headers, so when the clean ByteArray is passed to the <em>Glitchmap</em> class, it will determine the length of the header by reading through the bytes until it finds the <em>SOS (start of scan)</em> declaration <em>(0xFFDA)</em>. The next two bytes represent the length of the <em>SOS</em>, so it skips forward by this amount &#8211; the resulting position in the ByteArray should be the end of the header, and so between this point and the <em>EOI (end of image)</em> the data corruption takes place. I&#8217;m not sure whether this is the best way of determining the JPEG header size; <em>perhaps any CS graduates / students out there can help me out?</em></p>
<p>After I posted the <a href="http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art" >webcam glitch images</a>, Jon used them in his title sequences for the <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.youtube.com/watch?v=k5scRdXr7wU"  rel="shadowbox[post-1003];player=swf;width=640;height=385;">48 hour film gala</a>. If you find a similar creative use for this script or the <a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/glitchmap.swf" title="AS3 Glitch Generator" rel="lightbox;width=900;height=650;" >glitch generator</a> then please let us all know.</p>
<p>I think the next step is to experiment with merging the bytes of multiple glitched images in order to create transition effects. I may also build an AIR app and see what the best way of outputting video might be (using NativeProcess for screen capture perhaps?).</p>
<a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=Glitchmap.zip" class="download" title="AS3 BitmapData Glitch Generator (Glitchmap): Glitchmap is a class for generating glitch imagery from AS3 BitmapData"  rel="nofollow"><strong>Download:</strong> AS3 BitmapData Glitch Generator (Glitchmap)</a>
<p><em>You can also download the Glitchmap Class and the <a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/glitchmap.swf" title="AS3 Glitch Generator" rel="lightbox;width=900;height=650;" >Glitch Generator</a> source code from the <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://code.google.com/p/soulwire/" title="Soulwire code repository" >soulwire code repository</a>.</em></p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art' rel='bookmark' title='Permanent Link: Webcam Glitch Art'>Webcam Glitch Art</a></li>
<li><a href='http://blog.soulwire.co.uk/code/actionscript-3/as3-ase-adobe-swatch-exchange-encoder' rel='bookmark' title='Permanent Link: ASE (Adobe Swatch Exchange) Encoder'>ASE (Adobe Swatch Exchange) Encoder</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Another Day, Another Design</title>
		<link>http://blog.soulwire.co.uk/art-design/portfolio/another-day-another-design</link>
		<comments>http://blog.soulwire.co.uk/art-design/portfolio/another-day-another-design#comments</comments>
		<pubDate>Mon, 01 Feb 2010 22:19:46 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Miscellany]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Transmissions]]></category>
		<category><![CDATA[Hello]]></category>
		<category><![CDATA[Soulwire]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=952</guid>
		<description><![CDATA[
I’ve been off the web radar for several months. The later part of 2009 saw many changes and, despite being extremely busy with several interesting projects and personal studies, I have somewhat neglected this blog.
Without wishing to bore anyone with the details, I may still post a summary of what I am / have been [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/redesign-2010-710x325.jpg" alt="Soulwire Blog 2010 Redesign" title="Soulwire Blog 2010 Redesign" width="710" height="325" class="alignnone size-medium wp-image-960" /></p>
<p>I’ve been off the web radar for several months. The later part of 2009 saw many changes and, despite being extremely busy with several interesting projects and personal studies, I have somewhat neglected this blog.<span id="more-952"></span></p>
<p>Without wishing to bore anyone with the details, I may still post a summary of what I am / have been working on recently &#8211; at some point &#8211; though for now it will suffice to say that I’m broadening my horizons – getting deeper into <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://processing.org/" >Processing</a> and <em>OpenGl</em> and learning <em>C++</em> with <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.openframeworks.cc/" >OF</a>, as well as <em>Objective C</em> and the Cocoa Touch framework. As more projects using these technologies arise I hope to share this learning experience with you.</p>
<h3>Design</h3>
<p>With regards to the re-design; this is by no means the finished article, however I felt it best to push the current theme live so that I can start posting again. I hope that you find it more user friendly than the last edition, and please do leave any suggestions for improvement – it is like most things simply a work in progress.</p>
<h3>Objectives</h3>
<p>My aim is to continue posting content on a much more frequent basis, though with the philosophy that quality precedes quantity. That said, I will be adding tools to help aggregate my more continuous online activity in an attempt to share more of the work and ideas of others who inspire me, with you.</p>
<p>Now that the site is live, I will post a few catch-up entries over the coming weeks and from there hopefully find a more natural rhythm.</p>
<p>So, for those of you kind enough to listen, that is the egocentric chatter over! I look forward to resuming the dialogue with you – see you around.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/art-design/portfolio/another-day-another-design/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Technical Tentacles</title>
		<link>http://blog.soulwire.co.uk/laboratory/flash/pixel-bender-growing-tentacles</link>
		<comments>http://blog.soulwire.co.uk/laboratory/flash/pixel-bender-growing-tentacles#comments</comments>
		<pubDate>Tue, 26 May 2009 19:08:17 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Flash Player 10]]></category>
		<category><![CDATA[Pixel Bender]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=360</guid>
		<description><![CDATA[
I’ve been revisiting one of my favourite topics lately &#8211; recursion &#8211; and have been getting together a bunch of sketches for a big personal project I’m working on (more on that another time). Anyway, I inadvertently stumbled across quite a nice way of making things grow in a convincing manner, and whilst this script [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
<li><a href='http://blog.soulwire.co.uk/code/open-source/two-sided-planes-in-flash-player-10' rel='bookmark' title='Permanent Link: Double Sided 3D Plane in FP10'>Double Sided 3D Plane in FP10</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/05/tenticles.swf" rel="lightbox;width=900;height=760" title="Pixel Bender Generative Tentacles" ><img src="http://blog.soulwire.co.uk/wp-content/uploads/2009/05/tentacles-cropped-710x326.jpg" alt="Generative Tentacles" title="Generative Tentacles" width="710" height="326" class="alignnone size-medium wp-image-509" /></a></p>
<p>I’ve been revisiting one of my favourite topics lately &#8211; <strong><a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://en.wikipedia.org/wiki/Recursion"  target="_blank">recursion</a></strong> &#8211; and have been getting together a bunch of sketches for a big personal project I’m working on <em>(more on that another time)</em>. Anyway, I inadvertently stumbled across quite a nice way of making things grow in a convincing manner, and whilst this script doesn’t actually use recursion ‘per se’, I thought it was kind of cool so I ran with it.<span id="more-360"></span></p>
<p>It also presented a good opportunity to try out another Flash Player 10 feature that I’ve been eager to try, which is using <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://labs.adobe.com/technologies/pixelbender/"  target="_blank"><strong>Pixel Bender</strong></a> and <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://livedocs.adobe.com/flex/3/langref/flash/display/ShaderJob.html"  target="_blank"><strong>ShaderJob</strong></a>. Although I’ve used Pixel Bender before, I’ve never used it in this way.</p>
<p>Basically, the idea is to exploit Pixel Bender’s performance and ask it to do some of the heavier number crunching for you &#8211; a concept that is currently being used by the Papervision3D team to give some juice to the next release. The other great thing about this approach is that these computations can run in another thread, leaving you more resources for other tasks (like rendering a fishing boat load of tentacles)</p>
<p>So, although this isn’t the best example of using Pixel Bender’s capabilities, it was a nice opportunity to exercise the idea. Each Tentacle starts a new ShaderJob and Pixel Bender whips up some tasty trigonometry for me, before passing it back inside a <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://livedocs.adobe.com/flex/3/langref/Vector.html"  target="_blank">Vector</a> object (typed Array). From there it’s just a question of making those numbers look nice&#8230; Kind of reminds me of the illustrative style used for the <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://oreilly.com/"  target="_blank">O&#8217;Reilly</a> book covers&#8230;</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
<li><a href='http://blog.soulwire.co.uk/code/open-source/two-sided-planes-in-flash-player-10' rel='bookmark' title='Permanent Link: Double Sided 3D Plane in FP10'>Double Sided 3D Plane in FP10</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/flash/pixel-bender-growing-tentacles/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>More Music Visualisations</title>
		<link>http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations</link>
		<comments>http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations#comments</comments>
		<pubDate>Tue, 17 Mar 2009 14:07:44 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Animation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Illustration]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Transmissions]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Visualisation]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=322</guid>
		<description><![CDATA[
Just a quick (and slightly belated) announcement.
The distinguished Bandcamp has recently been regaled with another round of audio-visual snacks. I&#8217;ve had a lot of fun working on them, and there will be even more in the not too distant future.
The whole Bandcamp site in fact is bursting with more and more tasty new features which [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/art-design/portfolio/bandcamp-music-visualisations' rel='bookmark' title='Permanent Link: Bandcamp Music Visualisations'>Bandcamp Music Visualisations</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation' rel='bookmark' title='Permanent Link: AS3 Music Visualisation'>AS3 Music Visualisation</a></li>
<li><a href='http://blog.soulwire.co.uk/art-design/portfolio/disabed-algebra' rel='bookmark' title='Permanent Link: Disabed Algebra'>Disabed Algebra</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-525" title="Bandcamp Music Visualisations" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/bandcamp.jpg" alt="Bandcamp Music Visualisations" width="710" height="352" /></p>
<p><strong>Just a quick</strong> (and slightly belated) <strong>announcement</strong>.</p>
<p>The distinguished <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://bandcamp.com/" title="Bandcamp"  target="_blank">Bandcamp</a> has recently been regaled with another round of audio-visual snacks. I&#8217;ve had a lot of fun working on them, and there will be even more in the not too distant future.</p>
<p>The whole Bandcamp site in fact is bursting with more and more <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://bandcamp.com/features"  target="_blank">tasty new features</a> which you should check out. In terms of my little contribution on the music visualistions front, there are currently four new full fat flavors to feast on…<span id="more-322"></span></p>
<p><strong>Ribbons</strong> » which uses my <a href="http://blog.soulwire.co.uk/code/actionscript-3/papervision3d-ribbons" title="Papervision3D Ribbon Class" >Papervision3D Ribbons Class</a> and is designed for crunching riffs and hard beats.</p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/ribbons-big.jpg" rel="lightbox[bandcamp]" ><img class="alignnone size-medium wp-image-528" title="Ribbons Visualisation" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/ribbons-big-710x177.jpg" alt="Ribbons Visualisation" width="710" height="177" /></a></p>
<p><strong>Strata</strong> » which was inspired by stream-graphs and rock formations, and flows like a charred pizza in a log-flume along an imaginary Teflon oven dish.</p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/strata-big.jpg" rel="lightbox[bandcamp]" ><img class="alignnone size-medium wp-image-529" title="Strata Visualisation" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/strata-big-710x177.jpg" alt="Strata Visualisation" width="710" height="177" /></a></p>
<p><strong>Plughole</strong> » which comprises of disembodied appendages and iconography encapsulating the zeitgeist of generation stupid &#8211; mashes the aforementioned archetypes up into crumbs before offering them to the esophagus of oblivion.</p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/plughole-big.jpg" rel="lightbox[bandcamp]" ><img class="alignnone size-medium wp-image-527" title="Plughole Visualisation" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/plughole-big-710x177.jpg" alt="Plughole Visualisation" width="710" height="177" /></a></p>
<p><strong>Hypno</strong> » which was designed to bring about universal harmony and spiritual equilibrium but accidentally caused the credit crunch.</p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/hypno-big.jpg" rel="lightbox[bandcamp]" ><img class="alignnone size-medium wp-image-526" title="Hypno Visualisation" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/hypno-big-710x177.jpg" alt="Hypno Visualisation" width="710" height="177" /></a></p>
<p>You can see them in action by visiting an <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://bandcamp.com/artists" title="Artists on Bandcamp"  target="_blank">artist&#8217;s</a> page (such as <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://hotbitcharsenal.bandcamp.com/" title="Hot Bitch Arsenal on Bandcamp"  target="_blank">Hot Bitch Arsenal</a> or <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://patttten.bandcamp.com/" title="Patterns on Bandcamp"  target="_blank">Pattern</a>), hitting play and selecting a visualisation from the pop-out menu underneath the cover art.</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/art-design/portfolio/bandcamp-music-visualisations' rel='bookmark' title='Permanent Link: Bandcamp Music Visualisations'>Bandcamp Music Visualisations</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation' rel='bookmark' title='Permanent Link: AS3 Music Visualisation'>AS3 Music Visualisation</a></li>
<li><a href='http://blog.soulwire.co.uk/art-design/portfolio/disabed-algebra' rel='bookmark' title='Permanent Link: Disabed Algebra'>Disabed Algebra</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Bandcamp Music Visualisations</title>
		<link>http://blog.soulwire.co.uk/art-design/portfolio/bandcamp-music-visualisations</link>
		<comments>http://blog.soulwire.co.uk/art-design/portfolio/bandcamp-music-visualisations#comments</comments>
		<pubDate>Thu, 18 Sep 2008 12:24:28 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Animation]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Transmissions]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Visualisation]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=105</guid>
		<description><![CDATA[
One of the most interesting projects I have worked on recently has just been launched!
It’s called Bandcamp, and is the brain child of Ethan Diamond and Shawn Grunberger, both from Oddpost (which you’ll know these days as Yahoo! Mail).
In short, Bandcamp is a “free hosted publishing platform for musicians”, although there is much more to [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations' rel='bookmark' title='Permanent Link: More Music Visualisations'>More Music Visualisations</a></li>
<li><a href='http://blog.soulwire.co.uk/art-design/portfolio/disabed-algebra' rel='bookmark' title='Permanent Link: Disabed Algebra'>Disabed Algebra</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation' rel='bookmark' title='Permanent Link: AS3 Music Visualisation'>AS3 Music Visualisation</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-682" title="Bandcamp Music Visualisations" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bandcamp-710x326.jpg" alt="Bandcamp Music Visualisations" width="710" height="326" /></p>
<p>One of the most interesting projects I have worked on recently has just been launched!</p>
<p>It’s called Bandcamp, and is the brain child of <strong>Ethan Diamond</strong> and <strong>Shawn Grunberger</strong>, both from <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://en.wikipedia.org/wiki/Oddpost" title="Oddpost"  target="_blank">Oddpost</a> (which you’ll know these days as Yahoo! Mail).</p>
<p>In short, Bandcamp is a <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://waxy.org/2008/09/bandcamp_launch/" title="Bandcamp review on Waxy.org"  target="_blank"><em>“free hosted publishing platform for musicians”</em></a>, although there is much more to it than that, including&#8230;<span id="more-105"></span></p>
<ul>
<li> Design customisations and clean, SEO and user friendly URLs for every band</li>
<li> Automatic transcoding of uploaded tracks to a variety of formats (including lossless)</li>
<li> The option to give away tracks for free, or to sell them (at either a fixed price or one nominated by the fan who&#8217;s buying it, they call it &#8220;Name your price&#8221;)</li>
<li> A <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://bandcamp.mu/img/shot-stats.png" title="Bandcamp stats page example"  rel="shadowbox[post-105];player=img;" target="_blank">stats page</a> in the band’s CMS, which shows all complete and partial track listens, incoming links and the general state of the band’s internet rep’, whether it be blog mentions, reviews or who’s embedding their Bandcamp player and where.</li>
<li>Cool music visualisations as part of their player (more on that in a moment)</li>
</ul>
<p><a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://bandcamp.mu/faq" title="Read more about Bandcamp"  target="_blank">&#8230;And it&#8217;s <strong>FREE!</strong></a></p>
<p>My job was to help make the site even more unique (and sexy!) by creating a <strong>library of music visualisations</strong> &#8211; these provide some eye candy whilst you listen to tracks on a band&#8217;s page (or in their embedded player). We strived to avoid the clichéd, generic approach to visualisations (you know what I’m talking about) by giving the user something a wee bit special to gawk at. It wouldn’t be fair if ears got all the love!</p>
<p>Here&#8217;s a few quick screengrabs of the first 5 visualisations (more visualisations are on their way soon)&#8230;</p>

<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/3d1.jpg"  rel='shadowbox[album-105];player=img;' title='3D Music Visualisations 1'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/3d1-155x155.jpg" class="attachment-thumbnail" alt="" title="3D Music Visualisations 1" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/3d2.jpg"  rel='shadowbox[album-105];player=img;' title='3D Music Visualisations 2'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/3d2-155x155.jpg" class="attachment-thumbnail" alt="" title="3D Music Visualisations 2" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/3d3.jpg"  rel='shadowbox[album-105];player=img;' title='3D Music Visualisations 3'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/3d3-155x155.jpg" class="attachment-thumbnail" alt="" title="3D Music Visualisations 3" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/3d4.jpg"  rel='shadowbox[album-105];player=img;' title='3D Music Visualisations 4'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/3d4-155x155.jpg" class="attachment-thumbnail" alt="" title="3D Music Visualisations 4" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bubbles1.jpg"  rel='shadowbox[album-105];player=img;' title='Bubbles Music Visualisation 1'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bubbles1-155x155.jpg" class="attachment-thumbnail" alt="" title="Bubbles Music Visualisation 1" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bubbles2.jpg"  rel='shadowbox[album-105];player=img;' title='Bubbles Music Visualisation 2'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bubbles2-155x155.jpg" class="attachment-thumbnail" alt="" title="Bubbles Music Visualisation 2" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bubbles3.jpg"  rel='shadowbox[album-105];player=img;' title='Bubbles Music Visualisation 3'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bubbles3-155x155.jpg" class="attachment-thumbnail" alt="" title="Bubbles Music Visualisation 3" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bubbles4.jpg"  rel='shadowbox[album-105];player=img;' title='Bubbles Music Visualisation 4'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/bubbles4-155x155.jpg" class="attachment-thumbnail" alt="" title="Bubbles Music Visualisation 4" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/eq1.jpg"  rel='shadowbox[album-105];player=img;' title='EQ Music Visualisation 1'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/eq1-155x155.jpg" class="attachment-thumbnail" alt="" title="EQ Music Visualisation 1" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/eq2.jpg"  rel='shadowbox[album-105];player=img;' title='EQ Music Visualisation 2'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/eq2-155x155.jpg" class="attachment-thumbnail" alt="" title="EQ Music Visualisation 2" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/eq4.jpg"  rel='shadowbox[album-105];player=img;' title='EQ Music Visualisation 3'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/eq4-155x155.jpg" class="attachment-thumbnail" alt="" title="EQ Music Visualisation 3" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/eq5.jpg"  rel='shadowbox[album-105];player=img;' title='EQ Music Visualisation 4'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/eq5-155x155.jpg" class="attachment-thumbnail" alt="" title="EQ Music Visualisation 4" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/flowers1.jpg"  rel='shadowbox[album-105];player=img;' title='Flowers Music Visualisation 1'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/flowers1-155x155.jpg" class="attachment-thumbnail" alt="" title="Flowers Music Visualisation 1" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/flowers2.jpg"  rel='shadowbox[album-105];player=img;' title='Flowers Music Visualisation 2'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/flowers2-155x155.jpg" class="attachment-thumbnail" alt="" title="Flowers Music Visualisation 2" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/flowers3.jpg"  rel='shadowbox[album-105];player=img;' title='Flowers Music Visualisation 3'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/flowers3-155x155.jpg" class="attachment-thumbnail" alt="" title="Flowers Music Visualisation 3" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/flowers4.jpg"  rel='shadowbox[album-105];player=img;' title='Flowers Music Visualisation 4'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/flowers4-155x155.jpg" class="attachment-thumbnail" alt="" title="Flowers Music Visualisation 4" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/plasma2.jpg"  rel='shadowbox[album-105];player=img;' title='Plasma Music Visualisation 1'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/plasma2-155x155.jpg" class="attachment-thumbnail" alt="" title="Plasma Music Visualisation 1" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/plasma3.jpg"  rel='shadowbox[album-105];player=img;' title='Plasma Music Visualisation 2'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/plasma3-155x155.jpg" class="attachment-thumbnail" alt="" title="Plasma Music Visualisation 2" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/plasma4.jpg"  rel='shadowbox[album-105];player=img;' title='Plasma Music Visualisation 3'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/plasma4-155x155.jpg" class="attachment-thumbnail" alt="" title="Plasma Music Visualisation 3" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/plasma5.jpg"  rel='shadowbox[album-105];player=img;' title='Plasma Music Visualisation 4'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2008/09/plasma5-155x155.jpg" class="attachment-thumbnail" alt="" title="Plasma Music Visualisation 4" /></a>

<p>The power behind the visuals is a customised version of the <strong>AS3 music visualisation engine</strong> I’ve been working on for some time now, which includes beat detection and a whole host of other methods for interpreting a stream, ready for visualising.</p>
<p>The guys at Bandcamp have been really supportive in allowing me to develop this library with a view to releasing the API in order for Flash developers to build and upload their own visualisations for use within the Bandcamp player.</p>
<p>Furthermore, because the visualiser has been a <a href="http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation" title="Early experiments with AS3 music visualisation"  target="_blank">pet project of mine</a> since the release of AS3, come December I’ll be <strong>open sourcing the engine</strong> so that anyone can build on it, or simply use it out of the box to produce some optical delights of their own.</p>
<p>Anyway, I’m really excited that Bandcamp has been unleashed on the public and I encourage you to check it out, especially if you’re a musician, or like music, or pretty visuals, or cool technologies, or great ideas, or websites&#8230;</p>
<h2>Want to know more about Bandcamp?</h2>
<p>Then watch the <strong>screencast</strong> <em>(bellow)</em> and chat about it on <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.vimeo.com/1739268" title="The Bandcamp Screencast on Vimeo"  target="_blank">Vimeo</a>, browse on over to <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://bandcamp.mu/" title="Bandcamp"  target="_blank"><strong>bandcamp</strong>.mu</a>, peruse the <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://bandcamp.mu/faq" title="Got questions?"  target="_blank">FAQs</a> and <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://20minuteloop.bandcamp.mu/" title="20 Minute Loop, hosted on Bandcamp"  target="_blank">see it in action!</a></p>
<div class="swf"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="710" height="399" 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=1739268&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="710" height="399" src="http://vimeo.com/moogaloop.swf?clip_id=1739268&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations' rel='bookmark' title='Permanent Link: More Music Visualisations'>More Music Visualisations</a></li>
<li><a href='http://blog.soulwire.co.uk/art-design/portfolio/disabed-algebra' rel='bookmark' title='Permanent Link: Disabed Algebra'>Disabed Algebra</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation' rel='bookmark' title='Permanent Link: AS3 Music Visualisation'>AS3 Music Visualisation</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/art-design/portfolio/bandcamp-music-visualisations/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>2D Cellular Automata</title>
		<link>http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata</link>
		<comments>http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata#comments</comments>
		<pubDate>Tue, 06 May 2008 13:16:41 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Autonomous]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Complexity]]></category>
		<category><![CDATA[Emergence]]></category>
		<category><![CDATA[Experiments]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=69</guid>
		<description><![CDATA[
Inspired by Conway’s game of life, I decided to program a 2 dimensional Cellular Automaton in Actionscript 3.
I had been reading up on complexity theory for a recent project and the Cellular Automata just kept on rearing its head. Of course it displays the fundamental qualities of complexity; starting with an object following a set [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-flocking-steering-behaviors' rel='bookmark' title='Permanent Link: Flipping you the Boid'>Flipping you the Boid</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a rel="lightbox;width=800;height=525;" title="2D Cellular Automata" href="http://blog.soulwire.co.uk/wp-content/uploads/2008/05/cellular-automata.swf"><img src="http://blog.soulwire.co.uk/wp-content/uploads/2008/05/cellular-automata-710x326.jpg" alt="2D Cellular Automata" title="2D Cellular Automata" width="710" height="326" class="alignnone size-medium wp-image-689" /></p>
<p></a>Inspired by <strong>Conway’s game of life</strong>, I decided to program a <strong>2 dimensional Cellular Automaton</strong> in Actionscript 3.</p>
<p>I had been reading up on complexity theory for a recent project and the Cellular Automata just kept on rearing its head. Of course it displays the fundamental qualities of complexity; starting with an object following a set of simple rules and then creating multiple instances to form complex and unpredictable patterns.<span id="more-69"></span></p>
<p>In terms of visualisation, the Cellular Automata is interesting because it has potential to be used for many applications. Complexity Theory and Systems Theory are used to simulate various growth patterns such as that of a city or population. My personal ideas are of course much simpler, one being a 3 dimensional version which uses <strong>Papervision 3D</strong>; and, rather than switching cells on or off, would incrementally grow or shrink shapes in 3D space to create landscapes or cityscapes whose growth is determined by the development of the Automata.</p>
<p>This particular Actionscript 3 version is a fairly direct port of the 2 dimensional ‘Game of Life’ permutation, but is fun to play with none-the-less.</p>
<p><strong>The rules are as follows:</strong></p>
<p>Each cell can be either <strong>empty</strong>, <strong>new</strong>, <strong>alive </strong>or <strong>dead</strong>. As the grid updates, each cell observes its 8 neighbouring cells (or less if it is at a corner or edge) and changes it&#8217;s state depending on the state of said neighbouring cells.</p>
<ul>
<li>If <strong>less than 2 neighbours</strong> are alive, the cell dies <em>(loneliness)</em></li>
<li>If <strong>more than 3 neighbours</strong> are alive, the cell dies <em>(overcrowding)</em></li>
<li>If a living cell has <strong>2 or 3 living neighbours</strong> it continues to live</li>
<li>If a dead cell has <strong>3 living neighbours</strong> it comes to life</li>
</ul>
<p>There are many initial shapes which either form patterns of perpetual growth or at least interesting shapes as the system updates; some simply die out. Have a play and see if you can find shapes, or combinations of shapes which do interesting things. It’s quite addictive!</p>
<p>I have added a few presets to illustrate how certain groupings of cells that are alive when the system starts can behave in the grid as the automaton runs, and also a randomise button which will create a random grid of empty and alive cells and can form some interesting patterns as the system iterates and emergence begins to kick in.</p>
<p>The <a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=cellular-automata.zip" title="Actionscript 3 Cellular Automata source code" >source code</a> is of course available, so have a play with that and see what happens when you change the rules or create bigger grids.</p>
<p><strong>A quick note about the Actionscript.</strong></p>
<p>I have created a <strong>CAGrid </strong>class for building Cellular Automata, which can be instantiated at any size and with any amount of rows and colums.</p>
<pre lang="actionscript">/**
* A grid of cells used to produce a 2 dimensional cellular automata
*
* @param	gridSize	The dimensions in pixels of the grid
* @param	segments	The number of cells in each row or column
* @param	cellPad		The padding (or spacing) inside each cell
*/

public function CAGrid( gridSize:int, segments:int, cellPad:int )</pre>
<p>The CAGrid class contains methods for drawing the grid, resetting the grid, updating the system, randomising cells, saving configurations and loading presets, and is automatically redrawn when the size or rows / columns are changed during runtime using the <strong>size </strong>and <strong>segments </strong>setters respectively.</p>
<p>The <strong>Cell </strong>class contains a simple setter for <strong>status</strong>, and some constants for easy reference to the cell&#8217;s state. In this example the cell is drawn by choosing a colour which corresponds to the state of the cell, but a movieclip with labelled frames (for example) could just as easily be used to create more visually interesting results.</p>
<p>Oh, and included are some <strong>custom skinned CS3 components</strong> (button and comboBox) which look a bit like the Vista skin, so maybe those are goodies in themselves!</p>
<a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=cellular-automata.zip" class="download" title="2D Cellular Automata: An AS3 implementation of Conways' Game of Life. A 2D Cellular Automata with source code and demo."  rel="nofollow"><strong>Download:</strong> 2D Cellular Automata</a>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-flocking-steering-behaviors' rel='bookmark' title='Permanent Link: Flipping you the Boid'>Flipping you the Boid</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Webcam Glitch Art</title>
		<link>http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art</link>
		<comments>http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art#comments</comments>
		<pubDate>Fri, 09 Nov 2007 14:13:36 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Generative]]></category>
		<category><![CDATA[Colour]]></category>
		<category><![CDATA[Glitch]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=47</guid>
		<description><![CDATA[
What happens when you let vista install drivers for you? Shit happens. But in this case, good shit.
I was playing around with flash and using the Camera class to save stills via the CS3 AIR extension. Unfortunately, my webcam drivers had not been installed correctly, but the results were some really interesting glitches.
You can see [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator' rel='bookmark' title='Permanent Link: Smack My Glitch Up'>Smack My Glitch Up</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-009-710x355.jpg" alt="Webcam Glitch Art" title="webcam-glitch-009" width="710" height="355" class="alignnone size-medium wp-image-787" /></p>
<p>What happens when you let vista install drivers for you? Shit happens. But in this case, good shit.<span id="more-47"></span></p>
<p>I was playing around with flash and using the Camera class to save stills via the CS3 AIR extension. Unfortunately, my webcam drivers had not been installed correctly, but the results were some really interesting glitches.</p>

<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-001.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-001'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-001-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-001" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-002.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-002'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-002-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-002" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-003.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-003'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-003-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-003" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-004.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-004'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-004-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-004" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-005.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-005'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-005-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-005" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-006.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-006'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-006-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-006" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-007.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-007'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-007-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-007" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-008.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-008'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-008-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-008" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-009.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-009'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-009-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-009" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-010.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-010'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-010-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-010" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-011.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-011'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-011-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-011" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-012.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-012'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-012-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-012" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-013.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-013'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-013-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-013" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-014.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-014'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-014-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-014" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-015.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-015'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-015-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-015" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-016.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-016'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-016-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-016" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-017.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-017'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-017-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-017" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-018.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-018'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-018-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-018" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-019.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-019'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-019-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-019" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-020.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-020'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-020-155x155.jpg" class="attachment-thumbnail" alt="" title="webcam-glitch-020" /></a>

<p>You can see the full set and high res versions on <a rel="nofollow" href="http://blog.soulwire.co.uk/goto/http://www.flickr.com/photos/soulwire/sets/72157603055370065/" title="Webcam Glitch Art"  target="_blank">Flickr</a></p>
<p>It got me thinking about the ByteArray and socket classes in AS3, with some experimentation, maybe there will be a way to screw up BitmapData in a similar way? Bring back the 90’s and the cool glitch art that seemed to be coming out more often then. It’s amazing what eye candy can be produced by malfunctions.</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator' rel='bookmark' title='Permanent Link: Smack My Glitch Up'>Smack My Glitch Up</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
