The rhythm sight reading app in now runs happily on iOS, Android, and desktop browsers. Making that work was hard. Making it work in a way that is acceptable to humans has been harder.

It turns out that we humans actually have a lot of tolerance for rhythmic flexibility, and computers don’t. Finding the right algorithm to accept the little bit of push and pull a great musician puts into something yet reject performances that in fact change the meaning of the rhythm has been a delightful game of trial and error.

Over a period of about four months in 2015, I subjected my friends to nearly endless requests to try out the early stages of the rhythm reading app. I’ll never forget stellar percussionist Bonnie Whiting trying out the very first incarnation — which would only accept up to about 2 hundredths of a second of inaccuracy before marking something wrong. I think she’s one of the few people I know who could actually play within that microscopic level of tolerance.

Scott Perkins, brilliant composer and soon to be head of music theory at Sacramento State University, gave endless suggestions on both the app’s tolerance for errors and its visual feedback to users. He can still find some ways to make it give strange feedback… and his work has pushed me to look into symbolic sequence analysis & alignment algorithms, like the Needleman-Wunsch algorithm. The current version of the app doesn’t yet implement this… but test versions are in the works!

Finally, we knew that computer generated rhythms simply wouldn’t provide the level of satisfaction that those written by a human would. So, over the course of several months, one of our talented composition & conducting students here at Oberlin, Justin Weiss, wrote many hundreds of rhythm examples. Between his more than 700 examples, and the hundred I’ve written myself, you can now get nearly endless practice. Just log in to uTheory, click “Skills”, and select the rhythm skill you want to work on.

Or, check out me giving an intentionally bad (I promise!) performance of this rhythm:

Happy tapping!