Design of a 'Sing In-Tune' App

28 September, 2014
Features that one might want to add to an iPhone (or other platform) app for learning to sing in-tune.

What We Already Have

In my last article, Learn to Sing In-Tune with iPhone Apps, I discussed my experience with using iPhone apps to learn to sing more in-tune.

One thing I have learned is that although some of those apps can help me or anyone else to learn to sing more in-tune, the ideal 'learn-to-sing-in-tune' app does not yet exist.

Design Issues

We Don't Yet Know What Works Best: So Make It Configurable

Given the lack of applications optimised for learn to sing in-tune, it is reasonable to assume that not a lot of research has been done in this area, and nobody yet knows what works best. Also, what might work well for one person might not work so well for another person.

So, if you are writing a sing-in-tune app: have lots of configuration items.

At the same time, there should be a useable initial configuration state, and the configuration UI itself should be well thought out and easy to use.

Real-Time Is What Matters: Scrolling History is Of Secondary Value

Of the apps I reviewed, three of them have a historical trace of pitch value:

Of these three, Sing inTuna has the most graph, even though it lacks a detail view. But a graph of what just happened is not as useful as you might think for actually learning to sing the correct pitch, although it can be useful for reviewing how good you currently are at holding a correct pitch value.

The User Can Only Look At One Thing At A Time

Most of the apps I reviewed have at least two displays, typically a coarse view to show which note you are singing, and a fine detail view to show how close to that note you are.

When you are tuning a guitar, having these two different views in different places is fine, and a typical 'work flow' is firstly to get the note roughly right, looking at the coarse view, and then to do the fine adjustment looking at the fine detail view.

But when you are practising singing, you can only really look at one thing at a time. So for each app, the question is: do I look at the coarse view, or do I look at the fine detail view?

The best app will be one that finds a way to show the coarse view and the fine view simultaneously in the same place. (One way to do this is to show a single large dial on a larger screen, which means you want an iPad app and not an iPhone app.)

Damping Matters

Damping is the feature of showing pitch averaged over some time interval, or to put it another way, measuring pitch from a sliding 'window' of time.

Not enough damping results in a shaky display, due to the intrinsic shakiness of vocal pitch, which (for most people) probably can't be eliminated. From a musical point of view, and given the common useage of reverb effects, which effectively average pitch over some time interval, that detailed shakiness doesn't matter, and it is better for the user to have the option of smoothing it out.

Too much damping is also a problem, because your pitch value can drift, but the pitch marker in the app will not immediately move by an amount that shows the degree of drift.

The ideal amount of damping is an adjustable level of damping. Of the apps I have used, Cleartune is the only one that has adjustable damping, with three levels.

My advice would be, not only make damping fully adjustable, but also actually tell the user what the associated time interval is, and allow simultaneous display of different damping values, or at least allow different damping values in coarse and fine detail views.

Avoid False Tweening

The human eye perceives smooth motion better than it perceives jumpy motion (eg of a flickering light).

So even if a measured value is jumping around, it is user-friendly to show smooth motion between each value and the next – this is the process of tweening.

However, too much tweening can result in the presentation of completely false information which does not help the learning process.

For example, consider when pitch jumps from (C + 10 cents) to (D - 5 cents). Many apps show the note (ie C or D) as just a letter, and the cents increment in the detail view. And to maintain smooth motion, those apps will tween between +10 cents to -5 cents. But in this case, the values between +10 cents and -5 cents do not correspond to any pitch value that user sung at any point in the transition from C to D.

A better approach, when showing a detail view that shows cents relative to the nearest note, is not to tween between the cents values when the nearest note changes, and indeed to give some other indication – maybe a fade-out and fade-in, or a temporary background color change – that the nearest note value has changed.

Moving Marker on a Fixed Display

The one thing that makes GoodTuner better than any other app for normal-speed singing practice (despite various limitations of that app) is that it has a single fixed octave display, and only the needle moves.

The simplicity of this display makes it easy to relate what you are singing to what you see.


Although iOS devices allow differents apps to generate sound at the same time, they don't allow multiple apps to appear on the screen at the same time.

Most of my practice so far has been unaccompanied, as if I was learning to sing acapella. If I want an iOS device to play an accompaniment, at the same time as using a tuning app, then I really need to have two iOS devices to do it.

For the purposes of learning to sing in tune, I don't think it is necessary to have full sophisticated accompaniments.

What I think would be useful, and should be included in a sing-in-tune app, is an ability to specify very simple accompaniments, as follows:

  1. Select a finite set of chords.
  2. From that finite chord selection, program a chord sequence, as one chord per bar, with optional automatic repetition of the whole sequence.
  3. Adjust tempo (for learning to sing precisely, very, very slow tempo is helpful, at least when you are starting out)
  4. Also, allow the specified chord selection and sequence to be transposed as a group (so the user can easily change the key they are practicing a given melody in).
  5. When the sequence is playing, the app shows the progress of the chord sequence.

Such a simple accompaniment feature would be enough to practice singing against chords, without requiring too much screen real-estate to show the user where in the chord sequence the accompaniment is currently playing.

To avoid too much playback overhead and complexity within the app, the chord-sequence option could have an optional midi output, so that the user was free to user whatever midi music app they wanted for the actual instrument sounds (eg Sampletank with its high quality instrument sounds).

Bonus Extra: Filtering Out Non-Vocal Sounds

Ideally a learn-to-sing app will be used in a quiet environment, but sometimes we don't have that luxury.

Reliably separating a human singer from other sounds is difficult, unless one uses a cardioid microphone (ie not the microphone built in to one's phone).

There is, however, one specific category of sound which would be useful to have the option of filtering out, which is those sounds where the primary frequency is below the normal singing range of a person. In some situations this is one category of sounds that one can't filter out, because bass sounds pass more easily through most physical barriers. For example sitting inside a car and there's an aeroplane flying overhead, or there are other cars being driven around in the car park.