Jacques Mattheij

Technology, Coding and Business

Piano Practice Software Progress

First an apology. I started this project because during the first 9 months of the COVID-19 pandemic business was down to a fraction of what it was before then, and I had a lot of time on my hand. But that has changed now and there is a lot of work in my ‘day job’, so I don’t have a whole lot of time to work on the piano software (or to play piano, for that matter). Even so I try to play at least an hour every day, just to unwind from the work, and while doing that I make notes of the things that I think should be improved.

So slowly but steadily there have been a number of subtle but important changes to the way the software works. The first thing that I noticed is that when importing certain midi tracks into PianoJacq it would sometimes really mess up the splitting of the notes across the hands if this had not already been done in the track itself. This is highly irritating because the score then looks terrible and you can’t really play the piece from it. That’s solved now so if you had issues importing certain files then maybe try again.

Then, it was asked, multiple times to label the scores with the names of the notes. This is a trivial thing to do, but what I really wanted is not that trivial: to label the score also with the names of the chords. I spent a day or two on WikiPedia getting the names and offsets of all the chords that I could find and turned them into a huge table with a little bit of software that could then, given a set of notes tell you which chord that is. Lots of help from pilot users there to point out errors in the tables, special mention to Ludwig Weinzierls who helped track down a particularly nasty case of a misidentified chord. The speed slider was another oft repeated request, I made the range ‘down’ a lot lower, you can now go to 1/5th of real time speed to help you to practice really hard passages, and I added some visual feedback to help determine how fast the slider has been set.

To make the score more logical the speed was then used as a multiplier, so you don’t get a 100% score for playing a piece perfectly at 50% of normal speed, but 50%. This makes it easier to compare scores from different tempos of playing the same piece. Another neat change is that the software will now pre-emptively mark notes ‘red’ that you have played wrong in the last 10 passes. So that if you come across a red note you know to be a bit more careful. I added the beginnings of a gamification mode, at the top right of the screen there is now a counter that gives you a rough idea of how much practice you’ve put in, with bonus points for perfect playthroughs.

Another major change is that the autopilot is now locked in with respect to the length of the part you are practicing so it no longer switches back to short sections every time you make an error, and that it strongly prefers accuracy over speed which makes you practice slower to get things perfect rather than to rip through a piece to make it faster. This has helped my own practice tremendously and has improved the quality of my playing quite a bit.

I’ve tried very hard to keep UI changes to an absolute minimum so there should be no confusion when you use the newer version, and there is nothing to update, just refresh the page if you still have it open and you’ll be running the new version right away. Also note that the code is on gitlab if you want to inspect it, there are plenty of comments in there to explain how it all works.

If you have ideas for improvements or run into bugs please let me know either through email via jacques@modularcompany.com or via gitlab.

I’ve been asked multiple times to post a video of what the software looks like when it is in use, so here is a short piece, I’m super shy about the playing so apologies ahead of time, but this should at least give you an idea of what you can do with it. The piano is a Yamaha P-515, which I bought about a year ago, the trills are played much slower than they should be because the software does not yet understand the concept of a trill in the notation (it uses midi as its file format and the original midi spec does not have the concept of ornamentation such as is common in classical music).

Enjoy, and if you have a better video let me know, I’ll be happy to post it.

At the request of HackerNews a screenshot of the new version: