                                          (.load audio))
                                        (.play audio) (recur))
                     [:pause]       (do (.pause audio) (recur))
+                    [:preload]     (do (set! (.-preload audio) true) (recur))
                     [[:seek time]] (do (set! (.-currentTime audio) time) (recur))
-                    :else nil))))
+                    [nil]          nil
+                    [bad-command]  (prn "audio player: bad command, " bad-command)))))
 
        :component-will-unmount
        (fn [this]


     [:div.seek-bar
      {:on-click seek-time
       :on-mouse-move update-mouse-time}

      (when (pos? @mouse-time)

                                       (/ (.-offsetWidth (.-target %)))
                                       (* (:duration @state))))

               enable-preload
               #(go (>! command-ch :preload))

               seek-time
               #(go (>! command-ch [:seek @mouse-time])
                    (>! command-ch :play))]

    [:div.audio-player {:class (str "state-" (clj->js (:status @state))
                                    (when (is-playing) " is-playing")
