<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>CDM Labs</title>
	
	<link>http://labs.noisepages.com</link>
	<description>Where the future is being made ... today!</description>
	<lastBuildDate>Thu, 13 Nov 2008 09:07:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/cdmlabs" type="application/rss+xml" /><item>
		<title>Game On: Gaming Visuals and Projection Mapping Project</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/WuSnRi8VH4k/</link>
		<comments>http://labs.noisepages.com/2008/11/08/game-on-gaming-visuals-and-projection-mapping-project/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 09:06:00 +0000</pubDate>
		<dc:creator>Jaymis Loveday</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[projection]]></category>
		<category><![CDATA[vvvv]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/?p=45</guid>
		<description><![CDATA[A slight departure from the Processing fodder usually dropping here on CDM Labs. This post contains resources for the Game On projection mapping project &#8211; call for artists here &#8211; and will be updated as new information and materials come to hand.
General Instructions
The Game On Launch Party is on the 22nd of November, so submissions [...]]]></description>
			<content:encoded><![CDATA[<p>A slight departure from the Processing fodder usually dropping here on CDM Labs. This post contains resources for the Game On projection mapping project &#8211; <a href="http://createdigitalmotion.com/2008/10/19/call-for-artists-jaymis-curating-projections-at-brisbane-game-on-launch/">call for artists here</a> &#8211; and will be updated as new information and materials come to hand.</p>
<h3>General Instructions</h3>
<p>The Game On Launch Party is on the 22nd of November, so submissions should be&#8230; <strong>submitted, by the 19th of November</strong>.<br />
Keep your submissions <strong>between 30 seconds to 2 minutes long</strong>. The event only goes for a couple of hours, so we can&#8217;t really showcase your epic 3 hour VJ mix. Sorry. Slightly longer or shorter is fine. Considerably longer videos will be brutally edited by Jaymis, who is Brutal.<br />
For best results, <strong>content should be delivered in 25FPS</strong>, PAL format.<br />
Projection Mapping content should be <strong>high-contrast</strong>, as the project doesn&#8217;t have enough budget for more than 5000 lumens worth of projector, which means that fine detail and subtle colours will be lost.<br />
<strong>Audio isn&#8217;t required</strong>. You may deliver video with audio, but it won&#8217;t be heard.</p>
<h3>Video Delivery</h3>
<p>Videos should be delivered at the highest quality your connection can muster. There&#8217;s no need for full uncompressed videos, but high bitrate H264 or MJPEG videos would be great.<br />
My favorite method for delivery would be <a href="http://vimeo.com">vimeo</a>. Upload your video there, make sure that &#8220;Allow other people to download the source video.&#8221; is checked, and then <a href="mailto:gameon@createdigitalmedia.net">email me</a> with a link. If you&#8217;d like your video to be private, <a href="http://vimeo.com/jaymis">add me as a contact</a> and you can make it so only I can view and download the video.</p>
<p>If you&#8217;re not in to vimeo, give me an <a href="mailto:gameon@createdigitalmedia.net">email</a> and we&#8217;ll work something out.</p>
<h3>Resources</h3>
<p>The lovely and talented <a href="http://monaux.com">Karl Kwasny</a> has been awesome enough to provide us with some gaming-themed illustrations for our animation and remixing pleasure. </p>
<p><a href="http://www.flickr.com/photos/jaymis/3011630091/" title="Game On characters by Monaux by Jaymis, on Flickr"><img src="http://farm4.static.flickr.com/3035/3011630091_db242be1f6.jpg" width="371" height="500" alt="Game On characters by Monaux" /></a></p>
<p>I&#8217;ve cropped these to separate layered PSD files (so you can tweak the colours and line art etc. if you&#8217;d like), and created transparent PNGs as well. Bargain!</p>
<p><a href="http://media.createdigitalmedia.net/projects/gameon/gameon-characters.zip">Game On Characters</a> (5.5MB Zip)</p>
<p>These images are released under a Creative Commons <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Attribution-Noncommercial-Share Alike</a> license. You&#8217;re free to use these resources for remixing for this project, and for your own non-commercial use. However, derivatives must also be released under the same license, and must contain attribution to the original source.</p>
<h3>Cloud Projections</h3>
<p>For those who&#8217;d like to be involved, but don&#8217;t have the time to go all custom and <em>projection mappy</em>, we&#8217;re going to have a series of screens throughout the venue displaying work from international visualists. The screens will be shaped like the &#8220;8Bit Cloud&#8221; in the image below.</p>
<p><img src="http://farm4.static.flickr.com/3183/2957499598_174eff18bf.jpg" alt="Game On 8Bit Cloud" width="500" height="349" /></p>
<p>If you&#8217;d like to submit any general video content, we will be able to mask it to be displayed in these screens. However, if you&#8217;d like to create some content specifically designed for the screens, I&#8217;ve made some templates for you:<br />
<span id="more-45"></span></p>
<p><a href="http://media.createdigitalmedia.net/projects/gameon/gameon-cloud-template.zip">Game On Cloud Template</a> (25KB Zip)<br />
This zip file contains a transparent PNG file which you can use as a mask over your video, or some layered photoshop documents if you&#8217;d like to be a bit more advanced.<br />
Final videos should be delivered in the slightly bizarre size of 760&#215;467 pixels. Use the template as a guide and you can&#8217;t go wrong.</p>
<h3>Projection Mapping</h3>
<p>This is a little more complex. As we couldn&#8217;t be guaranteed that the position of the projector on the launch night would match the position on our <a href="http://vimeo.com/2185265">test run</a>, we&#8217;ve had to mostly scrap our plans for a &#8220;real&#8221; 3D mapping setup. Most of the work will be a &#8220;2.5D&#8221; mapping, where flat videos are warped in 3D space.</p>
<p>We&#8217;re also constrained by our reasonably paltry (for the space and ambient light) 5000 lumen projector. So your content should be reasonably high-contrast, and colours should be bright. Fine detail and subtle colours are likely to get lost, so put the subtlety-brush down and grab your vividity-mallet.</p>
<p>We&#8217;re still working on getting the precise dimensions for the flat templates, and they&#8217;ll be posted here when completed. However, if you&#8217;re going to be super advanced and create something in 3D space which can be later exported as 2D faces, then we have 3D models of the space available for you:<br />
<a href="http://media.createdigitalmedia.net/projects/gameon/gameon-mapping-3d-models.zip">Game On Mapping 3D Models</a> (120KB Zip)</p>
<p><strong>Warning!</strong> You&#8217;re on your own with these models. The dimensions are correct, but we&#8217;re not certain of the camera/projector viewpoint and angle. So your animation will either need to be exported as flat &#8220;texture&#8221; videos, or you&#8217;ll need to change your scene camera to fit the viewpoint of our 2D templates (when they&#8217;re finished). So, going all-3D is probably a little risky. Should be fun though! Good luck with that. Give me an email if you have any questions or concerns.</p>
<h3>Updated Mapping Models</h3>
<p>Apologies 3Ders for the delay. I finally have the mapping templates ready from our test run at the venue.</p>
<p><a href="http://media.createdigitalmedia.net/projects/gameon/gameon-slq-map-release-version.zip">SLQ Map Release Version</a> (630KB Zip).</p>
<p>This file contains original, editable .AI and .EPS templates with all layers and bricks separated, as well as exported PSD and PNG versions for people who just want to work with the shapes.</p>
<p>There are also 2 jpgs entitled &#8220;Stairs-explained&#8221; and &#8220;Wall-explained&#8221;, which provide a legend as to which bits of the template go where on the wall.</p>
<p>Finally, the file &#8220;SLQ-Map-2D-Template.png&#8221; is an output from our <a href="http://createdigitalmotion.com/2008/11/08/projection-mapping-progress-game-on-test-with-vvvv/">session at the library</a> with <a href="http://vvvv.org/">VVVV</a>. This file is in the native resolution of the projector we&#8217;re using &#8211; 1024&#215;768. So you can see that the templates we&#8217;ve provided are much higher resolution than our final output. We&#8217;ve done this to give you as much precision as possible when creating your videos, but we don&#8217;t expect you to deliver videos 3000 pixels wide.</p>
<h3>Usage of the Mapping Models</h3>
<p>This is where things get a little free-form. We know that everyone has their own workflow and techniques, so we don&#8217;t want to confine contributors to a partilcular format. If you&#8217;d like to pre-warp and render out your work to fit the dimensions in the &#8220;2D Template&#8221; file, that should work fine. Otherwise if you&#8217;d like to render out flat files based on the &#8220;Stairs Section&#8221; and &#8220;Wall Section&#8221; templates, we&#8217;ll be able to map these to the wall ourselves, and probably get a slightly higher quality result.</p>
<p>Likewise, don&#8217;t feel you need to be producing content for the entire surface. If you&#8217;d like to just focus on a couple of sections of the wall, or even create content for a single rectangular surface, feel free. Please <a href="mailto:gameon@createdigitalmedia.net">get in touch</a> and keep us updated on your progress, so we know where things are going when you come to deliver your files.</p>
<h3>Final Delivery</h3>
<p>As mentioned above, we&#8217;ll try to be as flexible as possible with delivery. Aim for high quality files, but the final output will be warped to fit inside a 1024&#215;768 rectangle, so there&#8217;s no need to waste time rendering and uploading at full-HD resolution, unless this particularly turns you on.</p>
<p>I would also suggest rendering and uploading a draft version of your work, so we can check to ensure that it&#8217;s going to fit with what we&#8217;re doing, and that you haven&#8217;t made any glaring geometrical errors.</p>
<h3>Collaboration and Progress</h3>
<p>If you have any questions or ideas you&#8217;d like to discuss publicly, use the comments of this post. Similarly, if you have any materials or resources you&#8217;d like to share for others to remix or use, feel free to post them as well.</p>
<p>More information: <a href="http://createdigitalmotion.com/tag/game-on/">Game On tag on CDMotion</a>.</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/WuSnRi8VH4k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/11/08/game-on-gaming-visuals-and-projection-mapping-project/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/11/08/game-on-gaming-visuals-and-projection-mapping-project/</feedburner:origLink></item>
		<item>
		<title>Processing: Smoothing Not Working? Maybe You Forgot Background</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/hJaoAPW-yDc/</link>
		<comments>http://labs.noisepages.com/2008/09/02/processing-smoothing-not-working-maybe-you-forgot-background/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 20:50:25 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[drawing]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[processing.org]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/?p=39</guid>
		<description><![CDATA[Here&#8217;s a quick Processing tip. Even I&#8217;ve made this mistake on occasion &#8211; especially as lately I&#8217;ve been doing more quick sketches during demos.
smooth(), Processing&#8217;s anti-aliasing, doesn&#8217;t always do what you expect. It isn&#8217;t supported at all if you&#8217;re using P3D as the renderer, and it&#8217;s only really consistent in the default renderer (aka P2D). [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://labs.noisepages.com/files/2008/09/aliasing.jpg" alt="" title="Anti-aliasing demo" width="250" height="122" class="alignright size-full wp-image-41" align="right" />Here&#8217;s a quick Processing tip. Even I&#8217;ve made this mistake on occasion &#8211; especially as lately I&#8217;ve been doing more quick sketches during demos.</p>
<p>smooth(), Processing&#8217;s anti-aliasing, doesn&#8217;t always do what you expect. It isn&#8217;t supported at all if you&#8217;re using P3D as the renderer, and it&#8217;s only really consistent in the default renderer (aka P2D). But sometimes it <em>should</em> work, and it&#8217;s just your fault. See if this sounds familiar: you go to draw something, and mysteriously, your anti-aliasing looks really odd or missing.</p>
<p>The problem is that, if there&#8217;s a draw() loop and no background, Processing will progressively overwrite the screen, making any anti-aliasing disappear and look blocky. In the image here, you can see what that looks like on the left, with the corrected version on the right. </p>
<p>The solution: add a background() statement, choose noLoop() if you just want it to draw once, or add a fill to &#8220;clear&#8221; the screen before drawing. One way to do that: choose a fill color, then enter:</p>
<pre class="brush: java">rect(0,0,width,height);</pre>
<p>This image comes from one of my students, who was having just this issue. (But like I said, I made the same mistake!)</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/hJaoAPW-yDc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/09/02/processing-smoothing-not-working-maybe-you-forgot-background/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/09/02/processing-smoothing-not-working-maybe-you-forgot-background/</feedburner:origLink></item>
		<item>
		<title>Processing Bug Fixes: SVG, PDF Problems Solved</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/Xh3D86QdVgg/</link>
		<comments>http://labs.noisepages.com/2008/08/13/processing-bug-fixes-svg-pdf-problems-solved/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 21:26:34 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[massart]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[processing.org]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/?p=30</guid>
		<description><![CDATA[Import and export is, of course, a huge workflow factor for anyone, especially anyone from a graphic design background. Some of my students at MassArt have been kicking the tires on Processing&#8217;s SVG and PDF libraries and running into hitches. There&#8217;s nothing more frustrating than getting an obscure error message when you think you&#8217;re doing [...]]]></description>
			<content:encoded><![CDATA[<p>Import and export is, of course, a huge workflow factor for anyone, especially anyone from a graphic design background. Some of my students at MassArt have been kicking the tires on Processing&#8217;s SVG and PDF libraries and running into hitches. There&#8217;s nothing more frustrating than getting an obscure error message when you think you&#8217;re doing things right. Happily, we&#8217;ve got some solutions.</p>
<p>Of course, it&#8217;d be great to hear from others with similar issues.</p>
<p>The following libraries might also be of use:<br />
<a href="http://www.texone.org/prosvg/">http://www.texone.org/prosvg/</a><br />
<a href="http://processing.unlekker.net/SimplePostscript/index.html">http://processing.unlekker.net/SimplePostscript/index.html</a></p>
<h3>PDF</h3>
<p>Several students had problems with font embedding using the built-in library. Symptoms: strange, blocky letters. The issues seem to occur on Mac OS X (all the students in this case I believe were on Mac exclusively.) The <a href="http://processing.org/reference/libraries/pdf/index.html">reference documentation for the PDF library</a> offers this clue:</p>
<blockquote><p>Starting in release 0120, text is no longer treated as shape data by default, meaning that the font will need to be installed to view the PDF that&#8217;s created. The upside is that the PDF will render better (particularly in light of the Mac OS X bug noted here). To force text to be treated as shape data, use textMode(SHAPE), immediately after size(). See the developer reference for textMode() inside <a href="http://dev.processing.org/reference/everything/javadoc/processing/pdf/PGraphicsPDF.html">PGraphicsPDF</a> for more specifics.</p></blockquote>
<p>But so far, forcing SHAPE hasn&#8217;t been very helpful.</p>
<p>Colin Owens has this tip instead:</p>
<blockquote><p>Placing:</p>
<pre class="brush: java">hint(ENABLE_NATIVE_FONTS);</pre>
<p>before text();</p>
<p>does the trick.</p></blockquote>
<p>This needs to happen before all your other font/text code. (I believe setup() is optional.)</p>
<p>I also suggested, for those on the Mac, at least, that people get fonts working on Mac and try re-saving in Preview.app for cross-platform / cross-machine compatibility as needed. (The same would be true with Acrobat or any PDF builder on any platform, just in case the library is misbehaving.)</p>
<p>Oddly, people are still having issues in which the first couple of characters are garbled, so they&#8217;ve taken to hiding the first two characters used. Bizarre.</p>
<h3>SVG</h3>
<p>Mahesh Gudapakkam was having some problems with the SVG graphics format, even following examples from Ben Fry. Nicely enough, he solved it himself.</p>
<p>Basically, the issue was tag information being handled in a way other than he intended, thus triggering an array out of bounds error.<span id="more-30"></span></p>
<p>First, the symptoms:</p>
<blockquote><p>running into a problem here ..  i am trying to work with a SVG version of the US map.</p>
<p>i have a version that works well &#8211; zooms in and out and scales the way i want to &#8211; unfortunately i had no way to control characteristics of individual states (only later did i realize that SVG&#8217;s can have  markers for individual states stored as attributes to its tags and my svg image didnt have any &#8211; i downloaded a free one of the web)</p>
<p>i realized the above while reading through ben fry&#8217;s [book <em>Visualizing Data</em>]. in an example of his, he points to an SVG on wikimedia (<a href="http://commons.wikimedia.org/wiki/Image:Blank_US_Map.svg)">http://commons.wikimedia.org/wiki/Image:Blank_US_Map.svg</a>)</p>
<p>for some reason when i work with this file i get an exception<br />
java.lang.ArrayIndexOutOfBoundsException: 1</p>
<p>all i am doing at this point is declaring a SVG object and reading this downloaded object into it .. and then trying to display it &#8211; any ideas?.. processing version is 0135Beta</p></blockquote>
<p>The problem? Poorly-formed tags:<!--more--></p>
<blockquote><p>quick update. i was able to figure out what was causing the array out of bounds error. comparing the working svg vs the one not working and picking up on some threads from some of the early postings rgd&#8217;ing issues with candy&#8217;s parsing on the processing forums &#8211; i found that the graphic tag <g> had some extra attributes. here&#8217;s how it appears in the non-working ones.</p>
<pre class="brush: xml">&lt;g id=&quot;g4&quot; transform=&quot;translate(-4,4)&quot;&gt;
OR
&lt;g
     id=&quot;g4&quot;
     style=&quot;fill:#d3d3d3&quot;
     transform=&quot;translate(-4,4)&quot;&gt;</pre>
<p>the candy svg library seems to not like this &#8211; once i reduced it down to <g> it happily worked. also a few other things  i had to change -<br />
1. it does not work with the <text> tag either &#8211; needed to get rid of it<br />
2. some other tags it failed to work with are ones that had these attributes</p>
<pre class="brush: xml"># sodipodi:type=&quot;arc&quot;
# sodipodi:nodetypes=&quot;cc&quot;</pre>
<p>processing complained that it does not recognize the shape command &#8211; once i got rid of these attributes it didnt complain of those errors ..</p>
<p>once i addressed all of these i was able to get the svg to work with candy.</p>
<p>this might be something of interest to others in the group who might end up working with SVG&#8217;s .. these tags get produced even when you use a program like illustrator to create a svg (i went that route too and it produced errors as well). hopefully it will save them some time.</p></blockquote>
<p>If you run into other errors like this, let us know!</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/Xh3D86QdVgg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/08/13/processing-bug-fixes-svg-pdf-problems-solved/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/08/13/processing-bug-fixes-svg-pdf-problems-solved/</feedburner:origLink></item>
		<item>
		<title>Ignite: Visual Code Literacy with Processing, in Five Minutes</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/gZbRsQaXhis/</link>
		<comments>http://labs.noisepages.com/2008/07/29/ignite-visual-code-literacy-with-processing-in-five-minutes/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 00:43:05 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[ignite]]></category>
		<category><![CDATA[presentations]]></category>
		<category><![CDATA[processing.org]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/?p=13</guid>
		<description><![CDATA[IgniteNY: Visual code literacy, in 5 minutes
view presentation (tags: art generative visualist visual)

For Ignite NYC, I made a five minute presentation demonstrating basic programming concepts, as illustrated in Processing. The point: basic code literacy is as important today as basic arithmetic knowledge, and there&#8217;s no reason to be afraid &#8212; by working with code visually, [...]]]></description>
			<content:encoded><![CDATA[<div style="width:580px;text-align:left" id="__ss_531567"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/peterkirn/igniteny-visual-code-literacy-in-5-minutes?src=embed" title="IgniteNY: Visual code literacy, in 5 minutes">IgniteNY: Visual code literacy, in 5 minutes</a><object style="margin:0px" width="580" height="484"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=peterkirnp55slides-1217265466479487-9&#038;stripped_title=igniteny-visual-code-literacy-in-5-minutes" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=peterkirnp55slides-1217265466479487-9&#038;stripped_title=igniteny-visual-code-literacy-in-5-minutes" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="484"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">view <a style="text-decoration:underline;" href="http://www.slideshare.net/peterkirn/igniteny-visual-code-literacy-in-5-minutes?src=embed" title="View IgniteNY: Visual code literacy, in 5 minutes on SlideShare">presentation</a> (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/art">art</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/generative">generative</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/visualist">visualist</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/visual">visual</a>)</div>
</div>
<p>For <a href="http://radar.oreilly.com/2008/07/ignite-nyc-soldering-guerilla.html">Ignite NYC</a>, I made a five minute presentation demonstrating basic programming concepts, as illustrated in Processing. The point: basic code literacy is as important today as basic arithmetic knowledge, and there&#8217;s no reason to be afraid &#8212; by working with code visually, you can learn to program, even with &#8220;advanced&#8221; concepts like object oriented code.</p>
<p>I&#8217;ll elaborate on this more for those not there, but if you did make the presentation, these additional code examples should be helpful (in case you missed some of what I was saying in the 15 seconds allotted each slide!)</p>
<h3>Referenced Code Examples</h3>
<p><strong>Putting something on the screen:</strong> Using commands like &#8220;line&#8221; means everything you do can give you immediate visual response. Line does what it sounds like it does, and takes four simple arguments: x and y coordinates for the start point and end point.</p>
<pre class="brush: java">line(0,0,200,200);</pre>
<p><strong>An interactive line:</strong> Add a draw() loop, and the line you draw becomes interactive, working with the mouse.</p>
<pre class="brush: java">void setup() {
  size(400,400);
}
void draw() {
  background(255); //try moving this line to setup and watch what happens!
  line(0,0,mouseX,mouseY);
}</pre>
<p><strong>Make values visible:</strong> The numbers can also be meaningful values &#8212; in this case, from the internal clock.</p>
<pre class="brush: java">void setup() {
  size(400,400);
  strokeWeight(50);
  strokeCap(SQUARE);
}

void draw() {
  smooth();
  background(255);
  line(100,0,100,(hour()/24.0)*height);
  line(200,0,200,(minute()/60.0)*height);
  line(300,0,300,(second()/60.0)*height);
}</pre>
<p><strong>Variables:</strong> Using variables in place of fixed number values allows you to adjust that value &#8212; over time for animation, to transform the value aesthetically, and to experiment with how code works.</p>
<p>In fact, the best way to start to figure out code &#8212; even before you&#8217;re sure how it works &#8212; is often to start messing around with values. Sometimes &#8220;breaking&#8221; code you don&#8217;t understand can be a great learning experience. For instance, see what happens when <a href="http://createdigitalmotion.com/2007/04/17/breakout-hacked-into-art-in-processing/">students start to &#8220;mess up&#8221; the game Breakout</a> to transform it aesthetically and make new art.</p>
<p>Changing values can also help create surprise. You don&#8217;t have to hook up variables the way someone would expect. Watch what happens when you move mouseX and mouseY with our interactive line:</p>
<pre class="brush: java">void setup() {
  size(400,400);
}

void draw() {
  background(200);
  line(mouseY,height/2,width/2,mouseX);
}</pre>
<p><strong>Loops:</strong> Seeing a loop happen &#8212; even a simple one &#8212; illustrates the way the process of iteration can work in more complex problems.</p>
<pre class="brush: java">int numOfLines = 10;
int distance = 10;

size(200,200);
background(0);
stroke(255);
strokeWeight(3);

int yPos = 20;
for(int i=0; i&lt;numOfLines; i++) {
  line(20,yPos,width-20,yPos);
  yPos += distance;
}

//bonus!
/*
int yPos = 20;
for(int i=0; i&lt;numOfLines; i++) {
  line(20,yPos,width-20,yPos);
  yPos += distance;
  distance += 2;
}
*/</pre>
<p><strong>Loops and arrays:</strong> Using arrays (lists) with loops can help to simplify code, even in a simple example &#8212; loops and lists are a natural match for one another, since the former lets you iterate through the latter.</p>
<pre class="brush: java">int[] circles = {170,113,78,30,13};
size(400,400);
background(150);
noStroke();
smooth();

for (int i=0;i&lt;circles.length;i++){
  fill(random(0,255),random(0,255),random(0,255));
  ellipse(width/2,height/2,circles[i],circles[i]);
}</pre>
<p><strong>Loops within loops:</strong> You can also place a loop inside a loop. What&#8217;s that mean? It helps to see the result.</p>
<pre class="brush: java">int[] circles = {170,113,78,30,13};
size(400,400);
background(150);
noStroke();
smooth();

for (int j=0;j&lt;4;j++) {
  for (int i=0;i&lt;circles.length;i++){
    fill(random(0,255),random(0,255),random(0,255));
    ellipse((width/4)*j,(height/4)*j,circles[i],circles[i]);
  }
}</pre>
<p>You can extend the loops within loops concept to more involved iteration, such as iterating through columns, then rows &#8212; essential to processing the individual pixels in an image.</p>
<p>Java is quick enough for doing this with smaller images and even video, though for better performance, it&#8217;s also possible to perform some tasks using shaders on the GPU, thanks to Processing&#8217;s support for OpenGL. (Image processing, video processing, and OpenGL are best left to a separate discussion!)</p>
<p><strong>Functions</strong> can be understood as recipes. In pseudo-code:</p>
<pre class="brush: java">makes cake &quot;Cakemaker&quot; (eggs, flour, ingredients, etc...) {
  step 1
  step 2
  step 3
  return cake, serves 8
}</pre>
<p><strong>Objects:</strong> Object-oriented programming may seem mystical, but it&#8217;s really just a way to better organize code functions. For instance, in the case of the cake, we might consider what the attributes of a cake are, what can be done to it (make a cake, eat a cake, throw a cake at someone&#8217;s face), and then organize it relative to smaller categories of related things (cupcakes) and bigger categories of things (dessert).</p>
<p>In visual terms, that allows us to create fast, readable, powerful systems for visual expression, like particle systems. In the included Processing example Topics > Simulate > MultipleParticleSystem, for instance, you&#8217;ll see particles and systems of particles defined as objects.</p>
<h3>Code for Making the Presentation</h3>
<p>For Ignite, I wrote a quick Processing sketch that allowed me to quickly generate the slides I would use. The event needed a PowerPoint file, but I could at least output images to drop into another program for PPT export (hence the saveFrame() function, which saves image files). And for my own purposes, I don&#8217;t even need PowerPoint.</p>
<p>Note that in addition to the Processing file, the data folder contains:</p>
<ul><LI>image assets</li>
<p><LI>fonts (generated in Processing with Tools > Create font&#8230;</li>
<p><LI>a text file with the text for the slides</li>
</ul>
<p>To create the text file, I simply separated bullets with the &#8220;@&#8221; character and put a tab between titles and body text. The split() command in Processing then divides up that text into necessary Strings. So, for instance, the first slide looks like this:<br />
<code>visual code literacy	Code literacy == math literacy @Technologists, artists (non-specialists)</code></p>
<p>What this means is that very little code is needed for the presentation &#8212; and it&#8217;d basically work for any presentation of this template. I saved time versus working in PowerPoint.</p>
<p>You need some Java classes, listed at top, for this to work.</p>
<pre class="brush: java">import java.util.*;
import java.text.*;

String[] slides;

PFont font;
int currSlide = 0;

void setup() {
  size(800,600);
  slides = loadStrings(&quot;p5_5slides.txt&quot;);
  background(0);
  font = loadFont(&quot;TimesNewRomanPSMT-14.vlw&quot;);
}

void draw() {
  String[] headerString = split(slides[currSlide], TAB);
  String[] bullets = split(headerString[1], &#039;*&#039;);
  println(&quot;Header: &quot; + headerString[0]);
  for (int i=0;i&lt;bullets.length;i++) {
    println(&quot;Bullet: &quot; + bullets[i]);
  }
  saveFrame();
  if(currSlide &lt; slides.length-1) {
  currSlide++;
  }
  else {
    //currSlide = 0;
    stop();
  }
}
</pre>
<h3>Image Credits</h3>
<p>In the presentation&#8230;</p>
<p>Dinner check by Jim Reynolds:<br />
http://flickr.com/photos/revjim5000/2445394705/</p>
<p>LOGO-generated image graphic created by remi, logo source code created by Arbol01, via Wikimedia:<br />
http://en.wikipedia.org/wiki/Image:Remi_turtlegrafik.png</p>
<p>Apple II image by Florian Eckerstorfer<br />
http://flickr.com/photos/florianeckerstorfer/1870727397/</p>
<p>Breakout art, as featured in Create Digital Motion:<br />
<a href="http://createdigitalmotion.com/2007/04/17/breakout-hacked-into-art-in-processing/">http://createdigitalmotion.com/2007/04/17/breakout-hacked-into-art-in-processing/</a><br />
See also Game Mod:<br />
<a href="http://www.trsp.net/teaching/gamemod/">http://www.trsp.net/teaching/gamemod/</a></p>
<p>NOAA climate information from the National Weather Service:<br />
<a href="http://www.weather.gov/climate/">http://www.weather.gov/climate/</a></p>
<p>Vintage cookbooks by Patrick Q:<br />
<a href="http://flickr.com/photos/patrick_q/199986515/">http://flickr.com/photos/patrick_q/199986515/</a></p>
<p>All other images by the author</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/gZbRsQaXhis" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/07/29/ignite-visual-code-literacy-with-processing-in-five-minutes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/07/29/ignite-visual-code-literacy-with-processing-in-five-minutes/</feedburner:origLink></item>
		<item>
		<title>Massaging Media Processing Workshop</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/5TkEBayLp8c/</link>
		<comments>http://labs.noisepages.com/2008/04/06/massaging-media-processing-workshop/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 12:36:38 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[downloads]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[presentations]]></category>
		<category><![CDATA[processing.org]]></category>
		<category><![CDATA[workshops]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/2008/04/06/massaging-media-processing-workshop/</guid>
		<description><![CDATA[Presentation Slides
[SlideShare embed]
PDF download
Examples Download
I&#8217;ve been working on creating a set of stupidly simple examples for Processing &#8212; even simpler than the ones that come with Processing itself. The idea is to put as little as humanly possible in them, so that you can demonstrate the basics of programming with code examples, even in very [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Presentation Slides</strong></p>
<p>[SlideShare embed]</p>
<p><a href="http://createdigitalmotion.com/files/p5_mmedia.pdf">PDF download</a></p>
<p><strong>Examples Download</strong></p>
<p>I&#8217;ve been working on creating a set of stupidly simple examples for Processing &#8212; even simpler than the ones that come with Processing itself. The idea is to put as little as humanly possible in them, so that you can demonstrate the basics of programming with code examples, even in very short workshops for people who may not have any programming experience (and I mean really short &#8212; what if you want to show something in 5 minutes?)</p>
<p>Download the sample files:</p>
<p><a href="http://createdigitalmotion.com/files/simpleexamples001.zip">Simple Examples 0.01</a> [ZIP archive for Processing 0135]</p>
<p>Consider this an early preview, and I welcome feedback. Major thanks to Ben Fry for some of the inspiration about how to go about this.</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/5TkEBayLp8c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/04/06/massaging-media-processing-workshop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/04/06/massaging-media-processing-workshop/</feedburner:origLink></item>
		<item>
		<title>Must-Have Processing Libraries for Multimedia</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/G3mGDRtmY0k/</link>
		<comments>http://labs.noisepages.com/2008/03/18/must-have-processing-libraries-for-multimedia/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 03:41:58 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[processing.org]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/2008/03/18/must-have-processing-libraries-for-multimedia/</guid>
		<description><![CDATA[ 
To a beginning Processing user, the libraries section of the Processing site can cause a &#34;kid in the candy store&#34; effect. I actually recommend going a little easy, working with one library at a time. But, at the same time, working with libraries really is essential to working with Processing, because Processing &#34;core&#34; is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/p_kirn/576137663/in/set-72157603921736550/"><img src="http://farm2.static.flickr.com/1307/576137663_687e70abce.jpg?v=0" /></a> </p>
<p>To a beginning Processing user, the <a href="http://processing.org/reference/libraries/">libraries section of the Processing site</a> can cause a &quot;kid in the candy store&quot; effect. I actually recommend going a little easy, working with one library at a time. But, at the same time, working with libraries really <em>is</em> essential to working with Processing, because Processing &quot;core&quot; is kept as conservative as possible. This is especially true if you&#8217;re working with multimedia. Here are the libraries I recommend for specific multimedia applications, as a starting point:</p>
<p><span id="more-11"></span></p>
<h3>Sound and MIDI</h3>
<p><img src="http://createdigitalmusic.com/images//2008/03/genpunk-thumb.jpg" /></p>
<p>genPunk uses the Ess library to build an entire music app inside Processing. But you may be best off starting with Minim.</p>
<p><a href="http://code.compartmental.net/tools/minim">Minim</a> is currently the most reliable sound library available, because it hooks directly into JavaSound, as well as the easiest to use and best-documented. It&#8217;s worth looking at the other libraries here, but this should be your first stop as a beginner.</p>
<p>(Note that JavaSound tends to be more reliable on Linux and Windows because of some implementation issues with Apple&#8217;s version of Java.)</p>
<p><a href="http://www.texone.org/promidi/">proMIDI</a> is currently the only <em>library</em> for interfacing with MIDI support. I recommend it with some trepidation, because there are some odd things about implementation &#8212; note off events don&#8217;t work quite right, for instance. But for basic MIDI data, it works. If you&#8217;re planning to get heavy into MIDI, I actually suggest accessing JavaSound&#8217;s MIDI tools directly; it&#8217;s a little tricky, but there&#8217;s superb documentation at <a href="http://www.jsresources.org/">jsresources.org</a>, which is maintained by the lead developers of the modern version of JavaSound. Another tool to consider is <a href="http://jmetude.dihardja.de/">jm-Etude</a>; by working with the excellent jMusic API, it makes writing MIDI code much more musical.</p>
<h3>Video</h3>
<p><a href="http://www.youtube.com/watch?v=tSJTTkwrZ9s&amp;hl=en"><img src="http://labs.noisepages.com/files/2008/03/videob0e13f602f8d.jpg" /></a></p>
<p>Shadow Monsters, an audiovisual piece by <a href="http://www.worthersoriginal.com/">Phil Worthington</a>, uses blob tracking to create an unusual puppetry effect. It uses JMyron for analysis.</p>
<p><strong>First: start with the internal video library</strong>. There&#8217;s actually a lot you can do here. If you get weird error messages (assuming you&#8217;ve read the documentation for platform-specific caveats), try reinstalling QuickTime &#8212; buggy QT installers have a tendency to randomly wipe out Java support, and reinstalling sometimes just fixes the problem.</p>
<p>Then, libraries&#8230;</p>
<p><strong>Short version:</strong> Get JMyron and go to town. Make sure you have the Intel build if you have an Intel Mac.</p>
<p><strong>Long version: </strong>Remember the &quot;Read Me&quot; file you ignore? This is a time when you need to read the documentation. See the <a href="http://processing.org/reference/libraries/video/index.html">documentation of Processing&#8217;s own video library</a> for some important caveats and bugs on all three platforms. The Mac should work, though sometimes can have random crashes or problems with capture. Windows requires the often-unpredictable <a href="http://www.vdig.com/WinVDIG/">WinVDIG</a> for input; Linux doesn&#8217;t work at all. Don&#8217;t blame Processing: blame Apple&#8217;s now-defunct QuickTime for Java, and the general lack of any Windows/Mac cross-platform library.</p>
<p>But don&#8217;t give up. There are some nice things that can be done with <a href="http://processing.org/reference/libraries/#computer_vision">computer vision</a> on Processing.</p>
<p>I especially recommend <a href="http://webcamxtra.sourceforge.net/">JMyron</a> for basic computer vision techniques. Note that you&#8217;ll need to download an Intel build of JMyron&#8217;s jnilib file to make it work on Intel Macs; you&#8217;ll get some odd error messages otherwise. That Intel recompile is on the <a href="http://www.jibberia.com/projects/">jibberia (aka Kevin Cox) projects</a> page. (Look for the following text):</p>
<blockquote><p><a href="http://www.jibberia.com/projects/libJMyron.jnilib.zip">libJMyron.jnilib compiled for intel macs</a> replace the one in /Applications/Processing/libraries/JMyron/library/ with this one. yay</p>
</blockquote>
<p>One other note: if code for JMyron contains the getForcedWidth() or getForcedHeight() calls, you actually need to <em>remove</em> that for the code to execute without throwing an error on Mac. On Windows, you may need to call those somewhere to avoid weird video problems. Don&#8217;t ask. Video can be a pain.</p>
<p>The <a href="http://www.v3ga.net/processing/BlobDetection/">BlobDetection</a> library also has some nice CV features, but no special capture features. I do <em>not </em>recommend <a href="http://toxi.co.uk/p5/libcv/">LibCV</a> for capture; the odds of you getting the ancient Sun JMF media library on Java to work at all are, optimistically, extremely slim. But like BlobDetection, it also has some interesting features.</p>
<p>Also, don&#8217;t overlook the built-in capabilities in Processing:</p>
<p><a href="http://processing.org/reference/pixels.html">pixels[]</a> is an array of pixels in the display window. (If you&#8217;re using JMyron, you can copy pixels from JMyron&#8217;s capture and analysis features into that array.) A lot of computer vision simply involves looking at what&#8217;s contained in this array.</p>
<h3>3D</h3>
<p><a href="http://labs.noisepages.com/files/2008/03/objloader.jpg"><img height="201" alt="objloader" src="http://labs.noisepages.com/files/2008/03/objloader-thumb.jpg" width="201" align="right" border="0" /> OBJ Loader</a> &#8230; um, loads OBJ files (example pictured at right). With plug-ins, this includes, for instance, files exported from Google&#8217;s SketchUp. (I believe you need the paid version of SketchUp, not the free version, for this feature &#8212; check out the super-cheap academic pricing if you qualify.) It&#8217;s the easiest way to get 3D models into Processing.</p>
<p><a href="http://www.eskimoblood.de/surfacelib/">surfaceLib</a> is the library that does a lot of the tricks that allow those gorgeous, pulsating 3D objects you see in a lot of the Processing videos. But even if that&#8217;s not your style, it provides key capabilities like the ability to figure out the coordinates on a sphere without having to crack open your old Calculus book.</p>
<p>Dan Shiffman&#8217;s <a href="http://www.shiffman.net/teaching/the-nature-of-code/library/">Vector3D</a> is useful for other math tricks, covered in his class&#8217; <a href="http://www.shiffman.net/teaching/nature/vectors/">examples</a> for lovely 3D animation effects &#8212; again, without a lot of wading through math texts or duplicating code over and over again.</p>
<h3>Physics</h3>
<p><a href="http://www.cs.princeton.edu/~traer/physics/">traer.physics</a> is a very elegant, simple physics library that&#8217;s great at making springs and particle systems. It does <em>not</em> do everything it&#8217;s possible for a physics library to do &#8212; but it does work in three dimensions (take that, Flash!), and its simplicity makes it a fantastic starting point. It&#8217;s also very fast. (Take that again, Flash!)</p>
<p>As the site there says, you just get coordinates, so once you&#8217;ve got that you could, for instance, use image() to draw a particle or create geometry or whatever you want.</p>
<h3>Prototyping and live performance</h3>
<p><a href="http://www.youtube.com/watch?v=qM-_RL6xJ1w&amp;hl=en"><img src="http://labs.noisepages.com/files/2008/03/videoa879217823d0.jpg" /></a></p>
<p>When the team working on the <a href="http://createdigitalmusic.com/2007/05/31/muon-spectacularly-beautiful-speakers-with-gorgeous-sonic-visualization-in-processing/">Muon</a> installation wanted to adjust the installed version of their artwork, they used the controlP5 library to get exact feedback on what they were doing.</p>
<p>How much time do you spend re-entering numbers for variables to try different settings? That&#8217;s fine when you&#8217;re first working on code &#8212; less so when you&#8217;re trying to play live or do an installation. Here&#8217;s the solution:</p>
<p><a href="http://www.sojamo.de/libraries/controlP5/">controlP5</a> has two key features. First, it makes controls (sliders and such) so you can easily adjust variables. Second, it <em>hides</em> those controls when you want them out of the way. So, for instance, you get to a site for an installation, show your controls, make your adjustments, hide your controls.</p>
<p>Java has more powerful features for UI, but for art projects you probably don&#8217;t want that much complexity. controlP5 should have you covered.</p>
<h3>This is not a complete list</h3>
<p>It&#8217;s a field guide to some of my favorites. As you can see, it still winds up being pretty long &#8212; which is the reason Processing uses libraries in the first place. Once you start adding features to core, it gets complicated fast. In this way, you stay close to the applications for which the features are actually being used &#8212; and you can pick and choose just what you need.</p>
<p>As always, check the <a href="http://processing.org/reference/libraries/">libraries</a> page for a wide variety of libraries &#8212; and keep your eyes on the <a href="http://processingblogs.org">Processing Blogs</a> or forums, where things often show up first.</p>
<p>You can also make your own libraries according to instructions in the libraries folder of the Processing install. On the top of my list to put together:</p>
<ul>
<li>IMAP support </li>
<li>Flickr API </li>
<li>Native capture on Mac, Windows, and Linux for video </li>
<li>Video playback on Mac, Windows, and Linux </li>
<li>A new MIDI implementation </li>
</ul>
<p>So if I finish any of those, I&#8217;ll be sure to share on our CDM Labs (and probably brag about them on CDMotion and CDMusic, too).</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/G3mGDRtmY0k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/03/18/must-have-processing-libraries-for-multimedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/03/18/must-have-processing-libraries-for-multimedia/</feedburner:origLink></item>
		<item>
		<title>Tablets + Processing: Now on Mac, Too</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/7QXXnliMrwA/</link>
		<comments>http://labs.noisepages.com/2008/03/18/tablets-processing-now-on-mac-too/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 18:49:40 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[processing.org]]></category>
		<category><![CDATA[tablets]]></category>
		<category><![CDATA[wacom]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/2008/03/18/tablets-processing-now-on-mac-too/</guid>
		<description><![CDATA[There&#8217;s been a lot of interest in using tablets with Processing, for obvious reasons &#8212; it allows Processing to be a real-time graphics tool (or graphics for generating audio, or whatever it is you want). And Wacom tablets are cheap, high-resolution inputs. The superb SuperDraw project works with tablet input.
Unfortunately, the best library for tablets [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been a lot of interest in using tablets with Processing, for obvious reasons &#8212; it allows Processing to be a real-time graphics tool (or graphics for generating audio, or whatever it is you want). And Wacom tablets are cheap, high-resolution inputs. The superb SuperDraw project works with tablet input.</p>
<p>Unfortunately, the best library for tablets has been Windows-only (works with any Java app and &#8212; very nice &#8212; with applets in a browser):</p>
<p><a href="http://sketchstudio.cellosoft.com/">JTablet</a></p>
<p>Now, there&#8217;s a Mac alternative, which eventually will wrap JTablet on Windows so you can deploy across platforms:</p>
<p><a href="http://www.infostuka.org/2008/3/18/tablet-library-for-processing">libTablet 0.1</a></p>
<p>The wonderful Marcus Wendt put this together &#8212; thanks! Let me know how it goes.</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/7QXXnliMrwA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/03/18/tablets-processing-now-on-mac-too/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/03/18/tablets-processing-now-on-mac-too/</feedburner:origLink></item>
		<item>
		<title>New Library: OpenSoundControl with Processing</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/zmb45XFcW5Q/</link>
		<comments>http://labs.noisepages.com/2008/03/17/new-library-opensoundcontrol-with-processing/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 02:59:08 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[opensoundcontrol]]></category>
		<category><![CDATA[processing.org]]></category>
		<category><![CDATA[protocols]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/2008/03/17/new-library-opensoundcontrol-with-processing/</guid>
		<description><![CDATA[ 
Jesse Kriss, who built MaxLink for embedding Processing sketches in Max/MSP/Jitter or communicating between Processing and Max, has a new library called EasyOSC. It uses the OpenSoundControl protocol, which is useful for communicating between apps, computers, and some hardware (like the Monome). 
What&#8217;s great about it is how easy it is to communicate with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/p_kirn/507425696/"><img src="http://farm1.static.flickr.com/206/507425696_2aeb5587ca.jpg?v=0" /></a> </p>
<p>Jesse Kriss, who built <a href="http://jklabs.net/maxlink/">MaxLink</a> for embedding Processing sketches in Max/MSP/Jitter or communicating between Processing and Max, has a new library called EasyOSC. It uses the OpenSoundControl protocol, which is useful for communicating between apps, computers, and some hardware (like the <a href="http://createdigitalmusic.com/tag/monome">Monome</a>). </p>
<p>What&#8217;s great about it is how easy it is to communicate with other software &#8212; ideal if you&#8217;re using Processing alongside a sound tool like Reaktor or (in Jesse&#8217;s case) <a href="http://chuck.cs.princeton.edu/">ChucK</a>, or with multiple computers running.</p>
<p><a title="http://jklabs.net/easyosc/" href="http://jklabs.net/easyosc/">http://jklabs.net/easyosc/</a></p>
<p>You use simple syntax like osc.send(&quot;values&quot;, values) to transmit data.</p>
<p>Audiovisualists, this should help your mayhem across media. If I come up with some examples, I&#8217;ll post them to CDM, perhaps with a basic tutorial for those unfamiliar with how OSC works (and there are some tricks to it in other languages).</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/zmb45XFcW5Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/03/17/new-library-opensoundcontrol-with-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/03/17/new-library-opensoundcontrol-with-processing/</feedburner:origLink></item>
		<item>
		<title>How to Read Your Email with the JavaMail API, Starring Gmail IMAP</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/6ZB7qpI6oCo/</link>
		<comments>http://labs.noisepages.com/2008/03/08/how-to-read-your-email-with-the-javamail-api-starring-gmail-imap/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 18:19:10 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[processing.org]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sxswi]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/2008/03/08/how-to-read-your-email-with-the-javamail-api-starring-gmail-imap/</guid>
		<description><![CDATA[Computer musicians are often accused of looking like they&#8217;re checking their email when they&#8217;re playing. (Occasionally, I have seen someone doing just that!) But I wanted to experiment with playing music by checking my email. Java is an easy way to do that; with the free JavaMail API (part of the Java platform), you can [...]]]></description>
			<content:encoded><![CDATA[<p>Computer musicians are often accused of looking like they&#8217;re checking their email when they&#8217;re playing. (Occasionally, I have seen someone doing just that!) But I wanted to experiment with playing music <em>by </em>checking my email. Java is an easy way to do that; with the free JavaMail API (part of the Java platform), you can access just about any IMAP or POP account, even a secure one, like Gmail.</p>
<p><strong>What you need</strong></p>
<p><a href="http://java.sun.com/products/javamail/index.jsp">JavaMail API</a> (part of the enterprise Java platform, but available for free to desktop Java users as well)</p>
<p>Get the <a href="http://java.sun.com/products/javamail/downloads/index.html">download</a>, refer to the <a href="http://java.sun.com/products/javamail/javadocs/index.html">JavaDocs</a> for reference (note that if you&#8217;re not using Java 6, there&#8217;s an extra support download for the &quot;JavaBeans Activation Framework&quot; &#8212; don&#8217;t actually need to know what it does, but you will need it with earlier Java versions)</p>
<p><a href="http://java.sun.com/developer/onlineTraining/JavaMail/">jGuru: Fundamentals of the JavaMail API</a>: A decent step-by-step tutorial, though you may want to compare it to some of the sample code (installed to the &quot;demo&quot; folder when you install JavaMail) to see how this fits together in a completed example.</p>
<p><strong>Connecting to your favorite email provider</strong></p>
<p>The JavaMail API FAQ specifically addresses <a href="http://java.sun.com/products/javamail/FAQ.html#gmail">Gmail and Yahoo! Mail</a>.</p>
<p>IMAP is more fun, because it allows access to folders other than the inbox. To connect to Gmail IMAP, you need to use the &quot;imaps&quot; protocol for a secure SSL connection, rather than plain &quot;imap&quot;.</p>
<p>Accessing folders is a little wonky in Gmail. Aside from the Inbox, labels and folders are accessed like this: store.getFolder(&quot;[Gmail]/Spam&quot;).</p>
<p><strong>Examples</strong></p>
<p>It takes just a few lines to connect and retrieve some basic information about messages. I&#8217;ll post code examples soon.</p>
<p>It&#8217;s helpful to know something about the <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html">java.util.Date</a> class. Specifically, if you want to compare sent dates or otherwise manipulate time, first use message.getSentDate(), then take that date information and use getTime() to translate into milliseconds. </p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/6ZB7qpI6oCo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/03/08/how-to-read-your-email-with-the-javamail-api-starring-gmail-imap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/03/08/how-to-read-your-email-with-the-javamail-api-starring-gmail-imap/</feedburner:origLink></item>
		<item>
		<title>Processing Class Outline</title>
		<link>http://feedproxy.google.com/~r/cdmlabs/~3/Y94LTfuD6Tk/</link>
		<comments>http://labs.noisepages.com/2008/03/05/processing-class-outline/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 22:44:56 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[harvestworks]]></category>
		<category><![CDATA[processing.org]]></category>
		<category><![CDATA[syllabi]]></category>

		<guid isPermaLink="false">http://labs.noisepages.com/2008/03/05/processing-class-outline/</guid>
		<description><![CDATA[I&#8217;ll be posting class notes for my Processing intro at New York&#8217;s Harvestworks online. Based on student feedback about what interests people, here&#8217;s the breakdown for the three classes.
Week One
What&#8217;s Processing?
A little bit of history
Processing is Java
How is Processing different from things that aren&#8217;t Processing?
Hello, world, Processing style
Install Processing, Java
Draw &#34;hello&#34;
Say &#34;hello&#34;
Processing syntax
Using the IDE
Using [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be posting class notes for my Processing intro at New York&#8217;s <a href="http://harvestworks.org">Harvestworks</a> online. Based on student feedback about what interests people, here&#8217;s the breakdown for the three classes.</p>
<h3>Week One</h3>
<p><strong>What&#8217;s Processing?</strong></p>
<p>A little bit of history</p>
<p>Processing <em>is</em> Java</p>
<p>How is Processing different from things that aren&#8217;t Processing?</p>
<p><strong>Hello, world, Processing style</strong></p>
<p>Install Processing, Java</p>
<p>Draw &quot;hello&quot;</p>
<p>Say &quot;hello&quot;</p>
<p>Processing syntax</p>
<p>Using the IDE</p>
<p>Using help and documentation</p>
<p><strong>Putting stuff on the screen</strong></p>
<p>Coordinates</p>
<p>Drawing</p>
<p>Color</p>
<p>3D coordinates</p>
<p>Textures</p>
<p>Load an image</p>
<p>Load a video</p>
<p><strong>What next</strong></p>
<p>Where to find inspiration</p>
<p>Where to find libraries</p>
<p>Where to find code</p>
<p><span id="more-3"></span></p>
<p>Week Two</p>
<p>Reading pixels</p>
<p>Video capture</p>
<p>Working with 3D</p>
<p>Basic sound playback and analysis</p>
<p>Connect to MIDI</p>
<p>Arduino introduction</p>
<h3>Week Three</h3>
<p>Video analysis</p>
<p>Advanced hardware</p>
<p>Networking</p>
<p>Data</p>
<img src="http://feeds.feedburner.com/~r/cdmlabs/~4/Y94LTfuD6Tk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://labs.noisepages.com/2008/03/05/processing-class-outline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://labs.noisepages.com/2008/03/05/processing-class-outline/</feedburner:origLink></item>
	</channel>
</rss>
