                (recur instrument)))))))
 
   (go
-   (let [display-instrument (update-size (create-instrument (scales/c-minor)) canvas-id)]
-     (>! c-instrument display-instrument)
-
-     (<! (create-input-channel canvas-id)) ;; wait for first touch before creating synths
-     (loop [instrument (add-synths-to-instrument display-instrument)]
-       (>! c-instrument instrument)
-       (let [[data c] (alts! [c-input c-orientation-change])]
-         (condp = c
-           c-orientation-change (recur (update-size instrument canvas-id))
-           c-input (recur (reduce fire-event-on-instrument
-                                  instrument
-                                  (touch-data->touches data))))))))
-
+   (loop [instrument (update-size (create-instrument (scales/c-minor)) canvas-id)]
+     (>! c-instrument instrument)
+     (let [[data c] (alts! [c-touch c-orientation-change])]
+       (condp = c
+         c-orientation-change (recur (update-size instrument canvas-id))
+         c-touch (recur (fire-touch-data-on-instrument instrument data))))))
   )

    (or (and f-instrument (f-instrument instrument event))
        instrument)))

(defn update-size [instrument canvas-id]
  (let [{w :w h :h :as window-size} (util/get-window-size)]
    (do (util/set-canvas-size! canvas-id window-size)

  [scale]
  {:piano-keys (into (sorted-map) (map (fn [freq] [freq {}])
                                       scale))
   :notes [] :w 0 :h 0 :sound-ready false})

(defn add-synths-to-instrument
  [instrument]
  (assoc (reduce (fn [a x] (assoc-in a [:piano-keys x :synth] (create-note-synth x)))
                 instrument
                 (-> instrument :piano-keys keys))
    :sound-ready true))

(defn audio-time []
  (.-currentTime js/audioCtx))
