         sound (apply + sound)]
   (* (lf-saw:kr (line:kr 13 17 3)) (line:kr 1 0 dur FREE) sound)))
 
-(definst bubbles [bass-freq 80]
+(definst bubbles
+  [bass-freq 80]
   (let [bub (+ bass-freq (* 3 (lf-saw:kr [8 7.23])))
         glis (+ bub (* 24 (lf-saw:kr 0.4 0)))
         freq (midicps glis)

        [overtone.music pitch]
        [overtone.studio mixer]))

(definst ticker [freq 880]
  (* (env-gen (perc 0.001 0.01) :action FREE)
     (sin-osc freq)))

(definst ping [note {:default 72 :min 0 :max 120 :step 1}
               a    {:default 0.02 :min 0.001 :max 1 :step 0.001}
               b    {:default 0.3 :min 0.001 :max 1 :step 0.001}]
  (let [snd (sin-osc (midicps note))
        env (env-gen (perc a b) :action FREE)]
    (* 0.1 env snd)))

(definst tb303 [note {:default 60 :min 0 :max 120 :step 1}
                wave {:default 1 :min 0 :max 2 :step 1}
                r {:default 0.8 :min 0.01 :max 0.99 :step 0.01}
                attack {:default 0.01 :min 0.001 :max 4 :step 0.001}
                decay {:default 0.1 :min 0.001 :max 4 :step 0.001}
                sustain {:default 0.6 :min 0.001 :max 0.99 :step 0.001}
                release {:default 0.01 :min 0.001 :max 4 :step 0.001}
                cutoff {:default 100 :min 1 :max 20000 :step 1}
                env-amount {:default 0.01 :min 0.001 :max 4 :step 0.001}]
  (let [freq       (midicps note)
        freqs      [freq (* 1.01 freq)]
        vol-env    (env-gen (adsr attack decay sustain release)


; From the SC2 examples included with SC
; Don't think it's quite there, but almost...
(definst harmonic-swimming
  [amp 0.5]
  (let [freq     100
        partials 20
        z-init   0
