<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt">Hi Ivica,<br>&nbsp;&nbsp;&nbsp;&nbsp; I don't understand how [line] could fill in for interpolation between states.<br><br>On the other hand, I don't think you would actually need all the interpolation<br>states that pattrstorage provides.&nbsp; If you just did linear interpolation by allowing<br>to set the preset with a float (like 1.5) that is between two states, then the user<br>could easily build all the interpolation schemes that pattrstorage's interp message<br>provides simply by putting the necessary objects after [recall $1( .&nbsp; For example,<br>if you want a quartic curve you'd just do [expr pow($f1-int($f1), 2)+int($f1)] and<br>then feed that into preset_hub.<br><br>That of course wouldn't work for more complex stuff like cubic interpolation,<br>but that is conspicuously absent in pattrstorage,
 too.<br><br>-Jonathan<br><br><div><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;">  <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> <hr size="1">  <b><span style="font-weight:bold;">From:</span></b> Ivica Ico Bukvic &lt;ico@vt.edu&gt;<br> <b><span style="font-weight: bold;">To:</span></b> 'Jonathan Wilkes' &lt;jancsika@yahoo.com&gt;; 'flad chester' &lt;flad.chester@gmail.com&gt;; pd-list@iem.at <br> <b><span style="font-weight: bold;">Sent:</span></b> Sunday, September 30, 2012 9:42 PM<br> <b><span style="font-weight: bold;">Subject:</span></b> RE: [PD] Preset system in pd?<br> </font> </div> <br><div id="yiv793451570"><style><!--
#yiv793451570  
 _filtered #yiv793451570 {font-family:"Cambria Math";panose-1:2 4 5 3 5 4 6 3 2 4;}
 _filtered #yiv793451570 {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;}
 _filtered #yiv793451570 {font-family:Tahoma;panose-1:2 11 6 4 3 5 4 4 2 4;}
#yiv793451570  
#yiv793451570 p.yiv793451570MsoNormal, #yiv793451570 li.yiv793451570MsoNormal, #yiv793451570 div.yiv793451570MsoNormal
        {margin:0in;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New Roman", "serif";}
#yiv793451570 a:link, #yiv793451570 span.yiv793451570MsoHyperlink
        {color:blue;text-decoration:underline;}
#yiv793451570 a:visited, #yiv793451570 span.yiv793451570MsoHyperlinkFollowed
        {color:purple;text-decoration:underline;}
#yiv793451570 p.yiv793451570MsoAcetate, #yiv793451570 li.yiv793451570MsoAcetate, #yiv793451570 div.yiv793451570MsoAcetate
        {margin:0in;margin-bottom:.0001pt;font-size:8.0pt;font-family:"Tahoma", "sans-serif";}
#yiv793451570 span.yiv793451570EmailStyle17
        {font-family:"Calibri", "sans-serif";color:#1F497D;}
#yiv793451570 span.yiv793451570BalloonTextChar
        {font-family:"Tahoma", "sans-serif";}
#yiv793451570 .yiv793451570MsoChpDefault
        {font-size:10.0pt;}
 _filtered #yiv793451570 {margin:1.0in 1.0in 1.0in 1.0in;}
#yiv793451570 div.yiv793451570WordSection1
        {}
--></style><div><div class="yiv793451570WordSection1"><div class="yiv793451570MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;, &quot;sans-serif&quot;;color:#1F497D;">&nbsp;</span></div><div class="yiv793451570MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;, &quot;sans-serif&quot;;color:#1F497D;"> &nbsp;</span></div><div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt;"><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in;"><div class="yiv793451570MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;, &quot;sans-serif&quot;;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;, &quot;sans-serif&quot;;"> pd-list-bounces@iem.at [mailto:pd-list-bounces@iem.at] <b>On Behalf Of </b>Jonathan Wilkes<br><b>Sent:</b> Sunday, September 30, 2012 8:46 PM<br><b>To:</b> flad chester; pd-list@iem.at<br><b>Subject:</b>
 Re: [PD] Preset system in pd?</span></div></div></div><div class="yiv793451570MsoNormal"> &nbsp;</div><div><div class="yiv793451570MsoNormal" style="margin-left:10.5pt;background:white;"><span style="color:black;">Pd-l2ork now has [preset_hub]/[preset_node] for which I'm currently writing<br>help files.&nbsp; But I don't think it lets you interpolate between values.<br><br>-Jonathan</span><span style="color:#1F497D;"></span></div><div class="yiv793451570MsoNormal" style="background:white;"><span style="color:#1F497D;"> &nbsp;</span></div><div class="yiv793451570MsoNormal" style="background:white;"><span style="color:#1F497D;"> &nbsp;</span></div><div class="yiv793451570MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;, &quot;sans-serif&quot;;color:#1F497D;"> &nbsp;</span></div><div class="yiv793451570MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;, &quot;sans-serif&quot;;color:#1F497D;">To add to this,
 preset_node and hub are AFAIK the only preset system on pd that allow for use in conjunction with multiple instances of the same abstraction (e.g. you want to use two abstractions of same type and have presets in them that are controlled in the parent patch above them). For an example, see pd-l2ork K12 module (invoke pd-l2ork with –k12 flag). They also offer communication between nodes and hub allowing each of the nodes to send requests to the hub (e.g. any paired node can send a request to the hub to store and/or recall presets which can lead to some very cool possibilities). It is in many ways synonymous to pattrstorage in Max, so its contents are saved as part of the patch, rather than having to save them in a separate file. Finally, pairing nodes with a hub is simple and does not require any $0 workarounds. Simply have a [preset_hub foo], and as soon as you add [preset_node foo] it will automatically pair with the hub provided hub is positioned
 hierarchically higher than the node (e.g. in the same canvas or any of its parent canvases, it does not have to be before preset_node in the glist if it is located in the same canvas). Other features include, ability to compensate for infinite undo/redo (pd-l2ork) feature, cut/paste, to front/back (pd-l2ork feature), and other actions that tend to alter glist ordering. As a matter of fact, pd-l2ork always preserves glist structure wherever possible (including infinite undo/redo actions), and since preset_hub saves all presets as part of its creation arguments, undo/redo also recreate all saved presets. Preset_hub/node also support every data format except for pointers (for obvious reasons).</span></div><div class="yiv793451570MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;, &quot;sans-serif&quot;;color:#1F497D;"> &nbsp;</span></div><div class="yiv793451570MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,
 &quot;sans-serif&quot;;color:#1F497D;">That said, Jonathan is right, the preset_hub and node do not interpolate, but with some [line] love, this can be easily added to the patch with arguably better granularity control.</span></div><div class="yiv793451570MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;, &quot;sans-serif&quot;;color:#1F497D;"> &nbsp;</span></div><div class="yiv793451570MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;, &quot;sans-serif&quot;;color:#1F497D;">Cheers!</span></div></div></div></div></div></div><br><br> </div> </div> </blockquote></div>   </div></body></html>