     [overtone.live :exclude [scale octave sharp flat sixth]]
     [overtone.inst.sampled-piano :only [sampled-piano]]))
 
-(def note! sampled-piano)
-(def chord! #(map note! %))
+; Basic intervals
+(def semitone 1)
+(def tone (* semitone 2))
+(def octave (* 12 semitone))
 
+; Plumbing
 (defmacro defall
   "Define multiple values at once."
   [names values]

(def thirteenth #(assoc (eleventh %) :xi (raise (:vi major-scale))))
(def first-inversion #(update-values % (keys-except % [:i]) lower))
(def second-inversion #(update-values % (keys-except % [:i :iii]) lower))

  "Gets the keys from m, excluding any that are present in ks."
  [m ks] (difference (set (keys m)) ks))

(defn grounding [offset]
  "Takes an offset from root and produces a function for rendering chords."
  (fn
    ([octave-number]
     (+ offset (* octave-number octave)))
    ([octave-number chord]
     (map #(+ offset % (* octave-number octave)) (vals chord)))))

; Define a major scale. We could easily define other modes,
; but they aren't needed at present.
(defn scale 
  "Define a scale as a cumulative sum of intervals."
  ([] '(0))
