Sorry if I got you all excited but, I hereby make the awesome *Formula device, which I haven’t used myself sometime with the coming of the almost equally awesome (more useful) *MetaMixer device… into the Super Formula Device. It is comprised of the *Formula device, with all functions from Overtune (like rru, ard, squ, saw, crush, fold, etc) packed in the back aka the ‘User’ functions tab.
<?xml version="1.0" encoding="UTF-8"?>
<filterdeviceclipboard doc_version="0"><br>
<deviceslot type="FormulaMetaDevice"><br>
<isactive>true</isactive><br>
<isselected>true</isselected><br>
<selectedpresetname>Init</selectedpresetname><br>
<selectedpresetismodified>true</selectedpresetismodified><br>
<ismaximized>true</ismaximized><br>
<customdevicename>*Super Formula</customdevicename><br>
<formulaparagraphs><br>
<formulaparagraph>crush(fold(sin(LINEF / NUMLINES * TWOPI / <img src="https://files.renoise.com/forum/emoticons/default/cool.gif" class="bbc_emoticon" alt="B)">, C), 29)</formulaparagraph><br>
<formulaparagraph>*A+.5</formulaparagraph><br>
</formulaparagraphs><br>
<functionsparagraphs><br>
<functionsparagraph>pi=PI</functionsparagraph><br>
<functionsparagraph>lowrnd_buf = 0</functionsparagraph><br>
<functionsparagraph>lowrnd_step = 0</functionsparagraph><br>
<functionsparagraph>lownoi_buf = 0</functionsparagraph><br>
<functionsparagraph>lownoi_step = 0</functionsparagraph><br>
<functionsparagraph>flr=floor</functionsparagraph><br>
<functionsparagraph>rnd=random</functionsparagraph><br>
<functionsparagraph>equ = function(x) return x end local ite = function(i, t, e) if i then return t else return e end end local btoi = function(<img src="https://files.renoise.com/forum/emoticons/default/cool.gif" class="bbc_emoticon" alt="B)"> if b then return 1 else return 0 end end local itob = function(i) if i<=0 then return false else return true end end local saw = function(x) return 2*atan(tan(x/2))/pi end local squ = function(x) return (flr(sin(x)/2+1)*2-1) end local tri = function(x) return abs(1-mod((x+1.5*pi)/pi,2))*2-1 end local pls = function(x) return (flr(x/2+1)*2-1) end local ltan = function(x, y) return max(min(tan(x), y), -y)/y end local expsin = function(x, p) if p>1 then return (squ(x)^(1-p%2))*sin(x)^p else return squ(x)*abs(sin(x))^p end end local expsaw = function(x, p) if p>1 then return (squ(x)^(1-p%2))*saw(x)^p else return squ(x)*abs(saw(x))^p end end local exptri = function(x, p) if p>1 then return (squ(x)^(1-p%2))*tri(x)^p else return squ(x)*abs(tri(x))^p end end local sinsin sinsin = function(x, p) if p>1 then return sinsin(sin(x), p-1) else return sin(x) end end local sinsaw sinsaw = function(x, p) if p>1 then return sin(x*p)/p+sinsaw(x, p-1) else return sin(x) end end local sftsaw sftsaw = function(x, p) if p>1 then return sin(x*p)/(2^p)+sftsaw(x, p-1) else return sin(x) end end local sinsqu sinsqu = function(x, p) if p>1 then local v = p*2-1 return sin(x*v)/v+sinsqu(x, p-1) else return sin(x) end end local sqtfunhelp sqtfunhelp = function(fun, x, p) if p>1 then return sqrt(sqtfunhelp(fun, x, p-1)) else return abs(fun(x)) end end local sqtsin = function(x, p) return squ(x)*sqtfunhelp(sin, x, p) end local sqtsaw = function(x, p) return squ(x)*sqtfunhelp(saw, x, p) end local sqttri = function(x, p) return squ(x)*sqtfunhelp(tri, x, p) end local un = function(x) return (x+1)/2 end local bi = function(x) return x*2-1 end local clip = function(x, y) return max(min(x, y), -y) end local semiclip = function(x, y, z) return (max(min(x, y), -y)*z + (1-z)*x) end local fold = function(x, y) return -bi(abs(1-abs(un((1+y)*x)))) end local semifold = function(x, y, z) return fold(x, y)*z + (1-z)*x end local crush = function(x, y) return flr(x*y)/y end local semicrush = function(x, y, z) return (flr(x*y)/y)*z + (1-z)*x end local noise = function(x, y, p) return x+(ite(x<0, -1, 1))*y*(abs(x)^p)*rnd() end local lowrnd = function ( t, skip ) if lowrnd_step == 0 then lowrnd_buf = rnd() end lowrnd_step = mod( lowrnd_step + 1, skip ) return lowrnd_buf end local lownoise = function ( t, part ) if lownoi_step ~= flr(t*part) then lownoi_buf = rnd() end lownoi_step = flr(t*part) return lownoi_buf end local supermax = function(x, y) if x >= 0 then return max(x,y) else return min(x,y) end end local supermin = function(x, y) if x >= 0 then return min(x,y) else return max(x,y) end end local morph = function(x, y, z) return ((1-z)*x+z*y) end local upft = function(x, f, t) if x < f or x >= t then return 0 else return 1 end end local upf = function(x, f) if x < f then return 0 else return 1 end end local upt = function(x, t) if x >= t then return 0 else return 1 end end local sqrtsqrt = function(x, p) return sqtfunhelp(equ, x, p) end local ru = function(t, p) return t^p end local rd = function(t, p) return (1-t)^p end local aru = function(t, p) return 1-(1-t)^p end local ard = function(t, p) return 1-t^p end local rru = function(t, p) return 1-sqrtsqrt(1-t, p) end local rrd = function(t, p) return 1-sqrtsqrt(t, p) end local raru = function(t, p) return sqrtsqrt(t, p) end local rard = function(t, p) return sqrtsqrt(1-t, p) end</functionsparagraph><br>
</functionsparagraphs><br>
<inputnamea>á</inputnamea><br>
<inputnameb>ß</inputnameb><br>
<inputnamec>©</inputnamec><br>
<editorvisible>true</editorvisible><br>
<panelvisible>0</panelvisible><br>
<inputa><br>
<value>0.5</value><br>
<visualization>Mixer and Device</visualization><br>
</inputa><br>
<inputb><br>
<value>1.0</value><br>
<visualization>Device only</visualization><br>
</inputb><br>
<inputc><br>
<value>0.300000191</value><br>
<visualization>Device only</visualization><br>
</inputc><br>
<desttrack><br>
<value>-1</value><br>
<visualization>Device only</visualization><br>
</desttrack><br>
<desteffect><br>
<value>2</value><br>
<visualization>Device only</visualization><br>
</desteffect><br>
<destparameter><br>
<value>0.0</value><br>
<visualization>Device only</visualization><br>
</destparameter><br>
</deviceslot><br>
</filterdeviceclipboard>
(DISCLAIMER; I’ve done my best on all these functions which find their natural home in the Overtune tool. They are not guaranteed to work with the Formula device. Also, though I am confident they have been converted for use in Formula device properly, Formula is a hidden device by default and it is supposably not for nothing. So if your Renoise crashes and your million dollar song is lost (or similar scenarios) - by using this code, you agree to do this on your own risk and acknowledge that I can not be asked for compensation or even reasonable troubleshooting)