 (def notes-treble
   {::read-note-order  ["E" "F" "G" "A" "B" "C" "D" "E" "F"]
    ::read-note-prefix "trebleclefimages"
-   ::hints            ["Does this note sit on a line or in a space?"
-                       "\"FACE in the space\" and \"Every Green Bus Drives Fast\""
-                       ["This note is " ::correct-answer]]})
+   ::hints            (fn [props]
+                        ["Does this note sit on a line or in a space?"
+                         "\"FACE in the space\" and \"Every Green Bus Drives Fast\""
+                         (str "This note is " (get props ::correct-answer))])})
 
 (def notes-bass
   {::read-note-order  ["G" "A" "B" "C" "D" "E" "F" "G" "A"]
    ::read-note-prefix "bassclefimages"
-   ::hints            ["Does this note sit on a line or in a space?"
-                       "\"All Cows Eat Grass\" and \"Good Boys Deserve Fresh Apples\""
-                       ["This note is " ::correct-answer]]})
+   ::hints            (fn [props]
+                        ["Does this note sit on a line or in a space?"
+                         "\"All Cows Eat Grass\" and \"Good Boys Deserve Fresh Apples\""
+                         (str "This note is " (get props ::correct-answer))])})
 
 (def notes-grand-staff
   {::read-note-order  ["G" "A" "B" "C" "D" "E" "F" "G" "A" "B" #_"TREBLE" "D" "E" "F" "G" "A" "B" "C" "D" "E" "F" "C"]
-   ::read-note-prefix "grandstaffimages"})
+   ::read-note-prefix "grandstaffimages"
+   ::hints            (fn [props]
+                        ["Identify if the note belongs to treble clef or the bass clef."
+                         "The treble clef is the upper staff, the bass clef is the lower staff."
+                         (str "This note is " (get props ::correct-answer))])})
 
 (defn rand-int-new [n old]
   "Generate a new random number like rand-int, if number is equals to `old` a new


  static IExercise
  (new-round [_ props]
    (let [type      (rand-nth ["major" "minor"])
          base-note (descriptor->value ["C3" ".." "F3"])]
      (assoc props
        ::notes (audio/chord base-note (type->arrengement type))


(def progress-bar (om/factory ProgressBar))

(defn answer-label [{::keys [correct-answer options]}]
  (-> (into {} options) (get correct-answer)))

(s/fdef progress-bar
        :args (s/cat :props (s/keys :opt [::progress-total ::progress-value]))
        :ret ::react-component)

(defn note->node [note]
  {::audio/node-gen (->> note audio/semitone->note (get @audio/*sound-library*))})
