import("stdfaust.lib");

nbits = hslider("NBITS",8,0,16,1);
scaler(s_nbits) = float(2^s_nbits-1);
round(x) = floor(x+0.5);
bitcrusher(cv_nbits,x) = x : abs : *(scaler(cv_nbits)) : round : /(scaler(cv_nbits)) * (2*(x>0)-1.0);
// process =  _,_ : bitcrusher(max(0, min(nbits+(16*_), 16)));
bitcrush_cv(cv) = bitcrusher(max(min((cv*16)+nbits, 16), 1));
process =  bitcrush_cv;
