Labour of love
I’ve been meaning to learn the piano for most of my life. When my daughter started having lessons and we got her a keyboard I tried to do it and eventually dropped it.
To me piano has the ability to play amazing music on its own. In my fever dreams, playing piano is akin to typing on the keyboard while I code. (spoiler alert: IT IS NOT!)
My challenges
Besides the normal reasons one would have to skip piano practice, I couldn’t really see the sheet music while playing. I can’t really see the correct placement of a note between the lines. I’ve tried using a tablet to make notation larger and yet it was not enough and limited the content I could see. I can imagine I’m not the only one in this position, and for some time, I felt that I wasn’t up to the task..
Inspiration
The first time I tried to learn I had a few classes with a brilliant pianist and friend Cristiano Coelho. He handed me an introductory book with scores for me to practice while he would patiently listen and guide me. In the initial scores it would show a red or blue rectangle that corresponded to the chords C and G7 played by the left hand. I realised I only needed to glance at it to know what I had to play.
Aligning goals
While that seemed like a good idea at the time, I also wanted to do things by the book. And this is where I made the wrong choice. I looked at myself like I was typical and should be able to do it. In reality, there was a real roadblock that sheer will can’t overcome. As much as I wish I had good vision, I don’t.
The thought process should’ve been: Do I want to learn to play the piano, or do I want to stick with the way others do it and lose interest?
Of course, framing it like this with the benefit of hindsight is easy. In reality this learning moment is a lesson in my own view of accessibility. So here we are.
How it works
So I recently started to create EasyStaff to help me overcome my own challenges. I’ve created it in Astro of all things (I’m having a real crush on Astro right now 😅). It uses MusicXML files to build a content collection of scores that you can select from the top left.
It presents the notes as rectangles of a given color for each note. This way I always know what note it is exactly. You can then hit play, and it will start animating the score from left to right at the correct tempo for the song. I used an Intersection Observer to detect when beats and notes cross the playhead to highlight the beat and fade out the note once it has played.
Open source
One hopes each creation has the ability to help others. This would be of little benefit to the world if it were to stay in a private repo. So I’ve decided to make it open source. Feel free to contribute to it with code or MusicXML partitures. Your help is more than welcome.
As you can imagine, being just a few days, old it’s not what I would call polished 😅. In the repo you’ll find the missing features and plan for future.
You know what? None of that really matters. If it helps someone else besides me, it’s already 100% worth it!
In summary, I’ve learned a couple of important lessons from this experience:
- I need to more self-aware of my challenges and align them better with my goals.
- Making this open source, even in its current state, is something that I should’ve started a long time ago!