mimium-cli 2.0.0-alpha2

mimium(minimal-musical-medium) an infrastructural programming language for sound and music. mimium-cli is a simple frontend interface for using mimium
let pi = 3.14159535
let sr = 44100.0
fn phasor(freq){
  (self + freq/sr)%1.0
}
fn saw(freq){
  (phasor(freq)*2.0)-1.0
}

fn gen_hp_coeff(fc,q,fs){
    let omega = 2.0 * pi* fc / fs
    let alpha = sin(omega)/(2.0* q)
    let norm = 1.0 + alpha
    let a1 = -2.0 * cos(omega) / norm
    let a2 = (1.0 - alpha)/ norm
    let btmp = 1.0 + cos(omega)
    let b0 = btmp / (2.0*norm)
    let b1 = -btmp / norm
    let b2 = b0
    (a1,a2,b0,b1,b2)
}
fn gen_lp_coeff(fc,q,fs){
    let omega = 2.0 * pi* fc / fs
    let alpha = sin(omega)/(2.0*q)
    let norm = 1.0 + alpha
    let a1 = -2.0 * cos(omega) / norm
    let a2 = (1.0 - alpha)/ norm
    let btmp = 1.0 - cos(omega)
    let b0 = btmp / (2.0*norm)
    let b1 = btmp  / norm
    let b2 = b0
    (a1,a2,b0,b1,b2)
}
fn inner (x,a1,a2){
    let (ws, wss, _wsss) = self
    let w = x - a1*ws - a2*wss
    (w, ws, wss)
}
fn biquad(x,coeffs){
    let (a1,a2,b0,b1,b2) = coeffs;
	let (w,ws,wss) = inner(x,a1,a2);
	b0*w + b1*ws + b2*wss
}

fn dsp(){
    let f = phasor(0.2)*3000.0+200.0
    let coeff = gen_lp_coeff(f,10.0,sr);
    let r = biquad(saw(220.0),coeff)
    (r, r)
}