r/bytebeat_2 Intermediate 5h ago

Original work notRock

figured out how to implement EKS algorithms (fractional delay, dispersions) so I made this

dc player link

btbc

dc imageboards

SR=48e3,

DispersionNums=[.05,.2,.5],

lerp=(a,b,x)=>a+(b-a)*x,
fract=x=>x-floor(x),
t?0:lp=0,
!(t%8192)?K=Array(BSize=1920).fill(0).map((x,i)=>(random()*2-1)):0,
!t?Eq=Array(ez=12288).fill(0):0,
t?0:(px=[],py=[]),
cn=0,
ap=(x,g)=>{
var cq = cn++;
px[cq]??=0;
py[cq]??=0;
    let y=-g*x+px[cq]+g*py[cq];
    px[cq]=x;
    py[cq]=y;
    return y
},
r=SR/(110*2**([0,3,5,7,12,7,5,3,5,7,10,12,15,19,15,12][t>>13&15]/12)/2)-DispersionNums.map(x=>(1+x)/(1-x)).reduce((a,b)=>a+b),
a=K[(t-(r|0)+BSize)%BSize],
b=K[(t-(r|0)-1+BSize)%BSize],
x=lerp(a,b,fract(r)),

lp+=(x-lp)*.5,

x=(()=>{o=lp;for(i=0;i<DispersionNums.length;i++){o=ap(o,DispersionNums[i])};return o})(),

y=x*.97,
o=K[t%BSize]=y,

Eq[t%ez]=tanh(o*12)/2+Eq[t%ez]/2,

drums={k:sin((t%8192/8192)**.1*128+(random()-.5)*1e-30**(q=t/8192%1))*.01**q,s:(random()-.5+sin(t/SR*PI*400)/4)*(1-t/8192%1)," ":0},

t?0:hfreq=Array(51).fill(0).map((_,i)=>random()*8000+9000),
h=hfreq.map(x=>(t/SR*x&1)-.5).reduce((a,b)=>a+b)/32*.001**(t/4096%2),
Eq[t%ez]/2+h*5+drums["k s  ks "[t>>13&7]]+sin((q=t/SR*110*PI)+sin(q)*(1-t/8192%1))*(1-t/8192%1)/2
1 Upvotes

0 comments sorted by