Read the music

Lire la musique is a web application that lets you scroll through a score randomly and indefinitely. The idea is to be able to practice reading the notes on a score without knowing the notes or melody in advance.

Features

You can change tempo, signature, scale, instrument sound and key. Languages available are English and French.
For the moment, these changes are not very useful, as they are reflected on the score, but not necessarily taken into account in score generation.
A tuning section is also being worked on and is accessible in the source code, but not directly from the online site.

Today, the score unfolds as needed with randomly generated notes. The ultimate goal is also to have a generated score that is pleasant to listen to. We’re approaching artificial intelligence issues that are too complex for me at the moment, but that’s the idea I’d like to work towards. In the best of all possible worlds.

Motivation

The purpose of this application is twofold:

  • Firstly, it’s a tool that corresponds to a need I had when I was learning to play the piano. I wanted to create my own tool that could be adapted to my needs.
  • Secondly, it’s an opportunity for me to learn about web development using the React Javascript library. This project was the right idea for me to test development with this library in real conditions.

Technologies

  • React
  • Redux
  • MaterialUI
  • SVG, WebAudio

The notes were recorded on the piano by myself, hence the sometimes uneven sound and quality of the audios. The score display is done in SVG simply hand-coded by me. I could have used a library to display the elements, and I probably will in the future. But it was a little challenge I set myself, which is why I haven’t bothered to add more note types for the time being. On the other hand, I don’t think the G and F clefs were made by me.

The source code is available on github: https://github.com/JeanDavidDaviet/piano

Roadmap

For now, part of the roadmap is available in the Github readme. There’s still a lot of room for improvement, and a lot of features to add that I have in mind. There are also a few bugs and fixes that I’m already aware of. Don’t hesitate to give me feedback. The difficulty on projects like this is not to go off in all directions. When everything is interesting, it’s easy to want to do everything, and end up doing nothing.

This is a project I started in 2018, and I’m moving forward according to my desires and periods. There are no trackers that allow me to tell if there are users of the application. If there are, that’s fine, if there aren’t, that’s not a problem. Coming back to it to simply update dependencies, or directly develop a feature, refactor code, etc… that’s what I like: the freedom to create, adapt, modify, without constraint.