 ;
 ;(s/def ::node-spec (s/multi-spec node-spec-type first))
 
-(s/def ::items-list
-  (s/+ (s/cat :node-gens (s/+ ::node-gen)
-              :interval ::time)))
-
 (defn loop-chan [items start chan]
   {:pre [(s/valid? ::items-list items)
          (s/valid? ::time start)
-         (s/valid? (ss/chan-of ::sound-point) chan)]}
+         (s/valid? ::sound-point-chan chan)]}
   (go
     (loop [i 0
            t start]


(s/def ::context #(instance? AudioContext %))
(s/def ::node #(instance? js/AudioNode %))
(s/def ::node-gen (s/fspec :args #{[]} :ret ::node))
(s/def ::buffer #(instance? js/AudioBuffer %))
(s/def ::time (s/and number? pos?))

(defn decode-audio-data [buffer]
  {:pre [(s/valid? ::ss/array-buffer buffer)]}

(s/fdef play
  :args (s/cat :sound ::sound-point))

;; node-spec

;(defmulti node-spec-type first)
