 
 (defmulti write-wav
   "Write data as a wav file. Accepts either a buffer or a sequence of values.
-  When passing a sequence, you also need to specify the frame-rate and n-channels.
-  For both, you need to pass the path of the new file as the 2nd arg.
+  When passing a sequence, you also need to specify the frame-rate and
+  n-channels.  For both, you need to pass the path of the new file as
+  the 2nd arg.
 
   Required args:
   buffer [data path]

(defrecord Buffer [id size n-channels rate allocated-on-server])

(defn buffer
  "Synchronously allocate a new zero filled buffer for storing audio data with
  the specified size and num-channels."
  ([size] (buffer size 1))
  ([size num-channels]
     (let [id   (with-server-self-sync

(defrecord BufferInfo [id size n-channels rate n-samples rate-scale duration])

(defn buffer-info
  "Fetch the information for buffer associated with buf-id (either an
  integer or an associative with an :id key). Synchronous.

  Information returned is as follows:

  :size       - number of frames in the buffer
  :n-channels - number of audio channels stored in the buffer
  :rate       - rate of the buffer (typical rate is 44100 samples per
                second)
  :n-samples  - total number of samples in the buffer (* size n-channels)
  :rate-scale - rate to specify in order to play the buffer correctly
                according
                to the server's sample rate (/ rate (server-sample-rate))
  :duration   - duration of the buffer in seconds
  :id         - unique id for the buffer"
