Music Technology things that I’m interested in or working on.
Music Reading App
There’s an old joke that goes, “How do you get a guitarist to stop playing? Put sheet music in front of them”. The joke seems to have an element of truth to it; most guitarists I know don’t sight read particularly well on the guitar, and those who do often learned to read music on another instrument first.
Now, I’m not saying that learning to read sheet music is by any means a necessity for becoming a great guitarist (think of all the amazing guitarists who didn’t), but I found personally when I improved my sight reading:
- The skill came in handy; people do occasionally put sheet music in front of me and now it’s a lot easier to read and memorize it.
- My musicality improved; I was able to hear, play and write more interesting rhythms and melodies, and I started being able to do more intricate patterns and permutations in my improvising.
One thing that had a hard time with when learning to sight read was finding good material to work with. If a piece was to difficult for me to sight read, I wouldn’t be able to play it, and my practice session would be very unsatisfying. I wanted to find pieces with a friendly key signature, not too much syncopation, not too much polyphony, etc.
I started wishing I had an app to generate scores with a given difficult, which I could gradually increase as I improved.
Late last year I was taking a programming class with a very open ended final project. I decided to take the opportunity to try and build such an app. I started with a simple algorithm which picked random notes bound by rules I choose to constrain the difficulty. Later I used code from another open source project to generate a score with an LSTM (Long Short Term Memory. Read here for geeky details: http://colah.github.io/posts/2015-08-Understanding-LSTMs/) Recurrent Neural Network trained on english folk music to extend my program. This is a much more fancy and “state of the art” approach, and the results where more musical, although I don’t a have a good way of controlling the reading difficulty with this method.
You can see my code here:
The LSTM module may be a little difficult to run on other people’s machine, as the author wrote it with an early version of Tensorflow with an outdated API. I’m working on getting a version which will run with the latest release.
I also occasionally host the program on http://ianconway.dynu.com:5000/notereader the server is currently down for maintenance.