analog bubbles (jmcc) > import Control.Monad > import Sound.DF > let { dpl f a b = liftM2 (,) (f a) (f b) > ; mk_o f = liftM (\o -> o * 3.0 + 80.0) (lf_saw f 0.0) > ; mk_f a = liftM (\o -> o * 24.0 + a) (lf_saw 0.4 0.0) > ; mk_s f = liftM (\o -> o * 0.04) (sin_osc (midi_cps f) 0.0) } > in do { (o1, o2) <- dpl mk_o 8.0 7.23 > ; (f1, f2) <- dpl mk_f o1 o2 > ; (s1, s2) <- dpl mk_s f1 f2 > ; c1 <- buf_comb_n 0 s1 0.2 4.0 > ; c2 <- buf_comb_n 1 s2 0.2 4.0 > ; audition [b_alloc 0 44100, b_alloc 1 44100] (out2 (c1, c2)) } let { o = lfSaw kr (mce2 8 7.23) 0 * 3 + 80 ; f = lfSaw kr 0.4 0 * 24 + o ; s = sinOsc ar (midiCPS f) 0 * 0.04 } in audition (out 0 (combN s 0.2 0.2 4))