Jacques Mattheij

Technology, Coding and Business

Pianojacq, an easy way to learn to play the piano

I’m pretty sure that the hardest choice in my life to date has been the one between my two loves: music on the hand and computer programming on the other. The programming won out, I figured it would be a much more lucrative field to pursue a career in, besides it was a much better match for my talents. From the age of 5-8 I did violin lessons and hated every moment of it. Then from 8-10 I did piano, and hated that about as much. At 17 at the insistence of a friend (hi M.) I bought a saxophone because I loved the sound of it and learned how to play. No note reading involved, just playing along with music that I liked and I had enless fun with it. Due a complication stemming from a double pneumonia I ended up having to give it up but it gave a lot of satisfaction. Then I tried the flute for a bit but it did not give me the same feeling.

Learning how to play an instrument is an exercise in frustration, especially in the beginning. There is so much beautiful music and yet, you can’t play any of it. But it need not be that way. What if you could come up with a way to gradually learn how to play while still making nice music in the process?

Kids - today, but in the past probably just as much - are living in a world of very powerful temptations. Video games honed to be super addictive and all kinds of other distractions compete with homework and the acquisition of other skills. I’ve got a couple of those and while they are pretty clever the degree to which they are glued to their computers (and tablets) worries me. Yes, I try to be a responsible parent but it isn’t always easy to win that argument, especially not because my own days are spent in front of the computer professionally.

When COVID-19 hit I decided to re-kindle my love for making music. Piano again, but this time because I wanted it, not because of pressure from the outside and in my own way, and on my own, focusing on making music rather than the ‘boring parts’, I figured if I can stay interested that will one day come as well. So far so good. Now, six months later and with the help of various software tools I’m getting better at playing and reading notes. These tools left me feeling they could be improved upon. There is a lot of software out there that helps you play, I found one called ‘Pianobooster’ that I liked a lot. But it too had its shortcomings. So I decided to make a much updated version of it, running in the browser and with a bunch of modifications to the ui (the code is all new) to form the engine of a keyboard teaching suite. Today I’m happy to announce that it is now finished to the point where it is hopefully already useful to others.

Here an early beta version of it is used by one of my sons (Luca):

To give some context, normally you can’t get Luca away from his video games with a crowbar. After being given access to the software and the score of one of his favorite pieces of music (Alan Walker’s ‘Faded’) he went from not being able to read notes at all to being able to play along with it in the space of a few days. On one of these he was at the keyboard for five hours at a stretch to practice. Obviously, his technique needs (a lot of) work and it is only the right hand part but (1) he’s having fun doing it and (2) there is a lot of progress. A colleague of mine in Poland who collaborated on this project (Radek) had a similar experience with his son (only they did the Minecraft theme).

The way the software works is very simple: you find a midi file of the piece that you want to practice, upload it into the software and you’re off the races. Having a midi capable keyboard is a must (and a nice screen certainly helps). Unfortunately, because Mozilla is too busy improving the world instead of their browser and WebMIDI is not supported on Firefox you have to use Chrome otherwise it won’t work. There are still some obvious shortcomings: rests are not dealt with at all yet, and the score rendering can definitely be improved in many places. But the start is there and if it is useful for us then it may be useful to you. We’ve had some very early beta testers and I would really like to thank them for their contributions and bug reports, without them this would not be at the state of polish and functionality that it is. The software does not require a service, subscription or account to be created, all of the data is stored on your local computer. There is a very powerful ‘auto’ mode that automatically creates little lessons to practice based on the parts where you are still weak, and a neat progress indicator shows you how you are doing on the way to mastery of the piece you are practicing.

Having a half decent midi file of the piece that you want to practice is a must, there are many sources for such midi files, we’ve built in three simple test files into the software so you have something to start with, but if you want more than that you will have to add the files yourself (which is trivial, using the interface in the software).

So, if you have a midi capable keyboard laying around and you want to improve your piano playing skills, head on over to PianoJacq.com, which is our working title for the testbed of the engine. In time we will build a much more complete service around it but for now it should already be useful enough to be exposed to a larger audience and to give people the opportunity to help shape it with us. In that light: feature requests, bug reports, any kind of feedback, both positive and negative is much appreciated. Enjoy!, Jacques Mattheij, Radek Korbecki & Andrew Fiorillo.

The software is not ‘open source’, we have not yet decided on how we plan to go forward with this project in the longer term, but the code is on GitLab and if you want to see what makes it tick or suggest improvements then of course you are more than welcome to do so. One of the focal points was to make it work independent of any server and you can just as easily deploy it from a zip file on your local computer as you can run it on the web, so it will even work when you have no internet connection or if something should happen to our company, which is in line with how I think web applications should be distributed. Note that it would have been trivial for us to force our users into a relationship with us by having to make an account and we made a very conscious choice not to do this.