 
        (map->Buffer
         (assoc info
+          :name name
           :status (atom :live))))))
 
 (defrecord BufferFile [id size n-channels rate status path]

        :rate-scale rate-scale
        :duration duration}))))

(defrecord Buffer [id size n-channels rate status]
  to-sc-id*
  (to-sc-id [this] (:id this)))

(defmethod print-method Buffer [b w]
  (.write w (format "#<buffer[%s]: %fs %s %d>"
                    (name @(:status b))
                    (:duration b)
                    (cond
                     (= 1 (:n-channels b)) "mono"

  "Synchronously allocate a new zero filled buffer for storing audio
  data with the specified size and num-channels. Size will be
  automatically floored and converted to a Long - i.e. 2.7 -> 2"
  ([size] (buffer size 1 ""))
  ([size num-channels-or-name] (if (string? num-channels-or-name)
                                 (buffer 1 num-channels-or-name)
                                 (buffer num-channels-or-name "")))
  ([size num-channels name]
     (let [size (long size)
           id   (with-server-self-sync
                  (fn [uid]
