var h_algo = "harmonics";
var h_args = [1., 0., 0., 1.];
var h_incr = [0.02, -0.004, 0.011, -0.0093];
var w_incr = ['sine', 'saw', 'sawdown', 'phasor', 'square', 'rect', 'pulse', 'tri', 'buzz'];
var e_args = [0, 0, 1, 1, 2, 0.8, 9, 0.8, 10, 0];
var e_incr = [[0, 0, 1, 1, 2, 0.8, 9, 0.8, 10, 0], [0, 0, 1, 1, 2, 0], [0, 0, 1, 1, 1.1, 0], [0, 0, 10, 0.8, 11, 0.6, 15, 0.5, 20, 0]];
var c_algo = "chebyshev";
var c_args = [1., 0., 0., 1.];
var c_incr = [0.02, -0.004, 0.011, -0.0093];
var wi_args = ['hamming'];
var wi_incr = ['hamming', 'vonhann', 'bartlett', 'blackman', 'blackman-harris', 'gaussian', 'kaiser', 'boxcar', 'sinc'];
var r_incr = ['linear', 'low', 'high', 'triangle', 'gaussian', 'cauchy'];
tb.style("font-family", "Courier");
tb.style("font-size", "12px");
tb.html('<center>var g = new p5.Gen();</center>')
h_div.style("font-family", "Courier");
h_div.style("font-size", "9px");
h_div.position(width*0.1, height*sc/2+80);
w_div.style("font-family", "Courier");
w_div.style("font-size", "9px");
w_div.position(width*0.4, height*sc/2+80);
e_div.style("font-family", "Courier");
e_div.style("font-size", "9px");
e_div.position(width*0.1, height*sc+165);
c_div.style("font-family", "Courier");
c_div.style("font-size", "9px");
c_div.position(width*0.4, height*sc+165);
wi_div.style("font-family", "Courier");
wi_div.style("font-size", "9px");
wi_div.position(width*0.7, height*sc+165);
r_div.style("font-family", "Courier");
r_div.style("font-size", "9px");
r_div.position(width*0.7, height*sc/2+80);
h_tab = g.fillArray(h_algo, h_np, h_args);
drawTab(h_tab, h_algo, h_args, h_np, h_div);
if(h_args[j]>1.0) h_incr[j]*=-1.;
if(h_args[j]<-1.0) h_incr[j]*=-1.;
w_tab = g.fillArray(w_algo, w_np, w_args);
drawTab(w_tab, w_algo, w_args, w_np, w_div);
if(frameCount%120==0) w_ptr = (w_ptr+1) % w_incr.length;
e_tab = g.fillArray(e_algo, e_np, e_args);
drawTab(e_tab, e_algo, e_args, e_np, e_div);
if(frameCount%100==0) e_ptr = (e_ptr+1) % e_incr.length;
c_tab = g.fillArray(c_algo, c_np, c_args);
drawTab(c_tab, c_algo, c_args, c_np, c_div);
if(c_args[j]>1.0) c_incr[j]*=-1.;
if(c_args[j]<-1.0) c_incr[j]*=-1.;
wi_tab = g.fillArray(wi_algo, wi_np, wi_args);
drawTab(wi_tab, wi_algo, wi_args, wi_np, wi_div);
wi_args = wi_incr[wi_ptr];
if(frameCount%130==0) wi_ptr = (wi_ptr+1) % wi_incr.length;
r_tab = g.fillArray(r_algo, r_np, r_args);
drawTab(r_tab, r_algo, r_args, r_np, r_div);
if(frameCount%200==0) r_ptr = (r_ptr+1) % r_incr.length;
h_np = 1+(h_np+1) % 1024;
w_np = 1+(w_np+1) % 1024;
e_np = 1+(e_np+1) % 1024;
c_np = 1+(c_np+1) % 1024;
wi_np = 1+(wi_np+1) % 1024;
r_np = 1+(r_np+1) % 1024;
function drawTab(_tab, _algo, _args, _np, _div)
rect(width*0.25, height*0.25, width*0.5, height*0.5);
if(typeof(_args)=== 'string') as='\''+_args+'\'';
if(!isNaN(_args[k])&&!Number.isInteger(_args[k])) {
if(k==_args.length-1) as+=_args[k].toFixed(2); else as+=_args[k].toFixed(2)+', ';
if(k==_args.length-1) as+=_args[k]; else as+=_args[k]+', ';
for(var i = 0;i<_tab.length;i++)
var x = i/(_tab.length-1)*width*0.5+width*0.25;
var y = map(_tab[i], mi, ma, height*0.75, height*0.25);
var ss = 'g.fillArray(\''+_algo + '\', ' + _np + ', ' + as + ');';
text(mi.toFixed(3), width*0.23, height*0.75);
text(_algo, width*0.23, height*0.5);
text(ma.toFixed(3), width*0.23, height*0.25);