Four years of sight reading practice

4 days ago 1

I’ve been doing relatively frequent sight reading practice using an iPad app for four years. Here’s how I’ve automated some of the steps and what I’ve learned from the experience.

Some back story

I’ve been playing the guitar since an accoustic guitar was delivered to our scout hall by accident in the early 1990s. There was a piano at home, but for a variety of reasons, I didn’t play it. When my folks moved to a smaller house in 2021, the piano came to live in my study/music studio. I figured it would be a shame if I didn’t learn how to play it. I understood the basics of sheet music, but the decoding process was always very laborious, not helped by the fact that I had learned guitar mostly from tablature, which felt like a very different skill.

Hardware and software

I am constantly aware of fighting GAS by trying to use the things I already own. So I have been using the same M-Audio Axiom 49 key MIDI keyboard for years.

I have a WIDI Master connected to its MIDI ports, so that I can connect to it via bluetooth on my iPad.

This works flawlessly. The app I am using has gone through a few renames. It is as of 2025-05-11 it is called “NoteVision“. I can’t claim to have done a particularly exhaustive evalauation of music learning apps. This one just seemed to click for me due to the rapid feedback.

NoteVision’s Grand Staff practice has options to set the range of notes (which I’ve set to match the limited range on my MIDI keyboard), a key signature selection, a “Chords” mode that switches between just single notes to showing common chords (basically triads, 1st and 2nd inversions), and a “Sharps and Flats” toggle that adds accidentals.

The setup screen

Once you click the play button, you get a full-screen staff and randomly selected notes, the bar moves as you play.

The play screen
The summary screen

The routine

I have written a little interface in Pythonista that I can start directly from my home screen. It selects a key for me to input into the iPad app, as well as tracking the other two options in the sight reading screen (whether there are full chords and accidentals in the generated notes). I’ve found it quicker to use the sliders than to input the numbers.

Pythonista GUI for capturing results

The app sends a REST request to my server which inserts the values into a MySQL database. This part of my music practice session takes about 10 minutes.

Dashboard

I have built a dashboard using D3 to visualise the data captured by the Pythonista app. I will release a separate post about the mechanics soon. I’m still learning D3 and figuring out what I can do, but I quite like the layout that I have converged on. The left hand panel shows the metrics over time. You can see some distinct phases in my approach on the chart below

  1. I started out focusing on the basics. C major. This is just the white notes on the piano, and I improved rapidly. There is a bump halfway through this phase where I turned on accidentals. At this time I was just keeping notes on an Excel spreadsheet.
  2. Next it was time to start with different signatures. I chose G major since I was also learning a piece in G major (a beginners piano version of Haleluja).
  3. It was clear that I needed to shake things up a after having hit a bit of a plateau on G major. I moved my spreadsheet over to Airtable and tried to choose a different key every day. I found myself favouring the sharps and struggling with the flats.
  4. I wrote the phone interface which helped me to randomise across all keys and took the approach that I just had to play what the app said. This was quite motivating as I could start to see the results coming in quickly. I also worked with my visualisation to identify keys that I was doing poorly in, the app slightly favours those keys in the randomisation. I update this periodically.
  5. As I got faster, I found that I could do more repeats in the same time. I am now doing 6 repeats instead of the 5 that I was doing at the start.

On the right of the dashboard, I show the progress per key. It’s clear I’ve put in many more sessions in C and G. These days I rarely practice those keys, trying to get the others to catch up. I prioritise in my randomisation the keys that I have fewer sessions in and the ones I have lower accuracy in.

The relevant part of the code is here.

if random.random() < 0.6: keys = [ 'C', 'G', 'D', 'A', 'E', 'B', 'Db', 'Ab', 'Eb', 'Bb', 'F' ] else: # pareto front keys = [ "E", "Eb", "Db" ]

On 60 % of days I’ll play a completely random key. On the other 40 % I’ll play only the keys on the Pareto front. At this point I’m just eyeballing these, but I’d like to implement an automated Pareto front. I’m also not happy with the overlapping labels on the chart, but I’ll get around to that, later.

What I’ve learned

You don’t need to name notes to play them

With the rapid feedback I get from the app, I quickly found that I was going directly from the annotated notes to the finger movements, without spending time decoding the note names on the way there. That means while I was learning to play the notes shown in any key signature, I was not learning to name the key signatures. This is because I am mostly counting the number of sharps and flats and translating that to the keyboard through a pattern I figured out early on. The sharps “activate” from left to right across the groups of black notes, starting with F♯, alternating between the two groups of black notes. This is easier to get into your fingers than any other memorisation technique.

The order for flats is mechanically symmetrical – you just start from the right and move left, again from the “first” note in the group of three, which in that case is B♭. I am still not quite sure how other people are learning this, since most of the materials I’ve seen have focused on learning the actual names by rote, using mnemonics like “Father Charles Goes Down And Ends Battle”, but that still needs to be translated to fingers. I realised I needed a whole other drill for the naming, and settled on Anki.

There is still progress, after four years

I am surprised that I am still getting faster after all of this time. I guess another way of saying this is that my progress has been slow, but early on I was spending only around 10 minutes on these sessions and not doing much other practice most days. I have become significantly more confident in my sightreading ability when learning new songs. There is now no significant barrier between my eyes and my fingers when reading the music, although I still encounter issues outside the range I’ve practiced. It’s hard to tell how much of the additional progress I’ve made is down to other things I’m doing like playing songs (see later for my full routine).

I would have liked an 88 key keyboard

Due to the limitations of my MIDI keyboard, I only cover the middle range of the keyboard. This means I am considerably less fluent in the upper and lower range of the piano. I find myself having to work down octaves mentally, when I have to play low bass.

Randomisation is excellent

When I was selecting keys myself, it was clear that I mentally avoided the hard ones and was drawn to an easy C major day when I wasn’t feeling great. The randomisation means I don’t have that decision to make and makes sure I don’t zero in on wrong patterns. I suspect there is some difficulty on days where I shift from several days of sharp key signatures to flats, which I would still like to analyse.

An extended practice routine

For those of you thinking that I should do more than just random sight reading, of course you are right. I have a larger 30 minute plan which I am trying to get better at doing consistently, although I must admit I don’t get to it all most days.

  1. Sight reading practice (sets “key of the day”)
  2. Scales and arpeggios in the key of the day
  3. Theory and memory drills using Anki. I go through note names, key names and scales/modes
  4. Notation and transcription. This could be transcribing a random song from my Apple Music playlists or composing and annotating
  5. Ear training. I’m still researching a good iPhone app for this, but I try to work on playing songs by ear each day
  6. Repertoire practice. I have several pieces that I am trying to learn, so I choose one and work on a few bars every day.
Read Entire Article