<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span>As I wrote, I think you just implement linear interpolation.&nbsp; Let the user insert other objects in the chain to build their own</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span>curve.&nbsp; To be specific about the example:<br></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;">[hsl] &lt;-- from 0 to 1<br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif;
 background-color: transparent; font-style: normal;">|<br><span></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span>[recall $1(</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span>|</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span>[expr pow($f1-int($f1),2)+int($f1)]</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span>|</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style:
 normal;"><span>[preset_hub]</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><br><span></span></div><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> Monday, October 1, 2012 8:17 AM<br> <b><span style="font-weight:
 bold;">Subject:</span></b> RE: [PD] Preset system in pd?<br> </font> </div> <br>
<div id="yiv1747622100"><style><!--
#yiv1747622100  
 _filtered #yiv1747622100 {font-family:"Cambria Math";panose-1:2 4 5 3 5 4 6 3 2 4;}
 _filtered #yiv1747622100 {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;}
 _filtered #yiv1747622100 {font-family:Tahoma;panose-1:2 11 6 4 3 5 4 4 2 4;}
#yiv1747622100  
#yiv1747622100 p.yiv1747622100MsoNormal, #yiv1747622100 li.yiv1747622100MsoNormal, #yiv1747622100 div.yiv1747622100MsoNormal
        {margin:0in;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New Roman", "serif";}
#yiv1747622100 a:link, #yiv1747622100 span.yiv1747622100MsoHyperlink
        {color:blue;text-decoration:underline;}
#yiv1747622100 a:visited, #yiv1747622100 span.yiv1747622100MsoHyperlinkFollowed
        {color:purple;text-decoration:underline;}
#yiv1747622100 p.yiv1747622100MsoPlainText, #yiv1747622100 li.yiv1747622100MsoPlainText, #yiv1747622100 div.yiv1747622100MsoPlainText
        {margin:0in;margin-bottom:.0001pt;font-size:11.0pt;font-family:"Calibri", "sans-serif";}
#yiv1747622100 p.yiv1747622100MsoAcetate, #yiv1747622100 li.yiv1747622100MsoAcetate, #yiv1747622100 div.yiv1747622100MsoAcetate
        {margin:0in;margin-bottom:.0001pt;font-size:8.0pt;font-family:"Tahoma", "sans-serif";}
#yiv1747622100 p.yiv1747622100msoacetate, #yiv1747622100 li.yiv1747622100msoacetate, #yiv1747622100 div.yiv1747622100msoacetate
        {margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:"Times New Roman", "serif";}
#yiv1747622100 p.yiv1747622100msonormal, #yiv1747622100 li.yiv1747622100msonormal, #yiv1747622100 div.yiv1747622100msonormal
        {margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:"Times New Roman", "serif";}
#yiv1747622100 p.yiv1747622100msochpdefault, #yiv1747622100 li.yiv1747622100msochpdefault, #yiv1747622100 div.yiv1747622100msochpdefault
        {margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:"Times New Roman", "serif";}
#yiv1747622100 span.yiv1747622100msohyperlink
        {}
#yiv1747622100 span.yiv1747622100msohyperlinkfollowed
        {}
#yiv1747622100 span.yiv1747622100emailstyle17
        {}
#yiv1747622100 span.yiv1747622100balloontextchar
        {}
#yiv1747622100 p.yiv1747622100msonormal1, #yiv1747622100 li.yiv1747622100msonormal1, #yiv1747622100 div.yiv1747622100msonormal1
        {margin:0in;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New Roman", "serif";}
#yiv1747622100 span.yiv1747622100msohyperlink1
        {color:blue;text-decoration:underline;}
#yiv1747622100 span.yiv1747622100msohyperlinkfollowed1
        {color:purple;text-decoration:underline;}
#yiv1747622100 p.yiv1747622100msoacetate1, #yiv1747622100 li.yiv1747622100msoacetate1, #yiv1747622100 div.yiv1747622100msoacetate1
        {margin:0in;margin-bottom:.0001pt;font-size:8.0pt;font-family:"Tahoma", "sans-serif";}
#yiv1747622100 span.yiv1747622100emailstyle171
        {font-family:"Calibri", "sans-serif";color:#1F497D;}
#yiv1747622100 span.yiv1747622100balloontextchar1
        {font-family:"Tahoma", "sans-serif";}
#yiv1747622100 p.yiv1747622100msochpdefault1, #yiv1747622100 li.yiv1747622100msochpdefault1, #yiv1747622100 div.yiv1747622100msochpdefault1
        {margin-right:0in;margin-left:0in;font-size:10.0pt;font-family:"Times New Roman", "serif";}
#yiv1747622100 span.yiv1747622100EmailStyle31
        {font-family:"Calibri", "sans-serif";color:#1F497D;}
#yiv1747622100 span.yiv1747622100BalloonTextChar
        {font-family:"Tahoma", "sans-serif";}
#yiv1747622100 span.yiv1747622100PlainTextChar
        {font-family:"Calibri", "sans-serif";}
#yiv1747622100 .yiv1747622100MsoChpDefault
        {font-size:10.0pt;}
 _filtered #yiv1747622100 {margin:1.0in 1.0in 1.0in 1.0in;}
#yiv1747622100 div.yiv1747622100WordSection1
        {}
--></style><div><div class="yiv1747622100WordSection1"><div class="yiv1747622100MsoPlainText"><span style="color:black;">I thought you wanted values to interpolate between the origin and destination (making a curve over time). Finding a value between is trickier and may require some kind of implementation that belongs to preset_hub. Of course, then the question is how do you weigh such interpolation (or what function do you use?) and the next thing you know preset_hub has become expr and line and tons of other things in one, making it huge, redundant, and unwieldy to maintain. In other words, where do you draw the line? Will the linear interpolation be enough?</span></div><div class="yiv1747622100MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;, &quot;sans-serif&quot;;color:#1F497D;"> &nbsp;</span></div><div class="yiv1747622100MsoNormal"><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="yiv1747622100MsoNormal"><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;;"> Jonathan Wilkes [mailto:jancsika@yahoo.com] <br><b>Sent:</b> Sunday, September 30, 2012 11:43 PM<br><b>To:</b> Ivica Ico Bukvic; 'flad chester'; pd-list@iem.at<br><b>Subject:</b> Re: [PD] Preset system in pd?</span></div></div></div><div class="yiv1747622100MsoNormal"> &nbsp;</div><div><div class="yiv1747622100MsoNormal" style="margin-right:0in;margin-bottom:12.0pt;margin-left:10.5pt;background:white;"><span style="color:black;">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.</span><span style="color:#1F497D;"></span></div><div class="yiv1747622100MsoNormal" style="margin-bottom:12.0pt;background:white;"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,
 &quot;sans-serif&quot;;color:#1F497D;"> &nbsp;</span></div></div></div></div></div></div><br><br> </div> </div> </blockquote></div>   </div></body></html>