/*
THIS PLUGIN DOESN'T WORK WITH REAPER X64 !!!! USE REAPER X32 !!!!

'The Provolone' is what is called a 'single line c synthesizer'.
You can get simple waveforms (like a sawtooth, or a square wave) full of alias noise, or
complex waveforms, or rythms, or symphonies. Or garbage. All of these generated with a single line of code.
Bleeps, glitches, noises: all of them in the mighty, wonderful world of the eight bits.
Everything goes from 0 to 255, nothing more, nothing less. 
'The Provolone' is also an effect, meaning that can process audio data from two inputs (L and R).
L and R channels are in fact fully separated, 'The Provolone' can work either in dual-mono or in stereo.
For example, you can send a stereo track to 'The Provolone', sum it in mono, mangle it and send 
the output to L channel, while the R channel is synthesizing a new, completely unrelated sound.

infos:
-------
http://countercomplex.blogspot.de/2011/10/algorithmic-symphonies-from-one-line-of.html
http://countercomplex.blogspot.de/2011/10/some-deep-analysis-of-one-line-music.html
https://news.ycombinator.com/item?id=3063359

http://www.cockos.com/reaper/sdk/js/basiccode.php#js_ops
https://en.wikipedia.org/wiki/Bitwise_operations_in_C
http://www.geeksforgeeks.org/interesting-facts-bitwise-operators-c/
http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/

online-tools:
---------------
https://greggman.com/downloads/examples/html5bytebeat/html5bytebeat.html
http://wry.me/toys/bytebeat/
http://wurstcaptures.untergrund.net/music/?samplerate=8000
http://langtons.atspace.com/audio/waveform.html
http://www.bemmu.com/music/index.html

...also:
-----------
https://medium.com/@naive_sound/glitch-a-noisy-fusion-of-math-and-music-6a9b24e7f5b5
http://naivesound.com/glitch/#(t*9%26t%3E%3E4%7Ct*5%26t%3E%3E7%7Ct*3%26t%2F1024)-1

equations:
------------
https://www.reddit.com/r/bytebeat/comments/20km9l/cool_equations/


bitwise operators:

online			jesusonic
---------------------------------------------
&	(AND)		&
|	(inclusive OR)	|
^	(eXclusive OR)	~
~	(NOT)		(not available ?)
<<	(LEFT shift)	<<
>>	(RIGHT shift)	>>


some examples...

online:	~(t>>4|t>>2&t%5|t*3&t>>8)
js:	0~(t>>4|(t>>2&t)%5|t*3&t>>8)

online:	(((t*5&t>>6)^(t>>4|t>>2&t%5|t*3&t>>8)))
js:	(((t*5&t>>6)~(t>>4|(t>>2&t)%5|t*3&t>>8)))

js:	t*5&(t>>7)|t*3&(t*4>>10)		...is not working...
js:	t*5&(t>>7)|t*3&((t*4)>>10)		...works...


left-click = sets g variable to 1 (otherwise 0)
right-click = sets h variable to 1 (otherwise 0)
left-click-drag = sets x/y variables between 0 and 255
right-click-drag = sets a/b variables between 0 and 255
shift-click = sets all variables to 0
*/

slider1:0<0,19,1{f00-f09,f10-f19,f20-f29,f30-f39,f40-f49,f50-f59,f60-f69,f70-f79,f80-f89,f90-f99,f100-f109,f110-f119,f120-f129,f130-f139,f140-f149,f150-f159,f160-f169,f170-f179,f180-f189,f190-f199}>function bank
slider2:0<0,9,1{fn0,fn1,fn2,fn3,fn4,fn5,fn6,fn7,fn8,fn9}>function preset
slider3:5<1,10,1>samplerate divider (r)
slider4:1<0,1,1{No,Yes}>link output sliders
slider5:-24<-60,0,1>output L (dB)
slider6:-24<-60,0,1>output R (dB)
slider7:1<0,1,1{Off,On}>--filter

slider10:0<0,255,1>--X
slider11:0<0,255,1>--Y
slider12:0<0,255,1>--A
slider13:0<0,255,1>--B

in_pin:L AUX in
in_pin:R AUX in
out_pin:L out
out_pin:R out

@init
//ext_noinit = 1;

prev_outL = prev_outR = 0;
border_size = 13;
i = il = ir = 0;
_t = t = 0;
g = h = 0;
v0 = v1 = 0;

_r = slider3;
r = srate / _r|0;
link_sliders = slider4;
filter_on = slider7;
x = slider10;
y = slider11;
a = slider12;
b = slider13;
fptr = slider2 + 10 * slider1;

Name = "";

// Filter
fil1 = fil0 = 0;
// DC Remove
itm1 = -0.06309573;
itm2 = -0.06309573;
otm1 = otm2 = 0;

/* ---------------------------- insert functions (presets) here!  -------------------------------------------------------------------------------------------
Format:
f(c, v)  where:
c = channel (0=spl0, 1=spl1)
v = previous sample value
Every function can set its name through the Name variable

Global vars:
Every function has access to these global variables:
i = input sample (mono, normalized to 8 bit)
il = input, left channel (normalized to 8 bit)
ir = input, right channel (normalized to 8 bit)
r = sample rate / the value of the r slider. For example, if the slider value is 6 and samplerate is 44100 r is 44100/6 = 7350            
t = 32bit variable incremented every r samples. For example, if r = 6, sample rate is 44100 and f(c,v) = t, 
     the output frequency will be: 7350 / 256(*) = 28,7 Hz            
     (*) output is 8 bit, so EVERYTHING is a module of 256!
x and y are two custom values set by clicking with the LEFT mouse button in the black area; value range: 0 - 255
a and b are two custom values set by clicking with the RIGHT mouse button in the black area; value range: 0 - 255
g = 1 if LEFT mouse button (LMB) is down, otherwise 0
h = 1 if RIGHT mouse button (RMB) is down, otherwise 0        
--------------------------------------------------------------------------------------------------------------------------------------------------------------*/    

function f0(c, v) ( Name="f0 --- ";
0;
);

function f1(c, v) ( Name="f1";
m=0x0cccbabc; // m=melody, goes from right to left
s=t>>10&60; // s=speed
o=t*(15&m>>s)&128; // o=melody output ; 15& tells the app we are using hex numbers, 0 through f

o&t>>4;
);

function f2(c, v) ( Name="f2";
m=0x0137d52f;
s=t>>9&60;
l=t*(15&m>>s)&18&t>>32;
l*((t>>3&7)&15)~((((t>>12)~(t>>12)-2)%11*t)|t>>136)&127;
);

function f3(c, v) ( Name="f3";
m=0x0137d52f;
s=t>>9&60;
l=t*(15&m>>s)&18&t>>32;
l*((t>>3&7)&15)~((((t>>12)~(t>>12)-2)%11*t)|t>>229)&127;
);

function f4(c, v) ( Name="f4";
m=0x09b50703;
s=t>>9&60;
l=t*(15&m>>s)&18&t>>32;
l*((t>>3&7)&15)~((((t>>42)~(t>>12)-2)%11*t)|t>>136)&127;
);

function f5(c, v) ( Name="f5";
m=0x01b59739;
s=t>>9&60;
l=t*(15&m>>s)&18&t>>32;
l*((t>>3&7)&(128/11))~((((t>>42)~(t>>249)-255)%(128/30)*t)|t>>136)&127;
);

function f6(c, v) ( Name="f6";
m=0x01b59739;
s=t>>105&60;
l=t*(15&m>>s)&18&t>>2;
l*((t>>76&58)&(128/11))|(3000/(m=t&16383)&42)*35+(w=t*12*(t>>16&3)/24&127)*(m/40000)+((t>>8~t>>10|t>>14|w)&63);
);

function f7(c, v) ( Name="f7";
m=0x005f1641;
s=t>>0&60;
l=t*(m>>s)&18&t>>32;
l*((t>>3&7)&(128/11))~((t>>5|t>>4)|t*1%t*(t>>12)%4)&144;
);

function f8(c, v) ( Name="f8";
sb=(t>0xffff?1:0);

o=1-((t&0x7ff)/0x7ff);
d=((floor(14*t*t~t))&0x7ff);

g=(t&0x7ff)/0x7ff;
g=1-(g*g);

w=pow(2,((t>>14&3)>2?1:0)&1/12);
h=w|(t>>10&96);

m=0x01b59739; // m=melody, goes from right to left
s=t>>10&60; // s=speed
l=t*(15&m>>s)&18&t>>1;

wav = (floor(l*t*0.241)&127-102)+(floor(l*t*0.25)&127-102)*1.2;
drum = ((floor((floor(5*t)&0x7ff)*o)&255-127)*((0x53232323>>(t>>11&31))&1)*o*1+
(floor(d*o)&255-128)*((0xa444c444>>(t>>11&31))&1)*o*1.5+
(floor((o*o*d*(t>>9&1)))&0xff-0x80)*0.1337)*sb;
ins = ((floor(h*t)&31)+(floor(h*t*1.992)&31)+(floor(h*t*0.497)&31)+(floor(h*t*0.977)&31))*g*sb;

wav+drum+ins;
);

function f9(c, v) ( Name="f9";
sb=(t>0xffff?1:0);

g=(t&0x7ff)/0x7ff;
g=1-(g*g);

m=0x000c0abd; // m=melody, goes from right to left
s=t>>7&60; // s=speed
l=t*(15&m>>s)&18&t>>32;

mm=0x0ac0b0be; // mm=melody, goes from right to left
ss=t>>10&60; // ss=speed
ll=t*(15&mm>>ss)&42&t>>41;

o=1-((t&0x7ff)/0x7ff);
d=((14*t*t~t)&0x7ff);

drum = (floor((floor(5*t)&0x7ff)*o)&255-127)*((0x53232323>>(t>>11&31))&1)*o*1+
(floor(d*o)&255-128)*((0xa444c444>>(t>>11&31))&1)*o*1.5+
((floor((o*o*d*(t>>9&1)))&0xff-0x80)*0.1337)*sb;
wav = ((l*t*0.25)&127-102)+((l*t*0.25)&127-102)*1.2*sb;
ins = (((ll*t)&31)+((ll*t*2)&31)+((ll*t*0.5)&31)+((ll*t)&31))*g*sb;

drum+wav+ins;
);

function f10(c, v) ( Name="f10";
(((w=ceil(t/1500)%16))%8==1|(w==3)|(w==6))*sin(200-200*sqrt((t%6000)/6000))*50+(rand(2)-1)*40*(w%8==5)+(((t|(t>>9|t>>7))*t&(t>>11|t>>9))&63)*(w%3==0);
);

function f11(c, v) ( Name = "f11";
(3000/(w=t&16383)&42)*35+(m=t*12*(t>>16&3)/24&127)*(w/40000)+((t>>8~t>>10|t>>14|m)&63);
);

function f12(c, v) ( Name = "f12";
((floor(3000/(w=t&16383))&1)*35)+(m=t*(((117)>>(t>>16&3))&12)/18&127)*floor(w/40000)+((t>>7~t>>14|t>>11|m)&63);
);

function f13(c, v) ( Name = "f13";
t*((t>>21|t>>129)&147&t>>75)%24;
);

function f14(c, v) ( Name = "f14";
t*((t>>2|t>>132)&166&t>>74)%30;
);

function f15(c, v) ( Name = "f15";
t*((t>>2|t>>176)&30&t>>105)%9;
);

function f16(c, v) ( Name = "f16";
t*((t>>2|t>>186)&46&t>>137)%10;
);

function f17(c, v) ( Name = "f17";
t*((t>>2|t>>125)&78&t>>74)%10;
);

function f18(c, v) ( Name = "f18";
t*((t>>2|t>>186)&30&t>>74)%10;
);

function f19(c, v) ( Name = "f19";
t*((t>>2|t>>208)&55&t>>108)%10;
);

function f20(c, v) ( Name = "f20";
(((t*5&t>>6)~(t>>4|t>>2&t%5|t*3&t>>8)));
);

function f21(c, v) ( Name = "f21";
(((t*5&t>>6)~(t>>4|t>>2&t%5|t*3&t>>8)))|(((t*241&t>>5)~(t>>13|t>>2&t%5|t*3&t>>5)));
);

function f22(c, v) ( Name = "f22";
(t&(t>>5)+(t|t>>7|(t*t>>10))|(t>>5)+((t>>7|t>>4)&127));
);

function f23(c, v) ( Name = "f23";
((-2*t)&(t>>4)+(t|t>>7|(t*t>>10))|(t>>5)+((t>>7|t>>4)&63));
);

function f24(c, v) ( Name = "f24";
((4*t)&(t>>5)+(t|t>>7|(t*t>>10))|(t>>5)+((t>>7|t>>4)&65));
);

function f25(c, v) ( Name = "f25";
((-4*t)&(t>>5)+(t|t>>7|(t*t>>10))|(t>>5)+((t>>7|t>>4)&65));
);

function f26(c, v) ( Name = "f26";
(((t>>4)|(t%10))+3.3)|(((t%101)|(t>>14))&((t>>7)|(t*t%17)));
);

function f27(c, v) ( Name = "f27";
(t>>6)~t&0x25|t+(t~t>>11)-t*((t%24?2:6)&t>>11)~(t<<1)&(t&0x256?t>>4:t>>10);
);

function f28(c, v) ( Name = "f28";
(t>>6)~(t&37)|t+(t~t>>11)-t*((t%24?2:6)&t>>11)~(t<<1)&(t&598?t>>4:t>>10);
);

function f29(c, v) ( Name = "f29";
(t>>6)~(t&37)|t+(t~t>>11)-t*((t%24?2:6)&t>>11)~((t<<3)&(t&598?t>>4:t>>10));
);

function f30(c, v) ( Name = "f30";
(t|(t>>9|t>>7))*t&(t>>11|t>>9);
);

function f31(c, v) ( Name = "f31";
((t>>7|t<<sin(t)|t>>6)*10)+45;
);

function f32(c, v) ( Name = "f32";
(t>>7|t|t>>6)*10+4*(t&t>>13|t>>6);
);

function f33(c, v) ( Name = "f33";
(t>>8|t|t>>(t>>16))*247+((t>>11)&15);
);

function f34(c, v) ( Name = "f34";
(t>>6|t|t>>(t>>16))*10+((t>>11)&7);
);

function f35(c, v) ( Name = "f35";
(t>>7|t*3|t>>(t>>15))*10+((t>>8)&5);
);

function f36(c, v) ( Name = "f36";
(t>>6|t<<1)+(t>>5|t<<3|t>>3)|t>>2|t<<1;
);

function f37(c, v) ( Name = "f37";
(t>>6|t<<5|t>>5)+(t>>10|t<<3|t>>3)|t>>2|t<<1;
);

function f38(c, v) ( Name = "f38";
(t>>6|t<<1)|(t>>4|t<<4|t>>3)+(t>>3|t<<2);
);

function f39(c, v) ( Name = "f39";
t*(t~t+(t>>15|1)~(t-1280~t)>>10);
);

function f40(c, v) ( Name = "f40";
(((t>>7)&t)-(t>>5)+((t>>7)&t))|(t*((t>>13)&4));
);

function f41(c, v) ( Name = "f41";
t>>16|((t>>4)%16)|((t>>4)%192)|((t*t)%64)|((t*t)%96)|(t>>16)*(t|t>>5);
);

function f42(c, v) ( Name = "f42";
(t>>5)|(t<<4)|((t&1023)~1981)|((t-67)>>4);
);

function f43(c, v) ( Name = "f43";
(t>>7)|(t<<3)|((t&1023)~1981)|((t-67)>>4);
);

function f44(c, v) ( Name = "f44";
(t>>3)|t&((t*2)~40)|(t<<2)|((t&1023)~1981)|((t+128)>>4);
);

function f45(c, v) ( Name = "f45";
t&(1<<16)/(t&13747)-t>>6;
);

function f46(c, v) ( Name = "f46";
t&t>>4&t>>6&t*t>>8;
);

function f47(c, v) ( Name = "f47";
t*((t&t>>9)&(t>>10));
);

function f48(c, v) ( Name = "f48";
(w=(t>>(1+(t>>13&1)))*(t>>15&0xfd)*(t>>11&0xdf)*(t>>7&0xcc))*0+((t<<1))&w~((t<<2))&w;
);

function f49(c, v) ( Name = "f49";
(m=0x3fffff/t)*0+(w=((((((t>>1)~(t)~(t>>2))>>(10+((t<65535)<<2))&0x3)+1)*(((t-65535)>>(16-(t>>17&1))&0x3~1)+1))*t))*0+(((w*1.33)&255)>sin(t*0.00004+m)*110+128)+127|(((w*1.3)&255)>cos(t*0.00004+m)*110+128)+127;
);

function f50(c, v) ( Name = "f50";
t>>5|t&t*2~40|((t+128)>>4);
);

function f51(c, v) ( Name = "f51";
t>>5|t&t*2~40|((t+128)>>7);
);

function f52(c, v) ( Name = "f52";
(t>>4|t&t*2~255|((t+128)>>13))+(t>>4|t&t*6~255|((t+128)>>7));
);

function f53(c, v) ( Name = "f53";
(t>>4|t&t*2~255|((t+128)>>4))+(t>>4|t&t*6~255|((t+128)>>7));
);

function f54(c, v) ( Name = "f54";
(t>>4|t&t*4~255|((t+128)>>6))+(t>>4|t&t*12~255|((t+128)>>8));
);

function f55(c, v) ( Name = "f55";
(t>>4|t&t*2~40|((t+128)>>6))+(t>>0|t&t*2~40|((t+128)>>6));
);

function f56(c, v) ( Name = "f56";
(t>>4|t&t*2~40|((t+128)>>6))+(t>>4|t&t*2~40|((t+128)>>8));
);

function f57(c, v) ( Name = "f57";
(t>>4|t&t*2~40|((t+128)>>6))+(t>>4|t&t*8~80|((t+128)>>8));
);

function f58(c, v) ( Name = "f58";
(t>>4|t&t*2~40|((t+128)>>6))+(t>>4|t&t*7~227|((t+128)>>8));
);

function f59(c, v) ( Name = "f59";
(t>>4|t&t*2~40|((t+128)>>6))+(t>>4|t&t*6~189|((t+128)>>8));
);

function f60(c, v) ( Name = "f60";
t>>163|t&t*2~40|((t+128)>>166);
);

function f61(c, v) ( Name = "f61";
(t>>8|t|t>>92)*7;
);

function f62(c, v) ( Name = "f62";
t>>4|(t*2)&(t>>5);
);

function f63(c, v) ( Name = "f63";
((t>>1%4)+4)*((8*t)>>14)*((4*t)>>2);
);

function f64(c, v) ( Name = "f64";
t%(t-(t>>6|t>>9)/2&250&t>>10|t);
);

function f65(c, v) ( Name = "f65";
(((t*9)&t>>4)|((t*5)&t>>7)|((t*3)&t/1024));
);

function f66(c, v) ( Name = "f66";
((t*9)&t>>4|(t*5)&t>>7|(t*3)&t/1024);
);

function f67(c, v) ( Name = "f67";
(t/10000000*t*t+t)%127|t>>4|t>>5|t%127+(t>>16)|t;
);

function f68(c, v) ( Name = "f68";
(((t/1024)*t+t>>2)%128|t>>4|t>>5|t%256+(t>>16)|t);
);

function f69(c, v) ( Name = "f69";
(t>>(t%(5+t%3)))|(t>>(5+t%3)+t%(5+t%3));
);

function f70(c, v) ( Name = "f70";
(((t*15)&(t>>5))|((t*5)&(t>>3))|((t*2)&(t>>9))|((t*8)&(t>>11)))-3;
);

function f71(c, v) ( Name = "f71";
(((t*4)*(((t>>11)&1)?1:0)*(((t>>11)&8)?0:1)+(t*2)*(((t>>10)&1)?1:0)*(((t>>10)&128)?0:1)+(t*4)*(((t>>10)&1)?1:0)*(((t>>10)&128)?1:0)+(t*sin(t)*(((t>>10)&4)?1:0)*(((t>>10)&1)?1:0)))%256)*(7/10);
);

function f72(c, v) ( Name = "f72";
(((t*248)*(((t>>11)&1)?1:0)*(((t>>11)&8)?0:1)+(t*2)*(((t>>10)&1)?1:0)*(((t>>10)&128)?0:1)+(t*4)*(((t>>10)&1)?1:0)*(((t>>10)&128)?1:0)+(t*sin(t)*(((t>>10)&4)?1:0)*(((t>>10)&1)?1:0)))%256)*(7/10);
);

function f73(c, v) ( Name = "f73";
(t<65536)?((2*t*(t>>11)&(t-1)|(t>>4)-1)%64):(((t%98304)>65536)?((17*t*(2*t>>8)&(t-1)|(t>>6)-1)%64|(t>>4)):((15*t*(2*t>>16)&(t-1)|(t>>8)-1)%64|(t>>4)));
);

function f74(c, v) ( Name = "f74";
(t+(t>>2)|(t>>5))+(t>>3)|((t>>13)|(t>>7)|(t>>11));
);

function f75(c, v) ( Name = "f75";
(t>>(t&7))|(t<<(t&42))|(t>>7)|(t<<5);
);

function f76(c, v) ( Name = "f76";
(t>>4)|(t%10)|(((t%101)|(t>>14))&((t>>7)|((t*t)%17)))
);

function f77(c, v) ( Name = "f77";
t>>6~t&37|t+(t~t>>11)-t*((t%24?2:6)&t>>11)~t<<1&(t&598?t>>4:t>>10);
);

function f78(c, v) ( Name = "f78";
(19~t/96|(t*4))|((t*2)&(t>>5))~225&t;
);

function f79(c, v) ( Name = "f79";
(19~t/96|(t*252))|((t*2)&(t>>5))~225&t;
);

function f80(c, v) ( Name = "f80";
(t*5)&t>>7|(t*3)&t>>10|t>>4;
);

function f81(c, v) ( Name = "f81";
((t*5)&t>>7)|((t*3)&t>>10);
);

function f82(c, v) ( Name = "f82";
(t*5)&(t>>7)|(t*3)&((t*4)>>10);
);

function f83(c, v) ( Name = "f83";
(t*5)&(t>>7)|(t*2)&((t*1)>>10);
);

function f84(c, v) ( Name = "f84";
((t*5)&t>>11)|(t*9)&t>>4|(t*2)&t>>7|((t*3)&t>>9)&186;
);

function f85(c, v) ( Name = "f85";
((t*8)&t>>5|(t*4)&t>>5|(t*4)&t/1024)-t/4;
);

function f86(c, v) ( Name = "f86";
((t&4096)?((t*atan(t>>2)|(t/16))>>1):(t>>3)|((t&8192)?t<<2:t));
);

function f87(c, v) ( Name = "f87";
((t&4096)?((t*(4*t%255)|(t>>4))>>1):(t>>3)|((t&8192)?t<<2:t));
);

function f88(c, v) ( Name = "f88";
((t&4096)?((t*(4*t%128)|(t>>4))>>1):(t>>3)|((t&8192)?t<<2:t))+(t*(((t>>9)~((t>>9)-1)~1)%13));
);

function f89(c, v) ( Name = "f89";
((t&4096)?((t*(4*t%255)|(t>>4))>>1):(t>>3)|((t&8192)?t<<2:t))~((((t&8192)?((t&4096)?((t&1024)?t*2:t*4):((t&512)?t*4:t*4.2)):((t&4096)?((t&1024)?t*2:t*10):((t&512)?t*2:t*8))>>2)*((t&16384)?3:2))|t*((t&16384)?1/8:1/(0.01*t))>>1);
);

function f90(c, v) ( Name = "f90 Stereo";
w = c == 0 ? (
m=(((t*5&t>>6)~(t>>4|t>>2&t%5|t*3&t>>8)));
):(
w=(((t*241&t>>5)~(t>>13|t>>2&t%5|t*3&t>>5)));
);
w|m;
);

function f91(c, v) ( Name = "f91 Stereo";
w = c == 0 ? (
m=(t%(t>>(t>>7&t>>2))<<2);
):(
w=(t%(t/(t>>15&t>>6))>>4);
);
w|m;
);

function f92(c, v) ( Name = "f92";
(m=((t+0x3900)&0x2fff);(m*((u>>8)&4)*(((m>>13)&3)+((m>>10)&3))>>1))|(w=(t+0x100)&0x3000?(-t+0x2700):(t+0x2700);w*((w>>7)&4)*(((w>>13)&3)+((w>>10)&3))>>1);
);

function f93(c, v) ( Name = "f93";
((t>>4&t>>3|t<<8)~(t<<8))|((t%2==0)?t*2:t*8)+(t>>12&3)*(((t+2)%2==0)?t*6:(((t+4)%2==0)?t*8:t*4))~((t*t)/((t>>8&1000))%6)&51;
);

function f94(c, v) ( Name = "f94";
((t>>4&t>>4|t<<8)~(t<<8))|((t%2==0)?t*2:t*8)+(t>>44&3)*(((t+2)%2==0)?t*6:(((t+4)%2==0)?t*8:t*4));
);

function f95(c, v) ( Name = "f95";
((t>>4&t>>3|t<<8)~(t<<8))|((t%2==0)?t*2:t*8)+(t>>12&3)*(((t+2)%2==0)?t*6:(((t+4)%2==0)?t*8:t*4));
);

function f96(c, v) ( Name = "f96";
((t>>4&t>>4|t<<26)~(t<<8))|((t%2==0)?t*2:t*8)+(t>>44&3)*(((t+2)%2==0)?t*6:(((t+4)%2==0)?t*8:t*4));
);

function f97(c, v) ( Name = "f97";
((t*t)/((t>>8&1000))%6)&51;
);

function f98(c, v) ( Name = "f98";
((t*t)/((t>>8&1000))%6)&102;
);

function f99(c, v) ( Name = "f99";
((t*t)/((t>>8&1000))%3)&153;
);

function f100(c, v) ( Name = "f100";
(t*9&t>>4)|(t*5&t>>7)|t*3&t/1024;
);

function f101(c, v) ( Name = "f101";
(t*(t>>8|t>>9)&46&t>>8)|t/(t&t>>13|t>>6);
);

function f102(c, v) ( Name = "f102";
(t*(t>>8|t>>9)&66&t>>32)|t/(t&t>>13|t>>6);
);

function f103(c, v) ( Name = "f103";
(t*(t>>8|t>>9)&96&t>>32);
);

function f104(c, v) ( Name = "f104";
(t*(t>>8|t>>9)&46&t>>8)|(t&t>>13|t>>6);
);

function f105(c, v) ( Name = "f105";
(t*(t>>8|t>>9)&46&t>>8)*4|(t&t>>13|t>> 6);
);

function f106(c, v) ( Name = "f106";
(((t*(t>>8|t>>9)&46&t>>8))~(t&t>>13|t>>6));
);

function f107(c, v) ( Name = "f107";
(t*(t>>8|t>>9)&8&t>>2)*18|((t*2)&t>>11|t>> 6);
);

function f108(c, v) ( Name = "f108";
(t*(t>>8|t>>9)&15&t>>3)*31|((t*2)&t>>11|t>>6);
);

function f109(c, v) ( Name = "f109";
(((t*(t>>8|t>>9)&46&t>>32))~t/(t&t>>13|t>>6));
);

function f110(c, v) ( Name = "f110";
(((t*((((((t>>13)&16)?0x64646464:0x98769875)>>((((t>>13)&15)*4))&15))/4)*(((((t>>13)&16)?0x59999999:0x19999999)>>((t>>11)&63))&1))&64)|(t>>4))|((((t>>13)&16)?((t*((42&t>>10)))&32):((t&t>>8)&32)));
);

function f111(c, v) ( Name = "f111";
(t*(t>>8|t>>239)&(t&t>>8))~(t&t>>13|t>>6);
);

function f112(c, v) ( Name = "f112";
(t*(t>>8|t>>7)&(t&t>>8))~(t&t>>13|t>>6);
);

function f113(c, v) ( Name = "f113";
(t*(t>>8|t>>233)&((4*t)&t>>8))~(t&t>>15|t>>6);
);

function f114(c, v) ( Name = "f114";
(t&t>>12)*(t>>4|t>>8);
);

function f115(c, v) ( Name = "f115";
(t&t>>12)*(t>>4|t>>8)|(t>>6);
);

function f116(c, v) ( Name = "f116";
(t*(4|7&t>>13)>>((97~t>>11)&1)&128)+((t)*(t>>11&t>>13)*((47~t>>9)&3)&127);
);

function f117(c, v) ( Name = "f117";
((t/128)|(t*3))~((t*3)&(t>>5))&t;
);

function f118(c, v) ( Name = "f118";
(t%255&t)-(t>>13&t);
);

function f119(c, v) ( Name = "f119";
(t*t/256)&(t>>((t/1024)%16));
);

function f120(c, v) ( Name = "f120";
t*(51864>>(t>>9&14)&15)|t>>8;
);

function f121(c, v) ( Name = "f121";
t*(51864>>(t>>11&21)&31)|t>>3;
);

function f122(c, v) ( Name = "f122";
t*(51864>>(t>>11&15)&18)|t>>4;
);

function f123(c, v) ( Name = "f123";
((t+1024)*(10-t%10)&(t+100)>>5)|(t*5&t>>6);
);

function f124(c, v) ( Name = "f124";
((t+1024)*2&(t+100)>>5)|(t*5&t>>12);
);

function f125(c, v) ( Name = "f125";
(t&t>>7)*((1+t/4096)%2);
);

function f126(c, v) ( Name = "f126";
((t*2)&(t>>(t>>10)))+((t*1.2)&(t>>9)&31);
);

function f127(c, v) ( Name = "f127";
((t&1024)?t*(((t&0x1ffff)>=0x7fff)?(((t&0x1ffff)>=0xffff)?(((t&0x1ffff)>0x17fff)?1.5:1.2):1.75):2):0)|((t&4096)?t*tan(t*0.06125)|((t-819)/16):0)|((t>0x1ffff)&&(t&8192)?((t&512)?(t<<3)*(((t&0x1ffff)>0x7fff)?(((t&0x1ffff)>0xffff)?2:2.25):2):0):0);
);

function f128(c, v) ( Name = "f128";
(t*((t>>1|t>>7)&24&t>>42))~((t*((t>>9|t>>5)&24&t>>42))|(t*((t>>2|t>>4)&24&t>>24)));
);

function f129(c, v) ( Name = "f129 LMB";
w=((t*((t>>1|t>>7)&24&t>>42))~((t*((t>>9|t>>5)&24&t>>42))|(t*((t>>2|t>>4)&24&t>>24))));
m=((t*6)&((t>>8|t<<4))~(t*4)&((t>>7|t<<3))~(t*2)&((t>>6|t<<2)));
g?(w|m<<154;):(w~m;);
);

function f130(c, v) ( Name = "f130";
t>>4|t&t*(((t>>(6&8))~0)*((t>>11)~((t/3)>>12))%6);
);

function f131(c, v) ( Name = "f131";
t>>4|t&t*(((t>>(6&8))~218)*((t>>11)~((t/3)>>12))%6);
);

function f132(c, v) ( Name = "f132";
w=(t/2)~(t&64?63:0);
w=w>>w;
(w/(1+(w>>7))&(t/32)|(t>>11)%8%3*(t&32)+31);
);

function f133(c, v) ( Name = "f133";
w=(t/2)~(t&64?63:0);
w=w>>w;
(w/(1+(w>>7))&(t/32)|(t>>11)%8%3*(t&16)+25);
);

function f134(c, v) ( Name = "f134";
(t*((t>>11&t>>8)&123&t>>3));
);

function f135(c, v) ( Name = "f135";
t*((t>>9|t>>33)&15&t>>43)%10;
);

function f136(c, v) ( Name = "f136";
t*(42&t>>10)%13;
);

function f137(c, v) ( Name = "f137";
((t>>7|t&(t*0.5))|(t&t>>8)|t>>7)|t*(t>>8)|t>>7;
);

function f138(c, v) ( Name = "f138";
((t>>10)/255~(t>>10)-2)%11*t&64;
);

function f139(c, v) ( Name = "f139";
t*(t>>((t&4096)?(t>>4*t&2662):(t>>18*t&341)))|(t<<(t|72))|(t>>4);
);

function f140(c, v) ( Name = "f140";
t*(((t>>9)~((t>>9)-1)~1)%13);
);

function f141(c, v) ( Name = "f141";
(0~t>>2)*((127&t*(7&t>>10))<(245&t*(2+(5&t>>14))));
);

function f142(c, v) ( Name = "f142";
(255~t>>2)*((127&t*(7&t>>10))<(245&t*(2+(5&t>>14))));
);

function f143(c, v) ( Name = "f143";
(255~t>>2)*((127&t*(7&t>>10))<(245&t*(3+(5&t>>14))));
);

function f144(c, v) ( Name = "f144";
(255~t>>2)*((127&t*(7&t>>10))<(245&t*(4+(5&t>>14))));
);

function f145(c, v) ( Name = "f145";
(255~t>>2)*((127&t*(7&t>>10))<(245&t*(248+(5&t>>14))));
);

function f146(c, v) ( Name = "f146";
t>>4|t&((t>>5)~(t>>(-t>>1)>>128&(-t>>7)-(t>>24)));
);

function f147(c, v) ( Name = "f147 LMB";
g?w=8:w=2;
(((4*t)>>2)~t*(((t+132)%4096)&t)%128>>5|t>>4~t<<2)|(((2*t)>>7)~t*(((t+24)%8192)&t)%128>>w);
);

function f148(c, v) ( Name = "f148 LMB";
g?w=7:w=1;
(((4*t)>>2)~t*(((t+132)%4096)&t)%128>>5|t>>4~t<<2)|(((2*t)>>7)~t*(((t+24)%8192)&t)%128>>w);
);

function f149(c, v) ( Name = "f149 LMB";
g?w=7:w=3;
(((4*t)>>2)~t*(((t+132)%4096)&t)%128>>5|t>>4~t<<2)|(((2*t)>>7)~t*(((t+24)%8192)&t)%128>>w);
);

function f150(c, v) ( Name = "f150";
(t*((3+(1~t>>10&5))*(5+(3&t>>14))))>>(t>>8&3);
);

function f151(c, v) ( Name = "f151";
((-t&4095)*(255&t*(t&(t>>13)))>>12)+(127&t*(234&t>>8&t>>3)>>(3&t>>14));
);

function f152(c, v) ( Name = "f152";
t*(t>>((t&4096)?((t*t)/4096):(t/4096)))|(t<<(t/256))|(t>>4);
);

function f153(c, v) ( Name = "f153";
(t*(((t/10|0)~(t/10|0)-1280)%11)/2&127)+(t*(((t/640|0)~(t/640|0)-2)%13)/2&127);
);

function f154(c, v) ( Name = "f154 Stereo";
w = c == 0 ? (
m=((t&4096)?((t*(t~(t%255))|(t>>4))>>1):(t>>3)|((t&8192)?t<<2:t));
):(
w=t*(((t>>9)~((t>>9)-1)~1)%13);
);
m|w;
);

function f155(c, v) ( Name = "f155";
m=0x44514451; // m=melody, goes from right to left
s=t>>13&3; // s=speed
t*(252+(10&m>>s)/10)&t>>9;
);

function f156(c, v) ( Name = "f156";
m=0x36364689; // m=melody, goes from right to left
s=t>>10&60; // s=speed
(t*(15&m>>s)&128&t>>4)+((((((t>>12)~(t>>12)-2)%11)*t)/4|t>>13)&127);
);

function f157(c, v) ( Name = "f157";
w=t*pow(2,(0x75054970>>((t>>13&7)<<2)&0xF)/12+2)*((t>>11&3)+1);
abs((w%256-128)-64);
);

function f158(c, v) ( Name = "f158";
((t/2)~(((t>>4|t)>>8)%11)&255)/4+
(t*(((t>>5|t)>>8)%11)&100)/2+
((t/4096+1)%2<1)~((t/16)&255)/2+
((t/4096+1)%2<1)~(rand(255)*((t/16&255)<12))/2;
);

function f159(c, v) ( Name = "f159 Stereo";
o=((t/2)~(((t>>4|t)>>8)%11)&255)/4;
s=(t*(((t>>5|t)>>8)%11)&100)/2;
m=((t/4096+1)%2<1)~((t/16)&255)/2;
w=((t/4096+1)%2<1)~(rand(255)*((t/16&255)<12))/2;
o|s|m|w;
);

function f160(c, v) ( Name = "f160";
m=t%131072;
t<196608?(m<8192?t*4.2|t>>4:m<8192*2?t*6.3|t>>4:m<8192*3?
t*7|t>>4:m<8192*4?t*6.3|t>>5:m<8192*5?t*5.65|t>>4:m<8192*6?t*5.25|t>>4:m<8192*7?t*4.75|t>>4:m<8192*8?t*4.2|t>>5:m<8192*9?
t*6.3|t>>4:m<8192*10?t*5.65|t>>4:m<8192*11?t*5.25|t>>4:m<8192*12?t*4.75|t>>5:m<8192*13?
t*6.3|t>>4:m<8192*14?t*5.65|t>>4:m<8192*15?t*5.25|t>>4:m<8192*16?t*4.75|t>>5:0):255;
);

function f161(c, v) ( Name = "f161";
m=t*465/(43+6*(t>>15&3~1));
((m/4&t>>6)+m/2&127)+(m/6&127);
);

function f162(c, v) ( Name = "f162";
m=t-2048;
((t&t>>6)&(t*(t>>((t&65535)>>12))))+(((t*3/4)&t>>12)&127)+(t*(m>>7&m>>8&m>>9&16)>>(t/64));
);

function f163(c, v) ( Name = "f163";
m=t-256;
((44*(t/256-28|3)|(t*8)&t>>11&t>>5|t*(m>>3&m>>4&m>>5&64)>>(t/16))/2&127)+(((t~t+t/256)&255)/(5-(t>>17&3))/2&127);
);

function f164(c, v) ( Name = "f164";
m=t>>12&1;
w=(t>>9)+4;
(t*t*(t&255)*m/156+(t*(t~15)+t)*((w|t/2048+1&127)-w)/64&127-m*((t>>5&127)*2/3+32));
);

function f165(c, v) ( Name = "f165 --- ";
0;
);

function f166(c, v) ( Name = "f166 --- ";
0;
);

function f167(c, v) ( Name = "f167 --- ";
0;
);

function f168(c, v) ( Name = "f168 --- ";
0;
);

function f169(c, v) ( Name = "f169 --- ";
0;
);

function f170(c, v) ( Name = "f170 --- ";
0;
);

function f171(c, v) ( Name = "f171 --- ";
0;
);

function f172(c, v) ( Name = "f172 --- ";
0;
);

function f173(c, v) ( Name = "f173 --- ";
0;
);

function f174(c, v) ( Name = "f174 --- ";
0;
);

function f175(c, v) ( Name = "f175 --- ";
0;
);

function f176(c, v) ( Name = "f176 --- ";
0;
);

function f177(c, v) ( Name = "f177 --- ";
0;
);

function f178(c, v) ( Name = "f178 --- ";
0;
);

function f179(c, v) ( Name = "f179 ---";
0;
);

function f180(c, v) ( Name = "f180 --- ";
0;
);

function f181(c, v) ( Name = "f181 --- ";
0;
);

function f182(c, v) ( Name = "f182 --- ";
0;
);

function f183(c, v) ( Name = "f183 --- ";
0;
);

function f184(c, v) ( Name = "f184 --- ";
0;
);

function f185(c, v) ( Name = "f185 --- ";
0;
);

function f186(c, v) ( Name = "f186 --- ";
0;
);

function f187(c, v) ( Name = "f187 --- ";
0;
);

function f188(c, v) ( Name = "f188 --- ";
0;
);

function f189(c, v) ( Name = "f189 --- ";
0;
);

function f190(c, v) ( Name = "f190 square";
// square wave generator, m is pitch
m=t/4;
w=sin(m)+
sin(m*3)/3+
sin(m*5)/5+
sin(m*7)/7+
sin(m*9)/9+
sin(m*11)/11+
sin(m*13)/13+
sin(m*15)/15+
sin(m*17)/17+
sin(m*19)/19;
w*16+128;
);

function f191(c, v) ( Name = "f191 triangle";
// triangle wave generator, m is pitch
m=t/4;
w=sin(m)-
sin(m*3)/9+
sin(m*5)/25-
sin(m*7)/49+
sin(m*9)/81-
sin(m*11)/121+
sin(m*13)/169-
sin(m*15)/225+
sin(m*17)/289-
sin(m*19)/361;
w*16+128;
);

function f192(c, v) ( Name = "f192 organ";
// An organ with vibrato/timbre alterations
wobble=t/2000;
pitch=(t/20.5);
organ=sin(pitch+wobble)+
sin(pitch*2+wobble)/2+
sin(pitch*4+wobble)/4+
sin(pitch*8+wobble)/8+
sin(pitch*16+wobble)/16+
sin(pitch*32+wobble)/32+
sin(pitch*64+wobble)/64+
sin(pitch*128+wobble)/128+
sin(pitch*256+wobble)/256;
organ*64+128;
);

function f193(c, v) ( Name = "f193 organ song";
// Organ song
wobble=t/2000;
pitch=(t/(5+(t>>12|t>>8&t>>13)));
organ=sin(pitch+wobble)+
sin(pitch*2+wobble)/2+
sin(pitch*4+wobble)/4+
sin(pitch*8+wobble)/8+
sin(pitch*16+wobble)/16+
sin(pitch*32+wobble)/32+
sin(pitch*64+wobble)/64+
sin(pitch*128+wobble)/128+
sin(pitch*256+wobble)/256;
organ*64+128;
);

function f194(c, v) ( Name = "f194 XY";
p=(t%(255-x))==0;
u=((p*(255-y))*(k==0));
n=((n==0)*u)+((n>0)*(n-1));
k=((n>0)*255);
);

function f195(c, v) ( Name = "f195 split X";
// x= 127 or 128 (or 63/64, 95/96, 159/160, 191/192 where x= 0 default)
m=(((t*5&t>>6)~(t>>4|t>>2&t%5|t*3&t>>8)));
w=x|(((t*5&t>>6)~(t>>4|t>>2&t%5|t*3&t>>8)));

// variation , x= 255 default
//m=(((t*5&t>>6)~(t>>4|t>>2&t%5|t*3&t>>8)));
//w=x&(((t*5&t>>6)~(t>>4|t>>2&t%5|t*3&t>>8)));

m=m~w;
w=m~w;
m=m~w;
);

function f196(c, v) ( Name = "f196 Input";
(((i~i-8)%11)*20);
);

function f197(c, v) ( Name = "f197 --- ";
0;
);

function f198(c, v) ( Name = "f198 --- ";
0;
);

function f199(c, v) ( Name = "f199 --- ";
0;
);

// --------------------------------------------------------------------- end of presets area -----------------------------------------------------------------

// --------------------------------------------------- function selector. I really miss a switch() statement... --------------------------------------------
function f0f9(c, v, fptr)
(
fptr == 0 ? f0(c, v) :
fptr == 1 ? f1(c, v) :
fptr == 2 ? f2(c, v) :
fptr == 3 ? f3(c, v) :
fptr == 4 ? f4(c, v) :
fptr == 5 ? f5(c, v) :
fptr == 6 ? f6(c, v) :
fptr == 7 ? f7(c, v) :
fptr == 8 ? f8(c, v) :
f9(c, v) ;
);

function f10f19(c, v, fptr)
(
fptr == 10 ? f10(c, v) :
fptr == 11 ? f11(c, v) :
fptr == 12 ? f12(c, v) :
fptr == 13 ? f13(c, v) :
fptr == 14 ? f14(c, v) :
fptr == 15 ? f15(c, v) :
fptr == 16 ? f16(c, v) :
fptr == 17 ? f17(c, v) :
fptr == 18 ? f18(c, v) :
f19(c, v) ;
);

function f20f29(c, v, fptr)
(
fptr == 20 ? f20(c, v) :
fptr == 21 ? f21(c, v) :
fptr == 22 ? f22(c, v) :
fptr == 23 ? f23(c, v) :
fptr == 24 ? f24(c, v) :
fptr == 25 ? f25(c, v) :
fptr == 26 ? f26(c, v) :
fptr == 27 ? f27(c, v) :
fptr == 28 ? f28(c, v) :
f29(c, v) ;
);

function f30f39(c, v, fptr)
(
fptr == 30 ? f30(c, v) :
fptr == 31 ? f31(c, v) :
fptr == 32 ? f32(c, v) :
fptr == 33 ? f33(c, v) :
fptr == 34 ? f34(c, v) :
fptr == 35 ? f35(c, v) :
fptr == 36 ? f36(c, v) :
fptr == 37 ? f37(c, v) :
fptr == 38 ? f38(c, v) :
f39(c, v) ;
);

function f40f49(c, v, fptr)
(
fptr == 40 ? f40(c, v) :
fptr == 41 ? f41(c, v) :
fptr == 42 ? f42(c, v) :
fptr == 43 ? f43(c, v) :
fptr == 44 ? f44(c, v) :
fptr == 45 ? f45(c, v) :
fptr == 46 ? f46(c, v) :
fptr == 47 ? f47(c, v) :
fptr == 48 ? f48(c, v) :
f49(c, v) ;
);

function f50f59(c, v, fptr)
(
fptr == 50 ? f50(c, v) :
fptr == 51 ? f51(c, v) :
fptr == 52 ? f52(c, v) :
fptr == 53 ? f53(c, v) :
fptr == 54 ? f54(c, v) :
fptr == 55 ? f55(c, v) :
fptr == 56 ? f56(c, v) :
fptr == 57 ? f57(c, v) :
fptr == 58 ? f58(c, v) :
f59(c, v) ;
);

function f60f69(c, v, fptr)
(
fptr == 60 ? f60(c, v) :
fptr == 61 ? f61(c, v) :
fptr == 62 ? f62(c, v) :
fptr == 63 ? f63(c, v) :
fptr == 64 ? f64(c, v) :
fptr == 65 ? f65(c, v) :
fptr == 66 ? f66(c, v) :
fptr == 67 ? f67(c, v) :
fptr == 68 ? f68(c, v) :
f69(c, v) ;
);

function f70f79(c, v, fptr)
(
fptr == 70 ? f70(c, v) :
fptr == 71 ? f71(c, v) :
fptr == 72 ? f72(c, v) :
fptr == 73 ? f73(c, v) :
fptr == 74 ? f74(c, v) :
fptr == 75 ? f75(c, v) :
fptr == 76 ? f76(c, v) :
fptr == 77 ? f77(c, v) :
fptr == 78 ? f78(c, v) :
f79(c, v) ;
);

function f80f89(c, v, fptr)
(
fptr == 80 ? f80(c, v) :
fptr == 81 ? f81(c, v) :
fptr == 82 ? f82(c, v) :
fptr == 83 ? f83(c, v) :
fptr == 84 ? f84(c, v) :
fptr == 85 ? f85(c, v) :
fptr == 86 ? f86(c, v) :
fptr == 87 ? f87(c, v) :
fptr == 88 ? f88(c, v) :
f89(c, v) ;
);

function f90f99(c, v, fptr)
(
fptr == 90 ? f90(c, v) :
fptr == 91 ? f91(c, v) :
fptr == 92 ? f92(c, v) :
fptr == 93 ? f93(c, v) :
fptr == 94 ? f94(c, v) :
fptr == 95 ? f95(c, v) :
fptr == 96 ? f96(c, v) :
fptr == 97 ? f97(c, v) :
fptr == 98 ? f98(c, v) :
f99(c, v) ;
);

function f100f109(c, v, fptr)
(
fptr == 100 ? f100(c, v) :
fptr == 101 ? f101(c, v) :
fptr == 102 ? f102(c, v) :
fptr == 103 ? f103(c, v) :
fptr == 104 ? f104(c, v) :
fptr == 105 ? f105(c, v) :
fptr == 106 ? f106(c, v) :
fptr == 107 ? f107(c, v) :
fptr == 108 ? f108(c, v) :
f109(c, v) ;
);

function f110f119(c, v, fptr)
(
fptr == 110 ? f110(c, v) :
fptr == 111 ? f111(c, v) :
fptr == 112 ? f112(c, v) :
fptr == 113 ? f113(c, v) :
fptr == 114 ? f114(c, v) :
fptr == 115 ? f115(c, v) :
fptr == 116 ? f116(c, v) :
fptr == 117 ? f117(c, v) :
fptr == 118 ? f118(c, v) :
f119(c, v) ;
);

function f120f129(c, v, fptr)
(
fptr == 120 ? f120(c, v) :
fptr == 121 ? f121(c, v) :
fptr == 122 ? f122(c, v) :
fptr == 123 ? f123(c, v) :
fptr == 124 ? f124(c, v) :
fptr == 125 ? f125(c, v) :
fptr == 126 ? f126(c, v) :
fptr == 127 ? f127(c, v) :
fptr == 128 ? f128(c, v) :
f129(c, v) ;
);

function f130f139(c, v, fptr)
(
fptr == 130 ? f130(c, v) :
fptr == 131 ? f131(c, v) :
fptr == 132 ? f132(c, v) :
fptr == 133 ? f133(c, v) :
fptr == 134 ? f134(c, v) :
fptr == 135 ? f135(c, v) :
fptr == 136 ? f136(c, v) :
fptr == 137 ? f137(c, v) :
fptr == 138 ? f138(c, v) :
f139(c, v) ;
);

function f140f149(c, v, fptr)
(
fptr == 140 ? f140(c, v) :
fptr == 141 ? f141(c, v) :
fptr == 142 ? f142(c, v) :
fptr == 143 ? f143(c, v) :
fptr == 144 ? f144(c, v) :
fptr == 145 ? f145(c, v) :
fptr == 146 ? f146(c, v) :
fptr == 147 ? f147(c, v) :
fptr == 148 ? f148(c, v) :
f149(c, v) ;
);

function f150f159(c, v, fptr)
(
fptr == 150 ? f150(c, v) :
fptr == 151 ? f151(c, v) :
fptr == 152 ? f152(c, v) :
fptr == 153 ? f153(c, v) :
fptr == 154 ? f154(c, v) :
fptr == 155 ? f155(c, v) :
fptr == 156 ? f156(c, v) :
fptr == 157 ? f157(c, v) :
fptr == 158 ? f158(c, v) :
f159(c, v) ;
);

function f160f169(c, v, fptr)
(
fptr == 160 ? f160(c, v) :
fptr == 161 ? f161(c, v) :
fptr == 162 ? f162(c, v) :
fptr == 163 ? f163(c, v) :
fptr == 164 ? f164(c, v) :
fptr == 165 ? f165(c, v) :
fptr == 166 ? f166(c, v) :
fptr == 167 ? f167(c, v) :
fptr == 168 ? f168(c, v) :
f169(c, v) ;
);

function f170f179(c, v, fptr)
(
fptr == 170 ? f170(c, v) :
fptr == 171 ? f171(c, v) :
fptr == 172 ? f172(c, v) :
fptr == 173 ? f173(c, v) :
fptr == 174 ? f174(c, v) :
fptr == 175 ? f175(c, v) :
fptr == 176 ? f176(c, v) :
fptr == 177 ? f177(c, v) :
fptr == 178 ? f178(c, v) :
f179(c, v) ;
);

function f180f189(c, v, fptr)
(
fptr == 180 ? f180(c, v) :
fptr == 181 ? f181(c, v) :
fptr == 182 ? f182(c, v) :
fptr == 183 ? f183(c, v) :
fptr == 184 ? f184(c, v) :
fptr == 185 ? f185(c, v) :
fptr == 186 ? f186(c, v) :
fptr == 187 ? f187(c, v) :
fptr == 188 ? f188(c, v) :
f189(c, v) ;
);

function f190f199(c, v, fptr)
(
fptr == 190 ? f190(c, v) :
fptr == 191 ? f191(c, v) :
fptr == 192 ? f192(c, v) :
fptr == 193 ? f193(c, v) :
fptr == 194 ? f194(c, v) :
fptr == 195 ? f195(c, v) :
fptr == 196 ? f196(c, v) :
fptr == 197 ? f197(c, v) :
fptr == 198 ? f198(c, v) :
f199(c, v) ;
);

function provolone(c, v, fptr)
(
// default: there is space for 200 functions() here.
// they are divided in blocks of 10 to reduce the number of comparisons required 
fptr < 10 ? f0f9(c, v, fptr) :
fptr < 20 ? f10f19(c, v, fptr) :
fptr < 30 ? f20f29(c, v, fptr) :
fptr < 40 ? f30f39(c, v, fptr) :
fptr < 50 ? f40f49(c, v, fptr) :
fptr < 60 ? f50f59(c, v, fptr) :
fptr < 70 ? f60f69(c, v, fptr) :
fptr < 80 ? f70f79(c, v, fptr) :
fptr < 90 ? f80f89(c, v, fptr) :
fptr < 100 ? f90f99(c, v, fptr) :
fptr < 110 ? f100f109(c, v, fptr) :
fptr < 120 ? f110f119(c, v, fptr) :
fptr < 130 ? f120f129(c, v, fptr) :
fptr < 140 ? f130f139(c, v, fptr) :
fptr < 150 ? f140f149(c, v, fptr) :
fptr < 160 ? f150f159(c, v, fptr) :
fptr < 170 ? f160f169(c, v, fptr) :
fptr < 180 ? f170f179(c, v, fptr) :
fptr < 190 ? f180f189(c, v, fptr) :
fptr < 200 ? f190f199(c, v, fptr) :
// insert further f(v) here!
0;
);

// ----------------------------------------------------------- end of function selector code ----------------------------------------------------------------


function normalize(c, n)
(
n = n % 256; // 8 bit!  v = 0..255
n = (n / 255) * 2 - 1; // normalize volume (-1 to 1)
n * (c == 0 ? outgainL : outgainR);
);

function to8bit(n)
(
n = (n+1)/2; // -1..1 ---> 0..1
n * 255; // 8 bit!  0..255
);

function inct()
(
_t >= _r-1 ? (
_t = 0;
t = (t+1) % 4294967295;
) : _t = _t+1;
);

//^^^
//I think (hex) integers don't work beyond 32-bit.
//And no zeros are being dropped,
//but the numbers are getting clipped at 4294967295 == 0xFFFFFFFF (the highest unsigned 32-bit integer).

@sample
inct();
il = to8bit(spl0); 
ir = to8bit(spl1); 
i = to8bit((spl0+spl1)*0.5); //mono sum
spl0= normalize(0, v0 = provolone(0, v0, fptr));
spl1= normalize(1, v1 = provolone(1, v1, fptr));

//DC Remove
otm1=0.999*otm1 + spl0 - itm1; itm1=spl0; spl0=otm1;
otm2=0.999*otm2 + spl1 - itm2; itm2=spl1; spl1=otm2;

filter_on==1 ? (
fil1=fil0;
spl0=0.5*(fil1+fil0=spl0);
spl1=0.5*(fil1+fil0=spl1);
);

@gfx 0 419
function red()
(
gfx_r = 1; gfx_g = gfx_b = 0;
);

function white()
(
gfx_r = gfx_g = gfx_b = 1;
);

function drawName()
(
sprintf(str, "[f=%s] [x=%i,y=%i] [a=%i,b=%i]", Name, x, y, a, b);
gfx_measurestr(str, strw, strh);
gfx_x = (gfx_w - strw) / 2;
gfx_y = 3;
red();
gfx_drawstr(str);
);

function getCaptureX()
(
captured_x = mouse_x < border_size ? border_size : (mouse_x > gfx_wb ? gfx_wb : mouse_x);
floor( ((captured_x-border_size)/(gfx_wb-border_size)) * 255 ); // normalized mouse X position (0/255)
);

function getCaptureY()
(
captured_y = mouse_y < border_size ? border_size : (mouse_y > gfx_hb ? gfx_hb : mouse_y);
floor( 255 - ((captured_y-border_size)/(gfx_hb-border_size)) * 255 ); // normalized mouse Y position (0/255)
);

drawName();
gfx_wb = gfx_w - border_size;
gfx_hb = gfx_h - border_size;

(mouse_cap & 1) ? (  // left click
g = 1;
slider10 = getCaptureX();
slider11 = getCaptureY();

white();
gfx_clear;
gfx_line(0,captured_y,gfx_w,captured_y);
gfx_line(captured_x,0,captured_x,gfx_h);
gfx_circle(captured_x,captured_y, 5);
) : (
g = 0;
);

(mouse_cap & 2) ? (  // right click
h = 1;
slider12 = getCaptureX();
slider13 = getCaptureY();

red();
gfx_clear;
gfx_line(0,captured_y,gfx_w,captured_y);
gfx_line(captured_x,0,captured_x,gfx_h);
gfx_circle(captured_x,captured_y, 5);
) : (
h = 0;
);

(mouse_cap & 8) ? (  // shift click
_t = t = 0;
g = h = 0;
v0 = v1 = 0;
slider10 = 0;
slider11 = 0;
slider12 = 0;
slider13 = 0;
);

x = slider10;
y = slider11;
a = slider12;
b = slider13;

@slider
x = slider10;
y = slider11;
a = slider12;
b = slider13;

link_sliders = slider4;
link_sliders ? (
slider5 != prev_outL ? slider6 = slider5 :
slider6 != prev_outR ? slider5 = slider6;
);
prev_outL = slider5;
prev_outR = slider6;
outgainR = slider6 <= -60.0 ? 0.0 : 10^(slider6/20);
outgainL = slider5 <= -60.0 ? 0.0 : 10^(slider5/20);

_r = slider3;
r = srate / _r|0;
fptr = slider2 + 10 * slider1;

(_r != old__r || r != old_r || fptr != old_fptr ) ?
(
prev_outL = prev_outR = 0;
_t = t = 0;
g = h = 0;
v0 = v1 = 0;
old__r = slider3; 
old_r = srate / _r|0;
old_fptr = slider2 + 10 * slider1;
);

filter_on = slider7;
