<?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>conceptual inertia</title>
	<atom:link href="http://www.conceptualinertia.net/aoakenfo/feed" rel="self" type="application/rss+xml" />
	<link>http://www.conceptualinertia.net/aoakenfo</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 25 Feb 2009 07:42:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>patch 8</title>
		<link>http://www.conceptualinertia.net/aoakenfo/patch-8</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/patch-8#comments</comments>
		<pubDate>Wed, 25 Feb 2009 07:41:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=486</guid>
		<description><![CDATA[As I wade through the tutorials, I stumble upon objects that appear quite handy, like the js object. The js object could have vastly simplified my development of patch 7. How so? Well, like this:

Ahh&#8230;so much cleaner than the mess I had before. Modifying the Java code to Javascript was trivial, here&#8217;s the code for [...]]]></description>
			<content:encoded><![CDATA[<p>As I wade through the tutorials, I stumble upon objects that appear quite handy, like the js object. The js object could have vastly simplified my development of <a href="http://www.conceptualinertia.net/aoakenfo/patch-7">patch 7</a>. How so? Well, like this:</p>
<p><img class="alignnone size-full wp-image-488" title="js" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/js.jpg" alt="js" width="347" height="290" /></p>
<p>Ahh&#8230;so much cleaner than the mess I had before. Modifying the Java code to Javascript was trivial, here&#8217;s the code for sketch0.js:</p>
<pre>outlets = 0;

// global vars
var offset = 20.0;
var radius = 50.0;
var centerX = 50.0;
var centerY = 50.0;
var x = 0.0;
var y = 0.0;
var angle = 0.0;
var frequency = 2.0;
var counter = 0;
var coordsX = new Array(180);
var coordsY = new Array(180);

function bang()
{
    draw();
}

function radians(angle)
{
    return angle * Math.PI / 180;
}

function draw()
{
    outlet(0, "clear");

    // calculate point
    x = centerX + Math.cos(radians(angle)) * radius;
    y = centerY + Math.sin(radians(angle)) * radius;

    // draw black circle
    outlet(0, "paintoval", offset, offset, radius*2+offset, radius*2+offset, 0, 0, 0);

    // draw red circle (10 pixels in diameter)
    outlet(0, "paintoval", x+offset-5, y+offset-5, x+offset+5, y+offset+5, 255, 0, 0);

    // draw green circle
    outlet(0,
              "paintoval",
              centerX+radius+counter+offset-5,
              y+offset-5,
              centerX+radius+counter+offset+5,
              y+offset+5,
              0, 255, 0);

    // draw prev point
    for(var i = 0; i &lt; counter; ++i)
        outlet(0, "setpixel", coordsX[i], coordsY[i], 0, 0, 0);

    // cache prev point
    coordsX[counter] = centerX + radius + counter + offset;
    coordsY[counter] = y + offset;

    // adjust counter and angle
    ++counter;
    angle -= frequency;
    if(angle &lt;= -360)
    {
        angle = 0;
        counter = 0;
    }
}</pre>
<p><br/><br />
Another possiblity is to swap the lcd object out in favour of jsui, but let&#8217;s not get carried away.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/patch-8/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sketch 1</title>
		<link>http://www.conceptualinertia.net/aoakenfo/sketch-1</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/sketch-1#comments</comments>
		<pubDate>Mon, 02 Feb 2009 01:14:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=440</guid>
		<description><![CDATA[The goal: use the sliders on my MIDI keyboard to control corresponding sliders in Processing. Here&#8217;s a screenshot of the resulting demo that maps 3 sliders to variables used in Examples/Basics/Arrays/Array2D.

Processing doesn&#8217;t ship with a collection of standard GUI controls &#8211; nor was it meant to. For simple GUI controls, there are external libraries available. [...]]]></description>
			<content:encoded><![CDATA[<p>The goal: use the sliders on my MIDI keyboard to control corresponding sliders in Processing. Here&#8217;s a screenshot of the resulting demo that maps 3 sliders to variables used in Examples/Basics/Arrays/Array2D.</p>
<p><img class="alignnone size-full wp-image-470" title="array2d" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/array2d.jpg" alt="array2d" width="502" height="322" /></p>
<p>Processing doesn&#8217;t ship with a collection of standard GUI controls &#8211; nor was it meant to. For simple GUI controls, there are external libraries available. I&#8217;ll be using controlP5 which you can read about and download <a href="http://www.sojamo.de/libraries/controlP5/">here</a>.</p>
<p>To get the new lib working, create a &#8220;libraries&#8221; folder in your sketches directory. If you don&#8217;t know where your sketches directory is located, check the preferences in Processing. Unzip the download and drop the whole thing in the libraries directory. If Processing is already running, you will have to reboot the app before you can import the library. If everything is installed correctly, this <a href="http://www.sojamo.de/libraries/controlP5/examples/ControlP5slider/ControlP5slider.pde">example</a> should work.</p>
<p>Messages will be sent to Processing using OpenSoundControl (OSC) &#8211; a communication protocol where packets are typically send using UDP sockets. Download the <a href="http://www.sojamo.de/libraries/oscP5/">oscP5</a> lib and install it (don&#8217;t forget to restart Processing). Test the OSC lib using this <a href="http://www.sojamo.de/libraries/oscP5/examples/oscP5plug/oscP5plug.pde">example</a>.</p>
<p>On the Max side, we&#8217;ll also need OSC support which will be provided by CNMAT&#8217;s collection of objects. I&#8217;ve chosen to download the complete package of objects <a href="http://cnmat.berkeley.edu/downloads">here</a>. Unzipping the file reveals a directory full of files and no instructions on what is to be done with them. I do recognize the .mxo extension as an external &#8211; a plugin you can write using the SDK. A search for .mxo in help returns one result:</p>
<p><img class="alignnone size-full wp-image-454" title="searchmxo" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/searchmxo.jpg" alt="searchmxo" width="643" height="193" /></p>
<p>It turns out that:</p>
<ul>
<li>.mxo or .mxe represent external objects</li>
<li>.maxpat and .maxhelp are the new file formats for Max 5</li>
<li>.pat, .mxb, and .help are old file formats</li>
</ul>
<p>Looking under the Max/Cycling &#8216;74 directory, I can see there are folders for: max-externals, msp-externals, and jitter-externals. However, I don&#8217;t really want to &#8220;pollute&#8221; the default installation with 3rd party externals. Fortunately, Max allows us to set additional search paths &#8211; allowing us to keep our files wherever we deem appropriate. Place the downloaded CNMAT folder wherever you want (I&#8217;ve chosen Max5/CNMAT). In Max, select &#8220;File Preferences&#8230;&#8221; under the Options menu and add the CNMAT path. Below, I&#8217;ve set a relative path:</p>
<p><img class="alignnone size-full wp-image-456" title="cnmatsearchpath" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/cnmatsearchpath.jpg" alt="cnmatsearchpath" width="345" height="227" /></p>
<p>I&#8217;m not sure if it&#8217;s required, but a restart would be prudent. However, typing &#8220;osc&#8221; doesn&#8217;t reveal anything during autocompletion. Looking in the CNMAT directory, I discover that the objects are uppercase. Typing &#8220;OSC&#8221; now reveals:</p>
<p><img class="alignnone size-full wp-image-457" title="osc-route" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/osc-route.jpg" alt="osc-route" width="236" height="106" /></p>
<p>Shaweet. Of course, at this point, I&#8217;m still not sure if it actually works, how to use it, or if I should even be using OSC-route in the first place! Fortunately, I saw .help files in the CNMAT directory, so I know that Option clicking the object will bring up a working .help patch. It appears that OSC-route is similar to Max&#8217;s route object and not what I&#8217;m looking for right now. The CNMAT directory also contains an object named OpenSoundControl, which looks promising, and indeed it is. In Processing, we can test things out by creating a UDP socket to receive messages on port 8080 of localhost:</p>
<pre style="padding-left: 30px; background-color: #f5f5f5;"><span style="color: #cc6600;">
void</span>initOsc()
{
  oscP5 = <span style="color: #cc6600;">new</span> OscP5(<span style="color: #cc6600;">this</span>, 8080);
  myRemoteLocation = new NetAddress(<span style="color: #006699;">"127.0.0.1"</span>, 8080);
  oscP5.plug(<span style="color: #cc6600;">this</span>, <span style="color: #006699;">"foo"</span>, <span style="color: #006699;">"/foo"</span>);
}

<span style="color: #cc6600;">public void</span> foo(<span style="color: #cc6600;">int</span> value)
{
  <span style="color: #cc6600;">println</span>(<span style="color: #006699;">"int received!!! = "</span> + value);
<code>}
 </code></pre>
<p><br/><br />
&#8220;Plugs&#8221; in oscP5 are used to register callbacks when events are received. Values are parsed from the OSC message and passed in as params to the function &#8211; very handy. On the Max side, we can create a simple patch to send an OSC message out a UDP socket on the same port:</p>
<p><img class="alignnone size-full wp-image-462" title="fooosc" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/fooosc.jpg" alt="fooosc" width="206" height="164" /></p>
<p>Click the &#8220;/foo 42&#8243; message to add it to the OSC buffer, then bang to send all packets in the buffer. In Processing&#8217;s trace output, we see &#8220;int received!!! 42&#8243;.</p>
<p><img class="alignnone size-full wp-image-465" title="initosc2" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/initosc2.jpg" alt="initosc2" width="657" height="164" /></p>
<p>Now that the fundamentals are in place and working, it&#8217;s easy to build upon.</p>
<p>On my machine, the controller numbers for sliders are 82, 83, and 28. To find out what controller number your slider is sending, open the ctlin .maxhelp patch and move the slider:</p>
<p><img class="alignnone size-full wp-image-473" title="ctlinhelp" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/ctlinhelp.jpg" alt="ctlinhelp" width="228" height="215" /></p>
<p>Here&#8217;s the Max patch with my controller settings that will generate OSC messages:</p>
<p><img class="alignnone size-full wp-image-472" title="midisliders" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/02/midisliders.jpg" alt="midisliders" width="407" height="474" /></p>
<p>In the above patch, &#8220;/xDist 62&#8243;, &#8220;/yDist 68&#8243;, and &#8220;/circleDist 42&#8243; are all OSC messages that were sent to Processing. All 3 messages will map to plugs in oscP5, triggering functions that adjust the GUI slider values. Here&#8217;s the Processing source:</p>
<pre style="padding-left: 30px; background-color: #f5f5f5;"><code><span style="color: #0000ff;">
</span><span style="color: #cc6600;">import</span> controlP5.*;
<span style="color: #cc6600;">import</span> oscP5.*;
<span style="color: #cc6600;">import</span> netP5.*;

ControlP5 controlP5;
Slider xDistSlider;
Slider yDistSlider;
Slider circleDistSlider;

OscP5 oscP5;
NetAddress myRemoteLocation;

<span style="color: #cc6600;">float</span> [][] distances;
<span style="color: #cc6600;">float</span> maxDistance;
<span style="color: #cc6600;">int</span> yDist = <span style="color: #cc6600;">round</span>(32 / 8.0f);
<span style="color: #cc6600;">int</span> xDist = <span style="color: #cc6600;">round</span>(32 / 8.0f);

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;">setup</span>()
{
  <span style="color: #cc6600;">size</span>(500, 300);

  initDistances();
  createSliders();
  initOsc();
}

<span style="color: #cc6600;">void</span> initOsc()
{
  oscP5 = <span style="color: #cc6600;">new</span> OscP5(<span style="color: #cc6600;">this</span>,8080);

  myRemoteLocation = <span style="color: #cc6600;">new</span> NetAddress(<span style="color: #006699;">"127.0.0.1"</span>,8080);
  oscP5.plug(<span style="color: #cc6600;">this</span>,<span style="color: #006699;">"onXDist"</span>,<span style="color: #006699;">"/xDist"</span>);
  oscP5.plug(<span style="color: #cc6600;">this</span>, <span style="color: #006699;">"onYDist"</span>, <span style="color: #006699;">"/yDist"</span>);
  oscP5.plug(<span style="color: #cc6600;">this</span>, <span style="color: #006699;">"onCircleDist"</span>, <span style="color: #006699;">"/circleDist"</span>);
}

<span style="color: #cc6600;">void</span> initDistances()
{
  // diagonal from center
  maxDistance = <span style="color: #cc6600;">dist</span>(<span style="color: #006699;">width</span>/2, <span style="color: #006699;">height</span>/2, <span style="color: #006699;">width</span>, <span style="color: #006699;">height</span>);
  distances = <span style="color: #cc6600;">new float</span>[<span style="color: #006699;">width</span>][<span style="color: #006699;">height</span>];

  <span style="color: #cc6600;">for</span>(<span style="color: #cc6600;">int</span> i = 0; i &lt; <span style="color: #006699;">width</span>; ++i)
  {
    <span style="color: #cc6600;">for</span>(<span style="color: #cc6600;">int</span> j = 0; j &lt; <span style="color: #006699;">height</span>; ++j)
    {
       <span style="color: #cc6600;">float</span> <span style="color: #cc6600;">dist</span> = <span style="color: #cc6600;">dist</span>(<span style="color: #006699;">width</span>/2, <span style="color: #006699;">height</span>/2, i, j);
       distances[i][j] = <span style="color: #cc6600;">dist</span> / 0.5f;
    }
  }
}

<span style="color: #cc6600;">void</span> createSliders()
{
  controlP5 = <span style="color: #cc6600;">new</span> ControlP5(<span style="color: #cc6600;">this</span>);

  xDistSlider = controlP5.addSlider(<span style="color: #006699;">"xDist"</span>,
                                    0, <span style="color: #7e7e7e;">// min</span>
                                    127, <span style="color: #7e7e7e;">// max</span>
                                    32, <span style="color: #7e7e7e;">// default value</span>
                                    20, <span style="color: #7e7e7e;">// x</span>
                                    20, <span style="color: #7e7e7e;">// y</span>
                                    100, <span style="color: #7e7e7e;">// width</span>
                                    10); <span style="color: #7e7e7e;">// height</span>

  yDistSlider = controlP5.addSlider(<span style="color: #006699;">"yDist"</span>, 0, 127, 32, 20, 40, 100, 10);
  circleDistSlider = controlP5.addSlider(<span style="color: #006699;">"circleDist"</span>, 0, 127, 64, 20, 60, 100, 10);
}

<span style="color: #cc6600;">void draw</span>()
{
  <span style="color: #cc6600;">background</span>(0x000000);

  <span style="color: #cc6600;">for</span>(<span style="color: #cc6600;">int</span> i = 0; i &lt; <span style="color: #006699;">width</span>; i += xDist)
  {
    <span style="color: #cc6600;">for</span>(<span style="color: #cc6600;">int</span> j = 0; j &lt; <span style="color: #006699;">height</span>; j += yDist)
    {
        <span style="color: #cc6600;">stroke</span>(distances[i][j]);
        <span style="color: #cc6600;">point</span>(i, j);
    }
  }  

  <span style="color: #cc6600;">fill</span>(128);
  <span style="color: #cc6600;">rect</span>(10, 10, 160, 70);
}

<span style="color: #cc6600;">void</span> onXDist(<span style="color: #cc6600;">int</span> value)
{
  xDistSlider.setValue(value);
}

<span style="color: #cc6600;">void</span> onYDist(<span style="color: #cc6600;">int</span> value)
{
  yDistSlider.setValue(value);
}

<span style="color: #cc6600;">void</span> onCircleDist(<span style="color: #cc6600;">int</span> value)
{
  circleDistSlider.setValue(value);
}

<span style="color: #cc6600;">void</span> circleDist(<span style="color: #cc6600;">int</span> value)
{
  <span style="color: #cc6600;">float</span> val = value / 127.0f;

  <span style="color: #cc6600;">for</span>(<span style="color: #cc6600;">int</span> i = 0; i &lt; <span style="color: #006699;">width</span>; ++i)
  {
    <span style="color: #cc6600;">for</span>(<span style="color: #cc6600;">int</span> j = 0; j &lt; <span style="color: #006699;">height</span>; ++j)
    {
       <span style="color: #cc6600;">float</span> <span style="color: #cc6600;">dist</span> = <span style="color: #cc6600;">dist</span>(<span style="color: #006699;">width</span>/2, <span style="color: #006699;">height</span>/2, i, j);
       distances[i][j] = <span style="color: #cc6600;">dist</span> / val;
    }
  }
}

<span style="color: #cc6600;">void</span> xDist(<span style="color: #cc6600;">int</span> value)
{
  xDist = <span style="color: #cc6600;">round</span>(value / 8.0f) + 1;
}

<span style="color: #cc6600;">void</span> yDist(<span style="color: #cc6600;">int</span> value)
{
  yDist = <span style="color: #cc6600;">round</span>(value / 8.0f) + 1;
}
 </code></pre>
<p><br/><br />
And here&#8217;s the Max source:</p>
<pre>----------begin_max5_patcher----------
794.3ocyX9zaaBCFF+L4SAxmyx7+HX1sot68P6sopIB305IBDADszU0u6CaC
oosowNMA6npRkof8i+4G+99heZR.XQ0FdCH7ag+LLH3oIAApaIuQPe6.vxzM
YEoMpGCTtd4BdMXp9esJsM6AQ48+plm0p6FRDaVzzvX1L3zvHn7Jt6Z3c8uR
WGTstsf2p5Ob+c+cUYaY5RtZL9dsHsXXHzOb6iq359GHJaASCAKRKuGrsWE4
p2rZwe9RDDrSm1H9m5EQnYQIQHV7KxPTNnBj7dOOYh7xTaAA+uci1vP0x2nl
+fr1BQYXZHlcHFgQRtP0LJdzXj7O6EQH2fHidEMGPvHuYVvWFj.SQ9cWCM9R
XWCibHFAodcWCkcg3Uzbvi6ZnI9zrrpluhWlG90LQcVA+GhlVywXHQ5PMHS3
Bc73ZuLBu+HK3tg2wgWIpA0KFELYrgPSgH2pbLQzgoeWCp40eKWko.W41ezf
QuOrPuQmwbjOGk3ce9vL2i9bn284CYEFIeNB3rkSDl52ZgPzKhZgvGfQrXuV
JDJ5xnTHMF7XkPn4NADK4MMo2yemWQoqOFOT8mYBIpviZVwF+LBniIXHdDRU
twPpRssw0YJG+BB2OVttCJ2TstL+ptwstpnatBglisP09EJw.dHeB7LU+602
b0shk7aS2+lqXOAr04qZj9HDtCAc+fBYPlEDiQ2lz8fDCZjX6.g4du7p9cK9
q5pHuWbUedlwo1JhwRqTuEnqrf2dVsJoJu+qmbMUqqyFFygC7K7E0lyaZEko
shpxceH7qdnGD447xc8qKE4qp5Vr5EQ3c6E0GklPlzDzoZRdDOF0j7nxbslL
s1IOQFWt1gsPSxuM1kbJwFMgbplj0IazOgntWSl3jrtVWpo4VnIhSkD1FKN5
HsSDBT9osjDXetzgFmJ+RFAwhQjQQrVQ13OEXoDUQJIy21vEfM9Sw0ytVwDa
B.51j7XnMFS2l75M4k9.N43nM1TfF1sECYicJxoJJ1BE43DWnye7gS0JMBoB
zAoN+YBN+vqWow6DaU03TK30lsmmvxbWimm7ePYddjC
-----------end_max5_patcher-----------</pre>
<p><br/><br />
Until next time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/sketch-1/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>patch 7</title>
		<link>http://www.conceptualinertia.net/aoakenfo/patch-7</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/patch-7#comments</comments>
		<pubDate>Wed, 28 Jan 2009 07:06:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=435</guid>
		<description><![CDATA[Check out this mess:

As a little experiment, I thought I would try and implement sketch 0 in Max. I eventually got it working, but I also made a mess of things in the process. A wire cleanup is certainly in order, but Max also allows another type of organizational structure: the subpatcher. With a subpatcher, [...]]]></description>
			<content:encoded><![CDATA[<p>Check out this mess:</p>
<p><img class="alignnone size-full wp-image-438" title="mess1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/mess1.jpg" alt="mess1" width="600" height="459" /></p>
<p>As a little experiment, I thought I would try and implement <a href="http://www.conceptualinertia.net/aoakenfo/sketch-0">sketch 0</a> in Max. I eventually got it working, but I also made a mess of things in the process. A wire cleanup is certainly in order, but Max also allows another type of organizational structure: the <a href="http://www.cycling74.com/docs/max5/vignettes/core/subpatchers.html">subpatcher</a>. With a subpatcher, you can divvy your patch up into reusable blocks, each with its own I/O. Here&#8217;s a screenshot of the cleaned up patch using a few subpatchers:</p>
<p><img class="alignnone size-full wp-image-442" title="clean1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/clean1.jpg" alt="clean1" width="763" height="713" /></p>
<p>In programming, it&#8217;s never a good idea to hard code anything, but to reduce wire crossings I put in a few constants for circle radius, center, etc. I also noticed in Max <a href="http://www.cycling74.com/docs/max5/tutorials/max-tut/basicchapter11.html">Tutorial 11</a> that there is a cartopol (cartesian to polar) and poltocar object! Doh! Oh well, I&#8217;m still learning the basics and it was a good exercise to build things from &#8220;scratch&#8221;.</p>
<p>This patch took approximately 10x longer to build than sketch 0. Naturally, in comparison, patch building feels clunky and slow &#8211; it feels more like an expensive toy than a productive tool. Of course, I&#8217;m not blaming Max yet, but rather my beginner status and inexperience with the Max methodology.  I&#8217;m not familiar with all the objects in the Max toolbox or best practice in their usage.</p>
<p>Here&#8217;s the source:</p>
<pre>----------begin_max5_patcher----------
3265.3oc6c08jiZbD+489qfRNOYu2l4af35dHUdOUdLob45JVI18HFApjXOu
Wb4+2CL8fVXEHMyvmRG9JuRCRH59G8WS28L7Ge3tUOl9Z3gUN+Mmew4t69iO
b2cxCUbf6Tiua01fWWGGbP90VkD96oO9eWcO7QYgulIOrfUdnjW1l9RVbXl7
6iUGcWP15uDk77m2GtNCtdbA6Az8NDtewKTxC77AnGPN+p5bfelrusKDNgUQ
I4mZ4m9TZR1gn+m7yvj7eB3vQajzSNM9QQERJJojhHUN+jfsxye0eeeTP7ph
O3O+vGJ9y8iOb3IgCJRLPvAe5fCFxb3fHwAFwaffC+oCNhSC17XPxyFCJDW2
Bz.ikuHPR8myBJxKiAnhainBdLPknmb9KQXmO8IGrS1WBSbpBQwQIgqSeIIq
5MIswMAEfMokFAWJQwNGrYBjQPSGlwMVDBywCqdElbEpXIPRIDp6foXgwSmT
h81antCLrP8tBgE1fKsPGC6vaCObH34vSvETdLYbGjsRKJSKfcFrWeYlkNgg
ysyYy9fe+ekFGr+eDsecbn0lc4xnZvH9kkYLxGTypQr1AmpjZ3dEjnvj7SHJ
N7qg6ODklTgwta0aLjGRJ1igvzDL4HlWENJGqeNNc8uEJIST4A2D9jY+Jo6B
Sd6LjeiZ+o92LJY29vCgIYAYJhu5UN3k3rO2LbV+yeJXcXqmbiP4cqddezlz
jBhn1YVb3xKWgffjg4Uoa42HIXWCmbVZZ7iA6+ZzgnGiCqcuHWRNHIZaPVXV
DPODzwyKZ6t8QPzRGO11vrfMAYA.gT41T04.VQJnl1RsieNsl5ZN+T0i1n1R
6ZLRyHXU3ZmDnxkCV4L5Nm3cFIdGgdhElyYk4tRKMvatu+wwOZMN5gGSXjeq
BiLx3Ai9dyaTrCJ0DzHBityaX7kjcAq+MGTw+ZGQomGQIXHKZH4bac8eebEs
in2W6Eaz1a2lIdzvW40zZ4QE5I.XiW92yCd0wpFxv1o3QUDbc51sgfq472Gm
tuOgCfXaGOP53rfQYmAOpvvLsD.pxv6BxE1R+ZPrS4rOlMxBp.NLSV3o7IQl
0p.A0bAh72Dt++LiPEvhsYnxIFTpNUEKwj+87ASfIw0ePB1XHYevlnWNLR9o
dyKU4+5XvnTH+IXnTGW1akMNmHsKm4NGb9mOK0745sw4nAwthop7sLnXJtGc
3+17OKxseKy+TxtEedyf8gzW1utjiTFWbpy3aBOjEkbLY.+RkIp7tu4Wh1ro
9ruk2Oi1rKM+VzgRyg9EwrhYRX1GcbfyupkbioLDUSFpXJCVwOBWfEvpb1UN
Xf3ml.9l4HBwNNZfH7BYesna1rhrKhQ2gnKbKLmtIdT4j37fr035dbzPxQXc
4HtEbDWwQPl5fZGJGMjbj1pDLK3Hhhi.WDLuiiFHNRWc7F37IUGWW2GMXLXJ
o6FL9eFAHr4zM3WPMY4xhWfYCl7SQlazmgHV6Fm.kppnw.JGMX98LRImZsmb
BChsVME9hQSbnIMw5SpVttgT4Nu7jaDbagRtfKC9CAsXjxWQwnIlgj2Grmev
PFmUpEXzjyOPHvcfgTVggWFPqvXSl6g07iu3slxxusIRoNXNWAks9PvWC274
7Kd9rf+bPV19nGeIClDY0xXqQQauTQgarXvs8keNN8wfXUM0OdAWoUAlaaVy
.JLBsXm18x.sVWHpRPX+0KCX9z0RPcuQOn.pLXM5g6RidrznGKM5wRidrznG
KM5wRidrznGKM5w0PidrziGK83wsUOdbdTYoKOV5xikt7XoKOFjt7XFkXxkz
FujW+qsBubkV.rq05MdCV52au5yey0BEWq8xxUZqCc60CW2n8Y2MUuPds1Tp
WqMA7sV2XOyZW9kt7ne1.OjaeGVrAdn1WSFnMvCxDtAdvstONFr8IIBdDfi1
2hWrQ9PTS9f51uxGX+qpMntx8hMNefDPnrodCuwxVfhy3UZAJ.l5uNfhhmnN
fhR48PGPc1ekkNf5JtCn5kp7i88g42wWpxuEExDPOHxkuuqxu.19Tw9eWVke
WyECNWoauEpwOl1uXxMPE9Acj9CR99oB+.xUlnqkJ72GU3GvTJUbcUg+YUy6
pjKUgZOrccJAc617tjwCFONs+9.FGlMUjks9glK2g.JBkKT1YA43nq1RRQUb
DprHaH0nq1xFh.NBLLhoziiVpeasaD9CbGMLKna57YQ3itR2FfPCbehrzNHV
07cx6KV.2tPu2Ay9yCx8FgO88RnemXG0JyFRhnbzDW.4FTazr9wxfJvtROwJ
ty0a52SS7ss.+BfE.IMJ93nkBhOba6A6b1IWQ+oo62bn4xYQOSg9TKkQ34yU
QHTWrdVvZi49JuwnJC2XAtnCWAtbUF9fk9psE3RmekkBbcEWfKfJrsfD9dPQ
gIkO8sZHmBWQEp5L3j8oUUk0ObaOC.62DufmA4upiU4hB6mHTepdk4BiLtNW
TAxY82VGG5jezc4e6YTgtJYeTeUACWyqfQtA5rYz57FJ8W+gHrYPMc5nRB1G
YjRB0XcjuAAXkqgjGg0LhyYtFw3DiY7WGJFuaZAJ9lXhRPsGQccuxlE+bNOk
t2II2sX+iOkWpl7+9MqkWJ2iMfGIwkUAwpfTXnYPPJmCkd0ZTR0UR8.HQ8l2
QxIehyFt2AmOW+OlGHP6PFSGERLUBYPjvZ2UWk+u0g40deLwmCf7OlOwO6iX
FZAAJ1nRU1vdWgdfoGcdWy2NgkJuFiDTJPyenDgcY7NhmDrr+hDD8T5sFO4y
A77bNbJhKNH4fymbxCMHe5T+nytn+J1CYebsJu0..ioht3t1ed6I5PTRWsQV
5vVLvBhDwb2o9gtpRqPR+gFI4y9chErt06milWKybsqiK+Jktsr+J3BXqj.J
1gu6wQCUED0sCX7nyqFAPWAew7RvmYBYisoov.AHeXAr.4gye3pnNyDwmtvO
9Uh0PNZfXHg1Z3yJ4JOcKc97RMFbfg0ZMvaGg6Qdvil+ehhRH6VtD.4pQCDa
o69yC1xt8QwB9pMeqiCFr6RZyO7YUatYFc2WpEKsMR+rJ4WGGFr23k+b4JBG
Vnu88pjm6Mgaa.adY6NiwCUF5fYKw54MUB9DtoRbxx8UeLA7C.HiPzuKPdN0
z9Gp+fj0owwMCFrK.FLPcg6e48QgpIE2HfgX5CVlJ1OUW6e3eVbUA1zY0O+1
kWSargaeT0CU8dWtErStPz5f.IG1a4gsXr9SfjwlvGnOpkm2gvrcQuFFaGvv
bkYu02umAF5zALlKhPgl1Z.2vSHSmsbK1LbfXeAIig.MPSGZ7SE6SvVrkIch
i9dEQvSnu9xJAWXc8sBAanONhqDT7Y5AMsT6WcjcZDn3iinif8fsalRDLDqn
mtsXsAXhGYJ0mrBTTOY8FPPwcL1ioxRe9YK1FoDdprKTx2FYNopcilel4g6u
6uaCy1m5X9lLm.Rfha08ghyxh0ZRKchvXBmrncydVAIkoJqmm8LkNB.R75M1
4ef6BOjhTK3DxYY63nCRWDkuV5wnQMfKp.HOq5UFDX02mwKECeZZqql+p1R8
KtZtVOMAWMmbqSPecIIlFjTcx9hTjKRsdzfMSGW5wQcjVqmgy11VYMiXEXIw
xfG4CbHksxQcjX8HZPrEOoReagReYpk3IKzBEZTFZtw+hzlyXpC0QRt1pwss
RDQLCeGCTrHYN1fhJSHLUubUaDDqkPJ6JGLJhCdcQbffckhCDu9Sb3RTrKaT
EGb0wbE0LRhndLJ.KJBr33ftBeHcnUznheXWcjBMjlD9RSnP+93d78cjToZP
oXC8LA2bovRRjgNNnqnpPWiTimecpV3mUN14U0T38flB0SGZ0PGODlj9XkOi
UQGG0061ZaIeD0q0IxHr+7yVS8R5pssFHuhTv8mnGhrjqisZCk.UjmZe8mxn
uai82d8Esj.MKThw3l83Fq.Aqa.3iGMQw8uUYNmAFhoUsJ2ccBha+SqEqE2B
xi4UgVYdcmVE5dulNdpD95Nae5rZ19T53plVyNUKwNYn2Tks1xozIXGG0Qhk
qSjJbhoQkJoOFV7lRgbvHDAM2tHnQR8WnwmkC5JtJF.bEHOFr3KUvJo6SKlq
i2W13pDQ0cBHiGIwoCvsztZ9i0+tz5JIoCLwF2HmnHMyxx343hJzcRWiGMQ7
5eoI07T4rpAyw5dvbTsR7iXbEyzA+niLMoENY3MUlpFCkKZXwwQckZYZNQP7
7ZhflFOW4r98pDNmn6QcnK5YQsuf.jToVF2CQHoUluItlcuVQeTn3WTN+ArP
H3B0g5JIqi5835YCqsaDCPQUhjUYE0yWBhtD0g5HEq8jHQypIQx6RIiEH0yF
1piHPOOv8gcma+t6SjqKzZaZzxG7me3+CaXG+hB
-----------end_max5_patcher-----------</pre>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/patch-7/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>sketch 0</title>
		<link>http://www.conceptualinertia.net/aoakenfo/sketch-0</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/sketch-0#comments</comments>
		<pubDate>Tue, 27 Jan 2009 05:32:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=432</guid>
		<description><![CDATA[In addition to learning Max, why not learn Processing as well. The goal is to eventually interface with Max using OSC.
Sketch 0 echos the code found in this nice tutorial, which (for me) was a great first experience with Processing.

]]></description>
			<content:encoded><![CDATA[<p>In addition to learning Max, why not learn Processing as well. The goal is to eventually interface with Max using OSC.</p>
<p><a href="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/processing/sketch0/index.html">Sketch 0</a> echos the code found in this nice <a href="http://processing.org/learning/tutorials/trig/">tutorial</a>, which (for me) was a great first experience with Processing.</p>
<p><img class="alignnone size-full wp-image-433" title="sketch0" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/sketch0.jpg" alt="sketch0" width="402" height="274" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/sketch-0/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>patch 6</title>
		<link>http://www.conceptualinertia.net/aoakenfo/patch-6</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/patch-6#comments</comments>
		<pubDate>Fri, 23 Jan 2009 06:58:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=406</guid>
		<description><![CDATA[So, this Saturday&#8217;s Lotto 6/49 is an estimated 43 mil! So, in the spirit of things, I decided to make a patch to generate some random lotto numbers:

Here&#8217;s the OS X app and here&#8217;s the patch:
----------begin_max5_patcher----------
893.3oc0YssaaBDD8Y7WwJZeqtorWA2p7P+A5OPUUD1rwgTtXAKsoIJ+6kc.
eI1Xf0jfikkAMKqWNygYNyr3mlXYOO8AYtM5qnehrrdZhkELjd.qZaK6X+GV
D4mCSyNQ92z42aOs5RJ4CJX3vaQeLDit9ZDFotSlfVDI8yVOsnvD4hzhDXtj
5AW4qVbWXxxaxjKTUP.KXW4LEQnX8IgPejVND5W0+ljh3vjHoBvBtdvv..Bk
v5ytt1amYZgZ+oVMj5eqjU2Pa6MK8soIpD+X3B1eOKzOxdmqjG9HbEL4JG8n
OOYh9vzgwZeBgsagMbv6vFTxU7RCmiwFjFXCggrQn9Iz4jPJxRPrYcyIXWt9
DCNZFmvZlSHswISQ1y8SVdd4lGiP4oYpVHmprGFwENQMmanFxMZhYrHkh34x
rNc95jEhW6NeSRGjK3.ikYoEqPhNoG5LPSUXdrAm89M1HVlm6uTd.w7hZPMv
ITGMM3BoKT3H1yDJw4hpXyAknCJhWgjQ4xVJVSON6QXjCJVy7LHiiItn3uUY
kY7HwWZs9TsDLGzeDXiUgX7l4DmyYdTtTgbZwoINzAkHwnWTABPxgLC4T9oM
IWrvqpWEHlvqifAdC7BtYdg0QIo0eO6sysxewu0zT2ks8fN43BiqKQtzhchh
5tJckXJeV6c72f7AwwvHlcCWNElod3b++rdE+vOzqUkehr+11EUOmfaJQYo2
diuRkENuPUs4SqMjnksrrOOvg.Vuh1Mk7KWXUZRO1FAgsNfyPhFOyvvt51DO
AmQktbYjrGNC+T8E2SZahudIEwRUVJxi1sOVUhg6YrLAlcZOuFhTA7qg1o16
Mr.9md7WRU4oEYKVe+Wq+iHa.QfLWEl3qBKCs2NI8q7.skHtKLHPlraKCwgA
qRKejUChi7fquXZua2QvDyLLgcofTmnp2AVUV4Ksb.KO2CLvtUg+XG8Z.VCz
G0M1+p6iCDSZAm2aXZua2QvjXbwjnGXR2zP4tfFKLw5ElbFUdpWZKLw3ioNi
mHlps3BZKXnmpZgFswPSH6Sv+ddT2fsVDCW+VNc2XMTz1GYa89vFSIs9fIL6
8Gl3iapZuhz1q9vatLKsOwS7QES7dUNZbiw2SspkxQiGlH8o8F93l2wnuApo
DL7elgK2H8NpoZqwnAQSKnSgs6S4js0o.ig9zl9V27QowyS9OLQYdeI
-----------end_max5_patcher-----------

And here are some winning numbers  

]]></description>
			<content:encoded><![CDATA[<p>So, this Saturday&#8217;s Lotto 6/49 is an estimated 43 mil! So, in the spirit of things, I decided to make a patch to generate some random lotto numbers:</p>
<p><img class="alignnone size-full wp-image-427" title="lotto649" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/lotto649.jpg" alt="lotto649" width="328" height="483" /></p>
<p>Here&#8217;s the OS X <a href="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/apps/lotto649.zip">app</a> and here&#8217;s the patch:</p>
<pre>----------begin_max5_patcher----------
893.3oc0YssaaBDD8Y7WwJZeqtorWA2p7P+A5OPUUD1rwgTtXAKsoIJ+6kc.
eI1Xf0jfikkAMKqWNygYNyr3mlXYOO8AYtM5qnehrrdZhkELjd.qZaK6X+GV
D4mCSyNQ92z42aOs5RJ4CJX3vaQeLDit9ZDFotSlfVDI8yVOsnvD4hzhDXtj
5AW4qVbWXxxaxjKTUP.KXW4LEQnX8IgPejVND5W0+ljh3vjHoBvBtdvv..Bk
v5ytt1amYZgZ+oVMj5eqjU2Pa6MK8soIpD+X3B1eOKzOxdmqjG9HbEL4JG8n
OOYh9vzgwZeBgsagMbv6vFTxU7RCmiwFjFXCggrQn9Iz4jPJxRPrYcyIXWt9
DCNZFmvZlSHswISQ1y8SVdd4lGiP4oYpVHmprGFwENQMmanFxMZhYrHkh34x
rNc95jEhW6NeSRGjK3.ikYoEqPhNoG5LPSUXdrAm89M1HVlm6uTd.w7hZPMv
ITGMM3BoKT3H1yDJw4hpXyAknCJhWgjQ4xVJVSON6QXjCJVy7LHiiItn3uUY
kY7HwWZs9TsDLGzeDXiUgX7l4DmyYdTtTgbZwoINzAkHwnWTABPxgLC4T9oM
IWrvqpWEHlvqifAdC7BtYdg0QIo0eO6sysxewu0zT2ks8fN43BiqKQtzhchh
5tJckXJeV6c72f7AwwvHlcCWNElod3b++rdE+vOzqUkehr+11EUOmfaJQYo2
diuRkENuPUs4SqMjnksrrOOvg.Vuh1Mk7KWXUZRO1FAgsNfyPhFOyvvt51DO
AmQktbYjrGNC+T8E2SZahudIEwRUVJxi1sOVUhg6YrLAlcZOuFhTA7qg1o16
Mr.9md7WRU4oEYKVe+Wq+iHa.QfLWEl3qBKCs2NI8q7.skHtKLHPlraKCwgA
qRKejUChi7fquXZua2QvDyLLgcofTmnp2AVUV4Ksb.KO2CLvtUg+XG8Z.VCz
G0M1+p6iCDSZAm2aXZua2QvjXbwjnGXR2zP4tfFKLw5ElbFUdpWZKLw3ioNi
mHlps3BZKXnmpZgFswPSH6Sv+ddT2fsVDCW+VNc2XMTz1GYa89vFSIs9fIL6
8Gl3iapZuhz1q9vatLKsOwS7QES7dUNZbiw2SspkxQiGlH8o8F93l2wnuApo
DL7elgK2H8NpoZqwnAQSKnSgs6S4js0o.ig9zl9V27QowyS9OLQYdeI
-----------end_max5_patcher-----------</pre>
<p><br/><br />
And here are some winning numbers <img src='http://www.conceptualinertia.net/aoakenfo/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img class="alignnone size-full wp-image-423" title="winningnumbers" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/winningnumbers.jpg" alt="winningnumbers" width="332" height="267" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/patch-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>patch 5</title>
		<link>http://www.conceptualinertia.net/aoakenfo/patch-5</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/patch-5#comments</comments>
		<pubDate>Tue, 20 Jan 2009 07:30:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=397</guid>
		<description><![CDATA[Yay! I made my first patch from scratch &#8211; a learning hurdle. The idea was simple and small: adjust the radius of a circle. Here&#8217;s a screenshot:

And here&#8217;s the patch:

----------begin_max5_patcher----------
722.3ocyXssiaBCD8YxWAhWa1HrwPf9V+KZU0pJB3l3VvFAl1zc09uWaykPS
.BPR8FEIPdLd3bNiGOC40UFV6XGwEVlez7qlFFutxvPYRZvndrgUZ3wnjvB0
iYkhKJB2isVWMGGejqrGkfCyarRKSYk7DLWsFPs0rPdzABc+2xwQ7p2oiu8F
60lPO0Mmsxq.+M1lOWulJ2v+SFtZAVVsS8cFkWPdQMA.JVYkYRrBOrc+3IGm
N.hPavCriCngoJGX8obRXhkbh2VsRdY8DEjhDRLtk4Y4LNSB2VGefkSdQ7lD
degpCxQIKnJoxdZpifuJua2mv.b6UXZfRqpZKV8BjjHVZJlxuXORdXLorneY
vdDYvw6jLf7tPEt9FAXvn789rQXWImynyNHC78kLx2ogWWKFuKjt+TbtKKQ8
yxEvEJ92BOdQ.LKL5ml1U+VJQgPYHxbq2b1MOgPLrWxitqg3gjkbrHgO1LKj
P4resfL8Fso5bPf88Vb.ZX++.hySKUL.9.UQA3F2qoEBYeVxgsFpKLfb7gYK
GPD5+qb.BzgbTltCOPCBvwHuqh7PkF3NgiGkje84mRxEvltOA2sRyDDFuQSa
DlHokoRSdnGAwpIw48QrPuSh0PcaDILhy+xra2.FDzUEQKneCfNNucbd+4Yy
afC7V4sNZyJIJtepgtZhgCnNx52da3TiDRgJ2n4dcpRucdAtZiWpUI7E87u1
RgVo8+kxErx7nFnzjdYdBtw3BNgFxILZmGRVXqyCcfDGiocC6oj3LlfI0fv7
4dC.SFSdS.SxpK5DStS.SxOLTiX5rW2.5z7fjiefrQ.mpVEAAaaGoCADhVDZ
251ArxA5.qpMffYiUfmaUK4U+oDdZBspT3EfVWELg.UShpQ2JZClBZEe0kIT
eI2SFSNZCSmcl6HXx9ADS.8gooT.6rJJOFXBoWLAt+EKtUHAmx1oaAShAus5
unBufPC
-----------end_max5_patcher-----------


]]></description>
			<content:encoded><![CDATA[<p>Yay! I made my first patch from scratch &#8211; a learning hurdle. The idea was simple and small: adjust the radius of a circle. Here&#8217;s a screenshot:</p>
<p><img class="alignnone size-full wp-image-402" title="circleradius1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/circleradius1.jpg" alt="circleradius1" width="428" height="428" /></p>
<p>And here&#8217;s the patch:</p>
<pre>
----------begin_max5_patcher----------
722.3ocyXssiaBCD8YxWAhWa1HrwPf9V+KZU0pJB3l3VvFAl1zc09uWaykPS
.BPR8FEIPdLd3bNiGOC40UFV6XGwEVlez7qlFFutxvPYRZvndrgUZ3wnjvB0
iYkhKJB2isVWMGGejqrGkfCyarRKSYk7DLWsFPs0rPdzABc+2xwQ7p2oiu8F
60lPO0Mmsxq.+M1lOWulJ2v+SFtZAVVsS8cFkWPdQMA.JVYkYRrBOrc+3IGm
N.hPavCriCngoJGX8obRXhkbh2VsRdY8DEjhDRLtk4Y4LNSB2VGefkSdQ7lD
degpCxQIKnJoxdZpifuJua2mv.b6UXZfRqpZKV8BjjHVZJlxuXORdXLorneY
vdDYvw6jLf7tPEt9FAXvn789rQXWImynyNHC78kLx2ogWWKFuKjt+TbtKKQ8
yxEvEJ92BOdQ.LKL5ml1U+VJQgPYHxbq2b1MOgPLrWxitqg3gjkbrHgO1LKj
P4resfL8Fso5bPf88Vb.ZX++.hySKUL.9.UQA3F2qoEBYeVxgsFpKLfb7gYK
GPD5+qb.BzgbTltCOPCBvwHuqh7PkF3NgiGkje84mRxEvltOA2sRyDDFuQSa
DlHokoRSdnGAwpIw48QrPuSh0PcaDILhy+xra2.FDzUEQKneCfNNucbd+4Yy
afC7V4sNZyJIJtepgtZhgCnNx52da3TiDRgJ2n4dcpRucdAtZiWpUI7E87u1
RgVo8+kxErx7nFnzjdYdBtw3BNgFxILZmGRVXqyCcfDGiocC6oj3LlfI0fv7
4dC.SFSdS.SxpK5DStS.SxOLTiX5rW2.5z7fjiefrQ.mpVEAAaaGoCADhVDZ
251ArxA5.qpMffYiUfmaUK4U+oDdZBspT3EfVWELg.UShpQ2JZClBZEe0kIT
eI2SFSNZCSmcl6HXx9ADS.8gooT.6rJJOFXBoWLAt+EKtUHAmx1oaAShAus5
unBufPC
-----------end_max5_patcher-----------
</pre>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/patch-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>patch 4</title>
		<link>http://www.conceptualinertia.net/aoakenfo/patch-4</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/patch-4#comments</comments>
		<pubDate>Tue, 13 Jan 2009 06:34:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=372</guid>
		<description><![CDATA[So, I was messing around with the mousestate object:

And couldn&#8217;t get the button to trigger. That&#8217;s because it requires a bang:


Add a bang message and it works:

However, it keeps on working in Edit mode and refuses to stop. Checked the docs; the nopoll message reverts mousestate to its initial state.

Added a nopoll message but no [...]]]></description>
			<content:encoded><![CDATA[<p>So, I was messing around with the mousestate object:</p>
<p><img class="alignnone size-full wp-image-376" title="mousestate1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/mousestate1.jpg" alt="mousestate1" width="111" height="109" /></p>
<p>And couldn&#8217;t get the button to trigger. That&#8217;s because it requires a bang:
<p/>
<img class="alignnone size-full wp-image-377" title="mousestate2" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/mousestate2.jpg" alt="mousestate2" width="326" height="150" /></p>
<p>Add a bang message and it works:</p>
<p><img class="alignnone size-full wp-image-378" title="mousestate3" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/mousestate3.jpg" alt="mousestate3" width="105" height="154" /></p>
<p>However, it keeps on working in Edit mode and refuses to stop. Checked the docs; the nopoll message reverts mousestate to its initial state.</p>
<p><img class="alignnone size-full wp-image-379" title="mousestate5" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/mousestate5.jpg" alt="mousestate5" width="162" height="154" /></p>
<p>Added a nopoll message but no luck. The only way I could get mousestate to stop working was to delete the mousestate object and re-add it. Perhaps, nopoll is paired to a poll message? When bang is replaced with poll, it works as expected.</p>
<p><img class="alignnone size-full wp-image-380" title="mousestate6" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/mousestate6.jpg" alt="mousestate6" width="146" height="158" /></p>
<p>Next time, I&#8217;ll look for message pairs first.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/patch-4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>patch 3</title>
		<link>http://www.conceptualinertia.net/aoakenfo/patch-3</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/patch-3#comments</comments>
		<pubDate>Sun, 04 Jan 2009 04:44:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=271</guid>
		<description><![CDATA[All right, time to get back at it. I need to tie up a loose end and finish playing with objects found in the Tutorial Zero Video. &#8211; specifically, the (pseudo) random object and counter object. I love random. It&#8217;s one of the first functions you use when learning to program. Here&#8217;s the trivial patch:

The [...]]]></description>
			<content:encoded><![CDATA[<p>All right, time to get back at it. I need to tie up a loose end and finish playing with objects found in the <a href="http://cycling74.s3.amazonaws.com/download/tutorialzero.mov">Tutorial Zero Video.</a> &#8211; specifically, the (pseudo) random object and counter object. I love random. It&#8217;s one of the first functions you use when learning to program. Here&#8217;s the trivial patch:</p>
<p><img class="alignnone size-full wp-image-342" title="randompatch" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/randompatch.jpg" alt="randompatch" width="187" height="182" /></p>
<p>The right inlet specifies the range, in this example random numbers will be generated from 0-9.</p>
<p>You can also feed it a seed value, in which case you&#8217;ll be able to reproduce the &#8220;random&#8221; output.</p>
<p><img class="alignnone size-full wp-image-348" title="randomseed" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/randomseed.jpg" alt="randomseed" width="226" height="215" /></p>
<p>With a seed of 42, you&#8217;ll get the following output: 1, 2, 9, 1, 2, 4, &#8230;</p>
<p>Now, the counter object. Have a look at the help file for this object:</p>
<p><img class="alignnone size-full wp-image-349" title="counterhelp" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/counterhelp.jpg" alt="counterhelp" width="640" height="416" /></p>
<p>It may look a little complex but play around with it, read the comments, and before long, it&#8217;s understandable. The function of the counter object is simple, but the I/O makes its usage flexible.</p>
<p>One thing I noticed, these message objects have no connectors!</p>
<p><img class="alignnone size-full wp-image-356" title="messageobjs" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/messageobjs.jpg" alt="messageobjs" width="108" height="151" /></p>
<p>Hmm&#8230;what happens if I drop into Edit mode:</p>
<p><img class="alignnone size-full wp-image-350" title="countereditmode" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/countereditmode.jpg" alt="countereditmode" width="576" height="242" /></p>
<p>The connectors are definitely there, messing up the joint. That&#8217;s a handy cleanup feature, now how do I turn it on in my patches? After a little hunting, I discovered that, once you select a connector, you can go to the Object menu and &#8220;Hide on Lock&#8221;.</p>
<p><img class="alignnone size-full wp-image-351" title="objectmenu" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/objectmenu.jpg" alt="objectmenu" width="404" height="425" /></p>
<p>And the seed connector is now hidden:</p>
<p><img class="alignnone size-full wp-image-352" title="hiddenconnector" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/hiddenconnector.jpg" alt="hiddenconnector" width="231" height="218" /></p>
<p>Here&#8217;s another discovery, if you&#8217;re on a reference page and you click the &#8220;Contents&#8221; button at the bottom, it displays this monster menu:</p>
<p><img class="alignnone size-full wp-image-355" title="referencecontents" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/referencecontents.jpg" alt="referencecontents" width="774" height="842" /></p>
<p>Which could prove useful for systematically going through the entire reference docs. However, you can&#8217;t open the above window from the home page, you have to be on a reference page, otherwise, it just displays:</p>
<p><img class="alignnone size-full wp-image-354" title="homepagecontents" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/homepagecontents.jpg" alt="homepagecontents" width="442" height="122" /></p>
<p>That&#8217;s one way to get to the reference pages, but what about the .maxhelp files? How can I see a list of all the .maxhelp object files? You can find them in the following directories:</p>
<ul>
<li>Max5/Cycling &#8216;74/<strong>max</strong>-help</li>
<li>Max5/Cycling &#8216;74/<strong>msp</strong>-help</li>
</ul>
<p>Great. Maybe I&#8217;ll painstakingly read each and every one in alphabetical order after I finish the tutorials. Why on earth would you do such a thing? As G.I. Joe says, &#8220;Knowing is half the battle.&#8221; Eventually, after I begin building patches in earnest, knowing of an object&#8217;s existence is&#8230;half the battle!</p>
<p>Spent the rest of the day surfing the Cycling &#8216;74 forum (about 7 months worth of postings) and watching youtube vids on max/msp. I probably spent one to many hours browsing the forum but I did pick up a few tidbits of info. For example, the ability to cut &#8216;n paste a patch as text. Simply copy the patch text from the forum post and inside max select File-&gt;New From Clipboard. Yay!</p>
<p>As for youtube vids, I found these the most interesting:</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=vRjqZg5Vx2o&amp;feature=related">http://www.youtube.com/watch?v=vRjqZg5Vx2o&amp;feature=related</a></li>
<li><a href="http://www.youtube.com/watch?v=grdSaHUkofE&amp;feature=related">http://www.youtube.com/watch?v=grdSaHUkofE&amp;feature=related</a></li>
<li><a href="http://www.youtube.com/watch?v=VUwvyNvihd8&amp;feature=related">http://www.youtube.com/watch?v=VUwvyNvihd8&amp;feature=related</a></li>
<li><a href="http://www.youtube.com/watch?v=LR8YrFyIQzM&amp;feature=related">http://www.youtube.com/watch?v=LR8YrFyIQzM&amp;feature=related</a></li>
<li><a href="http://www.youtube.com/watch?v=dM1eYNGZYHY&amp;feature=related">http://www.youtube.com/watch?v=dM1eYNGZYHY&amp;feature=related</a></li>
<li><a href="http://www.youtube.com/watch?v=f1Vyyz93wwY&amp;feature=related">http://www.youtube.com/watch?v=f1Vyyz93wwY&amp;feature=related</a></li>
<li><a href="http://www.youtube.com/watch?v=80P8xAXpbuM&amp;feature=related">http://www.youtube.com/watch?v=80P8xAXpbuM&amp;feature=related</a></li>
<li><a href="http://www.youtube.com/watch?v=z5sV9ESjSyE&amp;feature=related">http://www.youtube.com/watch?v=z5sV9ESjSyE&amp;feature=related</a></li>
</ul>
<p>Well, it&#8217;s about time to digg into the tutorials after poking around haphazardly. I&#8217;ll be back when I finish them. Later!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/patch-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://cycling74.s3.amazonaws.com/download/tutorialzero.mov" length="12365891" type="video/quicktime" />
		</item>
		<item>
		<title>patch 2</title>
		<link>http://www.conceptualinertia.net/aoakenfo/patch-2</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/patch-2#comments</comments>
		<pubDate>Sun, 04 Jan 2009 04:42:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=245</guid>
		<description><![CDATA[Now what? Time for some coffee&#8230;as I mull over my next direction. My ultimate plan is to read every ounce of documentation. However, before I delve too heavily into the docs, I want to see what online resources are available online at Cycling &#8216;74.
I checked out every link on the interesting work page, but if [...]]]></description>
			<content:encoded><![CDATA[<p>Now what? Time for some coffee&#8230;as I mull over my next direction. My ultimate plan is to read every ounce of documentation. However, before I delve too heavily into the docs, I want to see what online resources are available online at Cycling &#8216;74.</p>
<p>I checked out every link on the <a href="http://www.cycling74.com/twiki/bin/view/ResourceGuide/InterestingWork">interesting work</a> page, but if you really want to get a sense of the max/msp community at large and what&#8217;s possible check out the <a href="http://www.youtube.com/watch?v=-1tTABS_Ugs&amp;feature=channel">C74 Perspectives</a> channel on youtube.</p>
<p>I&#8217;ll definitely want to come back and read these <a href="http://www.cycling74.com/articles">articles and interviews</a>, once I have a deeper understanding of max/msp itself. For now, I think I&#8217;ll check out some more <a href="http://www.cycling74.com/products/max5">videos</a> before returning to the help docs. It&#8217;s a chance to discover what&#8217;s new in Max 5, although I don&#8217;t even know what&#8217;s old! Of course, I&#8217;m going to continue documenting my trivial discoveries because it&#8217;s fun and keeps me motivated.</p>
<p><strong>patching and workflow</strong></p>
<p>Right off the bat, keyboard shortcuts. &#8220;Type <strong>n</strong> and get an object box at the current cursor position, <strong>m</strong> for message box, and so on.&#8221;. Trying out the &#8220;and so on&#8221; part:</p>
<ul>
<li><strong>b</strong> for button</li>
<li><strong>c</strong> for comment</li>
<li><strong>f</strong> for flonum</li>
<li><strong>i</strong> for number</li>
<li><strong>t</strong> for toggle button</li>
</ul>
<p>There&#8217;s a Presentation mode to which you can add objects:</p>
<p><img class="alignnone size-full wp-image-249" title="addtopresentation" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/addtopresentation.jpg" alt="addtopresentation" width="383" height="418" /></p>
<p>Here, I&#8217;ve added 3 objects to presentation mode:</p>
<p><img class="alignnone size-full wp-image-250" title="metrowithpresentation" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/metrowithpresentation.jpg" alt="metrowithpresentation" width="220" height="301" /></p>
<p>The object&#8217;s size or location in Presentation mode doesn&#8217;t have to correspond to its size or position in Edit mode:</p>
<p><img class="alignnone size-full wp-image-251" title="metropresentation" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/metropresentation.jpg" alt="metropresentation" width="340" height="101" /></p>
<p><strong>debugging</strong></p>
<p>I&#8217;m interested to see what kind of debugging capabilities max/msp has. I don&#8217;t imagine we&#8217;ll be stepping thru lines of code, but something more robust than console output would be great.</p>
<p>First, simple error messaging. Trying to send a &#8220;foo&#8221; string to a number input results in an error &#8211; which is correct. And our initial suspicion of the Max window being a console output is verified.</p>
<p><img class="alignnone size-full wp-image-255" title="fooerrormsg" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/fooerrormsg.jpg" alt="fooerrormsg" width="428" height="211" /></p>
<p>Wow. Max/msp supports watches and breakpoints, what a nice surprise. Now, let&#8217;s see if we can get a demo of watchpoints up and running. The first thing, would be to bring up the watchpoints window&#8230;</p>
<p><img class="alignnone size-full wp-image-252" title="debugmenu1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/debugmenu1.jpg" alt="debugmenu1" width="232" height="352" /></p>
<p><img class="alignnone size-full wp-image-253" title="watchpointwindow" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/watchpointwindow.jpg" alt="watchpointwindow" width="462" height="364" /></p>
<p>But what to do isn&#8217;t clear to me yet. Time to drop into the help docs and do a search for &#8220;watchpoints&#8221;, which turns up this promising looking result:</p>
<p><img class="alignnone size-full wp-image-254" title="watchpointssearch" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/watchpointssearch.jpg" alt="watchpointssearch" width="839" height="310" /></p>
<p>So, a watchpoint monitors messages being passed thru patch cords. In that case, lets attach a slider to a number and then a watch var between them.</p>
<p><img class="alignnone size-full wp-image-257" title="addingwatchpoint" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/addingwatchpoint.jpg" alt="addingwatchpoint" width="299" height="217" /></p>
<p>The newly added watchpoint:</p>
<p><img class="alignnone size-full wp-image-258" title="watchpoint1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/watchpoint1.jpg" alt="watchpoint1" width="433" height="215" /></p>
<p>While running the patch, you can see the value traced to the window:</p>
<p><img class="alignnone size-full wp-image-259" title="watcher2" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/watcher2.jpg" alt="watcher2" width="417" height="173" /></p>
<p>I&#8217;ll cover signal probes, and breakpoints later on. I&#8217;m not ready to utilize all the debugging facilities just yet, but knowing of their existence is half the battle.</p>
<p><strong>integrated documentation</strong></p>
<p>Ah&#8230;integrated docs, probably the number 1 reason I chose to pickup max 5. It looks as if the integrated help system has even more functionality, starting with the Clue window.</p>
<p><img class="alignnone size-full wp-image-260" title="windowmenu" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/windowmenu.jpg" alt="windowmenu" width="253" height="245" /></p>
<p>You know, before we get into the Clue window, one of the things I hate about Mac is the mess of floating windows.</p>
<p><img class="alignnone size-full wp-image-261" title="windowmess" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/windowmess.jpg" alt="windowmess" width="640" height="407" /></p>
<p>Flash CS3 has a great panel docking/flyout mechanism. I wish max/msp had something similar. Imagine it, a toolbar of objects on the left side, with zoom and pan (hand icon) tools. A maximized patcher surface, where multiple patch windows appear in tabs across the top. On the right and bottom sides, docked panels for the max window, clue window, etc.</p>
<p>And while I&#8217;m thinking about UI, I&#8217;ve got to say, the single worse UI design choice in max is the placement of the forward/back buttons for the help docs. Every single browser has these buttons located at the top left &#8211; it&#8217;s called spatial memory people! I always find myself instinctively moving the mouse up and to the left, before I remember, damn&#8230;it&#8217;s at the friggin bottom. &lt;/rant&gt;</p>
<p>Back to the Clue window. Hovering your mouse over the item in question reveals only a title.</p>
<p><img class="alignnone size-full wp-image-262" title="bufferclue1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/bufferclue1.jpg" alt="bufferclue1" width="323" height="121" /></p>
<p>Only when drop into edit the object text, does a description appear.</p>
<p><img class="alignnone size-full wp-image-263" title="bufferclue2" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/bufferclue2.jpg" alt="bufferclue2" width="463" height="124" /></p>
<p>I&#8217;m not sure if this was intended or is a bug. Either way, the Clue window doesn&#8217;t appear to be useful, we&#8217;ll see.</p>
<p>Clicking on the left inlet of an object reveals a reference menu. Below, I&#8217;ve clicked on the left inlet of a Number object:</p>
<p><img class="alignnone size-full wp-image-264" title="inletclick" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/inletclick.jpg" alt="inletclick" width="307" height="609" /></p>
<p>The listing of attributes, messages, and actions is quite nice. Clicking on the top-most attribute <strong>bgcolor</strong> inserts a message object and connects it to the number&#8217;s inlet.</p>
<p><img class="alignnone size-full wp-image-265" title="bgcolor1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/bgcolor1.jpg" alt="bgcolor1" width="146" height="70" /></p>
<p>I replace the args with a red color and test it out.</p>
<p><img class="alignnone size-full wp-image-266" title="bgcolor2" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/bgcolor2.jpg" alt="bgcolor2" width="138" height="78" /></p>
<p>The quick ref panel might be handy.</p>
<p>The last thing to note is given a selected object, it will then appear in the Help menu.</p>
<p><img class="alignnone size-full wp-image-267" title="helponselected" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/helponselected.jpg" alt="helponselected" width="481" height="296" /></p>
<p>Until next time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/patch-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>patch 1</title>
		<link>http://www.conceptualinertia.net/aoakenfo/patch-1</link>
		<comments>http://www.conceptualinertia.net/aoakenfo/patch-1#comments</comments>
		<pubDate>Sat, 03 Jan 2009 21:36:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[max/msp]]></category>

		<guid isPermaLink="false">http://www.conceptualinertia.net/aoakenfo/?p=225</guid>
		<description><![CDATA[As my exploration of max/msp continues, I think I&#8217;ll simply increment the patch count in the post title.
Last time, I had this &#60;sarcasm&#62;awesome&#60;/sarcasm&#62; patch:

Now, what I&#8217;d like to do is change the range of the slider from its default 0-127. Option click the slider and the .maxhelp has an example.

Now I&#8217;m wondering what type of [...]]]></description>
			<content:encoded><![CDATA[<p>As my exploration of max/msp continues, I think I&#8217;ll simply increment the patch count in the post title.</p>
<p>Last time, I had this &lt;sarcasm&gt;awesome&lt;/sarcasm&gt; patch:</p>
<p><img class="alignnone size-full wp-image-219" title="maxmetroslider1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/maxmetroslider1.jpg" alt="maxmetroslider1" width="242" height="287" /></p>
<p>Now, what I&#8217;d like to do is change the range of the slider from its default 0-127. Option click the slider and the .maxhelp has an example.</p>
<p><img class="alignnone size-full wp-image-227" title="maxsliderhelp" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/maxsliderhelp.jpg" alt="maxsliderhelp" width="264" height="221" /></p>
<p>Now I&#8217;m wondering what type of object the &#8220;size $1&#8243; button is. So, lets quickly drop into Edit mode and Option click it and quickly jump back out, so as not to disturb things. If you do mess things up, not to worry, it&#8217;ll prompt you to save the changes to which you should obviously say no.</p>
<p>Ok, so &#8220;size $1&#8243; button is actually a Message object. So, &#8217;size&#8217; is the message and $1 is a placeholder for an argument, received from the number box. I have a feeling the Message object is going to be quite common and very useful. If you open up the Slider reference doc and scroll down a bit, you can see that &#8217;size&#8217; is an attribute of the Slider object with a well written description. Size is a float to indicate the number of steps (range) and the default value is 128 or 0-127.</p>
<p><img class="alignnone size-full wp-image-228" title="metro1" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/metro1.jpg" alt="metro1" width="248" height="402" /></p>
<p>Even with such a trivial patch, I noticed a couple of UI usability issues. First, when I toggled the bang, the button didn&#8217;t flicker because the slider was set to 0. Second, if I want the range 0-500, I have to remember to set the Number box to 501. I wonder if it&#8217;s possible to add a +1 object&#8230;</p>
<p><img class="alignnone size-full wp-image-229" title="plusone" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/plusone.jpg" alt="plusone" width="293" height="473" /></p>
<p>Nice, you can have objects that do basic arithmetic. Another problem is preventing users from selecting a negative number. How do I do that? Wait a minute&#8230;the Number box in the Slider .maxhelp has a 30-90 range. How did they do that?If you drop into Edit mode and mouse over the left hand side of the object, a little &#8220;i&#8221; icon appears.</p>
<p><img class="alignnone size-full wp-image-230" title="inspectoricon" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/inspectoricon.jpg" alt="inspectoricon" width="235" height="200" /></p>
<p>Clicking it opens the following window, where the &#8216;Value&#8217; tab reveals what we&#8217;re looking for! Is it me or is this UI fairly intuitive?</p>
<p><img class="alignnone size-full wp-image-231" title="numberinspector" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/numberinspector.jpg" alt="numberinspector" width="500" height="450" /></p>
<p>I guess the &#8220;i&#8221; stands for Inspector. I also discovered you can open this window by using a keyboard shortcut (Command-I) or right clicking on the object.</p>
<p>My original goal was to change the slider range and the objects above the slider accomplish that goal in an indirect, clunky way. However, now that I&#8217;m aware of the Inspector, I can now simplify things by delete the objects and setting the range directly. I would like the range to go from 250 to 1000 ms.</p>
<p><img class="alignnone size-full wp-image-232" title="sliderrange" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/sliderrange.jpg" alt="sliderrange" width="504" height="451" /></p>
<p>The &#8216;Output Minimum&#8217; is 250 and the &#8216;Range&#8217; is 751. Remember, range indicates the number of steps inclusive. For example, a minimum of 0 with 4 steps would give you what range?</p>
<p>Finally, the patch I initially had in mind:</p>
<p><img class="alignnone size-full wp-image-233" title="slidermetropatch" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/slidermetropatch.jpg" alt="slidermetropatch" width="306" height="307" /></p>
<p>I wonder if I could hook this up to a MIDI slider on my controller? Woah.</p>
<p>First, I&#8217;ll need to install the latest M-audio <a href="http://www.m-audio.com/index.php?do=support&amp;tab=driver">drivers</a> for my midi interface and then configure it using the &#8216;Audio MIDI Setup&#8217; util that comes with OS X, which is kind of like a patcher window itself:</p>
<p><img class="alignnone size-full wp-image-236" title="audiomidisetup" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/audiomidisetup.jpg" alt="audiomidisetup" width="398" height="235" /></p>
<p>A good post about the &#8216;Audio MIDI Setup&#8217; util can be found <a href="http://www.sonosphere.com/MusicSoftware/MacOSX/AudioMIDISetup/">here</a>. As you can see, I&#8217;ve added a device for my Radium 49 midi controller. This is optional, but allows  programs to display the controller as &#8220;Radium 49&#8243; instead of &#8220;MIDISPORT 8&#215;8/s Port 1&#8243;.</p>
<p>Back to max/msp. Now, I imagine the first thing I would need to do is configure MIDI.</p>
<p><img class="alignnone size-full wp-image-237" title="midisetupmenu" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/midisetupmenu.jpg" alt="midisetupmenu" width="204" height="262" /></p>
<p>And would you look at that&#8230;everything looks to be in order already!</p>
<p><img class="alignnone size-full wp-image-238" title="midisetupwindow" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/midisetupwindow.jpg" alt="midisetupwindow" width="424" height="359" /></p>
<p>And now, if I just start typing &#8220;midi&#8221; in a new object&#8230;</p>
<p><img class="alignnone size-full wp-image-239" title="midiin" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/midiin.jpg" alt="midiin" width="229" height="138" /></p>
<p>Intellisense is awesome.</p>
<p>Hmm&#8230;the sliders move during testing, but they&#8217;re acting a little crazy, why? It&#8217;s almost as if their range is very small within the 751 units available. Oh yeah, it&#8217;s MIDI&#8230;duh. 7 out of 8 bits are used for payload, and 2^7 = 128 or 0-127. If you don&#8217;t believe me, type 2^7 into Google. So, I need to revert the range settings to the sliders default values:</p>
<p><img class="alignnone size-full wp-image-240" title="sliderangealtered" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/sliderangealtered.jpg" alt="sliderangealtered" width="501" height="214" /></p>
<p>And voila! The patch works nicely.</p>
<p><img class="alignnone size-full wp-image-241" title="midimetro" src="http://www.conceptualinertia.net/aoakenfo/wp-content/uploads/2009/01/midimetro.jpg" alt="midimetro" width="230" height="295" /></p>
<p>That was ridiculously easy. Glancing at the midiin object help docs, I can see there&#8217;s a lot more to learn and I&#8217;ll certainly revisit it. For now, I&#8217;m still in the exploration stage &#8211; it&#8217;s about pushing buttons and trying things out, without fear, to see what happens.</p>
<p>Until next time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptualinertia.net/aoakenfo/patch-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
