   (go
    (loop [instrument (update-size (create-instrument (scales/c-minor)) canvas-id)]
      (>! c-instrument instrument)
-     (let [[data c] (alts! [c-touch c-orientation-change])]
+     (let [[data c] (alts! [c-touch c-orientation-change (timeout 16)])]
        (condp = c
          c-orientation-change (recur (update-size instrument canvas-id))
-         c-touch (recur (fire-touch-data-on-instrument instrument data))))))
+         c-touch (recur (fire-touch-data-on-instrument instrument data))
+         (recur (assoc instrument :playhead (.getTime (js/Date.))))))))
   )

   (let [draw-ctx (util/get-ctx canvas-id)]
     (util/set-canvas-size! canvas-id (util/get-window-size))
     (loop [instrument nil]
       (let [[data c] (alts! [c-instrument (timeout 30)])]
         (condp = c
           c-instrument (recur data)
           (do (draw-instrument draw-ctx instrument)

  [scale]
  {:piano-keys (into (sorted-map) (map (fn [freq] [freq {}])
                                       scale))
   :notes [] :w 0 :h 0 :sound-ready false
   :px-per-ms 0.01
   :start (.getTime (js/Date.))
   :playhead (.getTime (js/Date.))})

(defn add-synths-to-instrument
  [instrument]
