          (+ (* (sin-osc 220)  (max 0 (lf-noise1:kr 12)) 1)
             (* (sin-osc 440)  (max 0 (lf-noise1:kr 12)) 1/2)
             (* (sin-osc 660)  (max 0 (lf-noise1:kr 12)) 1/3)
-            (* (sin-osc 880)  (max 0 (lf-noise1:kr 12)) 1/4 )
+            (* (sin-osc 880)  (max 0 (lf-noise1:kr 12)) 1/4)
             (* (sin-osc 1110) (max 0 (lf-noise1:kr 12)) 1/5)
             (* (sin-osc 1320) (max 0 (lf-noise1:kr 12)) 1/6))))
+(demo 15
+      (* 0.3
+         (mix [(* (sin-osc 220)  (max 0 (lf-noise1:kr 12)) 1)
+               (* (sin-osc 440)  (max 0 (lf-noise1:kr 12)) 1/2)
+               (* (sin-osc 660)  (max 0 (lf-noise1:kr 12)) 1/3)
+               (* (sin-osc 880)  (max 0 (lf-noise1:kr 12)) 1/4)
+               (* (sin-osc 1110) (max 0 (lf-noise1:kr 12)) 1/5)
+               (* (sin-osc 1320) (max 0 (lf-noise1:kr 12)) 1/6)])))
 
 ;; or the more compact but equivalent:
 

              (* (sin-osc harm)
                 (max [0 0] (sin-osc:kr (/ (inc count) 4)))
                 (/ 1 (inc count))))))))


;; Page 38


                            (pan2 (klank specs (* 0.03 (dust (/ 1 6)) ))
                                  pan)))]
        (out 0 (mix (repeatedly bells mk-bell)))))

(demo 120
      (let [num-res 5
            bells   20
            scale   (map midi->hz [60 62 64 67 69])
            mk-bell (fn [] (let [freqs (repeatedly num-res #(* (ranged-rand 1 5) (choose scale)))
                                amps  (repeatedly num-res #(ranged-rand 0.3 0.9))
                                rings (repeatedly num-res #(ranged-rand 1 4))
                                specs [freqs amps rings]
                                pan (softclip (* 2 (lf-noise1:kr (ranged-rand 3 6))))]
                            (pan2 (klank specs (* 0.03 (dust (/ 1 6))))
                                  pan)))]
        (* 20.0 (mix (repeatedly bells mk-bell)))))
(volume 1.0)
(odoc klank)
