<?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>Zach Archer Blog</title>
	<atom:link href="http://blog.zacharcher.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zacharcher.com</link>
	<description>Friend to analog and digital alike</description>
	<lastBuildDate>Mon, 18 Feb 2013 22:12:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Sculpting Virtual Clay with the Leap</title>
		<link>http://blog.zacharcher.com/2013/02/13/sculpting-virtual-clay-with-the-leap/</link>
		<comments>http://blog.zacharcher.com/2013/02/13/sculpting-virtual-clay-with-the-leap/#comments</comments>
		<pubDate>Thu, 14 Feb 2013 04:27:14 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Cinder]]></category>
		<category><![CDATA[Leap]]></category>
		<category><![CDATA[memes]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=412</guid>
		<description><![CDATA[Here&#8217;s something fun! @soycamo and I performed at DorkbotPDX&#8217;s Open Mic Surgery. She brought the beats, I brought the visuals. Watch a video of our performance. I was lucky enough to receive a Leap Motion Controller. It acts like a short-range Kinect &#8230; <a href="http://blog.zacharcher.com/2013/02/13/sculpting-virtual-clay-with-the-leap/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s something fun! <a title="soycamo @ Twitter" href="https://twitter.com/soycamo">@soycamo</a> and I performed at <a href="http://dorkbotpdx.org/wiki/open_mic_surgery_2012_12_17">DorkbotPDX&#8217;s Open Mic Surgery</a>. She brought the beats, I brought the visuals.</p>
<p><a href="http://zacharcher.com/lab/2012/leap_clay/red_clay.png"><img class="aligncenter" alt="" src="http://zacharcher.com/lab/2012/leap_clay/red_clay.png" width="1024" height="791" /></a></p>
<p><a href="http://pureimagination.smugmug.com/Events/Dorkbot-Night/27227254_qB8qCr#!i=2287484261&amp;k=Z9MxTbM">Watch a video of our performance.</a></p>
<p>I was lucky enough to receive a <a href="https://www.leapmotion.com/">Leap Motion Controller</a>. It acts like a short-range Kinect for your hands, tracking the position of each individual finger. The Leap&#8217;s sensors are fast, and spookily accurate. I love it.</p>
<p><span id="more-412"></span></p>
<p>For my first &#8220;real&#8221; Leap project, I planned to use the device on stage, and sculpt a block of virtual clay. Initially I was targeting Flash + Stage3D (<em>aka</em> OpenGL), using a Python script to grab the Leap data and send it to Flash through a socket.</p>
<p>In the end, I switched to Cinder, on the assumption that its performance would be superior. In retrospect, Flash + Stage3D would have performed fine. Even in Cinder, my laptop only managed 15-20 FPS. Instead of switching to the native C++ Leap library, I kept the (slower?) Python socket, which may have been unwise. It was also my first Cinder project, so progress was slow.</p>
<p>Still, I regret nothing!!! The performance was a blast. A momentary &#8220;ooooohhh&#8221; passed through the crowd when they saw the Leap in action. I was concerned about stage lights interfering with the Leap&#8217;s sensors, but the Leap was unaffected by the lights.</p>
<p><a href="http://zacharcher.com/lab/2012/leap_clay/fbi_warning.png"><img class="aligncenter" alt="" src="http://zacharcher.com/lab/2012/leap_clay/fbi_warning.png" width="1024" height="791" /></a></p>
<p><a href="http://zacharcher.com/lab/2012/leap_clay/derpy_hooves.png"><img class="aligncenter" alt="" src="http://zacharcher.com/lab/2012/leap_clay/derpy_hooves.png" width="1024" height="791" /></a></p>
<p>For the surface of the clay, I&#8217;m storing a <a href="http://en.wikipedia.org/wiki/Heightmap">heightmap</a> in memory. I treat the tips of the fingers as spheres. When the spheres move below the heightmap, some of the height is distributed to neighboring cells. Then the clay is drawn as a triangle mesh. Overall, the effect is a bit rough, but it definitely conveys the feeling of sculpting solid material.</p>
<p><a href="http://zacharcher.com/lab/2012/leap_clay/shader_error.png"><img class="aligncenter" alt="" src="http://zacharcher.com/lab/2012/leap_clay/shader_error.png" width="1024" height="791" /></a></p>
<p><a href="http://zacharcher.com/lab/2012/leap_clay/i_am_the_bat.png"><img class="aligncenter" alt="" src="http://zacharcher.com/lab/2012/leap_clay/i_am_the_bat.png" width="1024" height="791" /></a></p>
<p><a href="http://zacharcher.com/lab/2012/leap_clay/cracked.png"><img class="aligncenter" alt="" src="http://zacharcher.com/lab/2012/leap_clay/cracked.png" width="1024" height="791" /></a></p>
<p><a href="http://zacharcher.com/lab/2012/leap_clay/leap_clay_public.zip">Download the source code</a>. I included a few sample images and videos to get things rolling:</p>
<ol>
<li>Copy the Leap Python SDK files to the <em>/python</em> folder. (Unfortunately, I cannot provide these files. Registered Leap developers can download them from <a href="https://developer.leapmotion.com/">the Leap website.</a>)</li>
<li><span style="line-height: 15px;">Start the Python server: <em>./python/server.py</em></span></li>
<li>Open and run the project in Xcode: <em>xcode/Clay.xcodeproj</em></li>
<li>Keys: <strong>1</strong> starts the next background video, <strong>`</strong> stops all video. <strong>2</strong> toggles silly matrix transforms. <strong>3</strong> toggles liquid mode. <strong>4</strong> resets the surface of the clay. <strong>0</strong> selects a random image, <strong>[</strong> and <strong>]</strong> display the prev/next image.</li>
</ol>
<p>[<a href="http://dorkbotpdx.org/blog/zkarcher/sculpting_virtual_clay_with_the_leap">Cross-posted to dorkbotpdx.org!</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2013/02/13/sculpting-virtual-clay-with-the-leap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Math+Heart</title>
		<link>http://blog.zacharcher.com/2012/11/04/math-heart/</link>
		<comments>http://blog.zacharcher.com/2012/11/04/math-heart/#comments</comments>
		<pubDate>Sun, 04 Nov 2012 08:22:03 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[heart]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[projector]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=386</guid>
		<description><![CDATA[For the First Thursday Art Walk, I created some projector art for the Everett Station Lofts: (Here&#8217;s the .swf version.) There was a lot of nice feedback. Random people would spot it and exclaim, &#8220;That&#8217;s awesome!&#8221; Things I learned from this &#8230; <a href="http://blog.zacharcher.com/2012/11/04/math-heart/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>For the <a href="http://www.firstthursdayportland.com/">First Thursday Art Walk</a>, I created some projector art for the <a href="http://en.wikipedia.org/wiki/Everett_Station_Lofts">Everett Station Lofts</a>:</p>
<p><iframe width="584" height="438" src="http://www.youtube.com/embed/yCLWmOyYpkI?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><span id="more-386"></span></p>
<p>(<a href="http://zacharcher.com/lab/2012/math_heart/math_heart.swf">Here&#8217;s the .swf version.</a>) There was a lot of nice feedback. Random people would spot it and exclaim, &#8220;That&#8217;s awesome!&#8221;</p>
<p><a href="http://zacharcher.com/lab/2012/math_heart/p/street.jpg"><img class="aligncenter" title="Street view" src="http://zacharcher.com/lab/2012/math_heart/p/street_thumb.jpg" alt="" width="346" height="260" /></a></p>
<p><a href="http://zacharcher.com/lab/2012/math_heart/p/tree.jpg"><img class="aligncenter" title="Tree view" src="http://zacharcher.com/lab/2012/math_heart/p/tree_thumb.jpg" alt="" width="346" height="260" /></a></p>
<div class="wp-caption aligncenter" style="width: 356px"><a href="http://zacharcher.com/lab/2012/math_heart/p/interior_view.jpg"><img title="Inside the lab" src="http://zacharcher.com/lab/2012/math_heart/p/interior_view_thumb.jpg" alt="" width="346" height="260" /></a><p class="wp-caption-text">A secret view from inside the lab!</p></div>
<p>Things I learned from this experience:</p>
<p><strong>Keep it obvious.</strong> The tiny bright spot in the corner of the video is an LED sign displaying a phone number. Anyone who called was treated to this soundscape:</p>
<iframe width="100%" height="166" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F66053656"></iframe>
<p>Guess how many people called? &#8230; Zero! By my estimation, the typical art-walker gazed at the Math+Heart graphics for a few seconds, hardly enough time to notice the tiny phone number.</p>
<p>A different approach would be a phone-centric interactive, such as <a href="http://placepdx.tumblr.com/post/33515979594/mall-of-america-a-toll-free-audio-exhibition">Mall of America: A Toll Free Audio Exhibition</a>. Their phone number is displayed in massive yellow lettering! The back-end could be developed with <a href="http://www.twilio.com/">Twilio</a>, or a similar group that provides interactive phone service.</p>
<p><strong>Don&#8217;t expect 60 FPS from Flash&#8217;s display list.</strong> Ultimately, I did achieve 60 FPS on one of my computers (with the occasional dropped frame, alas) but I invested an unhappy amount of time, fiddling &amp; optimizing, to reach that point. (Flash&#8217;s OpenGL graphics, a.k.a. Stage3D, are more performant. But I didn&#8217;t attempt this, for fear of texture memory issues.)</p>
<p><strong>Motion design tips.</strong> The mathematical glyphs are essentially large particles, which enter at random speeds. This &#8220;swarm&#8221; felt best when the random speeds ranged between 50% and 100% of some maximum value. Any ranges wider than 50% broke the cohesive effect, and felt sloppy.</p>
<p>I experimented with randomizing the easing equations, for instance the rotation could twist at either an exponential or quartic rate. This was surprisingly frustrating to watch. The glyphs behave almost like a unified fluid, so it hurts when they move according to different rules.</p>
<p>Also bad: Using different tween times &amp; delays for the four properties: X, Y, scale, and rotation. I tried using tweens to look like a phantom hand was hurriedly slapping the glyphs down on the canvas. This felt weaker than the smooth, unified motion that was used in the final version.</p>
<p>To achieve movement that was both organic and emotive, I could have tried filming myself acting out the motion with slips of paper, then traced that motion. (Or developed rules to mimic that motion. It could work! Maybe!)</p>
<p><strong>Simple variations can be very effective.</strong> The space packing algorithm has two modes. It switches between packing space that&#8217;s visible on the screen, and packing a larger space including a region below the bottom edge. When it switches to the second mode, it suddenly has a tall, uncluttered space to fill. The result is a texture that constantly varies between tight square-shaped glyphs, and taller ones. The contrasting modes look good!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2012/11/04/math-heart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beat and Tempo Detection</title>
		<link>http://blog.zacharcher.com/2012/10/23/beat-and-tempo-detection/</link>
		<comments>http://blog.zacharcher.com/2012/10/23/beat-and-tempo-detection/#comments</comments>
		<pubDate>Tue, 23 Oct 2012 20:48:14 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[beat detection]]></category>
		<category><![CDATA[beats]]></category>
		<category><![CDATA[bpm]]></category>
		<category><![CDATA[tempo]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=377</guid>
		<description><![CDATA[Here&#8217;s a fairly fast algorithm for detecting beats, and finding the tempo (the beats-per-minute, or &#8220;BPM&#8221;) of music. From top to bottom: 1). Rainbow: Spectral analysis of the track. I&#8217;m using Balkansky &#38; Loop Stepwalker – Cicatriz for this example, because &#8230; <a href="http://blog.zacharcher.com/2012/10/23/beat-and-tempo-detection/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a fairly fast algorithm for detecting beats, and finding the tempo (the beats-per-minute, or &#8220;BPM&#8221;) of music.</p>
<p><a href="http://zacharcher.com/lab/2012/bpm_detect/beat_detect_transient_spikes.png"><img class="aligncenter" title="Beat detection script output" src="http://zacharcher.com/lab/2012/bpm_detect/beat_detect_transient_spikes_thumb.png" alt="Beat detection script output" width="186" height="593" /></a></p>
<p>From top to bottom:</p>
<p><span id="more-377"></span></p>
<p>1). Rainbow: Spectral analysis of the track. I&#8217;m using <a href="http://www.beatport.com/track/cicatriz-original-mix/3024536">Balkansky &amp; Loop Stepwalker – Cicatriz</a> for this example, because it&#8217;s noisy and highly compressed, presenting a good challenge to the algorithm.</p>
<p>2). Red: The differences between adjacent spectral frames. This should help isolate the moments when drum sounds (transients) pop. Pseudo-code: <em>abs( frame[x][y] &#8211; frame[x-1][y] )</em></p>
<p>3). Cyan: The total energy of each frame in (2), with heavier weights applied to higher frequencies. This attempts to compensate for <a href="http://en.wikipedia.org/wiki/Equal-loudness_contours">equal-loudness</a> effects: Higher frequencies are typically perceived as being &#8220;louder&#8221; than lower frequencies at the same amplitude. So, most music is mixed with higher frequencies having less spectral energy. (You can see this in layer (1): The spectral analysis shows the bass range (near the top) is much brighter than the treble).</p>
<p>4). Blurry cyan: Layer (3) is smeared using <a href="http://en.wikipedia.org/wiki/Convolution">convolution</a>. This smooths out any spectral artifacts and transients.</p>
<p>5). Yellow: Layer (4) is subtracted from layer (3). Only positive values are lit. Energetic spikes stand out amidst the surrounding noise of their neighbors.</p>
<p>6). Magenta: Searches for the greatest energies in layer (5). These are the beats! Frames that surround the beats are zeroed-out, ineligible for beat detection. The search is repeated until all beats above 10% of the maximum spike&#8217;s energy are identified. Congratulations! You have found the beats.</p>
<p>Now the trick is to determine the tempo and rhythm. My solution was to begin at the strongest beat. Then measure the distance forward to the next beat. Using this distance, repeatedly step forward through the landscape of beats, and compare the two &#8220;measures&#8221; to see if the rhythms correlate.</p>
<p>Then run this again with a distance of 2 beats forward; then 3 beats; etc.</p>
<p><a href="http://zacharcher.com/lab/2012/bpm_detect/beat_detect_bpm_found.png">In this enthusiastic screenshot</a>, a very strong rhythm has emerged when the program steps a distance of 9 beats forward (or backward) from the strongest beat. The rhythm of &#8220;Cicatriz&#8221; is largely composed of 8 quick hihats (sixteenth notes), followed by 1 big half note snare, so this result seems to make sense.</p>
<p>And there it is! You have found the rhythm. Divide the sampling rate (44100) by this distance to get the tempo. Actually, the resulting number will be very small; multiply by 16, 32, 64&#8230; until a reasonable BPM emerges. (&#8220;Cicatriz&#8221; is 70bpm.)</p>
<p><a href="http://zacharcher.com/lab/2012/bpm_detect/beat_detection_flash.zip">Source code is here</a>. This proof of concept was developed in Flash, which is a decent tool for rapid prototyping, and it comes with a huge library of classes out of the box. This comes with absolutely no warranty! I recommend not using this in mission-critical situations. <a href="http://www.vamp-plugins.org/download.html">The Queen Mary plug-in set</a> may be a more robust choice.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2012/10/23/beat-and-tempo-detection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Angel Harp (is the Weirdest Instrument)</title>
		<link>http://blog.zacharcher.com/2012/03/22/angel-harp-is-the-weirdest-instrument/</link>
		<comments>http://blog.zacharcher.com/2012/03/22/angel-harp-is-the-weirdest-instrument/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 07:22:08 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=357</guid>
		<description><![CDATA[It was a joke, back in September. A goofy idea, amidst a brainstorming session of merely silly ideas. It&#8217;s a heavenly harp! And when you turn it upside-down, it becomes a Devil Harp! Ha, ha. The YouTube trailer would probably &#8230; <a href="http://blog.zacharcher.com/2012/03/22/angel-harp-is-the-weirdest-instrument/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It was a joke, back in September. A goofy idea, amidst a brainstorming session of merely silly ideas. It&#8217;s a heavenly harp! And when you turn it upside-down, it becomes a Devil Harp! Ha, ha.</p>
<p>The YouTube trailer would probably look something like this:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/TS6KHTtvPsI?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>I hacked Angel Harp together in my spare time. Four long months! The plan was to finish by Halloween of 2011, but it took considerably longer than expected. The synthesis was completed in one week, the sound effects in another week. Standing on the shoulders of Twang, Angel Harp produces somewhat-realistic tones (like an actual harp! Complex filtering!) And it has 3+ dozen strings, for serious plucking power!</p>
<p>And, the graphics&#8230; Let&#8217;s talk about that.</p>
<p>Once the Halloween deadline became improbable, I decided to hack each feature until it was &#8220;good enough.&#8221; If any feature became an eyesore, then I&#8217;d revisit it &#8212; either for version 1.0, or a future release. The clouds were redone a couple times. I had grand plans for the harp itself, using an (awful, buggy) <a href="http://zacharcher.com/blog_pics/2012/03/harp_sketch/harness/HarpSketch.swf">harp modeling tool</a>; in a future version, you can draw your own harps, and skin them with fancy materials, I think.</p>
<p><img src="http://zacharcher.com/blog_pics/2012/03/harp_proto/heaven.jpg" alt="Angel Harp! Heaven!" /></p>
<p><span id="more-357"></span></p>
<p>How do you like those smiles? The facial expressions were sketched in 30 seconds, <em>all of them</em>. In my mind, the enormous half-circle grins and grimaces were <em>very</em> temporary. However, as friends were subjected to the &#8216;Harp prototypes, it became clear that people <em>loved</em> the primitive scribbled angels, and they wanted to keep them. Beware the things you bring to light.</p>
<p>I have mixed feelings about the facial expressions. Actually, I love them. They&#8217;re <em>so</em> happy. It&#8217;s almost a parody of top-selling app mascots; googly-eyed characters, managing diners and flying over the outback, are positively <em>leering</em>. Like they haven&#8217;t tasted human flesh for millennia, and then suddenly <em>YOU</em> show up.</p>
<p>I worry that prospective buyers won&#8217;t risk a couple bucks on Angel Harp, because it might look <em>a bit hastily designed</em>. (Even though it feels reactive and expressive, the screenshots can&#8217;t communicate that.)</p>
<p>Angel Harp was a conscious attempt to entertain all ages, and still deliver something unexpected and quirky. Everyone who interacts with Angel Harp loves it, but it&#8217;s a big, intimidating knot of weirdness to figure out. Is it an instrument? Why are there angels? Why do they squeal so much?</p>
<p><strong>Frustrating admission: </strong>I must create apps that are more familiar to the average person (or a certain subgroup of insane musical geniuses).</p>
<p><strong>Not-so-frustrating admission: </strong>I&#8217;m proud of the Devil Harp&#8217;s carousel of effects. The reversed audio, the tube amp distortion, and the fuzz box. Don some headphones, and lose yourself in the Devil Harp&#8217;s ambient spookiness. It&#8217;s nice.</p>
<p><strong>Career-building achievement:</strong> I greatly expanded my OpenGL knowledge.</p>
<p><strong>True tales of bits and bytes:</strong> The sound effects are stored in one continuous file, which sounds like this, and can cause hysteria:</p>
<p><iframe width="100%" height="166" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F40076316&#038;show_artwork=true"></iframe></p>
<p><strong>Culinary trivia:</strong> Coffee is a wonderful drug. It powered both recording sessions. My arms flapped wildly, as I voiced every angel and demon.</p>
<p><strong>Creepy outtake:</strong> Angel Harp mostly &#8220;designed itself,&#8221; but an early version of the Hell world was genuinely upsetting:</p>
<p><img src="http://zacharcher.com/blog_pics/2012/03/harp_proto/hell_proto.jpg" alt="Flames + heat distortion + red lights = AAAAIIIEEEE YOU FOOL, WHAT HAVE YOU UNLEASHED" /></p>
<p><strong>Will there be more Control Z apps in the future:</strong> I expect so! There&#8217;s one music app that I&#8217;m itching to create, but it&#8217;s a massive undertaking. Work, play, life, action, rest&#8230; I&#8217;m still finding the right balance. We shall see.</p>
<p><strong>Is it better to create simple apps, which have one function:</strong> Almost certainly. I always want to go beyond the limits, and tinker with new, unprofitable things. This is my curse. If you&#8217;ve figured out how to manage this affliction, let me know.</p>
<p><a href="http://itunes.apple.com/us/app/angel-harp/id490827417">View Angel Harp at the App Store!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2012/03/22/angel-harp-is-the-weirdest-instrument/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Synthetic Speech in Flash: the Source Code</title>
		<link>http://blog.zacharcher.com/2012/01/09/synthetic-speech-in-flash-the-source-code/</link>
		<comments>http://blog.zacharcher.com/2012/01/09/synthetic-speech-in-flash-the-source-code/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 05:49:27 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[speech]]></category>
		<category><![CDATA[synthetic]]></category>
		<category><![CDATA[talking]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=326</guid>
		<description><![CDATA[Remember the Flash synthetic speech demo, which turned into a talking robot app? Here&#8217;s the source code: Download it! Please note: This code comes with no warranty, nor support, whatsoever. None. Zip. Nada. If your talking robots become self-aware and &#8230; <a href="http://blog.zacharcher.com/2012/01/09/synthetic-speech-in-flash-the-source-code/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Remember the <a href="http://blog.zacharcher.com/2009/08/27/synthetic-speech-in-flash/">Flash synthetic speech demo</a>, which turned into a <a href="http://blog.zacharcher.com/2010/01/03/here-comes-the-metal-mouth/">talking robot app</a>? Here&#8217;s the source code: <strong><a href="http://zacharcher.com/lab/20120109_as3_speech/as3_speech.zip">Download it</a></strong>!</p>
<p><img class="aligncenter" src="http://zacharcher.com/lab/20120109_as3_speech/supercali.png" alt="SUPERCALIFRAGILISTICEXPEALIDOSHUS" width="380" height="328" /></p>
<p>Please note: This code comes with no warranty, nor support, whatsoever. None. Zip. Nada. If your talking robots become self-aware and enslave humanity, then I will not be held responsible. But if you&#8217;re in the mood for tinkering, here&#8217;s how it&#8217;s strung together:</p>
<ul>
<li>The sound is generating using <a href="http://en.wikipedia.org/wiki/Linear_predictive_coding">Linear Predictive Coding</a> (&#8220;LPC&#8221;).</li>
<li>First, some Python code: The <em>analyze_lpc.py</em> script analyzes <em>phonemes.dat</em> (which is just a headerless version of <em>phonemes.aif</em>). Individual phonemes are separated by moments of silence, so the script splits the sound file on those. Each phoneme is converted to LPC data, using code that I ported from <a href="http://soundlab.cs.princeton.edu/software/rt_lpc/">the rt_lpc project</a>. I felt like I understood the mathematics 3 years ago, but I doubt I could explain it today.</li>
<li>Now, in Flash: Launch the <em>DictCompressor</em> application, and watch the trace messages. Click the screen to open the browser window, then select your <em>cmudict___.txt</em> pronouncing dictionary. (You can obtain the latest CMUdict <a href="http://www.speech.cs.cmu.edu/cgi-bin/cmudict">here</a>.) Flash will convert this to a (smaller) <em>cmudict.dat</em> file, which is what <em>LPCsynth.swf</em> loads.</li>
<li><em>LPCsynth</em> is the application that talks. The <em>LPCSynthHarness.sayItNow()</em> method creates an array of <em>LPCFrames</em>, which are &#8220;spoken&#8221; in the <em>sampleData()</em> method.  This was never intended for public distribution, so the code is not exactly stellar (the talking bit should be extracted into its own class).</li>
</ul>
<p>Is this interesting? Did your Flash Player become self-aware after hearing its own voice? Let me know!</p>
<p>It&#8217;s funny, originally this was intended for the <a href="http://controlzinc.com/">controlzinc.com</a> website. The robot voice would sing as you clicked, crooning about your mousing habits. I still can&#8217;t decide if that idea was brilliant, or terrible.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2012/01/09/synthetic-speech-in-flash-the-source-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Mixing Secrets For the Small Studio</title>
		<link>http://blog.zacharcher.com/2011/09/25/book-review-mixing-secrets-for-the-small-studio/</link>
		<comments>http://blog.zacharcher.com/2011/09/25/book-review-mixing-secrets-for-the-small-studio/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 18:51:10 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[eq]]></category>
		<category><![CDATA[mixing]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[studio]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=320</guid>
		<description><![CDATA[This book, written by producer Mike Senior, is fantastic: If only Mixing Secrets For The Small Studio had existed 10 years ago, my music would have been impeccable! (Well, I like to think so.) This book is a magical tome &#8230; <a href="http://blog.zacharcher.com/2011/09/25/book-review-mixing-secrets-for-the-small-studio/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This book, written by producer Mike Senior, is fantastic:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://zacharcher.com/blog_pics/2011/mixing-secrets-for-the-small-studio.jpg" alt="" width="320" height="480" /></p>
<p>If only <em>Mixing Secrets For The Small Studio</em> had existed 10 years ago, my music would have been impeccable! (Well, I like to think so.) This book is a magical tome for anyone who records or produces music on a budget. It&#8217;s packed with big reveals, and explains the science behind each mixing technique. Forget the accumulated hit-or-miss wisdom of the internet; after reading this book, I found that I could produce substantially better mixes <em>immediately</em>. That&#8217;s amazing. (My mixes still aren&#8217;t <em>great</em>, but I&#8217;m working on it!)</p>
<p>Here are my favorite takeaways from the 20 chapters. I&#8217;m writing this to lock these concepts in my head. I&#8217;m skimming lots of material, because there&#8217;s so much valuable information packed into this book, I can&#8217;t possibly recap all of it.</p>
<p><span id="more-320"></span><strong>Part 1: Hearing and Listening</strong></p>
<p>My Rokit KRK-8 studio monitors are distorting my mixes. They&#8217;re &#8220;ported,&#8221; meaning they have an open-air port cut into the body. The manufacturer claims that this helps the air move freely. As a consequence, this creates noisy air turbulence, and muddies the bass frequencies. That&#8217;s bad. The book suggests plugging the ports with socks; the sound might become clearer! Try it, listen carefully, trust your ears&#8230;</p>
<p>The goal of soundproofing your studio is to tame reverberant frequencies. You don&#8217;t want an echoless space. Also, stereo is overrated, try mixing in mono. If this advice sounds heretical, consider the typical consumer&#8217;s listening environment: Computer speakers, stuffed in a bookcase, clear across the room. Car speakers, blaring inside a noisy, reflective space. Restaurant speakers, bolted to the ceiling in semi-random locations. Your mix <em>should</em> sound good in mono, because most people will <em>never</em> give it a proper stereo listening. And there will always be room reflections in any listening space, so don&#8217;t completely Nerf your room. Allow your walls to sweeten the sound.</p>
<p>Headphones are a special exception. The book cautions that some headphones have inadequate bass response (as do some studio monitors, of course). Music may sound oddly &#8220;clean&#8221; without the natural reflections of a room. Personally, I love modern headphones. I bought a pair of Beyerdynamic DT 770 headphones this summer. It was the single best musical purchase I&#8217;ve ever made. They have clear, deep bass response, which rattles my skull a bit. The treble is impressive, and it reaches very high into the range of human hearing. I can finally hear the full audio spectrum (unlike running my Rokit KRK-8&#8242;s through a Mackie mixer), so the headphones have been a godsend for me. I can&#8217;t imagine returning to my KRK-8&#8242;s in my oddly-shaped studio space.</p>
<p>The biggest takeaway from this section is learning how to use other songs as reference material. Create a workflow where you can rapidly switch between your mix, and several reference tracks, to keep your ears fresh. Listen to how your mix compares with the professional&#8217;s. The author repeats this throughout the book: It is possible to create stunning mixes in a small studio environment. Checking your work with professional mixes is crucial.</p>
<p><strong>Part 2: Mix Preparation</strong></p>
<p>It&#8217;s okay to use pitch correction, rhythm correction (such as Ableton Live&#8217;s time markers), recreate the bassline on a synthesizer and mix it in, or rearrange the band&#8217;s song. Oh, yes indeed. They&#8217;re paying you to produce good music, and if that means fixing their mistakes, and using smoke and mirrors, then so be it!</p>
<p>Consider the overall flow of the song. Each instance of the chorus could have a different intensity. Perhaps they&#8217;ll get (perceptably) louder, except for the &#8220;drop chorus&#8221; at the end: Play the chorus once, with some instruments cut out, then play another chorus with <em>everything</em> driving the song home.</p>
<p>You may need to &#8220;mult&#8221; recorded tracks, which means splitting them up into separate layers, with different processing for each layer. The rhythm guitar should subtly slip into the background when the vocalist is singing, for example. Now that I&#8217;m aware of multing, I can&#8217;t help but hear it used everywhere!</p>
<p><strong>Part 3: Balance</strong></p>
<p>Every layer will need a high-pass filter, probably no steeper than 18db/octave. Raise the filter frequency until the track feels like something is missing, then lower the frequency a bit. This will liberate the precious low-frequency spaces, so the kick drum and bass won&#8217;t have to fight the other instruments in a bath of bass mud.</p>
<p>Now it&#8217;s time to balance the levels. Mute every track. Slowly unmute the trocks, one at a time. Start with the most important section; start with the most important instrument. Adjust the track&#8217;s volume so it fits with the mix, then don&#8217;t touch it afterwards. After you&#8217;ve leveled every track, your mix should now sound <em>pretty good</em>.</p>
<p>Compression is primarily used to stabilize the balance of individual layers. Some tracks will have a steady balance without compression, and that&#8217;s okay! Leave them alone. Other tracks may need one compressor to reduce momentary spikes in amplitude; another compressor to help even out the amplitudes of individual notes; etc. Try using parallel compression (aka &#8220;New York compression&#8221;), sending a track through a heavy compressor on a second channel, which will help even out the sound yet preserve its original character.</p>
<p>Expanders (and gates) are typically not essential. If they&#8217;re used, put them before compressors in your effects chain. If your drum beat needs more punch, try sending the track to a parallel channel, gating it (to isolate just the attacks), and applying EQ and a little distortion before mixing it back in.</p>
<p>Equalization (&#8220;EQ&#8221;) is a broad topic. Before delving into it, I&#8217;ll disagree with one point up front: The book claims that any EQ plugin is about as good as any other. Most modern DAWs are equipped with plugins that provide low-pass, high-pass, shelving, peaking, and notch filters. My opinion is that <em>some EQ plugins sound substantially better than others</em>. I have never enjoyed the sound of Ableton Live&#8217;s EQ 8, I feel that it sucks precious high-end frequencies and detail out of anything it touches. EQ 3 is better, although it&#8217;s less flexible, and the filter curves are steeper, which is not always what you want. Shameless product placement: My new favorite is <a href="http://www.tone2.com/html/filterbank3_vsti_vst_au_synthe.html">Tone2&#8242;s FilterBank3</a>.</p>
<p>To EQ the mix, mute every track, then unmute and EQ them in order of importance. You&#8217;re trying to avoid frequency masking, a phenomenon where layers obscure each other. Avoid graphic EQ, and try shelving filters before using peaks. Use low &#8220;Q&#8221; values, so your filters will have wide, smooth curves.</p>
<p>Bass instruments: Try adding high-end brightness to the bass guitar. Try reducing the kick drum around 400hz, creating a hole for the bass guitar to punch through.</p>
<p>If a track&#8217;s dynamics aren&#8217;t doing a good job, apply EQ before the dynamics. (It&#8217;s not uncommon to use both pre- and post-dynamics EQ, although this is more difficult to wrap one&#8217;s head around.)</p>
<p>Linear EQ should generally be avoided, since it smears the clarity &amp; definition of transients (momentary bursts of sound, such as drum attacks).</p>
<p>And, this chapter answered an old riddle for me: Why are we told to use EQ cuts, and avoid EQ boosts? Because when you apply EQ to a range of frequencies, that frequency range suffers phase alterations. This can rob sounds of their clarity. As you boost phase-altered frequencies, you&#8217;re emphasizing muddier, out-of-phase frequencies. So a high-shelf cut (with a gain after it) really is preferable to the &#8220;equivalent&#8221; low-shelf boost. In a multi-mic environment, EQ boosts can be catastrophic, since instruments will leak into neighboring microphones with slight delays (i.e. different phases!), and may induce bad comb filter effects. Thank you, Mike Senior. I salute you for your clear explanation.</p>
<p>This surprised me: distortion is often used as a mixing tool! EQ can only modify frequencies that already exist, whereas distortion filters can add brightness and sparkle to the high-end. If your distortion plugin lacks a wet-dry control, the book suggests using parallel processing, by sending the track to an effects channel, and mixing it back in.</p>
<p>Multiband dynamics plugins have their uses, but are &#8220;mostly just an extension of what we&#8217;ve already covered in previous chapters.&#8221; If you&#8217;re clever, there are ways to achieve multiband dynamic effects without a dedicated plugin. For instance, if your bass guitar notes have uneven sustains, try extracting the lowest frequencies using a low-pass filter, and then compressing those, and mixing them back in. Watch out for a &#8220;hollow&#8221; quality, which indicates that phase artifacts are entering the mix.</p>
<p>Side-chained dynamics can be useful. The book explains &#8220;ducking,&#8221; which is akin to extreme side-chained compression: When the vocalist is singing louder than a certain threshold, the guitar &#8220;ducks&#8221; a fixed amount. The brilliant thing is, if you don&#8217;t have a ducking filter, you can create one using a side-chained gate: Send the guitar through a gate (side-chained to the vocals), and then <em>invert the output</em>. When gate opens, the inverted signal mixes with the original guitar channel and <em>reduces</em> the overall amplitude. Amazing. You can get creative, too: Try adding a linear-phase high-pass filter to the gate&#8217;s output, so only the high frequencies duck out when the vocals are active. You get the idea.</p>
<p><strong>Part 4: Sweetening to taste</strong></p>
<p>Reverb, chorus, and delays cannot salvage a bad mix. However, they can sweeten a good mix, and make it great.</p>
<p>My big takeaway from the chapter on reverbs is that you can move instruments away from the foreground, into the background by sending them through a common &#8220;blend reverb.&#8221; The reverb should have about 10-20ms of predelay. Reverbs <em>should</em> be CPU-intensive, as the better ones use lots of simulated reflections, and this requires more CPU power.</p>
<p>My big takeaway from the chapter on delays is that reverbs are overrated! Delays offer the same benefits as reverbs, but occupy less &#8220;space&#8221; in the mix.</p>
<p>The chapter on stereo enhancement is extensive, but the main point is that stereo <em>width</em> is more important than stereo <em>panning</em>. There are a number of ways to achieve stereo width effects using plugins (even rotary speaker plugins are discussed!). If the guitarist plays the same riff repeatedly, try hard-panning two instances of the riff, left and right. Try an M&amp;S plugin, which splits a layer into the sum and stereo difference; pan the sum to the center, and apply all the crazy effects you want to the difference. Try adding some stereo &#8220;room tone,&#8221; which can be a recording of tape hiss, background noise in a room, or the crackling of a vinyl record. Try duplicating the vocals, pitch shifting them a few cents apart, and panning them hard left &amp; right.</p>
<p>Finally, there&#8217;s a chapter on the &#8220;endgame,&#8221; which is final compression, equalization, and automating individual notes &amp; transients by hand. The big shocker for me was that <em>a little hard clipping is acceptable</em>. This is used in commercial music, and it can add a little sparkle to the sound. That&#8217;s wild.</p>
<p>Definitely, definitely reference your mix with other people&#8217;s tracks. Try sitting in silence for a minute, and hearing the song in your mind. Now play your mix; does it sound like what&#8217;s in your head?</p>
<p>The book recommends a myriad of useful plugins, including shareware and freeware! The pages are also sprinkled with creative advice from professional producers.</p>
<p>Really, if you produce music at home, you&#8217;re insane if you skip this book. It really is that enlightening. Get it! Use it! Everyone deserves to make high-quality music, and it can be done on the cheap with today&#8217;s technology.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2011/09/25/book-review-mixing-secrets-for-the-small-studio/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>My Midines Review: It Never Arrived</title>
		<link>http://blog.zacharcher.com/2011/09/21/my-midines-review-it-never-arrived/</link>
		<comments>http://blog.zacharcher.com/2011/09/21/my-midines-review-it-never-arrived/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 21:18:03 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[8-bit]]></category>
		<category><![CDATA[midines]]></category>
		<category><![CDATA[nes]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=313</guid>
		<description><![CDATA[Chris Kann, the owner of wayfar.org, sells a device called the Midines. It&#8217;s a Nintendo cartridge that plays the Nintendo Entertainment System like a musical instrument, I kid you not. You insert the Midines cartridge into your NES, plug MIDI &#8230; <a href="http://blog.zacharcher.com/2011/09/21/my-midines-review-it-never-arrived/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Chris Kann, the owner of wayfar.org, sells a device called the <a href="http://www.wayfar.net/0xf00000_overview.php">Midines</a>. It&#8217;s a Nintendo cartridge that plays the Nintendo Entertainment System like a musical instrument, I kid you not. You insert the Midines cartridge into your NES, plug MIDI cables into the Midines, and off you go, into a world of bloops and blips.</p>
<p><img class="aligncenter" title="The Midines probably looks like this" src="http://zacharcher.com/lab/20110921_nes_instruments/midines_never_arrived.jpeg" alt="The Midines probably looks like this" width="400" height="300" /></p>
<p>I paid $99 for a Midines in the year 2008, and&#8230; <em>I have still not received it</em>. I have sent Chris Kann at least a dozen emails, and never received a single reply. In 2008, I did track him down on IRC &#8212; he mentioned that he was going through some hard times, but now it is 3 years later, and he has been completely silent.</p>
<p><span id="more-313"></span></p>
<p>I wondered if I offended him personally, but it turns out that <a href="https://8bc.org/forums/viewtopic.php?id=21206">many</a>, <a href="http://createdigitalmusic.com/2006/02/analog-industries-gets-a-midines-nintendo-music-cart/">many</a>, <a href="https://8bc.org/forums/viewtopic.php?id=25870">many</a>, <a href="https://8bc.org/forums/viewtopic.php?id=14061">many</a> (etc) people have sent money, and received nothing. A critical mass of people complained to PayPal, who finally shut down his account, so he switched to using Google Cart Service this year.</p>
<p>If I receive a Midines, then I&#8217;ll be happy to give it a proper review! In the meantime, I urge everyone to use their own research &amp; judgment before sending money to strangers.</p>
<p>Meanwhile, whether you own a Midines or not, you can make NES-style chiptunes for free. I created an Ableton Live Pack with all 5 NES waveforms: <a href="http://zacharcher.com/lab/20110921_nes_instruments/NES%20Instruments%20-%20Ableton%20Live%20Pack.zip">Download it here</a>. You can also <a href="http://zacharcher.com/lab/20110921_nes_instruments/NES%20Waveforms.zip">download the raw AIFFs</a>. Here&#8217;s a silly track that demonstrates how it sounds:</p>
<p><object height="81" width="100%"><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F23855238"></param><param name="allowscriptaccess" value="always"></param> <embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F23855238" type="application/x-shockwave-flash" width="100%"></embed></object>  <span><a href="http://soundcloud.com/2mm/nes-instruments">NES Instruments</a> by <a href="http://soundcloud.com/2mm">Too Many Moths</a></span></p>
<p>The 5 waveforms are: 1-bit noise (the drum beat), a 4-bit triangle wave (the bass), and pulse waves at three different widths: 50%, 25%, and 12.5%. Here&#8217;s how the pulses look, next to the noise:</p>
<p><img alt="" src="http://zacharcher.com/lab/20110921_nes_instruments/nes_waveforms.png" title="Some NES Waveforms" class="aligncenter" width="443" height="350" /></p>
<p>The triangle wave is a bit tricky. The NES provides 4-bit volume control for the other channels, but the triangle wave always plays at maximum volume. In my Live Pack, I generated a triangle wave using Operator, downsampled it using Redux, and then filtered the high frequencies to curb the Redux artifacts. This was a subjective process, I tweaked the filter until it sounded correct.</p>
<p>I recommend altering the instrument envelopes, to create smooth attacks and gradual delays. Also, try using vibrato and tremelo (changing the pitch or amplitude with an LFO). This will improve the character of the instruments immensely.</p>
<p>If you want a more authentic sound, try limiting yourself to 2 pulse channels at a time, since that&#8217;s all the NES can support. You can also send the instruments through convolution reverb, using a <a href="http://fokkie.home.xs4all.nl/IR.htm">small speaker impulse</a>. This may sound more like an 1980&#8242;s television speaker. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2011/09/21/my-midines-review-it-never-arrived/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Son of Strange Attractors</title>
		<link>http://blog.zacharcher.com/2011/04/16/son-of-strange-attractors/</link>
		<comments>http://blog.zacharcher.com/2011/04/16/son-of-strange-attractors/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 07:33:40 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[attractors]]></category>
		<category><![CDATA[strange]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=306</guid>
		<description><![CDATA[I rewrote my strange attractor generator, in Flash: Try it. Click to generate new attractors. The attractor coefficients are still chosen randomly. But now, attractors that explode/collapse are rejected. Also, attractors that create &#8220;boring&#8221; shapes (by drawing the same pixels repeatedly) &#8230; <a href="http://blog.zacharcher.com/2011/04/16/son-of-strange-attractors/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I rewrote my strange attractor generator, in Flash:</p>
<p style="text-align: center;"><a href="http://zacharcher.com/lab/20110416_attractor/attractor.swf"><img class="aligncenter" title="Strange Attractor" src="http://zacharcher.com/lab/20110416_attractor/attractor_thumb.png" alt="" width="327" height="335" /></a></p>
<p style="text-align: left;"><a href="http://zacharcher.com/lab/20110416_attractor/attractor.swf">Try it</a>. Click to generate new attractors.</p>
<p style="text-align: left;">The attractor coefficients are still chosen randomly. But now, attractors that explode/collapse are rejected. Also, attractors that create &#8220;boring&#8221; shapes (by drawing the same pixels repeatedly) are discarded. It&#8217;s a little slow, but I&#8217;m sure the speed could be improved using Pixel Bender.</p>
<p style="text-align: left;">Also, <a href="http://zacharcher.com/lab/20110416_attractor/attractor_source.zip">here&#8217;s the source code</a>. (Compile with Flash CS5.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2011/04/16/son-of-strange-attractors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video Reel 2011</title>
		<link>http://blog.zacharcher.com/2011/04/15/video_reel_2011/</link>
		<comments>http://blog.zacharcher.com/2011/04/15/video_reel_2011/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 07:04:44 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[moths]]></category>
		<category><![CDATA[reel]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=291</guid>
		<description><![CDATA[Yes indeed, I created my own showreel! Watch: regular, or HD version. (Vimeo, 4:00) The clips have a bias towards art and animation, because: 1). It shows well in a video, 2). This reel was created for an application to &#8230; <a href="http://blog.zacharcher.com/2011/04/15/video_reel_2011/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Yes indeed, I created my own showreel!</p>
<p style="text-align: center;"><a href="http://vimeo.com/22465804"><img class="aligncenter" title="A few moths" src="http://zacharcher.com/blog_pics/2011/moth_animation_thumb.jpg" alt="" width="368" height="275" /></a></p>
<p>Watch: <a href="http://vimeo.com/22308668">regular</a>, or <a href="http://vimeo.com/22465804">HD version</a>. (Vimeo, 4:00)</p>
<p>The clips have a bias towards art and animation, because: 1). It shows well in a video, 2). This reel was created for an application to an artist&#8217;s colony. (More on that later.)</p>
<p><span id="more-291"></span>The intro &amp; outro animations (the flying moths) were created specifically for the reel. They&#8217;re my favorite clips, yet they took less than a day to assemble. The moths were left-over from an old project (you&#8217;ll see an experimental <a href="http://soundcloud.com/2mm">Too Many Moths</a> interface within the video), and I felt the convergence motion was a strong opener.</p>
<p>The moths were composited in Flash. They were arranged semi-randomly, then the image was &#8220;baked&#8221; onto their wings &amp; body. I flew them backwards, and recorded their positions on each frame. Then I reset the moths and flew them forward, again tracking their flight paths.</p>
<p>Actually, this was done in memory, so it was very quick. My laptop needed 3 seconds to arrange, bake, &amp; move 120 moths. Then the harness presented me with the frozen frame, so I could evaluate how well the moths covered the images. If the coverage was bad, I hit a key to build new moths from scratch.</p>
<p>When I found a nice arrangement, I hit another key which stepped through the animation, and rendered each frame at a ridiculously high resolution (2160&#215;1440, to cope with scaling problems in Adobe Premiere, unfortunately). The frames were <a href="https://github.com/mikechambers/as3corelib">encoded as .PNG&#8217;s</a> and <a href="http://labs.findsubstance.com/2008/04/03/as3-upload-encode-images/">uploaded to a PHP script running on localhost</a>, which saved the 200+ images to disk. The intro took about 20 minutes to render &amp; export. The outro, being more complicated, took over an hour.</p>
<p>Looking at the reel, I&#8217;m happy to present so many types of work — animation, audio programming, visual design, interactives, games, kiosks, websites. These four years have been amazing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2011/04/15/video_reel_2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Formant Sequencer in Flash</title>
		<link>http://blog.zacharcher.com/2011/03/14/a-formant-sequence-editor-in-flash/</link>
		<comments>http://blog.zacharcher.com/2011/03/14/a-formant-sequence-editor-in-flash/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 01:12:10 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[formant]]></category>
		<category><![CDATA[fs1r]]></category>
		<category><![CDATA[synthesis]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=284</guid>
		<description><![CDATA[I started an open source project: fseq-flash is a formant sequence editor. Current features include: Import AIFF files Audition and edit formant sequences in real time Vowel- and function-drawing tools Export .syx files for the Yamaha FS1R Click to launch. &#8230; <a href="http://blog.zacharcher.com/2011/03/14/a-formant-sequence-editor-in-flash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I started an open source project: <a href="http://code.google.com/p/fseq-flash/">fseq-flash</a> is a formant sequence editor. Current features include:</p>
<ul>
<li>Import AIFF files</li>
<li>Audition and edit formant sequences in real time</li>
<li>Vowel- and function-drawing tools</li>
<li>Export .syx files for the <a href="http://blog.zacharcher.com/2009/01/05/synth-review-the-head-exploding-fs1r/">Yamaha FS1R</a></li>
</ul>
<p style="text-align: center;"><a title="fseq-flash" href="http://zacharcher.com/lab/fseq/fseq-flash.html"><img class=" aligncenter" title="Import an AIFF, convert to Formant Sequence" src="http://zacharcher.com/lab/fseq/screenshots/fseq_import.png" alt="" width="408" height="341" /></a></p>
<p><a title="fseq-flash" href="http://zacharcher.com/lab/fseq/fseq-flash.html">Click to launch. Press the space bar to play the sound.</a></p>
<p>You can push your formant sequence to the Yamaha FS1R, using software such as <a href="http://synth-voice.sakura.ne.jp/fs1r_editor_english.html">K_Take&#8217;s FS1R Editor</a>. Click the &#8220;Save .syx&#8221; button, and follow the instructions in K_Take&#8217;s documentation. This is a lot of fun, and breathes new life into the FS1R.</p>
<p>This project became much deeper than anticipated! The code includes FFT analysis (thanks <a href="http://gerrybeauregard.wordpress.com/2010/08/03/an-fft-in-as3/">Gerry Beauregard</a>), pitch detection, a formant detection algorithm, and an AIFF parser to read AIFF files. The interface was a challenge to design and implement, and there are still many unfinished features (see the <a href="http://code.google.com/p/fseq-flash/issues/list">issues list</a>).</p>
<p>My energy is shifting to other work, so I&#8217;ll enhance fseq-flash when time permits.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2011/03/14/a-formant-sequence-editor-in-flash/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Filtered Noise Sequencer</title>
		<link>http://blog.zacharcher.com/2010/12/30/filtered-noise-sequencer/</link>
		<comments>http://blog.zacharcher.com/2010/12/30/filtered-noise-sequencer/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 01:46:26 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[bandpass]]></category>
		<category><![CDATA[filtered]]></category>
		<category><![CDATA[noise]]></category>
		<category><![CDATA[sequencer]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=255</guid>
		<description><![CDATA[Here&#8217;s something fun &#8212; I made a 16-step sequencer in Flash, that plays filtered noise (or sine waves, when the filter is narrow): Filtered Noise Sequencer Drag and resize the blue blocks to change the filter frequency and width. This &#8230; <a href="http://blog.zacharcher.com/2010/12/30/filtered-noise-sequencer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s something fun &#8212; I made a 16-step sequencer in Flash, that plays filtered noise (or sine waves, when the filter is narrow):</p>
<p style="text-align: center;"><a href="http://zacharcher.com/lab/20101230_noise_seq/noise_seq.html"><img class="aligncenter" title="Filtered Noise Sequencer!" src="http://zacharcher.com/lab/20101230_noise_seq/noise_seq_thumb.png" alt="" width="324" height="255" /></a><br />
<a href="http://zacharcher.com/lab/20101230_noise_seq/noise_seq.html">Filtered Noise Sequencer</a></p>
<p style="text-align: left;">Drag and resize the blue blocks to change the filter frequency and width.</p>
<p style="text-align: left;">This sequencer is not using expensive bandpass filters. The oscillators are sine waves, which are <a href="http://en.wikipedia.org/wiki/Frequency_modulation_synthesis">frequency modulated</a> with white noise. It may not sound inherently musical, but you can produce great hihats, bass thuds, and airy pitched noises.</p>
<p style="text-align: left;">Here&#8217;s the <a href="http://zacharcher.com/lab/20101230_noise_seq/noise_seq.zip">source code</a>. (Requires Flash CS5 to compile.) Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2010/12/30/filtered-noise-sequencer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Curious Lack of Light</title>
		<link>http://blog.zacharcher.com/2010/12/21/a-curious-lack-of-light/</link>
		<comments>http://blog.zacharcher.com/2010/12/21/a-curious-lack-of-light/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 05:28:41 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=248</guid>
		<description><![CDATA[A winter solstice, a lunar eclipse, and a new Too Many Moths EP by yours truly&#8230; Three tracks. Enjoy the industrial dubbiness! A Curious Lack of Light by tooManyMoths]]></description>
				<content:encoded><![CDATA[<p>A winter solstice, a lunar eclipse, and a new Too Many Moths EP by yours truly&#8230; Three tracks. Enjoy the industrial dubbiness!</p>
<p><object width="100%" height="225" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowscriptaccess" value="always" /><param name="src" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F485249" /><embed width="100%" height="225" type="application/x-shockwave-flash" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F485249" allowscriptaccess="always" /></object></p>
<p><span><a href="http://soundcloud.com/2mm/sets/a-curious-lack-of-light">A Curious Lack of Light</a> by <a href="http://soundcloud.com/2mm">tooManyMoths</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2010/12/21/a-curious-lack-of-light/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twang&#8230; in Flash?!</title>
		<link>http://blog.zacharcher.com/2010/09/27/twang-in-flash/</link>
		<comments>http://blog.zacharcher.com/2010/09/27/twang-in-flash/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 22:02:32 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[twang]]></category>
		<category><![CDATA[twang player]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=241</guid>
		<description><![CDATA[Yep, this is a &#8220;Twang Player&#8221; prototype, built in Flash. There&#8217;s only one embedded song, a groggy rendition of the ditty from the first video: (click to launch) The next version of Twang will record &#38; save songs (this is &#8230; <a href="http://blog.zacharcher.com/2010/09/27/twang-in-flash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Yep, this is a &#8220;Twang Player&#8221; prototype, built in Flash. There&#8217;s only one embedded song, a groggy rendition of the ditty from the <a href="http://www.youtube.com/watch?v=jnCMg6MAu8E">first video</a>:</p>
<p style="text-align: center;"><a href="http://zacharcher.com/lab/twang/flash/twang_player.swf"><img class="aligncenter" title="Twang Player Screenshot" src="http://zacharcher.com/lab/twang/flash/twang_player_screenshot.jpg" alt="" width="460" height="300" /></a>(<a href="http://zacharcher.com/lab/twang/flash/twang_player.swf">click to launch</a>)</p>
<p style="text-align: left;">The next version of Twang will record &amp; save songs (this is done), and share them in some capacity (a bit more complicated). So that&#8217;s where the Twang Player comes in. The Flash version looks like it wants to be touched &amp; strummed. I need to revisit the design and convey that Twang Player is just a music box, you can&#8217;t compose anything in the browser! &#8230;Yet.</p>
<p style="text-align: left;">There are performance issues on some of my machines, too. This version uses Vector.&lt;Number&gt; objects to handle data, but it looks like <a href="http://www.derschmale.com/2009/07/23/some-flash-pixel-bender-performance-tips-benchmarks/">ByteArray or even BitmapData structures are the way to go</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2010/09/27/twang-in-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Brakebills, Twang, Stuff!</title>
		<link>http://blog.zacharcher.com/2010/06/26/brakebills-twang-stuff/</link>
		<comments>http://blog.zacharcher.com/2010/06/26/brakebills-twang-stuff/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 15:37:14 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Swag]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[brakebills]]></category>
		<category><![CDATA[guitar]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[lev grossman]]></category>
		<category><![CDATA[modelling]]></category>
		<category><![CDATA[physical]]></category>
		<category><![CDATA[the magicians]]></category>
		<category><![CDATA[twang]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=229</guid>
		<description><![CDATA[Oh em gee. So much to report. First, do you know Lev Grossman? He&#8217;s an incredibly talented author who recently toured Portland. If you haven&#8217;t read his book The Magicians, then stop whatever you&#8217;re doing and procure a copy immediately. &#8230; <a href="http://blog.zacharcher.com/2010/06/26/brakebills-twang-stuff/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Oh em gee. So much to report.</p>
<p>First, do you know Lev Grossman? He&#8217;s an incredibly talented author who recently toured Portland. If you haven&#8217;t read his book <a href="http://www.amazon.com/Magicians-Novel-Lev-Grossman/dp/0452296293/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1277564831&amp;sr=8-1">The Magicians</a>, then stop whatever you&#8217;re doing and procure a copy <em>immediately</em>. Without trying to spoil anything, the major college in the book is named the <strong>Brakebills College for Magical Pedagogy</strong>. Lev saw the Brakebills T-shirt that I designed for my sweetheart&#8217;s birthday present:</p>
<p><a href="http://www.zazzle.com/brakebills_key_bee_tshirt-235460102699664916"><img class="aligncenter" title="Brakebills Shirt" src="http://zacharcher.com/lab/brakebills/brakebills_shirt.jpg" alt="" width="461" height="526" /></a></p>
<p>Long story short, <a href="http://levgrossman.com/2010/06/holy-crow-brakebills-shirts-are-here/">my Brakebills shirts are now officially endorsed by the author!</a> Please buy twenty of them, or thirty if the spirit moves you. Zazzle&#8217;s print quality is great. The colors are vivid, and the ink has survived many washings. Rabid fans are buying and even <a href="http://twitter.com/PriceDoc_brett/status/17041429615">customizing them</a>! I love the internet.</p>
<p>Lev blogged some of my other work, too (&#8220;the guy who does this has the enviably fake-sounding name of Zach Archer&#8221;). It&#8217;s true, I have an awesome pro wrestler name.</p>
<p>Second, my new iPhone app has landed in the App Store:</p>
<p style="text-align: center;"><a href="http://itunes.apple.com/us/app/twang/id353688232?mt=8"><img class="aligncenter" title="Twang" src="http://zacharcher.com/lab/twang/twang_screen2.png" alt="" width="480" height="320" /></a></p>
<p><a href="http://itunes.apple.com/us/app/twang/id353688232?mt=8">Twang</a> is a handheld guitar. It&#8217;s easier to play than a real guitar, and is very expressive. Instead of using audio samples, Twang uses <a href="http://en.wikipedia.org/wiki/Physical_modelling_synthesis">physical modelling</a> techniques to create a more natural, dynamic sound. No two plucks are identical. <a href="http://www.youtube.com/watch?v=jnCMg6MAu8E">Watch my grainy first video</a> if you disbelieve.</p>
<p>In the next version of Twang, left-handed people will be able to switch Twang&#8217;s orientation, and serious musicians can dampen or mute strings with their fingers. And probably more! This version is already in development, and may be submitted in a week or two? <a href="http://twitter.com/controlzinc">Follow Control Z, Inc on Twitter</a> if you have a ravenous thirst for updates!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2010/06/26/brakebills-twang-stuff/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Aquatic Sound Generator in Flash</title>
		<link>http://blog.zacharcher.com/2010/06/16/aquatic-sound-generator/</link>
		<comments>http://blog.zacharcher.com/2010/06/16/aquatic-sound-generator/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 18:07:48 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[aquasound]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[formant]]></category>
		<category><![CDATA[fs1r]]></category>
		<category><![CDATA[generative]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=219</guid>
		<description><![CDATA[Here&#8217;s something from the vaults. Aquasound was built with these requirements in mind: Generate sounds that aquatic animals might make Sounds can be &#8220;combined&#8221; somehow Sounds can emote This was never used in production. I wonder if I could turn &#8230; <a href="http://blog.zacharcher.com/2010/06/16/aquatic-sound-generator/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://zacharcher.com/lab/aquasound/aquasound.swf"><img class="aligncenter" title="Aquasound" src="http://zacharcher.com/lab/aquasound/aquasound_pic.png" alt="" width="432" height="405" /></a></p>
<p>Here&#8217;s something from the vaults. Aquasound was built with these requirements in mind:</p>
<ul>
<li>Generate sounds that aquatic animals might make</li>
<li>Sounds can be &#8220;combined&#8221; somehow</li>
<li>Sounds can emote</li>
</ul>
<p>This was never used in production. I wonder if I could turn this into something? Like a paid iPhone app? ;)</p>
<p>Double-click the envelopes to add/remove control points. Drag lines up &amp; down to change their curviture. The best feature is the &#8220;Combine With&#8221; dropdown, which splices the current sound with your selection. Also the &#8220;Emote&#8221; menu will play sounds with different expression.</p>
<p>The audio algorithm is reverse-engineered from <a href="http://blog.zacharcher.com/2009/01/05/synth-review-the-head-exploding-fs1r/">my beloved FS1R</a>. I generated formants in two ways (toggle the &#8220;Tonal&#8221; checkbox to hear both), the &#8220;atonal&#8221; version is closer to ring modulation than actual formants. It&#8217;s more fun if you don&#8217;t understand what the controls are doing, but if you insist: Pitch controls the overall pitch of the sound. Freq controls the center frequency of the formant (like a bandpass filter). LFOFreq and LFOWeight control a low-frequency sine wave, which can be applied to other controls via their &#8220;___LFOAmt&#8221; curves. Amp is amplitude, Width is formant width (think: width of the bandpass filter), Skirt adds distortion. Each voice has two formant generators, check &#8220;Formant Active&#8221; to enable them.</p>
<p>May all your bloops and crackles be happy ones!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2010/06/16/aquatic-sound-generator/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reconstructing Images With Text</title>
		<link>http://blog.zacharcher.com/2010/02/18/reconstructing-images-with-text/</link>
		<comments>http://blog.zacharcher.com/2010/02/18/reconstructing-images-with-text/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 09:58:38 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[letters]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[reconstruction]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=203</guid>
		<description><![CDATA[I was inspired by Roger Alsing&#8217;s supposed &#8220;genetic&#8221; image compression. It begs for further experimentation! Here&#8217;s my second batch of image reconstruction using Times New Roman characters. The algorithm is a brute-force affair: New characters are colored &#38; positioned randomly. &#8230; <a href="http://blog.zacharcher.com/2010/02/18/reconstructing-images-with-text/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I was inspired by <a href="http://rogeralsing.com/2008/12/11/genetic-gallery/">Roger Alsing&#8217;s supposed &#8220;genetic&#8221; image compression</a>. It begs for further experimentation!</p>
<p>Here&#8217;s my second batch of image reconstruction using Times New Roman characters. The algorithm is a brute-force affair: New characters are colored &amp; positioned randomly. Any characters that make the canvas look more like the original image are saved. And that&#8217;s about it. Oh, and the font sizes start large (5120pt) and end small (10pt), so that fine details have a chance of survival.</p>
<p><a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMonarch_1.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMonarch_1.jpg" alt="monarch_1" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMonarch_2.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMonarch_2.jpg" alt="monarch_2" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMonarch_3.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMonarch_3.jpg" alt="monarch_3" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMonarch_4.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMonarch_4.jpg" alt="monarch_4" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMonarch_5.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMonarch_5.jpg" alt="monarch_5" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMonarch_6.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMonarch_6.jpg" alt="monarch_6" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMonarch_7.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMonarch_7.jpg" alt="monarch_7" /></a> <img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/monarch.jpg" alt="monarch_original" /></p>
<p><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/mona.jpg" alt="mona_original" /> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMona_204.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMona.jpg" alt="mona_reconstruction" /></a><br />
<a href="http://www.youtube.com/watch?v=RIB8QOytKcY&amp;fmt=14">Time lapse of the Mona Lisa reconstruction on YouTube, with silly music.</a></p>
<p><a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMoth_0.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMoth_0.jpg" alt="moth_0" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMoth_1.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMoth_1.jpg" alt="moth_1" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMoth_2.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMoth_2.jpg" alt="moth_2" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMoth_3.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMoth_3.jpg" alt="moth_3" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMoth_4.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMoth_4.jpg" alt="moth_4" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMoth_5.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMoth_5.jpg" alt="moth_5" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMoth_6.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMoth_6.jpg" alt="moth_6" /></a> <a href="http://zacharcher.com/lab/20100218_image_reconstruction/outMoth_7.png"><img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/outMoth_7.jpg" alt="moth_7" /></a> <img src="http://zacharcher.com/lab/20100218_image_reconstruction/thumbs/moth.jpg" alt="moth_original" /></p>
<p>My first batch uses a different algorithm. Each canvas allocates a certain quantity of letters, and progressively mutates them, trying to mimic the original image as closely as possible. This technique is more akin to image compression. This batch is still in progress, it&#8217;s very slow. I&#8217;ll post these when they&#8217;re ready!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2010/02/18/reconstructing-images-with-text/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Here Comes the Metal Mouth</title>
		<link>http://blog.zacharcher.com/2010/01/03/here-comes-the-metal-mouth/</link>
		<comments>http://blog.zacharcher.com/2010/01/03/here-comes-the-metal-mouth/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 00:40:53 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Synth]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=195</guid>
		<description><![CDATA[My first iPhone app has been submitted to the app store for review! Metal Mouth is a text-to-speech synthesizer that mimics the talking devices of the 80&#8242;s (Speak &#038; Spell, &#8220;Wizard needs food, badly&#8221;, etc.) The functionality is similar to &#8230; <a href="http://blog.zacharcher.com/2010/01/03/here-comes-the-metal-mouth/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>My first iPhone app has been submitted to the app store for review! <strong>Metal Mouth</strong> is a text-to-speech synthesizer that mimics the talking devices of the 80&#8242;s (Speak &#038; Spell, &#8220;Wizard needs food, badly&#8221;, etc.) The functionality is similar to my <a href="http://blog.zacharcher.com/2009/08/27/synthetic-speech-in-flash/">Synthetic Speech In Flash demo</a>, but with many new features (male &#038; female voices, auto-tune, pitch &#038; time scratching) and a snappy interface with talking robots.</p>
<p><img src="http://zacharcher.com/lab/20100103_metal_mouth_preview/0_hello_doctor.png" alt="Hello, Doctor." /></p>
<p><img src="http://zacharcher.com/lab/20100103_metal_mouth_preview/1_inside_your_phone.png" alt="I'm inside your phone." /></p>
<p>This took about 5 weeks to develop. Meanwhile, I&#8217;ve started another app, and I envision releasing Metal Mouth 2.0 in a few months, with more voices, and the ability to record audio.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2010/01/03/here-comes-the-metal-mouth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange Attractors in Flash</title>
		<link>http://blog.zacharcher.com/2009/12/12/strange-attractors-in-flash/</link>
		<comments>http://blog.zacharcher.com/2009/12/12/strange-attractors-in-flash/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 00:10:16 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[fractal]]></category>
		<category><![CDATA[strange attractor]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=184</guid>
		<description><![CDATA[Have you seen (or played) the demo for Polynomial, the space shooter? Quick! Watch the video: I spent a couple hours generating strange attractors in Flash, just a simple 2D version for now. Click to play: Click the black region &#8230; <a href="http://blog.zacharcher.com/2009/12/12/strange-attractors-in-flash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Have you seen (or played) the demo for <a href="http://dmytry.pandromeda.com/games/index.html">Polynomial</a>, the space shooter? Quick! Watch the video:</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/2Q6RaOgmanc&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2Q6RaOgmanc&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>I spent a couple hours generating strange attractors in Flash, just a simple 2D version for now. Click to play:<br />
<a href="http://zacharcher.com/lab/20091212_strange_attractor/StrangeAttractor.html"><br />
<img src="http://zacharcher.com/lab/20091212_strange_attractor/attractor_image.png" alt="Here Be Strange Attractors" /></a></p>
<p>Click the black region to generate new polynomial coefficients and redraw. <strong>You will have to click many times to generate something interesting</strong>. That&#8217;s the nature of fractals, I&#8217;m afraid. Some coefficients are automatically thrown out if the drawing exceeds a certain size. Unfortunately, the inverse is not true: the code isn&#8217;t smart enough to trash any drawings that shrink to microscopic size.</p>
<p>I believe that you can stabilize any coefficients by scaling the values of each coefficient, gradually nudging them larger/smaller until the drawing is stable. I&#8217;ll try this when I get more time. I&#8217;ve been gung-ho on my first proper iPhone app, trying to finish it before Christmas! Stay tuned&#8230;</p>
<p>Also, <a href="http://zacharcher.com/lab/20091212_strange_attractor/strange_attractor.zip">here&#8217;s the source code for the strange attractor harness</a>! Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2009/12/12/strange-attractors-in-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hateful Bits T-Shirt</title>
		<link>http://blog.zacharcher.com/2009/09/09/hateful-bits-t-shirt/</link>
		<comments>http://blog.zacharcher.com/2009/09/09/hateful-bits-t-shirt/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 08:14:38 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Swag]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[hateful bits]]></category>
		<category><![CDATA[t-shirt]]></category>
		<category><![CDATA[zazzle]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=180</guid>
		<description><![CDATA[I designed a T-shirt! These are printed and sold through Zazzle. I can&#8217;t wait to get mine: Hateful Bits (version 2) by zkarcher &#8220;I HATE YOU WITH ALL 4 OF MY BITS. GRRRRRRRRRRRR&#8221; &#160;]]></description>
				<content:encoded><![CDATA[<p>I designed a T-shirt! These are printed and sold through Zazzle. I can&#8217;t wait to get mine:</p>
<div style="text-align:center;line-height:150%"><a href="http://www.zazzle.com/hateful_bits_version_2_tshirt-235111331412809216?gl=zkarcher&amp;group=mens&amp;lifestyle=classic&amp;rf=238624978076471791"><img style="border:0;" src="http://rlv.zcache.com/hateful_bits_version_2_tshirt-d235111331412809216adc0r_325.jpg" alt="Hateful Bits (version 2) shirt" /></a><br />
<a href="http://www.zazzle.com/hateful_bits_version_2_tshirt-235111331412809216?gl=zkarcher&amp;group=mens&amp;lifestyle=classic&amp;rf=238624978076471791">Hateful Bits (version 2)</a> by <a href="http://www.zazzle.com/zkarcher*">zkarcher</a><br />
&#8220;I HATE YOU WITH ALL 4 OF MY BITS. GRRRRRRRRRRRR&#8221;</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2009/09/09/hateful-bits-t-shirt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash 3D: A change of heart?</title>
		<link>http://blog.zacharcher.com/2009/09/04/flash-3d-a-change-of-heart/</link>
		<comments>http://blog.zacharcher.com/2009/09/04/flash-3d-a-change-of-heart/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 10:31:40 +0000</pubDate>
		<dc:creator>Zach</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[away3d]]></category>
		<category><![CDATA[game]]></category>

		<guid isPermaLink="false">http://blog.zacharcher.com/?p=173</guid>
		<description><![CDATA[Yesterday, I posted a damning critique of Flash&#8217;s native 3D. Today I noticed that if you right-click on yesterday&#8217;s SWF and show the redraw regions, you can see that it&#8217;s redrawing the contents of the entire stage, even though I &#8230; <a href="http://blog.zacharcher.com/2009/09/04/flash-3d-a-change-of-heart/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Yesterday, I posted <a href="http://blog.zacharcher.com/2009/09/03/flash-3d-makes-me-sad/">a damning critique of Flash&#8217;s native 3D</a>.</p>
<p>Today I noticed that if you right-click on <a href="http://zacharcher.com/lab/20090831_3d/09b_touch_to_glow.swf">yesterday&#8217;s SWF</a> and show the redraw regions, you can see that it&#8217;s redrawing the contents of the entire stage, even though I put the scene in a scrollRect. Is it seriously rendering a scene that&#8217;s thousands of pixels wide before displaying it ?!?!?!? Oh, no. No they DIDN&#8217;T.</p>
<p>Today I ported the scene to the <a href="http://away3d.com/">Away3D</a> rendering engine. Here&#8217;s the result:</p>
<p style="text-align: center;"><a href="http://zacharcher.com/lab/20090831_3d/10_away3d_follow.swf"><img class="aligncenter" title="Away3D screenshot" src="http://zacharcher.com/lab/20090831_3d/p/10_screenshot.png" alt="" width="453" height="339" /></a></p>
<p>It&#8217;s beautiful, and provides access to low-level drawing routines, light sources, normal maps, &#8230; It was speedy at first, then slowed down considerably when I added the glowing floors. (Each glow is 16+ triangles right now, for various reasons including: I can&#8217;t render objects in my own custom order.) This makes <a href="http://zacharcher.com/lab/20090831_3d/09test.html">yesterday&#8217;s version look performant</a>, I&#8217;m reluctant to admit.</p>
<p>Possible next steps:</p>
<ul>
<li>Reduce the native 3D rendering area, see if performance improves?</li>
<li>Grow beyond Flash, embrace the future and try <a href="http://unity3d.com/">Unity 3D</a>?</li>
<li>Dump this project, finish that iPhone game I started, make a million dollars in 2 weeks?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacharcher.com/2009/09/04/flash-3d-a-change-of-heart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: blog.zacharcher.com @ 2013-05-19 02:43:16 -->