<?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>Multigesture.net &#187; Howto</title> <atom:link href="http://www.multigesture.net/category/howto/feed/" rel="self" type="application/rss+xml" /><link>http://www.multigesture.net</link> <description>A multitouch and HCI research blog</description> <lastBuildDate>Thu, 29 Dec 2011 12:10:44 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>NodeBeat, openFrameworks and Android</title><link>http://www.multigesture.net/2011/11/19/nodebeat-openframeworks-and-android/</link> <comments>http://www.multigesture.net/2011/11/19/nodebeat-openframeworks-and-android/#comments</comments> <pubDate>Sat, 19 Nov 2011 20:52:49 +0000</pubDate> <dc:creator>Laurence Muller</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Application]]></category> <category><![CDATA[Featured]]></category> <category><![CDATA[Howto]]></category> <category><![CDATA[Multitouch]]></category> <category><![CDATA[application]]></category> <category><![CDATA[multitouch]]></category> <category><![CDATA[technology]]></category><guid isPermaLink="false">http://www.multigesture.net/?p=2095</guid> <description><![CDATA[Last month we (Seth Sandler and yours truly) released the Android port of the popular iPhone/iPad music application NodeBeat. NodeBeat was created by Seth Sandler and Justin Windle earlier this year and released in April for the iOS platform. It is an experimental node-based audio sequencer and generative music application. By combining music and playful exploration, NodeBeat [...]]]></description> <content:encoded><![CDATA[<p>Last month we (<a href="http://www.sethsandler.com/">Seth Sandler</a> and yours truly) released the Android port of the popular iPhone/iPad music application <a href="http://nodebeat.com/">NodeBeat</a>.</p><p>NodeBeat was created by <strong>Seth Sandler</strong> and <strong>Justin Windle</strong> earlier this year and released in April for the iOS platform. It is an experimental node-based audio sequencer and generative music application. By combining music and playful exploration, NodeBeat allows anyone to create an exciting variety of rhythmic sequences and ambient melodies in a fun and intuitive fashion.</p><p><iframe src="http://player.vimeo.com/video/30325679" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p><h2>How Does it Work?</h2><p>Octaves and Notes make up the two types of nodes. Octaves pulse and send messages to Notes within proximity. Each Octave is assigned a random octave and each Note, a random note; therefore, a Note will play in several octaves depending on the Octave it’s connected to. Pause nodes to create your own beats or let them roam free to have them generate their own.</p><p><iframe src="http://player.vimeo.com/video/27323966" width="500" height="375" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p><h2>Cross platform development</h2><p>Because NodeBeat was developed using the C++ based open source framework <a href="http://www.openframeworks.cc/">openFrameworks</a>, I did not expected a lot of trouble getting the core to work on Android. However, since the Android port of openFarmworks is still pretty new (we&#8217;re using the <a href="https://github.com/openframeworks/openFrameworks/tree/develop">development branch</a>) and officially only supported on the <a href="http://www.openframeworks.cc/setup/android-eclipse">Mac and Linux platforms</a>, I decided to put some effort into making it work on Windows as well. I&#8217;m a Windows user and developer, so if I can avoid dualbooting, I will <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p><h2>Native Development Kit</h2><p>As soon as you want to use C or C++ in your Android projects, you will have to install the <a href="http://developer.android.com/sdk/ndk/index.html">Native Development Kit</a> (NDK). It basically allows you to compile your code into a library which you can access using <a href="http://en.wikipedia.org/wiki/Java_Native_Interface">JNI calls</a>. While in general it is recommend to code using the <a href="http://developer.android.com/sdk/index.html">SDK in Java</a> for your Android projects (the Dalvik VM with JIT show really good performance), lazy coders (like me <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) are always trying to find ways to reuse existing code. Instead of having a native codebase for iOS (in Objective-C) and Android (in Java), it is nicer to have a shared core in C++ with a thin layer (Obj-C or Java) to interface with it. Sure the NDK might sound intimidating at first sight and Google doesnt recommend it unless you know what you&#8217;re doing, but honestly I don&#8217;t think its rocket science either. After downloading the NDK, you will need to setup a unix like environment such as <a href="http://www.mingw.org/">MinGW</a> or <a href="http://www.cygwin.com/">Cygwin</a>.</p><p>For my previous projects I already had MinGW installed (you could use Cygwin, but in general I don&#8217;t like their approach). I did a fresh <a href="https://github.com/openframeworks/openFrameworks/tree/develop">checkout from Github</a> and started to mess around with the Makefiles to see if it would compile.</p><p>It turned out that all I had to do is replacing a few IF statements (the ones that are checking the build platform) and make them point to the NDK location on my Windows computer. I&#8217;ve <a href="http://www.multigesture.net/articles/how-to-setup-openframeworks-for-android-on-windows/">created a tutorial</a> that explains the steps if you want to try it out yourself. However, if you want to use openFrameworks for your own Android applications, I would highly recommend just using my <a href="https://github.com/falcon4ever/openFrameworks">openFrameworks fork</a> instead (until they accept my pull request). It includes all the patches from the tutorial and it should be compatibly with the latest NDK. The <a href="http://www.multigesture.net/articles/how-to-setup-openframeworks-for-android-on-windows/">tutorial</a> actually also explains how to run one of the examples so be sure to check that out.</p><h2>Porting the GUI</h2><p>For the UI I wanted to stay as close to the iOS version as possible. As I don&#8217;t own an iOS device, Seth gave me some screenshots of NodeBeat running on iOS which I used as a reference.</p><p>Since the iOS and Android framework are quite distinct, there are cases where I had to do an alternative implementation. For example, on Android most devices have the following buttons:</p><ul><li>Back</li><li>Menu</li><li>Home</li><li>Search</li></ul><div>The iOS devices only have one button which brings you back to the home screen. In the original implementation of NodeBeat on iOS, there is a shortcut on the canvas that popup a menubar allowing you to access different option menus. On Android however we can use the <strong>options menu</strong> which allows us to control the flow of the application.</p><h3>Example: Menu bar</h3><p>So instead of writing the menu code in C++, I only had to create a <a href="http://developer.android.com/guide/topics/ui/menus.html#options-menu">XML file for the option menu</a>. It looks like this:</div><div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;menu</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/node&quot;</span></span>
<span style="color: #009900;">          <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/node_icon&quot;</span></span>
<span style="color: #009900;">          <span style="color: #000066;">android:title</span>=<span style="color: #ff0000;">&quot;Node&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/audio&quot;</span></span>
<span style="color: #009900;">          <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/audio_icon&quot;</span></span>
<span style="color: #009900;">          <span style="color: #000066;">android:title</span>=<span style="color: #ff0000;">&quot;Audio&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          ...
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div><div>Basically you define a unique id (this allows you to reference it in the Java source code), tell it which icon to use and give it a title. You need to do this for every entry, but apart from that, the Android framework will handle how to display it (depending on orientation and the number of menu items)</p><p>After the user touches the menu button on Android, it will popup the option menu:</p></div><p><img title="menu-ios" src="http://www.multigesture.net/wp-content/uploads/2011/11/menu-ios-152x300.png" alt="" width="152" height="300" /> <a href="http://www.multigesture.net/wp-content/uploads/2011/11/Arrow1.png"><img title="Arrow" src="http://www.multigesture.net/wp-content/uploads/2011/11/Arrow1.png" alt="" width="100" height="300" /></a> <img title="menu-android" src="http://www.multigesture.net/wp-content/uploads/2011/11/menu-android-180x300.png" alt="" width="180" height="300" /></p><h3>Example: Audio menu</h3><div>Other menu elements such as the popup menu for the Audio, Rhythm and Settings menu required a different approach. I could&#8217;ve switched Views on Android, but in my opinion that would be a bad UI design decision. The problem with this is that the user would be taken away from the NodeBeat activty. Instead I much more prefer to use the <a href="http://developer.android.com/guide/topics/ui/menus.html#context-menu">context menu</a> that the Android framework provides. This menu popups up and is placed over your current Activity.</p><p>While it is on the foreground, the activity in the background is still visible and continues running. Another benefit of this approach is that the user will get immediate feedback when adjusting the audio settings. As like the menu, this <a href="http://developer.android.com/guide/topics/ui/layout-objects.html">UI layout</a> is created entirely in XML.</div><p><img class="alignnone size-medium wp-image-2110" title="audiomenu-ios" src="http://www.multigesture.net/wp-content/uploads/2011/11/audiomenu-ios-153x300.png" alt="" width="153" height="300" /> <a href="http://www.multigesture.net/wp-content/uploads/2011/11/Arrow1.png"><img title="Arrow" src="http://www.multigesture.net/wp-content/uploads/2011/11/Arrow1.png" alt="" width="100" height="300" /></a> <img class="alignnone size-medium wp-image-2108" title="audiomenu-android" src="http://www.multigesture.net/wp-content/uploads/2011/11/audiomenu-android-180x300.png" alt="" width="180" height="300" /></p><h3>Example: Recording dialog</h3><div>In some cases the context menu might be a bit of overkill if you want to let the user decide on a question. For example, in the example below we want to inform the user how to record his NodeBeat creation. All we need is a simple dialog that either lets the user confirm the action or decline it. In such cases Android provides dialogs which can be build with an <a href="http://developer.android.com/guide/topics/ui/dialogs.html">AlertDialog.Builder</a></div><div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">AlertDialog.<span style="color: #006633;">Builder</span> builder <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> AlertDialog.<span style="color: #006633;">Builder</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
builder.<span style="color: #006633;">setMessage</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;You can stop recording by pressing the record button in the menu again&quot;</span><span style="color: #009900;">&#41;</span>
       .<span style="color: #006633;">setCancelable</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>
       .<span style="color: #006633;">setPositiveButton</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Yes&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> DialogInterface.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span>DialogInterface dialog, <span style="color: #000066; font-weight: bold;">int</span> id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #666666; font-style: italic;">// Start recording</span>
           <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
       .<span style="color: #006633;">setNegativeButton</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;No&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> DialogInterface.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span>DialogInterface dialog, <span style="color: #000066; font-weight: bold;">int</span> id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                dialog.<span style="color: #006633;">cancel</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Cancel dialog</span>
           <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
AlertDialog alert <span style="color: #339933;">=</span> builder.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
alert.<span style="color: #006633;">setTitle</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Start recording&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p><a href="http://www.multigesture.net/wp-content/uploads/2011/11/recording-ios.png"><img class="alignnone size-medium wp-image-2122" title="recording-ios" src="http://www.multigesture.net/wp-content/uploads/2011/11/recording-ios-152x300.png" alt="" width="152" height="300" /></a> <a href="http://www.multigesture.net/wp-content/uploads/2011/11/Arrow1.png"><img class="alignnone size-full wp-image-2119" title="Arrow" src="http://www.multigesture.net/wp-content/uploads/2011/11/Arrow1.png" alt="" width="100" height="300" /></a> <img class="alignnone size-medium wp-image-2123" style="border-style: initial; border-color: initial;" title="recording-android" src="http://www.multigesture.net/wp-content/uploads/2011/11/recording-android-180x300.png" alt="" width="180" height="300" /></p><h2>Using JNI Callbacks</h2><p>After we&#8217;ve ported the UI, we still need to pass on our settings to the core application. Fortunately we can use JNI callbacks to get and set NodeBeat&#8217;s properties. It is good to know that you should minimize the number of JNI callbacks for performance reasons (so don&#8217;t go mental and call tons of JNI methods each time you render a frame).</p><p>Let say we would like to pass a value from one of the sliders from the Audio context menu to our NodeBeat core. In such case we first create a new static method in our Java source file:</p><h3>OFActivity.java</h3><div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">native</span> <span style="color: #000066; font-weight: bold;">void</span> sliderChanged<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span> v<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>It is important to use the <code>static</code> and <code>native</code> keyword when you define your method. This is all we need to do in our java code and this method can be used anywhere in our java class.</p><p>Now the tricky part is how to implement the function on the C++ side of your application. It&#8217;s not exactly complex, but you will have to pay attention to a few details. Three things are important here:</p><ol><li>The namespace (in Java)</li><li>The class name</li><li>The method name</li></ol><p>If we assume we&#8217;re implementing this callback in one of the openFrameworks examples, this means:</p><ol><li>The namespace (in Java): cc.openframeworks.androidEmptyExample</li><li>The class name: OFActivity</li><li>The method name: sliderChanged</li></ol><h3>main.cpp</h3><p>Here is the code you implement in C++</p><div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;jni.h&gt;</span>
<span style="color: #0000ff;">extern</span> <span style="color: #FF0000;">&quot;C&quot;</span><span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">void</span> Java_cc_openframeworks_androidEmptyExample_OFActivity_sliderChanged <span style="color: #008000;">&#40;</span>JNIEnv<span style="color: #000040;">*</span>  env, jclass  thiz, jfloat value<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
<span style="color: #666666;">// Do smth here</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div><p>As ugly as this method looks like, take a brief look at how it is constructed. It starts with the return type (which is void just like how we specified it in Java). Next it starts with <code>Java_</code> and is succeeded by <code>the namespace</code>, <code>classname </code>, <code>method name</code>. All dots from the namespace are replaced by underscores and between each element we place an underscore as well.</p><p>In the arguments list, the &#8220;JNIEnv*  env, jclass  thiz&#8221; part is mandatory (so if you have a something like this: <code>public static native void methodname()</code>, it would <code>be void methodname(JNIEnv*  env, jclass  thiz)</code>). For our method we want to pass a float as argument. For some reasons you can&#8217;t just pass a float, you will need to use <a href="http://en.wikipedia.org/wiki/Java_Native_Interface#Mapping_types">JNI mapping types</a>. The float becomes a jfloat.<br /> Note: for booleans you need to compare the value to <strong>JNI_TRUE</strong> or <strong>JNI_FALSE</strong> and not to <strong>true</strong> or <strong>false</strong>.</p><h2>Honeycomb Tablets</h2><p>Unlike the iOS devices from Apple, Android devices run at so many <a href="http://developer.android.com/guide/practices/screens_support.html">different configurations</a> and API levels, it can be a bit tricky to support all of them. For NodeBeat we decided to create two versions: A phone version and tablet version. We basically distinguish between phones who are running Eclair or Gingerbread (2.2+) and tablets running Honeycomb (3.0). On the Android Market it seems like we only provide one version, but depending on what device you&#8217;re using to download the app, it will give you a <a href="http://developer.android.com/guide/practices/screens-distribution.html#MultiApks">certain version</a>.</p><p>In order to maximize the use of the display, I&#8217;m using this line in the AndroidManifest.xml file:</p><div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;">android:theme=&quot;@android:style/Theme.NoTitleBar.Fullscreen&quot;</pre></td></tr></table></div><p>On phones it sets the application to fullscreen. While this works for anything running Android 2.2+, it is a problem on Honeycomb devices. Honeycomb tablets don&#8217;t have any physical buttons and when the application is running in fullscreen mode, there is no shortcut to the menu button. This shortcut is normally placed in the top right corner.</p><p><a class="thickbox" title="Honeycomb's menu in the top right corner" href="http://www.multigesture.net/wp-content/uploads/2011/11/P20111010235419.png"><img class="alignnone size-medium wp-image-2102" title="P20111010235419" src="http://www.multigesture.net/wp-content/uploads/2011/11/P20111010235419-300x187.png" alt="" width="300" height="187" /></a></p><p>This means that for the tablet version, we run the application in regular display mode.<br /> Other than that, NodeBeat provides a rich user experience on tablet devices such as the XOOM or Asus transfomer.</p><p>Earbleeding masterpiece created by <a href="http://sharathpatali.wordpress.com/">Sharath Patali</a> (professional coder, horrific musician)<br /> <a class="thickbox" title="Earbleeding masterpiece created by Sharath Patali (professional coder, horrific musician)" href="http://www.multigesture.net/wp-content/uploads/2011/11/P20111011000238.png"><img class="alignnone size-medium wp-image-2101" title="P20111011000238" src="http://www.multigesture.net/wp-content/uploads/2011/11/P20111011000238-300x187.png" alt="" width="300" height="187" /></a></p><h2>Android Market</h2><p>Publishing the app to the Android market is no hassle at all (we were just a bit <a href="http://createdigitalmusic.com/2011/10/nodebeat-visual-sequencer-for-ios-android-built-with-free-tools-back-on-android-market/">unfortunate</a> and had our app pulled down by accident). There is no annual fee (just a one time 25$) and apps are approved instantly. The dev guide provides a <a href="http://developer.android.com/guide/publishing/publishing_overview.html">comprehensive overview</a> on how to build your project in release mode and how to sign it.</p><h2>Go get it!</h2><p><strong>NodeBeat is available on the Android market</strong>:<br /> <a href="https://market.android.com/details?id=com.AffinityBlue.NodeBeat">https://market.android.com/details?id=com.AffinityBlue.NodeBeat</a></p><p><strong>Try it out! It&#8217;s just a dollar</strong> <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Website: <a href="http://nodebeat.com/">http://nodebeat.com/</a><br /> Twitter: <a href="http://twitter.com/NodeBeat">http://twitter.com/NodeBeat</a></p> ]]></content:encoded> <wfw:commentRss>http://www.multigesture.net/2011/11/19/nodebeat-openframeworks-and-android/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>An introduction to emulation</title><link>http://www.multigesture.net/2011/03/29/an-introduction-to-emulation/</link> <comments>http://www.multigesture.net/2011/03/29/an-introduction-to-emulation/#comments</comments> <pubDate>Mon, 28 Mar 2011 22:35:32 +0000</pubDate> <dc:creator>Laurence Muller</dc:creator> <category><![CDATA[Application]]></category> <category><![CDATA[Blogroll]]></category> <category><![CDATA[Featured]]></category> <category><![CDATA[Howto]]></category> <category><![CDATA[application]]></category> <category><![CDATA[diy]]></category> <category><![CDATA[emulation]]></category> <category><![CDATA[hacking]]></category> <category><![CDATA[technology]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://www.multigesture.net/?p=1847</guid> <description><![CDATA[In the early 90s I primarly used my Commodore 64 (C64) for gaming. As Santa never gave us a Nintendo, I probably used my C64 until the late 90s. At that point I was introduced to the concept of emulators. Emulators are computer programs that allow you to run software that wasn&#8217;t designed for your [...]]]></description> <content:encoded><![CDATA[<p>In the early 90s I primarly used my <a href="http://www.youtube.com/watch?v=eY2gK1MPgh8">Commodore 64 (C64) for gaming</a>. As <a href="http://www.youtube.com/watch?v=a8q-elxC6gU">Santa never gave us a Nintendo</a>, I probably used my C64 until the late 90s. At that point I was introduced to the concept of emulators. Emulators are computer programs that allow you to run software that wasn&#8217;t designed for your computer platform. For example, with emulators you could run games from the NES or Sega Master System on PCs. Nowadays computers have enough resources to run games from modern consoles such as the <a href="http://www.dolphin-emulator.com/">Nintendo Gamecube/Wii</a> and <a href="http://pcsx2.net/">Playstation 2</a>.</p><p>Of course, there is always the debate whether it is legal to build an emulator. Console manufacturers will <a href="http://www.nintendo.com/corp/legal.jsp#emulator">always forbid</a> any type of emulation of their systems. Although its a rather grey area as most documents on the chip design are publicly available (e.g. MIPS / ARM instruction sets).</p><p><a class="thickbox" title="Space Invaders" href="http://www.multigesture.net/wp-content/uploads/2011/03/spaceinvaders.jpg"><img class="size-medium wp-image-1702 aligncenter" title="Space Invaders" src="http://www.multigesture.net/wp-content/uploads/2011/03/spaceinvaders-300x150.jpg" alt="" width="300" height="150" /></a></p><p>Since I got excited about emulation in general, I started to do some research on how to build one myself. As I didn&#8217;t want to spend days or even weeks to get some results, I looked for a simple system. A friend introduced me to a small system called the <a href="http://en.wikipedia.org/wiki/CHIP-8">Chip 8</a>.<br /> The Chip 8 itself didn&#8217;t existed as a hardware system, but was implemented in software. Due to the small instruction set (<a href="http://en.wikipedia.org/wiki/CHIP-8#Opcode_table">~30 opcodes</a>), it was a very good candidate to work on as a first emulation project. The instruction set defines the functionality of the CPU. It for example contains instructions that allow the CPU to load or store data, but also perform mathematical tasks such as multiplications.</p><p>Having worked on a couple of emulation projects (and emulator plugins), I started to write a guide that will hopefully help out aspiring emulator authors and inspire emulation enthusiast. The guide explains how emulators work and provides a detailed overview on how to write a Chip 8 interpreter from scratch.</p><p>Writing a Chip 8 emulator shouldn&#8217;t be too time consuming. On average people tend to finish such project in one or two days. It&#8217;s a fun project to test out your programming skills and of course quite educational (and it isn&#8217;t just for CS majors <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p><p>If you&#8217;re ready to take up the challenge, click the link below! Have fun!</p><ul><li><a href="http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/">How to write an emulator (CHIP-8 interpreter)</a></li></ul><p><a class="thickbox" title="Brix: a Breakout clone" href="http://www.multigesture.net/wp-content/uploads/2011/03/brix.jpg"><img class="size-medium wp-image-1699 aligncenter" title="Brix" src="http://www.multigesture.net/wp-content/uploads/2011/03/brix-300x150.jpg" alt="" width="300" height="150" /></a></p> ]]></content:encoded> <wfw:commentRss>http://www.multigesture.net/2011/03/29/an-introduction-to-emulation/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Two new howto’s added to the article section</title><link>http://www.multigesture.net/2007/09/30/two-new-howtos-added-to-the-article-section/</link> <comments>http://www.multigesture.net/2007/09/30/two-new-howtos-added-to-the-article-section/#comments</comments> <pubDate>Sun, 30 Sep 2007 14:36:17 +0000</pubDate> <dc:creator>Laurence Muller</dc:creator> <category><![CDATA[Howto]]></category> <category><![CDATA[Multitouch]]></category> <category><![CDATA[howto]]></category> <category><![CDATA[touchlib]]></category><guid isPermaLink="false">http://www.multigesture.net/2007/09/30/two-new-howtos-added-to-the-article-section/</guid> <description><![CDATA[I&#8217;ve posted two Howto&#8217;s on compiling touchlib in Windows (XP and Vista) and Linux (Ubuntu). Howto: Compile Touchlib in Windows Howto: Compile Touchlib in Linux Both compile instructions apply to subversion rev.73 of touchlib. If you followed the Howto&#8217;s and still have some trouble please post the problem in the comment section.]]></description> <content:encoded><![CDATA[<p>I&#8217;ve posted two Howto&#8217;s on compiling touchlib in Windows (XP and Vista) and Linux (Ubuntu).</p><p>Howto: <a href="http://www.multigesture.net/articles/touchlib-compiling-instructions/">Compile Touchlib in Windows</a><br /> Howto: <a href="http://www.multigesture.net/articles/touchlib-compiling-instructions-ubuntu/">Compile Touchlib in Linux </a></p><p>Both compile instructions apply to subversion rev.73 of touchlib. If you followed the Howto&#8217;s and still have some trouble please post the problem in the comment section.</p> ]]></content:encoded> <wfw:commentRss>http://www.multigesture.net/2007/09/30/two-new-howtos-added-to-the-article-section/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>It’s alive!</title><link>http://www.multigesture.net/2007/05/02/its-alive/</link> <comments>http://www.multigesture.net/2007/05/02/its-alive/#comments</comments> <pubDate>Wed, 02 May 2007 14:11:23 +0000</pubDate> <dc:creator>Laurence Muller</dc:creator> <category><![CDATA[Application]]></category> <category><![CDATA[Howto]]></category> <category><![CDATA[Multitouch]]></category> <category><![CDATA[multitouch]]></category> <category><![CDATA[showcase]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://www.multigesture.net/2007/05/02/its-alive/</guid> <description><![CDATA[It works! After the last blog not much had to be done about the FTIR screen. Actually I only used some tape to hide the wires on the sides. With all LED&#8217;s in place and the frame being placed on two chairs it was time to finally test the FTIR screen. All LED&#8217;s are fully [...]]]></description> <content:encoded><![CDATA[<p><strong>It works!</strong></p><p>After the last blog not much had to be done about the FTIR screen. Actually I only used some tape to hide the wires on the sides.<br /> With all LED&#8217;s in place and the frame being placed on two chairs it was time to finally test the FTIR screen.</p><p><strong>All LED&#8217;s are fully functioning <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> !</strong><br /> <a class="thickbox" title="Image1 (Medium).png" href="http://www.multigesture.net/wp-content/gallery/ftir_panel/Image1%20%28Medium%29.png"><img title="Image1 (Medium).png" src="http://www.multigesture.net/wp-content/gallery/ftir_panel/thumbs/thumbs_Image1%20%28Medium%29.png" alt="Image1 (Medium).png" /></a> <a class="thickbox" title="Image2 (Medium).png" href="http://www.multigesture.net/wp-content/gallery/ftir_panel/Image2%20%28Medium%29.png"><img title="Image2 (Medium).png" src="http://www.multigesture.net/wp-content/gallery/ftir_panel/thumbs/thumbs_Image2%20%28Medium%29.png" alt="Image2 (Medium).png" /></a></p><p><strong>Testing with 5 and 2 fingers&#8230;</strong><br /> <a class="thickbox" title="Image3 (Medium).png" href="http://www.multigesture.net/wp-content/gallery/ftir_panel/Image3%20%28Medium%29.png"><img title="Image3 (Medium).png" src="http://www.multigesture.net/wp-content/gallery/ftir_panel/thumbs/thumbs_Image3%20%28Medium%29.png" alt="Image3 (Medium).png" /></a> <a class="thickbox" title="Image4 (Medium).png" href="http://www.multigesture.net/wp-content/gallery/ftir_panel/Image4%20%28Medium%29.png"><img title="Image4 (Medium).png" src="http://www.multigesture.net/wp-content/gallery/ftir_panel/thumbs/thumbs_Image4%20%28Medium%29.png" alt="Image4 (Medium).png" /></a></p><p><strong>10 finger test:</strong><br /> <a class="thickbox" title="Image5 (Medium).png" href="http://www.multigesture.net/wp-content/gallery/ftir_panel/Image5%20%28Medium%29.png"><img title="Image5 (Medium).png" src="http://www.multigesture.net/wp-content/gallery/ftir_panel/thumbs/thumbs_Image5%20%28Medium%29.png" alt="Image5 (Medium).png" /></a></p><p>Video containing a summary of the project and some demo applications</p><p><object width="500" height="400"><param name="movie" value="http://www.youtube.com/v/Glp3tBF9kNY?fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Glp3tBF9kNY?fs=1" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object></p><p>To get the Touch Tracer tool (from the demo video) please click on read more.<br /> <span id="more-10"></span><br /> <em>Project description:</em><br /> Name: Touch Tracer<br /> Purpose: To display recognized blob&#8217;s and for debugging purpose</p><p><em>Install instructions:</em><br /> 1. Put all files (touch_tracer.exe and *.bat files) in the same dir as touchlib.dll<br /> 2. Either run the bat files or edit them.<br /> touch_tracer.exe requires 4 arguments: width height bitdepth refreshrate<br /> example: touch_tracer.exe 1024 768 32 60</p><p><strong>General note, as the readme.txt states, this application needs libraries of visual studio 2005. </strong>If you don&#8217;t have those, you will be prompt with an error message.</p><p><em>Todo:</em><br /> 1. Show the path of a tracked blob and let it fade away over time.</p><p><em>Download:</em><br /> <a title="Touch Tracer v0.1 Binary" href="http://www.multigesture.net/wp-content/uploads/2007/09/touch_tracer_v01.zip">Touch Tracer v0.1 Binary</a></p><p><em>Optional downloads</em><br /> <a title="Visual Studio 2005 SP1 Redist. Package" href="http://www.multigesture.net/wp-content/uploads/2007/09/vc2k5_sp1_x86_redist.zip">Visual Studio 2005 SP1 Redist. Package</a> (URL Offline)<br /> <strong>Entire package if the one above fails -&gt; Get it from <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&amp;displaylang=en">microsoft</a></strong></p> ]]></content:encoded> <wfw:commentRss>http://www.multigesture.net/2007/05/02/its-alive/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Let there be light</title><link>http://www.multigesture.net/2007/05/01/let-there-be-light/</link> <comments>http://www.multigesture.net/2007/05/01/let-there-be-light/#comments</comments> <pubDate>Tue, 01 May 2007 14:10:45 +0000</pubDate> <dc:creator>Laurence Muller</dc:creator> <category><![CDATA[Howto]]></category> <category><![CDATA[Multitouch]]></category> <category><![CDATA[multitouch]]></category> <category><![CDATA[showcase]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://www.multigesture.net/2007/05/01/let-there-be-light/</guid> <description><![CDATA[In this final step of building the FTIR prototype I will cover the soldering of LEDs. In my previous blog post I already calculated that 30 LED&#8217;s would be enough to cover the entire plate. As power source for my LED&#8217;s I will be using a 12V DC Adapter (1000 mA). To calculate the LED [...]]]></description> <content:encoded><![CDATA[<p>In this final step of building the FTIR prototype I will cover the soldering of LEDs.<br /> In my previous blog post I already calculated that 30 LED&#8217;s would be enough to cover the entire plate.<br /> <a class="thickbox" title="IMG_0097 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0097%20%28Medium%29.jpg"><img title="IMG_0097 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0097%20%28Medium%29.jpg" alt="IMG_0097 (Medium).jpg" /></a></p><p>As power source for my LED&#8217;s I will be using a 12V DC Adapter (1000 mA).<br /> To calculate the LED array and the amount of needed resistors I used an internet tool the <a title="LED Wizard" href="http://led.linear1.org/led.wiz">LED Wizard</a>.</p><p>According to the wizard I should create 5 array&#8217;s of LED&#8217;s. Each array should contain 6 LED&#8217;s and one resistor of 68 ohms.<br /> <span class="thickbox"><img title="led1.png" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/led1.png" alt="led1.png" /></span></p><p>Click the link below to continue reading.<br /> <span id="more-9"></span><br /> <strong>Needed equipment:</strong><br /> - Workbench<br /> - Soldering iron<br /> - Solder<br /> - Wires and resistors<br /> - Needle-nose pliers<br /> - A steady hand<br /> - Toilet paper!</p><p><strong>Bending!</strong><br /> First you should bend the legs of the IR LED&#8217;s. I would recommend using Needle-nose pliers to prevent breaking a leg. Also don&#8217;t bend it more than once.<br /> <a class="thickbox" title="IMG_0100 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0100%20%28Medium%29.jpg"><img title="IMG_0100 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0100%20%28Medium%29.jpg" alt="IMG_0100 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0102 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0102%20%28Medium%29.jpg"><img title="IMG_0102 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0102%20%28Medium%29.jpg" alt="IMG_0102 (Medium).jpg" /></a></p><p>Be sure to check the holes you drilled, you really don&#8217;t want to get them stuck in there. To prevent the LED&#8217;s from being damaged, you should make them a bit larger than the diameter of your LED.<br /> <a class="thickbox" title="IMG_0103 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0103%20%28Medium%29.jpg"><img title="IMG_0103 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0103%20%28Medium%29.jpg" alt="IMG_0103 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0105 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0105%20%28Medium%29.jpg"><img title="IMG_0105 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0105%20%28Medium%29.jpg" alt="IMG_0105 (Medium).jpg" /></a></p><p><strong>Soldering</strong><br /> Well I didn&#8217;t made much photo&#8217;s during soldering. But some general hints, don&#8217;t heat the legs of the IR LED&#8217;s too long because you probably end up melting the LED. Also whenever possible you should try soldering on some plate instead of what I did&#8230; soldering inside the small frame. However it makes it twice as challenging though <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .<br /> After soldering 3 sides, it&#8217;s time to put in the acrylic plate. You might want to use some toilet paper to keep the acrylic plate centered (The acrylic plate should not be touching the LED&#8217;s). Now closed the frame and continue soldering!<br /> <a class="thickbox" title="IMG_0106 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0106%20%28Medium%29.jpg"><img title="IMG_0106 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0106%20%28Medium%29.jpg" alt="IMG_0106 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0107 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0107%20%28Medium%29.jpg"><img title="IMG_0107 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0107%20%28Medium%29.jpg" alt="IMG_0107 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0108 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0108%20%28Medium%29.jpg"><img title="IMG_0108 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0108%20%28Medium%29.jpg" alt="IMG_0108 (Medium).jpg" /></a></p><p><a class="thickbox" title="IMG_0109 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0109%20%28Medium%29.jpg"><img title="IMG_0109 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0109%20%28Medium%29.jpg" alt="IMG_0109 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0110 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0110%20%28Medium%29.jpg"><img title="IMG_0110 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0110%20%28Medium%29.jpg" alt="IMG_0110 (Medium).jpg" /></a></p><p>Almost done, just need to attach the power plug&#8230;<br /> <a class="thickbox" title="IMG_0111 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0111%20%28Medium%29.jpg"><img title="IMG_0111 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0111%20%28Medium%29.jpg" alt="IMG_0111 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0113 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0113%20%28Medium%29.jpg"><img title="IMG_0113 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0113%20%28Medium%29.jpg" alt="IMG_0113 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0114 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0114%20%28Medium%29.jpg"><img title="IMG_0114 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0114%20%28Medium%29.jpg" alt="IMG_0114 (Medium).jpg" /></a></p><p><strong>A new FTIR screen born&#8230;</strong><br /> <a class="thickbox" title="IMG_0122 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/mounting_leds/IMG_0122%20%28Medium%29.jpg"><img title="IMG_0122 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/mounting_leds/thumbs/thumbs_IMG_0122%20%28Medium%29.jpg" alt="IMG_0122 (Medium).jpg" /></a></p><p>Coming up: First tests on the FTIR screen&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://www.multigesture.net/2007/05/01/let-there-be-light/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Aluminum frames</title><link>http://www.multigesture.net/2007/05/01/aluminum-frames/</link> <comments>http://www.multigesture.net/2007/05/01/aluminum-frames/#comments</comments> <pubDate>Tue, 01 May 2007 14:09:04 +0000</pubDate> <dc:creator>Laurence Muller</dc:creator> <category><![CDATA[Howto]]></category> <category><![CDATA[Multitouch]]></category> <category><![CDATA[multitouch]]></category> <category><![CDATA[showcase]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://www.multigesture.net/2007/09/09/aluminum-frames/</guid> <description><![CDATA[Inspired by other FTIR prototypes I decided to use an aluminum frame. The main reasons for are because its cheap and strong. Before actually working on the frame, I made a drawing in AutoCAD. Within this drawing I could easily calculate the amount of IR LED&#8217;s I would need and at the same time see [...]]]></description> <content:encoded><![CDATA[<p>Inspired by other FTIR prototypes I decided to use an aluminum frame. The main reasons for are because its cheap and strong.</p><p><a class="thickbox" title="IMG_0084 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0084%20%28Medium%29.jpg"><img title="IMG_0084 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0084%20%28Medium%29.jpg" alt="IMG_0084 (Medium).jpg" /></a></p><p>Before actually working on the frame, I made a drawing in AutoCAD. Within this drawing I could easily calculate the amount of IR LED&#8217;s I would need and at the same time see how the IR light beams would spread.</p><p><a class="thickbox" title="ftir-drawing1.png" href="http://www.multigesture.net/wp-content/gallery/alu_frame/ftir-drawing1.png"><img title="ftir-drawing1.png" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_ftir-drawing1.png" alt="ftir-drawing1.png" /></a><br /> <a title="FTIR Prototype Drawing" href="http://www.multigesture.net/wp-content/uploads/2007/09/ftir-drawing1.pdf">FTIR Prototype Drawing</a></p><p>The local tool shop was friendly enough to cut the aluminum frame (H shaped) into the sizes of my drawing.<br /> So at home I just needed to remove the edges in 45 degrees.</p><p>Click the link below to continue reading.<br /> <span id="more-8"></span><br /> <strong>Needed equipment:</strong><br /> - Saw (for aluminum/iron)<br /> - Mitre Block<br /> - Clamp<br /> - Workbench<br /> - Drill<br /> - Drill bits (multiple sizes)<br /> - Punch<br /> - Hand-file</p><p>First I mounted the aluminum frame in a Mitre Block. To prevent it from moving during sawing, I used a clamp.<br /> <a class="thickbox" title="IMG_0077 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0077%20%28Medium%29.jpg"><img title="IMG_0077 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0077%20%28Medium%29.jpg" alt="IMG_0077 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0078 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0078%20%28Medium%29.jpg"><img title="IMG_0078 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0078%20%28Medium%29.jpg" alt="IMG_0078 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0079 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0079%20%28Medium%29.jpg"><img title="IMG_0079 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0079%20%28Medium%29.jpg" alt="IMG_0079 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0080 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0080%20%28Medium%29.jpg"><img title="IMG_0080 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0080%20%28Medium%29.jpg" alt="IMG_0080 (Medium).jpg" /></a></p><p>After sawing, I used a Hand-file to smoothen the edges. It fits nice:<br /> <a class="thickbox" title="IMG_0081 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0081%20%28Medium%29.jpg"><img title="IMG_0081 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0081%20%28Medium%29.jpg" alt="IMG_0081 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0083 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0083%20%28Medium%29.jpg"><img title="IMG_0083 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0083%20%28Medium%29.jpg" alt="IMG_0083 (Medium).jpg" /></a></p><p>Next step is drilling holes for the LED&#8217;s. Before drilling I used a Punch to make sure the Drill won&#8217;t shift during drilling.You could start with a small Drill bit but I just started with <em>3.5</em> mm and after that I used <em>5</em> mm (which is the size of my LED&#8217;s).<br /> <a class="thickbox" title="IMG_0086 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0086%20%28Medium%29.jpg"><img title="IMG_0086 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0086%20%28Medium%29.jpg" alt="IMG_0086 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0090 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0090%20%28Medium%29.jpg"><img title="IMG_0090 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0090%20%28Medium%29.jpg" alt="IMG_0090 (Medium).jpg" /></a></p><p>Almost done&#8230;<br /> <a class="thickbox" title="IMG_0092 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0092%20%28Medium%29.jpg"><img title="IMG_0092 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0092%20%28Medium%29.jpg" alt="IMG_0092 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0093 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0093%20%28Medium%29.jpg"><img title="IMG_0093 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0093%20%28Medium%29.jpg" alt="IMG_0093 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0094 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0094%20%28Medium%29.jpg"><img title="IMG_0094 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0094%20%28Medium%29.jpg" alt="IMG_0094 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0095 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0095%20%28Medium%29.jpg"><img title="IMG_0095 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0095%20%28Medium%29.jpg" alt="IMG_0095 (Medium).jpg" /></a></p><p>To keep the parts into place I used a construction like this:<br /> <a class="thickbox" title="IMG_0123 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0123%20%28Medium%29.jpg"><img title="IMG_0123 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0123%20%28Medium%29.jpg" alt="IMG_0123 (Medium).jpg" /></a></p><p>Next time I&#8217;ll cover soldering the LED&#8217;s&#8230;</p><div class="ngg-galleryoverview" id="ngg-gallery-5-8"><div class="slideshowlink"> <a class="slideshowlink" href="http://www.multigesture.net/2007/05/01/aluminum-frames/?show=slide"> [Show as slideshow] </a></div><div id="ngg-image-67" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0092 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0092 (Medium).jpg" alt="IMG_0092 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0092 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-68" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0093 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0093 (Medium).jpg" alt="IMG_0093 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0093 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-69" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0095 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0095 (Medium).jpg" alt="IMG_0095 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0095 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-70" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0083 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0083 (Medium).jpg" alt="IMG_0083 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0083 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-71" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0078 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0078 (Medium).jpg" alt="IMG_0078 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0078 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-72" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0082 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0082 (Medium).jpg" alt="IMG_0082 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0082 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-73" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0123 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0123 (Medium).jpg" alt="IMG_0123 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0123 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-74" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0090 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0090 (Medium).jpg" alt="IMG_0090 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0090 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-75" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0085 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0085 (Medium).jpg" alt="IMG_0085 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0085 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-76" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0096 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0096 (Medium).jpg" alt="IMG_0096 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0096 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-77" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0077 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0077 (Medium).jpg" alt="IMG_0077 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0077 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-78" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0080 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0080 (Medium).jpg" alt="IMG_0080 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0080 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-79" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0081 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0081 (Medium).jpg" alt="IMG_0081 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0081 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-80" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0084 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0084 (Medium).jpg" alt="IMG_0084 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0084 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-81" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0086 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0086 (Medium).jpg" alt="IMG_0086 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0086 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-82" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0079 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0079 (Medium).jpg" alt="IMG_0079 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0079 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-83" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/IMG_0094 (Medium).jpg" title=" " class="thickbox" rel="set_5" > <img title="IMG_0094 (Medium).jpg" alt="IMG_0094 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_IMG_0094 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-84" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/alu_frame/ftir-drawing1.png" title=" " class="thickbox" rel="set_5" > <img title="ftir-drawing1.png" alt="ftir-drawing1.png" src="http://www.multigesture.net/wp-content/gallery/alu_frame/thumbs/thumbs_ftir-drawing1.png" width="100" height="75" /> </a></div></div><div class='ngg-clear'></div></div>]]></content:encoded> <wfw:commentRss>http://www.multigesture.net/2007/05/01/aluminum-frames/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>One acrylic plate, one afternoon and one tired arm</title><link>http://www.multigesture.net/2007/04/21/one-acrylic-plate-one-afternoon-and-one-tired-arm/</link> <comments>http://www.multigesture.net/2007/04/21/one-acrylic-plate-one-afternoon-and-one-tired-arm/#comments</comments> <pubDate>Sat, 21 Apr 2007 14:06:57 +0000</pubDate> <dc:creator>Laurence Muller</dc:creator> <category><![CDATA[Howto]]></category> <category><![CDATA[Multitouch]]></category> <category><![CDATA[multitouch]]></category> <category><![CDATA[showcase]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://www.multigesture.net/2007/09/09/one-acrylic-plate-one-afternoon-and-one-tired-arm/</guid> <description><![CDATA[The FTIR prototype which I am building will be using an acrylic plate which will be mounted in a frame. I tried to maintain the aspect ratio of a regular screen (4:3). The size of the plate is 41 x 31 cm and about 8 mm thick. The actual area which will be captured is [...]]]></description> <content:encoded><![CDATA[<p>The FTIR prototype which I am building will be using an acrylic plate which will be mounted in a frame.</p><p>I tried to maintain the aspect ratio of a regular screen (4:3). The size of the plate is 41 x 31 cm and about 8 mm thick. The actual area which will be captured is 40 x 30 cm.</p><p>Two days after ordering the acrylic plate I received it in a nice package:<br /> <a class="thickbox" title="IMG_0020 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0020%20%28Medium%29.jpg"><img title="IMG_0020 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0020%20%28Medium%29.jpg" alt="IMG_0020 (Medium).jpg" /></a></p><p>In the image below we can see the plate has been cut roughly.<br /> <a class="thickbox" title="IMG_0022 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0022%20%28Medium%29.jpg"><img title="IMG_0022 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0022%20%28Medium%29.jpg" alt="IMG_0022 (Medium).jpg" /></a><br /> (The plate looks a bit blue but thats due the colour of the protective layer)</p><p>Because we want to beam IR light into the sides of the acrylic plate, it is necersaily to polish the sides.</p><p>Click the link below to continue reading about how to treat the acrylic plate.<br /> <span id="more-7"></span><br /> <strong>Needed equipment:</strong><br /> - (Wet) sandpaper of the following grit sizes:<br /> P320 (I used Norton T223 / P320 / Very Fine)<br /> P800A (I used Auto-paper P800A / Super fine)<br /> P1200A (I used Auto-paper P1200A / Super fine)<br /> - Brasso<br /> - Old cloth<br /> - Some old newspapers<br /> - A bucket of water<br /> - A lot of Patience! (Really!)</p><p><strong>General hint</strong>: If you order an acrylic plate, ask your supplier to finish off the edges as smooth as possible.</p><p><strong>Polishing step by step</strong><br /> Depending on the state of the edges you should decide how many different types of sandpaper you want to use.<br /> <a class="thickbox" title="IMG_0021 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0021%20%28Medium%29.jpg"><img title="IMG_0021 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0021%20%28Medium%29.jpg" alt="IMG_0021 (Medium).jpg" /></a><br /> In my case I started with the P320. Since this is &#8220;wet&#8221; sandpaper you need to soak it in a bucket of water before you can use it! Continue polishing the edges until no scratches of the cutting machines are visible anymore.</p><p>After a quick first polish with P320 it should look a bit like this:<br /> <a class="thickbox" title="IMG_0044 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0044%20%28Medium%29.jpg"><img title="IMG_0044 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0044%20%28Medium%29.jpg" alt="IMG_0044 (Medium).jpg" /></a></p><p>If (almost) no scratches are visible, continue using P800A<br /> <a class="thickbox" title="IMG_0050 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0050%20%28Medium%29.jpg"><img title="IMG_0050 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0050%20%28Medium%29.jpg" alt="IMG_0050 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0055 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0055%20%28Medium%29.jpg"><img title="IMG_0055 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0055%20%28Medium%29.jpg" alt="IMG_0055 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0062 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0062%20%28Medium%29.jpg"><img title="IMG_0062 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0062%20%28Medium%29.jpg" alt="IMG_0062 (Medium).jpg" /></a></p><p>Just do the edges several times, after this continue with P1200A for a while<br /> <a class="thickbox" title="IMG_0063 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0063%20%28Medium%29.jpg"><img title="IMG_0063 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0063%20%28Medium%29.jpg" alt="IMG_0063 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0067 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0067%20%28Medium%29.jpg"><img title="IMG_0067 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0067%20%28Medium%29.jpg" alt="IMG_0067 (Medium).jpg" /></a></p><p>To make it all nice and shiny we use the good old Brasso:<br /> <a class="thickbox" title="PICT0579 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/PICT0579%20%28Medium%29.jpg"><img title="PICT0579 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_PICT0579%20%28Medium%29.jpg" alt="PICT0579 (Medium).jpg" /></a><br /> Pour some Brasso on a cloth and start wiping the edges.</p><p>After doing the sides multiple times, it is time to view the result:<br /> <a class="thickbox" title="IMG_0073 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0073%20%28Medium%29.jpg"><img title="IMG_0073 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0073%20%28Medium%29.jpg" alt="IMG_0073 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0074 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0074%20%28Medium%29.jpg"><img title="IMG_0074 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0074%20%28Medium%29.jpg" alt="IMG_0074 (Medium).jpg" /></a><br /> As an example object I took an old guitar string package. You should be able to see &#8220;Electric Guitar Strings&#8221; in it (a bit mirrored though).</p><p><strong>Shipping + Lazyness = &#8230; !</strong><br /> In my case the local tool shop did not had acrylic plates which where thick enough (at max 4 mm, and I needed at least 8 mm), so I had to order it online. No big deal though. At the time of delivery no body was home, however it seems that the postman did not felt like returning for the second time, so he left the following note:<br /> <a class="thickbox" title="vrachtbrief2 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/vrachtbrief2%20%28Medium%29.jpg"><img title="vrachtbrief2 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_vrachtbrief2%20%28Medium%29.jpg" alt="vrachtbrief2 (Medium).jpg" /></a><br /> Translation: <strong>NOTE!: Behind green garbage bin</strong></p><p><strong>&gt;_&lt;</strong> Like wtf? He left it outside! Thank god my neighborhood is a safe place, it could easily have been stolen &#8230;</p><p><strong>To be continued</strong><br /> If you made it to this state, your arm is probably hurting from polishing <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> &#8230;<br /> take a break and see you next time!</p><div class="ngg-galleryoverview" id="ngg-gallery-6-7"><div class="slideshowlink"> <a class="slideshowlink" href="http://www.multigesture.net/2007/04/21/one-acrylic-plate-one-afternoon-and-one-tired-arm/?show=slide"> [Show as slideshow] </a></div><div id="ngg-image-85" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0046 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0046 (Medium).jpg" alt="IMG_0046 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0046 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-86" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0021 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0021 (Medium).jpg" alt="IMG_0021 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0021 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-87" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0064 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0064 (Medium).jpg" alt="IMG_0064 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0064 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-88" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0058 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0058 (Medium).jpg" alt="IMG_0058 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0058 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-89" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0049 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0049 (Medium).jpg" alt="IMG_0049 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0049 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-90" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0065 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0065 (Medium).jpg" alt="IMG_0065 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0065 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-91" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0051 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0051 (Medium).jpg" alt="IMG_0051 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0051 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-92" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0045 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0045 (Medium).jpg" alt="IMG_0045 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0045 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-93" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0052 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0052 (Medium).jpg" alt="IMG_0052 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0052 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-94" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/vrachtbrief2 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="vrachtbrief2 (Medium).jpg" alt="vrachtbrief2 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_vrachtbrief2 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-95" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0066 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0066 (Medium).jpg" alt="IMG_0066 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0066 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-96" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0068 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0068 (Medium).jpg" alt="IMG_0068 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0068 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-97" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0020 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0020 (Medium).jpg" alt="IMG_0020 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0020 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-98" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0061 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0061 (Medium).jpg" alt="IMG_0061 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0061 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-99" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0067 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0067 (Medium).jpg" alt="IMG_0067 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0067 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-100" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0023 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0023 (Medium).jpg" alt="IMG_0023 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0023 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-101" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0060 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0060 (Medium).jpg" alt="IMG_0060 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0060 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-102" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0062 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0062 (Medium).jpg" alt="IMG_0062 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0062 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-103" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0047 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0047 (Medium).jpg" alt="IMG_0047 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0047 (Medium).jpg" width="100" height="75" /> </a></div></div><div id="ngg-image-104" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0059 (Medium).jpg" title=" " class="thickbox" rel="set_6" > <img title="IMG_0059 (Medium).jpg" alt="IMG_0059 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0059 (Medium).jpg" width="100" height="75" /> </a></div></div><div class='ngg-navigation'><span class="current">1</span><a class="page-numbers" href="http://www.multigesture.net/2007/04/21/one-acrylic-plate-one-afternoon-and-one-tired-arm/?nggpage=2">2</a><a class="next" id="ngg-next-2" href="http://www.multigesture.net/2007/04/21/one-acrylic-plate-one-afternoon-and-one-tired-arm/?nggpage=2">&#9658;</a></div></div>]]></content:encoded> <wfw:commentRss>http://www.multigesture.net/2007/04/21/one-acrylic-plate-one-afternoon-and-one-tired-arm/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Enjoy the view</title><link>http://www.multigesture.net/2007/04/20/enjoy-the-view/</link> <comments>http://www.multigesture.net/2007/04/20/enjoy-the-view/#comments</comments> <pubDate>Fri, 20 Apr 2007 13:42:36 +0000</pubDate> <dc:creator>Laurence Muller</dc:creator> <category><![CDATA[Howto]]></category> <category><![CDATA[Multitouch]]></category> <category><![CDATA[multitouch]]></category> <category><![CDATA[showcase]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://www.multigesture.net/2007/04/20/enjoy-the-view/</guid> <description><![CDATA[For the past several days, I have received parts for constructing my touchscreen prototype which is based on Frustrated Total Internal Reflection (FTIR). Today I will cover how the lens of the Philips webcam can be dismounted and replaced by one without an infrared (IR) blocking filter. Most consumer webcams contain an IR filter which [...]]]></description> <content:encoded><![CDATA[<p>For the past several days, I have received parts for constructing my touchscreen prototype which is based on <a title="Frustrated Total Internal Reflection (FTIR)" href="http://cs.nyu.edu/~jhan/ftirsense/">Frustrated Total Internal Reflection (FTIR)</a>.</p><p>Today I will cover how the lens of the Philips webcam can be dismounted and replaced by one without an infrared (IR) blocking filter.</p><p>Most consumer webcams contain an IR filter which will prevent IR light coming through. This is done to prevent image distortion. However in our case we want to capture the IR light. On some webcams it&#8217;s possible to remove the IR filter (which is behind the lens and often has a red colour). With our current webcam from Philips this isn&#8217;t possible. Therefor a new camera lens has been ordered on eBay.<br /> <a class="thickbox" title="img_0025.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0025.jpg"><img title="img_0025.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0025.jpg" alt="img_0025.jpg" /></a> <a class="thickbox" title="img_0026.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0026.jpg"><img title="img_0026.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0026.jpg" alt="img_0026.jpg" /></a> <a class="thickbox" title="img_0027.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0027.jpg"><img title="img_0027.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0027.jpg" alt="img_0027.jpg" /></a><br /> It was called &#8220;4.3MM 4.3 MM CCTV Camera board Lens IR DVR NEW&#8221;</p><p>Some specifications of the new camera lens:<br /> * Glass Lens<br /> * Focal length: 4.3 mm<br /> * Aperture F/1.8<br /> * Image format 1/3 inch<br /> * Angel of view 68Â°<br /> * Mount M12 x P0.5<br /> * Size ?14Ã—14.75</p><p>Click the link below to continue reading about how to replace the camera lens.<br /> <span id="more-6"></span><br /> <strong>Needed equipment:</strong><br /> - A screwdriver or a swiss knife<br /> - A steady hand<br /> - Some patience<br /> <a class="thickbox" title="img_0028.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0028.jpg"><img title="img_0028.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0028.jpg" alt="img_0028.jpg" /></a><br /> <strong>Obviously by following the next steps your product warranty will be over&#8230; don&#8217;t say I didn&#8217;t warned you&#8230; but who cares <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </strong></p><p><strong>Step 1: Turn it</strong><br /> Because we don&#8217;t want to take the whole camera apart, we will start by removing the lens adjuster (normally used to focus manually).</p><p>First turn the lens adjuster counter clockwise untill it won&#8217;t go any further. If you feel like it&#8217;s being stuck, try a bit harder untill you have something similar as the image below:<br /> <a class="thickbox" title="img_0029.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0029.jpg"><img title="img_0029.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0029.jpg" alt="img_0029.jpg" /></a></p><p><strong>Step 2: Removing the lens adjuster.</strong><br /> Now there should be enough space to put a screwdriver in the gap.<br /> <a class="thickbox" title="img_0031.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0031.jpg"><img title="img_0031.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0031.jpg" alt="img_0031.jpg" /></a></p><p>You should now be able to take the lens adjuster off. You could do it <a title="nice and gently" href="http://www.robertreeves.com/900NC.htm">nice and gently</a>, but in my case I broke a few parts of it <img src='http://www.multigesture.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Not something to worry about though.<br /> <a class="thickbox" title="img_0033.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0033.jpg"><img title="img_0033.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0033.jpg" alt="img_0033.jpg" /></a><a class="thickbox" title="IMG_0033 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/IMG_0033%20%28Medium%29.jpg"><br /> </a></p><p>You can cleary see the CCD sensor:<br /> <a class="thickbox" title="img_0037.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0037.jpg"><img title="img_0037.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0037.jpg" alt="img_0037.jpg" /></a></p><p><strong>Step 3: Mount the new lens.</strong><br /> Finally you should be able to mount the new lens. This might be tricky if you got large fingers. You might want to use the lens adjuster as a tool to mount it.<br /> <a class="thickbox" title="img_0040.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0040.jpg"><img title="img_0040.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0040.jpg" alt="img_0040.jpg" /></a></p><p><strong>Some extra images</strong><br /> The old (left) and the new (right) lens:<br /> <a class="thickbox" title="img_0038.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0038.jpg"><img title="img_0038.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0038.jpg" alt="img_0038.jpg" /></a> <a class="thickbox" title="img_0039.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0039.jpg"><img title="img_0039.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0039.jpg" alt="img_0039.jpg" /></a></p><p>The IR filter on the old lens:<br /> <a class="thickbox" title="img_0041.jpg" href="http://www.multigesture.net/wp-content/gallery/camera_mod/img_0041.jpg"><img title="img_0041.jpg" src="http://www.multigesture.net/wp-content/gallery/camera_mod/thumbs/thumbs_img_0041.jpg" alt="img_0041.jpg" /></a></p><p><strong>The next blog entry will be about how to polish the acrylic plate. </strong><br /> <a class="thickbox" title="IMG_0020 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0020%20%28Medium%29.jpg"><img title="IMG_0020 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0020%20%28Medium%29.jpg" alt="IMG_0020 (Medium).jpg" /></a> <a class="thickbox" title="IMG_0022 (Medium).jpg" href="http://www.multigesture.net/wp-content/gallery/acrylic_plate/IMG_0022%20%28Medium%29.jpg"><img title="IMG_0022 (Medium).jpg" src="http://www.multigesture.net/wp-content/gallery/acrylic_plate/thumbs/thumbs_IMG_0022%20%28Medium%29.jpg" alt="IMG_0022 (Medium).jpg" /></a></p> ]]></content:encoded> <wfw:commentRss>http://www.multigesture.net/2007/04/20/enjoy-the-view/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 7/29 queries in 0.121 seconds using disk: basic
Object Caching 1687/1716 objects using disk: basic

Served from: www.multigesture.net @ 2012-02-04 06:38:05 -->
