                            & {:keys [running-interval degree]
                               :or {running-interval '()
                                    degree 1}}]
+  "Build an interval-representation of the melody
+  by traversing through the scale in steps/leaps/octave jumps."
   (if (<= note-count 0)
     running-interval
     (let [degree (make-move scale degree)

;; --- Chords --- ;;

(defn chordify [entity-map]
  (filter (fn [x] (weighted-coin 0.2)) entity-map))

;; --- Playback --- ;;

(defn down-octave [degree] (- 7 degree))

(defn make-move [scale degree]
  "Generate an interval jump from the current note
  until another compatible note is reached."
  (let [movements '(up-step down-step up-leap down-leap up-octave down-octave)
        current-move (weighted-choose movements '(0.38 0.38 0.08 0.08 0.04 0.04))
        temp-degree ((resolve current-move) degree)]
