         (pan2 (* 0.1 src))))
 
 (def buf (buffer 8))
-(overtone.sc.buffer/buffer-write buf 0 8
-                                 (map #(+ 12 %) [50 50 54 50 57 50 45 49]))
+(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)
+            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:
-(overtone.sc.buffer/buffer-set buf 3 45)
-(overtone.sc.buffer/buffer-set buf 3 80)
-(overtone.sc.buffer/buffer-set buf 7 50)
+(buffer-set! buf 3 85)
+(buffer-set! buf 3 80)
+(buffer-set! buf 7 20)
 
-; TODO: Fixme
 (demo 4
-      (let [freq (duty (drand [0.2 0.4 0.8 0.6] inf)
+      (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)))
 
-; TODO: Fixme
+
 ; Generate a series of values, incrementing linearly.
 (demo 8
       (let [trig (impulse:kr 2)

(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

            src (sin-osc note-gen)]
        (pan2 (* 0.2 src))))


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

; Demanding noise...
(demo 2
      (let [trig (impulse:kr 2)
            freqs (dwhite INF 0 20)
            note-gen (+ 340 (* 30 (demand:kr trig 0 freqs)))
            src (sin-osc note-gen)]
        (pan2 (* 0.1 src))))
