enter image description here

My app helps pianists to practise their scales. They press a button and are shown a random scale to play. They press the button again and they get another.

I need to allow users to "turn-off" scales, or toggle the boolean variants of those scales, in a preferences screen.

The problem: There are so many scales that my preferences screen is unwieldy. I have 108 unique scales in my app already (with three boolean "variants" each) and that's only 1/3 of what a professional pianist needs to practice regularly.

Background information

A scale is an ascending, then descending pattern of notes starting and finishing on the same key on the keyboard.

enter image description here

For every one of these 12 keys, there are four different "types" of scale which have major or minor flavours.

  • Octave scale (Major, Harmonic minor, or Melodic minor)
  • Arpeggio (Major or Minor)
  • Scale in sixths (Major or minor)
  • Scale in thirds (Major or minor)

For each of these, a pianist must be able to play the scale:

  • Both hands together OR hands separately
  • Legato (smooth and connected) OR Staccato (percussive and disconnected)
  • Similar motion (hands in same direction) OR Contrary motion (hands in opposite directions)

There's my issue. I can't come up with a way to let a user select from all these options without confusing them. Here are my efforts so far:

enter image description here

The first design allows the user to toggle variants, but doesn't allow them to turn off scales based on individual keys. The second design allows for the opposite; there is no way to toggle the variants.

Further issues:

  • What if a user wants to turn off all minor scales?
  • What if a user wants to toggle all scales to staccato?
  • What if a user wants to turn off all scales based on A flat, for instance?

2 Answers 2


Make the decision for them. Think from the user's perspective, not from the system's. Yes, you have 108 scales, and you could turn them all on and off individually, but apart from making the screen too complex, what user has such specific knowledge of their own needs? What pianist can really decide for each of a 108 scales whether they want to practice them this time? That's an incredible cognitive load, and a lot of effort to require for people to start using your app.

Figure out what the user needs. Apparently, a professional pianist will need to practice hundreds of different types of scales, so that's one thing you know. What about other kinds of pianists? Go out, talk to some of them, and figure out what would fit with their practice regime.

You might come up with something like this:

  • Beginners don't want to be overwhelmed. These should be presented with only the top three scales. They are likely to lose motivation, so they need reminders of their progress.
  • Medium These are people working towards a large set of scales. You need to select a pace for them, adding enough scales each session that they stay motivated, but not so many that the set becomes too big for them.
  • Professional These need as many scales as you can throw at them. But they do need some way to focus in on what parts they find difficult. Perhaps a simple feedback button so you can give the difficult ones a higher probability of appearing.

You may not even need to ask the user what their level is. If you can detect their level quickly enough from feedback, you can just scale accordingly, and the professional should see new scales being selected pretty quickly.

here's one way you might approach it:


download bmml source – Wireframes created with Balsamiq Mockups

Have a look at flashcard apps and the Leitner system for inspiration. They don't give users the option to turn each card on or off individually, because the user's goals is always to master all of them. Instead, they focus on creating an intelligent way of selecting the cards at random.

  • 2
    In addition to talking to pianists of various levels, look at piano instruction books for the order and grouping they use to introduce scales to a student pianist. Aug 15, 2016 at 11:11

Not so much as an answer (see the last line why), but just an observation and an idea.

Observation: The options you want the user to choose from, constitute a three-dimensional space of options: 12 keys × 9 scales × 3 options. A one-dimensional space would be a list, a two dimensional option-space would be a matrix ('checkbox hell'), but for a three-dimensional space, our screens simply lack one dimension to display it.

Idea: an octave is a circular thing, isn't it? I wonder if you could use this circularity. If you'd rotate the screen, you could the scales on the vertical axis and the starting keys on the horizontal axis. Or, you might even arrange the options in a circle, with the notes in a clockwise direction and the scales from the inside outward. However, it would still require you to find a way to add the third option.

Again, this is not a solution, but maybe it's an extra piece that might help solve this puzzle.

Arranging notes in a cirlce

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.