             src (sin-osc note-gen)]
         (pan2 (* 0.2 src))))
 
-; TODO: Fixme
+
 ; Generate a geometric sequence
 (demo 2
       (let [trig (impulse:kr 8)
-            freqs (dgeom 1 1.2 10)
+            freqs (dgeom  10 1  1.2)
             note-gen (+ 340 (* 30 (demand:kr trig 0 freqs)))
             src (sin-osc note-gen)]
         (pan2 (* 0.1 src))))
 
-; TODO: Fixme
 ; Demanding noise...
 (demo 2
       (let [trig (impulse:kr 2)
-            freqs (dwhite 0 20 INF)
+            freqs (dwhite INF 0 20)
             note-gen (+ 340 (* 30 (demand:kr trig 0 freqs)))
             src (sin-osc note-gen)]
         (pan2 (* 0.1 src))))

(ns example.demand
  (:use overtone.core))

; Unlike the audio and control rate ugens, which produce a constant
; stream of values, the demand rate ugens only produce a value

        (pan2 (* 0.1 src))))

(def buf (buffer 8))
(buffer-write! buf 0 8 (map #(+ 12 %) [50 50 54 50 57 50 45 49]))

(demo 20
      (let [trig (impulse:kr 8)
            indexes (dseq (range 8) INF)
            freqs (dbufrd buf indexes)
            note-gen (demand:kr trig 0 freqs)
            src (sin-osc (midicps note-gen))]
        (* [0.1 0.1] src)))

; Now while it's playing you can set buffer elements to change the notes:
(buffer-set! buf 3 85)
(buffer-set! buf 3 80)
(buffer-set! buf 7 20)

(demo 4
      (let [freq (duty (drand [0.2 0.4 0.8 0.6] INF)
                       0
                       0
                       (dseq [440 880 1200 600] 2))
            src (saw freq)]
        (* [0.2 0.2] src)))


; Generate a series of values, incrementing linearly.
(demo 8
      (let [trig (impulse:kr 2)
