 (def ^:dynamic *seq* (Sequence. Sequence/PPQ 256))
 (def ^:dynamic *synth* (MidiSystem/getSynthesizer))
 
-(defn load-soundfont [soundfont & [synth]]
+(defn load-soundfont [soundfont & [synth _]]
   (let [synth (or synth *synth*)
         soundbank (SF2Soundbank. (java.io.FileInputStream. soundfont))]
     (.loadAllInstruments synth soundbank)))
 
-(defn make-sequencer [& [sequence synth]]
+(defn make-sequencer [& [sequence synth _]]
   (let [sequence (or sequence *seq*)
         synth (or synth *synth*)
         sequencer (MidiSystem/getSequencer false)]

                                     :midi-message nil})))
        state))))

(defn play [& [notes sequencer state]]
  (let [sequencer (or sequencer *sequencer*)
        state (compose (or notes '()) sequencer state)]
    (when (nil? notes)


(def ^:dynamic *sequencer* (make-sequencer *seq* *synth*))

(defn compose [notes & [sequencer state _]]
  (let [sequencer (or sequencer *sequencer*)
        notes (if (or (vector? notes) (seq? notes)) notes (list notes))
        state (merge {:sequencer sequencer
