roomrys / synesthesia

Color-coded guitar fret board (all the shredding without memorizing scales).
https://roomrys.github.io/synesthesia/
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Auto-detect key and label notes accordingly (scale mode?) #9

Open roomrys opened 11 months ago

roomrys commented 11 months ago

Sometimes keys will require a note to be labeled as Bb instead of A# (when?), but synesthesia currently only uses sharps. It might be cool to check what the key is after a select number of notes have been highlighted and update what the note is labeled as.

roomrys commented 11 months ago

Maybe we could:

  1. Enter a scale mode where
  2. keys can only be selected by clicking the notes (hence either selecting all the notes of that fundamental frequency or none).
  3. Count the number of notes selected and once a certain number is hit,
  4. Alternative to 2,3 is that scale mode toggles between major and minor scale selection and uses keys to select the entire scale (MVP would be no toggle between major/minor and musician would need to know about relative minors)
  5. output the name of the scale as either "I Major / vi Relative Minor" (or "Not Determined" in case of 2&3)
  6. Once the scale is determined, allow users to select note numbers using the keyboard to highlight (via border box?) all notes of that number. Easier version would be to only border box the note in the legend, but that might take away from the visual aspect we're aiming for. Or, we could de-highlight all notes other than the notes corresponding to the selected numbers.
roomrys commented 11 months ago

In scale mode,

  1. all notes should be highlighted by default
  2. Backspace should clear selected note numbers
  3. letters will switch scale keys
  4. the background color should be changed to designate scale mode (plus maybe a note)