<?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>Luke Loeffler &#187; processing</title>
	<atom:link href="http://lukeloeffler.com/tag/processing/feed/" rel="self" type="application/rss+xml" />
	<link>http://lukeloeffler.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Apr 2010 20:07:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Visualizations for new Display</title>
		<link>http://lukeloeffler.com/2010/fiberoptic-visualizations/</link>
		<comments>http://lukeloeffler.com/2010/fiberoptic-visualizations/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 21:22:38 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[puredata]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=604</guid>
		<description><![CDATA[Over the last couple months I&#8217;ve had the chance to develop a series of &#8220;paintings&#8221; for the fiberoptic tapestry, a new display system developed by artists Ligorano/Reese. It is essentially a hand-woven canvas of optic fibers, each illuminated by an electronically-controlled LED. The result is incredibly beautiful and expressive, producing a painterly effect. I was [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/IMG_1463.JPG"><img class="alignleft size-medium wp-image-608" style="padding-right: .5em" title="IMG_1463" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/IMG_1463-360x249.jpg" alt="IMG_1463" width="360" height="249" /></a>Over the last couple months I&#8217;ve had the chance to develop a series of &#8220;paintings&#8221; for the <em>fiberoptic tapestry</em>, a new display system developed by artists <a href="http://ligoranoreese.net">Ligorano/Reese</a>. It is essentially a hand-woven canvas of optic fibers, each illuminated by an electronically-controlled LED. The result is incredibly beautiful and expressive, producing a painterly effect. I was mesmerized by the gently-glowing canvases the first time I saw them and was very excited to get the chance to create content for them.</p>
<p>My work has been developing visualizations that utilize the new physical display in different ways. The first visualizes air traffic over four major airports in the US, drawing moving lines to indicate aircraft taking off and landing. The second, entitled <em>Order/Disorder</em>, displayed below aggregates a number of sources for natural disaster information and draws the disasters as &#8220;tears in the fabric&#8221; of the world. Lastly, I am working to create software that reacts to the environment and responds by flashing a series of animations developed by Marshall Reese.</p>
<p>A program in Processing communicates with the hardware and serves as a hub accepting drawing commands from other software via OSC. A number of scripts in Python perform data aggregation, scraping, parsing and animation for the flight tracker. A patch in Pd performs sound analysis and drives the canvases through OSC.</p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="640" height="480" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="autoplay" value="false" /><param name="src" value="http://lukeloeffler.com/wordpress/wp-content/uploads/2010/01/order_disorder.mov" /><embed type="video/quicktime" width="640" height="480" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2010/01/order_disorder.mov" autoplay="false"></embed></object></p>
<p><em>&#8220;Order/Disorder</em> is a software visualization of destructive and restorative forces in the world. The software runs on an electronically-controlled tapestry of woven fiberoptic threads created by New York-based artists Ligorano/Reese. Two computer programs, named order and disorder, modify the tapestry throughout the day in response to natural and man-caused events such as earthquakes, biohazards, and aircraft accidents. Order seeks to weave a rainbow-gradated pattern representing peace and wholeness while Disorder seeks to destroy and unravel the tapestry by &#8220;tearing&#8221; the fabric and weaving in aberrant threads.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2010/fiberoptic-visualizations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://lukeloeffler.com/wordpress/wp-content/uploads/2010/01/order_disorder.mov" length="6832221" type="video/quicktime" />
		</item>
		<item>
		<title>Invisible Chimes</title>
		<link>http://lukeloeffler.com/2009/intangible-invisible-interactions/</link>
		<comments>http://lukeloeffler.com/2009/intangible-invisible-interactions/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 05:15:29 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Completed Work]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[puredata]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=572</guid>
		<description><![CDATA[How would we experience interaction with objects that provide no visual or tactile feedback?]]></description>
			<content:encoded><![CDATA[<p>Lately I have been exploring the idea of invisible, intangible interactive systems and how they would be experienced. So much of everyday interaction deals with sight and touch.  We rely on visual and tactile feedback to manipulate and understand physical systems. How difficult is it to understand and know a system when these two components are removed leaving only sound? Everyone has had the experience of stumbling through a dark house at night to get a glass of water, but relied primarily on the sense of touch to get by. What happens when Newton&#8217;s 3rd law no longer guides us and the glass we grasp doesn&#8217;t press back on our hand? The closest experience I can think of is the theremin, although the underlying system is limited in potential complexity.</p>
<p>The first piece I have made to explore this concept features invisible wind chimes.  When a person walks through the space occupied by the virtual chimes, they begin to ring.  Should the actor stop to explore the source of the sound, he will uncover a fine-grained, predictable, knowable system. Using computer vision techniques to detect movement in a space, real, physical objects are able to interact with virtual, &#8220;physical&#8221; ones. Although not concrete, they are still physical because a physics simulation ensures the individual chimes still hang behave in ways we know and expect.  They hang from the ceiling by strings, collide with each other (causing them to ring), swing and respond to gravity by eventually settling back to rest, and respond to touch by a soft body (muting any ringing).</p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="640" height="480" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="autoplay" value="false" /><param name="src" value="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/invisible_chimes.mov" /><param name="align" value="left" /><embed type="video/quicktime" width="640" height="480" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/invisible_chimes.mov" align="left" autoplay="false"></embed></object></p>
<p><em>Invisible Chimes</em> is an intangible, interactive system that prompts us to consider how we acquire knowledge of complex systems from limited experiential data. The chimes, though installed in a space, cannot be seen, and while they can be touched, they cannot be felt. The only indication of their presence is the sound they make. Nevertheless, the system is still very much a &#8220;physical&#8221; one, in that the chimes are governed by the laws of physics. Although they can be appreciated by simply walking through them, further interaction reveals that the individual chimes can be separated, muted, and lifted, and that they behave in a predictable, understandable way. The inset video reveals the physical model the custom software uses to create the interactive system.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/intangible-invisible-interactions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/invisible_chimes.mov" length="12001511" type="video/quicktime" />
		</item>
		<item>
		<title>Topographic Mirror</title>
		<link>http://lukeloeffler.com/2009/topographic-mirror/</link>
		<comments>http://lukeloeffler.com/2009/topographic-mirror/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 04:29:26 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Completed Work]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=574</guid>
		<description><![CDATA[Software that dismantles and reconstructs the human vision system by finding edges of different value levels and recombining the sequentially sans value.]]></description>
			<content:encoded><![CDATA[<p><em>Topographic Mirror</em> is an interactive program that decomposes and reintegrates the elements of human vision.  We normally see by finding gradations of value in a scene.  The contrast between shadows, midtones, and highlights allows us to distinguish one region from another.  However, by moving a Nintendo Wii, the viewer is able to slice the image into rings of different values and generate a sort of real-time topographic map of the scene allowing us to see things in a new way.</p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="640" height="480" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="autoplay" value="false" /><param name="src" value="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/topographic_mirror.mov" /><embed type="video/quicktime" width="640" height="480" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/topographic_mirror.mov" align="left" autoplay="false"></embed></object></p>
<p>The persistence of the lines could be affected by altering the opacity and the radius of the contour lines could be changed by setting the thresholding point, which is the cutoff point or &#8220;line in the sand&#8221; by which we determine what white and black are. Imagine flooding a mountainous area with water: everything above the water line is considered &#8220;dry&#8221; and everything below, &#8220;wet.&#8221;  If you walk along the shoreline, or contour, add more water and then walk the shore line again, you will find a much smaller ring the second time.  If you were to plot the path you took for each of these rings, you would have a topographic map.</p>
<p>Continuing with this idea, I automated the process and drew all the contours on each image, leading to a series of images like this:</p>
<p><a href="http://www.flickr.com/photos/ukle/4173932918/"><img class="alignleft size-medium wp-image-575" title="4173932918_6fb2b66a89_o" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/4173932918_6fb2b66a89_o-360x269.jpg" alt="4173932918_6fb2b66a89_o" width="360" height="269" /></a><br />
Next I added all the points to 3D space and set up some basic camera controls to allow exploring the mesh and ended up with a video like this, which felt a lot like those old-school flight simulators from the 80&#8217;s.  There&#8217;s something very amusing about flying over your face&#8230;<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=05bbe79165&amp;photo_id=4174231525" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/video/stewart.swf?v=71377" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" allowfullscreen="true" bgcolor="#000000" flashvars="intl_lang=en-us&amp;photo_secret=05bbe79165&amp;photo_id=4174231525"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/topographic-mirror/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/topographic_mirror.mov" length="7812429" type="video/quicktime" />
		</item>
		<item>
		<title>Tangible Drawing Interfaces</title>
		<link>http://lukeloeffler.com/2009/tangible-drawing-interfaces/</link>
		<comments>http://lukeloeffler.com/2009/tangible-drawing-interfaces/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 23:36:11 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[trackmate]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=556</guid>
		<description><![CDATA[An experiment with tangible interfaces allowing on-screen drawing using assorted physical objects, each of which have a specific function.]]></description>
			<content:encoded><![CDATA[<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/3601289505_23738aab71_b.jpg"><img class="alignleft size-medium wp-image-557" title="3601289505_23738aab71_b" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/3601289505_23738aab71_b-360x239.jpg" alt="3601289505_23738aab71_b" width="360" height="239" /></a>This is a screenshot of one of the resulting paintings from an experiment using <a href="http://trackmate.media.mit.edu/">trackmate</a> to create a tangible drawing interface. By placing special coded labels on the bottom of miscellaneous objects I had lying around my desk, I was able to assign a different function to each object. For example, a green candle drew green lines and a yellow one drew in yellow. Another one was a &#8220;universal&#8221; brush that took on the color determined by the rotation of a fourth object. Another object only erased, and one final one controlled the opacity of the brushes by its position.</p>
<p>The trackmate system examines an image (in this case coming from a cheap webcam) and looks for special coded labels. Each label contains a unique ID and also encodes its rotational direction. When trackmate identifies a label, it sends the id, position, and rotation to my software in processing which in turn draws lines.</p>
<p>The screenshot was taking during an interactive session where one person was controlling the color, the other was controlling the opacity, and the third was moving the brush.</p>
<p>The lines in the drawing are broken up due to the low resolution of the camera (this could have possibly been solved with interpolation).  I need to calibrate the camera again (and really, buy a cam with a res higher than 640&#215;480), and find a better surface that will filter some of the &#8216;noise&#8217; from the scene.  Still, trackmate behaved remarkably well given the circumstances.</p>
<p>The trackmate website has good tutorials on how to get a system up and running. My <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/12/trackmate_tangible_drawing_interface.pde">source code</a> is provided to help get you started if you want to play around with the system, although I accidentally lost the final revision, so the code provided may not function as expected.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/tangible-drawing-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Cam Heart Rate Monitor</title>
		<link>http://lukeloeffler.com/2009/web-cam-heart-rate-monitor/</link>
		<comments>http://lukeloeffler.com/2009/web-cam-heart-rate-monitor/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 02:34:18 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=463</guid>
		<description><![CDATA[How to measure your heart rate with a webcam and some Processing code.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been experimenting with methods to determine my heart rate in order to add bio-feedback to software. This Processing sketch uses the same principle as the devices in the doctor&#8217;s office that clip on to your finger. When your heart beats, more blood is pumped through the capillaries in your fingertip, thus absorbing more light and causing a slight darkening of your fingertip.</p>
<p>To use the code you&#8217;ll need a copy of <a href="http://processing.org">Processing</a>. Shine a bright flashlight against your thumbnail (I used a bright LED flashlight) and place your thumb over the webcam lens so it completely blocks it. Try to hold as still as possible.  The brightness of the red channel is measured each frame and a running average is kept. If the brightness drops below the recent average, a small circle is drawn representing a contracting heart.</p>
<p>If it is unreliable, you may need to tweak the navg parameter and/or find a way to stabilize the light source, finger, and camera, as small shifts will cause a change in the amount of light detected by the camera.</p>
<p><a href='http://lukeloeffler.com/wordpress/wp-content/uploads/2009/11/heartrate_monitor_camera.pde'>Download the Code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/web-cam-heart-rate-monitor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving Sound</title>
		<link>http://lukeloeffler.com/2009/moving-sound/</link>
		<comments>http://lukeloeffler.com/2009/moving-sound/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 02:12:40 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[synthesis]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=420</guid>
		<description><![CDATA[An interactive piece translating 2D forms to sound.]]></description>
			<content:encoded><![CDATA[<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/Screen-shot-2009-10-18-at-10.00.18-PM.png"><img class="alignleft size-medium wp-image-421" title="Screen shot 2009-10-18 at 10.00.18 PM" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/Screen-shot-2009-10-18-at-10.00.18-PM-360x269.png" alt="Screen shot 2009-10-18 at 10.00.18 PM" width="360" height="269" /></a>I&#8217;ve been interested lately in the concept of giving abstract things a voice and answering the question of what something would sound like if it made noise. This project aims to create sound from movement.</p>
<p>In a <a href="http://www.ted.com/talks/lang/eng/golan_levin_ted2009.html">TED talk</a> by Golan Levin, he presented an interactive project that highlighted the negative (or interstitial) spaces of cast shadows. This idea seemed like a natural way to segment a generic image, so I decided to use blobs (uninterrupted regions of an image) as the basis for generating tones. In this processing sketch, the system finds three areas of a particular size and assigns each a tone according to its size associating larger pieces with lower tones.  The colors indicate the three sound-generating regions.</p>
<p>The <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/sound_of_shape.html">applet</a> has been posted along with the source, although you may have to run it locally in processing to work properly.  You will need a video camera attached to your computer.  <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/interstitial-synth-recording.mp3">Listen to a sound clip</a> from the synth.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/moving-sound/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/interstitial-synth-recording.mp3" length="176098" type="audio/mpeg" />
		</item>
		<item>
		<title>Colorspace Synthesizer</title>
		<link>http://lukeloeffler.com/2009/colorspace-synthesizer/</link>
		<comments>http://lukeloeffler.com/2009/colorspace-synthesizer/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 00:59:00 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[synthesis]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=404</guid>
		<description><![CDATA[An experimental, interactive audio synthesizer in which independent generators combine to create an ambient soundscape as they try to reach a state of equilibrium.]]></description>
			<content:encoded><![CDATA[<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/colorspace.html"><img style="float: left; border: 0px initial initial; margin-right: 1em;" title="color_space1" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/color_space1-360x349.png" alt="color_space1" width="360" height="349" /></a></p>
<p>An experimental, interactive audio synthesizer in which independent generators combine to create an ambient soundscape as they try to reach a state of equilibrium.</p>
<p>Click to listen to a <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/cs_test.mp3">sample clip</a>, play with the <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/colorspace.html">applet</a>, or view the <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/color_space.pde">source</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/colorspace-synthesizer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/10/cs_test.mp3" length="4227051" type="audio/mpeg" />
		</item>
		<item>
		<title>Text on a Curve</title>
		<link>http://lukeloeffler.com/2009/text-on-a-curve/</link>
		<comments>http://lukeloeffler.com/2009/text-on-a-curve/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 22:57:03 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=383</guid>
		<description><![CDATA[I&#8217;m researching methods to render text along a path, like you can easily do in Illustrator. Unfortunately, it&#8217;s not so simple in Processing (unless someone knows of a library that does this).

You can find a demo and the source here. Click four times to set the curve points and handles. Move the mouse left and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m researching methods to render text along a path, like you can easily do in Illustrator. Unfortunately, it&#8217;s not so simple in Processing (unless someone knows of a library that does this).</p>
<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/09/Screen-shot-2009-09-01-at-5.57.37-PM.png"><img class="alignnone size-medium wp-image-392" title="Screen shot 2009-09-01 at 5.57.37 PM" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/09/Screen-shot-2009-09-01-at-5.57.37-PM-360x157.png" alt="Screen shot 2009-09-01 at 5.57.37 PM" width="360" height="157" /></a></p>
<p>You can find a demo and the source <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/09/growing_text_tree.html">here</a>. Click four times to set the curve points and handles. Move the mouse left and right to alter the curve tightness.</p>
<p>In a nutshell, the algorithm computes the approximate length of the line segment by chopping it into smaller segments and computing the linear distance between points.  Once the length of the segment is known in pixels, <em>textWidth()</em> is called to obtain the width in pixels of each character. This width divided by the length of the curve determines the percentage of the curve the character occupies. Once this is know, the amount to increment the variable <em>t</em> in the parametric <em>curvePoint(&#8230;)</em> function is known. From here, we can find the starting point, determine the tangent, and draw the letter.</p>
<p>All straightforward, right? For whatever reason, though, the kerning is severely off under certain conditions. When there is a slight curve in the line segment, it seems to be balanced. When the curve tightness is altered and becomes very flat, or very curved, the letters become overly spaced out at one end, and overly compressed at the other.  Does anyone have any suggestions as to why this is happening?</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/text-on-a-curve/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Making a Stacked Area Chart With Processing</title>
		<link>http://lukeloeffler.com/2009/stacked_area_chart/</link>
		<comments>http://lukeloeffler.com/2009/stacked_area_chart/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 06:37:25 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=370</guid>
		<description><![CDATA[In order to visualize multiple variables in a single time series, a stacked area (sometimes called a &#8220;stream&#8221;) chart is often useful. I am currently doing research for an upcoming visualization that will trace the development of ideas through a conversation. Unable to find processing code to create an area chart, I decided to write [...]]]></description>
			<content:encoded><![CDATA[<p>In order to visualize multiple variables in a single time series, a stacked area (sometimes called a &#8220;stream&#8221;) chart is often useful. I am currently doing research for an upcoming visualization that will trace the development of ideas through a conversation. Unable to find <a href="http://processing.org">processing</a> code to create an area chart, I decided to write my own. I imagine if I looked, there is something out there, but I also wanted something I could completely control to change the appearance of. Hopefully you will find <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/08/river.pde">the source</a> useful in a project of your own.  The image below is an example of the output from the code.</p>
<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/08/river1.png"><img style="border: 0px initial initial;" title="river1" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/08/river1-360x155.png" alt="river1" width="360" height="155" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/stacked_area_chart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gesture</title>
		<link>http://lukeloeffler.com/2009/gesture/</link>
		<comments>http://lukeloeffler.com/2009/gesture/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 03:40:34 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[dance]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=320</guid>
		<description><![CDATA[Custom video processing software uniting the movement of dance and drawing]]></description>
			<content:encoded><![CDATA[<p>Gesture is an animation generated by custom video processing software that seeks to unite the movements of dance and drawing by distilling the dancer&#8217;s poses into a sequence fluid lines. As a spotlight follows the dancer across the new stage, indications of movement are left behind by soft erased lines.</p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="640" height="480" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="src" value="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/gesture.mov" /><embed type="video/quicktime" width="640" height="480" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/gesture.mov"></embed></object></p>
<p>If you&#8217;re interested in a technical description of the code, read on. The main hurdle to getting this completed was implementing a fast &#8220;nearest neighbor&#8221; system. From the chroma-key footage (&#8221;green screen&#8221; as it&#8217;s often called), I threshold it (which means turn it to black and white). Next, I perform edge detection which leaves just the outline to the dancer. By altering the edge detector&#8217;s &#8220;kernel,&#8221; a mathematical term for a table of numbers, I can degrade the outline so it is a series of dots rather than one solid line. Next, I go through the image and make note of the locations of all the points. All that&#8217;s left to do is to connect them with a continuous line. However, if you simply connect the dots in the order they were found (top to bottom, left to right), you will get a zig-zag line that fills the area of the dancer. The next logical step is to take a starting point and ask for it&#8217;s nearest neighbor and connect the two. Then continue the line to the nearest neighbor after that, and so on. Unfortunately, this naive approach does not scale well and takes an enormous amount of time to compute. Enter the <a href="http://en.wikipedia.org/wiki/Kd-tree">KD Tree</a>, a method of storing the points for fast retrieval. I had started to write my own implementation last year and got distracted. Thankfully, I found a simple <a href="http://www.cs.wlu.edu/~levy/software/kd/">implementation</a> for Java which worked perfectly. It&#8217;s beautiful to see a series of techniques converge to produce something entirely new.</p>
<p>The source code is provided in two files: <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/dancers_outlined.pde">dancers_outlined.pde</a> and <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/Tree.java">Tree.java</a> for reference. Please be warned&#8211;it is very rough and not intended for public consumption, although I tried to comment as much as possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/gesture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/gesture.mov" length="5065959" type="video/quicktime" />
		</item>
		<item>
		<title>Seven Minutes</title>
		<link>http://lukeloeffler.com/2009/respiration/</link>
		<comments>http://lukeloeffler.com/2009/respiration/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 00:04:18 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[sensors]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=272</guid>
		<description><![CDATA[A drawing representing respiration patterns.]]></description>
			<content:encoded><![CDATA[<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/3651620104_f98a98156a_o1.jpg"><img class="alignnone size-full wp-image-275" title="respiration" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/3651620104_f98a98156a_o1.jpg" alt="respiration" width="716" height="95" /></a></p>
<p>This image represents my breathing pattern for seven minutes. By reading the motion sensor in my laptop, I was able to plot the rise and fall of my chest. Each circle represents five seconds of data. This was an experiment to see whether the sensor was sensitive enough to detect respiration.</p>
<p>If you would like to experiment with using the sudden motion sensor (SMS) in an Apple MacBook (or MacBook Pro), my <a href="http://processing.org">Processing</a> source code <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/sms.pde">is provided here</a>. Please note that you must download the sms library, available from the Processing website. Commented out is code to turn the laptop into an etch-a-sketch, where you draw by tilting the laptop in various directions.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/respiration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Landscapes</title>
		<link>http://lukeloeffler.com/2009/new-landscapes/</link>
		<comments>http://lukeloeffler.com/2009/new-landscapes/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 20:09:33 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/blog/?p=25</guid>
		<description><![CDATA[A series of generative drawings using simple hatching within a curvilinear scaffold to create a variety of sensual, rhythmic textures.]]></description>
			<content:encoded><![CDATA[<p><em>New Landscapes</em> seeks to model the formation of patterns in the earth caused by constant shifting and erosion of soil through natural forces. Rendered as a series of simple hatch marks, the resulting patterns are intended to be cut or etched into large slabs of earthen materials such as iron, clay, stone, or glass, and placed in the center of a field creating a dialog between what is natural and man-made.</p>
<div><span style="font-family: Verdana, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: small;"><span style="line-height: normal;"><br />
</span></span></div>

<a href='http://lukeloeffler.com/2009/new-landscapes/3650821869_dd88d7e807_o/' title='3650821869_dd88d7e807_o'><img width="800" height="579" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/06/3650821869_dd88d7e807_o-800x579.jpg" class="attachment-large" alt="" title="3650821869_dd88d7e807_o" /></a>
<a href='http://lukeloeffler.com/2009/new-landscapes/3651623526_6d7bb1817f_o/' title='3651623526_6d7bb1817f_o'><img width="800" height="597" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/06/3651623526_6d7bb1817f_o-800x597.jpg" class="attachment-large" alt="" title="3651623526_6d7bb1817f_o" /></a>
<a href='http://lukeloeffler.com/2009/new-landscapes/3651622368_1dfde78e41_o/' title='3651622368_1dfde78e41_o'><img width="800" height="580" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/06/3651622368_1dfde78e41_o-800x580.jpg" class="attachment-large" alt="" title="3651622368_1dfde78e41_o" /></a>
<a href='http://lukeloeffler.com/2009/new-landscapes/3650821189_5e79f9f583_o/' title='3650821189_5e79f9f583_o'><img width="800" height="588" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/06/3650821189_5e79f9f583_o-800x588.jpg" class="attachment-large" alt="" title="3650821189_5e79f9f583_o" /></a>

<p>The <a href="http://www.flickr.com/photos/ukle/sets/72157620148316627/">complete series</a> features images from early versions of the code as well as images illustrating the drawing algorithms.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/new-landscapes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chasing Circles</title>
		<link>http://lukeloeffler.com/2009/chasing-circles/</link>
		<comments>http://lukeloeffler.com/2009/chasing-circles/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 05:09:32 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/blog/?p=34</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://farm4.static.flickr.com/3314/3650820087_cc23e6da24.jpg" title="Chasing Circles" class="alignnone" width="500" height="399" /></p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2009/chasing-circles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Falling Notes</title>
		<link>http://lukeloeffler.com/2008/falling-notes/</link>
		<comments>http://lukeloeffler.com/2008/falling-notes/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 21:27:22 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=87</guid>
		<description><![CDATA[An interactive music visualization requiring the performer to consider musical and aesthetic outcomes simultaneously.]]></description>
			<content:encoded><![CDATA[<p><iframe scrolling="no" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/07/piano.html" width=129 height=401 style="border: none; overflow-x: hidden; overflow-y: hidden; scroll-x:none; scroll-y: none; padding: 1em 1em 0 0; float: left;"></p>
<p>Your Browser does not support iframes, so you cannot view the embedded movie. You may still view a <a href="http://www.flickr.com/photos/ukle/2475548679/in/set-72157604948741164/">version</a> of the movie without sound.</p>
<p></iframe></p>
<p>In this interactive visualization, a musician watches the screen while performing on a keyboard. As notes are played, &#8216;raindrops&#8217; begin to fall. Louder notes fall faster than softer ones and continue to accelerate as the note is sustained. Eventually, notes will blacken if they have been falling for an extended period, and will slowly dissipate unless cleared away by fresh rain from above.</p>
<p>The real-time feedback causes the musician to alter what is being played in order to generate particular audio and visual outcomes simultaneously.</p>
<p>Music in this demo is <em><a href="http://lukeloeffler.com/2009/musical-meanderings/">Final Transmission</a></em> by Luke Loeffler</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2008/falling-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Abstract Architecture</title>
		<link>http://lukeloeffler.com/2008/abstract-architecture/</link>
		<comments>http://lukeloeffler.com/2008/abstract-architecture/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 19:01:25 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[graphic]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=241</guid>
		<description><![CDATA[A series of generative images using semi-transparent, stacked blocks.]]></description>
			<content:encoded><![CDATA[<p>A series of generative pieces using semi-transparent, stacked blocks.</p>
<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/4.png"><img class="alignnone size-large wp-image-242" title="4" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/4-800x488.png" alt="4" width="800" height="488" /></a></p>
<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b1.png"><img class="alignnone size-large wp-image-243" title="b1" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b1-800x488.png" alt="b1" width="800" height="488" /></a><br />
<a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b2.png"></a></p>
<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b2.png"><img class="alignnone size-large wp-image-244" title="b2" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b2-800x488.png" alt="b2" width="800" height="488" /></a><br />
<a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b4.png"></a></p>
<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b4.png"><img class="alignnone size-large wp-image-246" title="b4" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b4-800x488.png" alt="b4" width="800" height="488" /></a><br />
<a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b5.png"></a></p>
<p><a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b5.png"><img class="alignnone size-large wp-image-247" title="b5" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2009/07/b5-800x488.png" alt="b5" width="800" height="488" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2008/abstract-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chromacolony</title>
		<link>http://lukeloeffler.com/2008/chromacolony/</link>
		<comments>http://lukeloeffler.com/2008/chromacolony/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 02:12:25 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[abstract]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/blog/?p=39</guid>
		<description><![CDATA[In this generative series, cells divide, multiply, and differentiate leading to complex hierarchical structures governed by "cultures" which consist of color palettes.]]></description>
			<content:encoded><![CDATA[<p>Chromacolony is one of my earliest generative works. The complex hierarchical structures are generated by custom software which models the cellular processes of division, multiplication, and differentiation. The unique appearance of each scene is derived from color palettes submitted by users around the world to the Adobe Kuler website.  Left to &#8220;grow&#8221; overnight, each unique color culture results in several diverging colonies, and the most successful ones are selected the next day.</p>

<a href='http://lukeloeffler.com/2008/chromacolony/attachment/3/' title='3'><img width="800" height="488" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/06/3-800x488.png" class="attachment-large" alt="" title="3" /></a>
<a href='http://lukeloeffler.com/2008/chromacolony/a1/' title='a1'><img width="800" height="488" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/06/a1-800x488.png" class="attachment-large" alt="" title="a1" /></a>
<a href='http://lukeloeffler.com/2008/chromacolony/a2/' title='a2'><img width="800" height="488" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/06/a2-800x488.png" class="attachment-large" alt="" title="a2" /></a>
<a href='http://lukeloeffler.com/2008/chromacolony/a3/' title='a3'><img width="800" height="488" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/06/a3-800x488.png" class="attachment-large" alt="" title="a3" /></a>
<a href='http://lukeloeffler.com/2008/chromacolony/a4/' title='a4'><img width="800" height="488" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/06/a4-800x488.png" class="attachment-large" alt="" title="a4" /></a>
<a href='http://lukeloeffler.com/2008/chromacolony/a5/' title='a5'><img width="800" height="488" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/06/a5-800x488.png" class="attachment-large" alt="" title="a5" /></a>

<p><a href="http://www.flickr.com/photos/ukle/sets/72157605639352471/">Additional images</a> in this series may be found in my flickr stream.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2008/chromacolony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unraveled</title>
		<link>http://lukeloeffler.com/2008/unraveled/</link>
		<comments>http://lukeloeffler.com/2008/unraveled/#comments</comments>
		<pubDate>Mon, 12 May 2008 19:27:32 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[gallery]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lukeloeffler.com/?p=81</guid>
		<description><![CDATA[In this portrait triptych, a continuous thread winds its way throughout the face. The delicate structure progressively becomes unraveled leaving a series of chaotic, disconnected points.]]></description>
			<content:encoded><![CDATA[<p>In this portrait triptych, a continuous thread winds its way throughout the face. The delicate structure progressively becomes unraveled leaving a series of chaotic, disconnected points.<br />

<a href='http://lukeloeffler.com/2008/unraveled/2475536257_a4996e7965_o/' title='2475536257_a4996e7965_o'><img width="356" height="379" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/05/2475536257_a4996e7965_o.jpg" class="attachment-original" alt="" title="2475536257_a4996e7965_o" /></a>
<a href='http://lukeloeffler.com/2008/unraveled/2476363942_dd435f2d4a_o/' title='2476363942_dd435f2d4a_o'><img width="390" height="394" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/05/2476363942_dd435f2d4a_o.jpg" class="attachment-original" alt="" title="2476363942_dd435f2d4a_o" /></a>
<a href='http://lukeloeffler.com/2008/unraveled/2476363992_7737a76fe9_o/' title='2476363992_7737a76fe9_o'><img width="397" height="399" src="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/05/2476363992_7737a76fe9_o.jpg" class="attachment-original" alt="" title="2476363992_7737a76fe9_o" /></a>
</p>
<p>The processing <a href="http://lukeloeffler.com/wordpress/wp-content/uploads/2008/05/unravel.pde">source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukeloeffler.com/2008/unraveled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
