[Jam Submission] ChordPro reader

Source code: https://github.com/SentientCoffee/HandmadeChordProRenderer

Work VODs: Youtube | Twitch

Demos: Demo 1 video | Demo 2 video | Demo 3 video

Screenshots:

HandmadeJam_Picture1.png

HandmadeJam_Picture2.png

HandmadeJam_Picture3.png

HandmadeJam_Picture4.png

HandmadeJam_Picture5.png


For my wheel reinvention, I decided to remake a piece of software I use constantly that always seems to frustrate me in one way or another: a ChordPro file renderer.

What is a ChordPro file?

Simply put, ChordPro is a text file format that allows for easy storage of lead sheets, or sheet music that has the lyrics of a song and the associated chords above the respective words. The main use case for this is for musicians who perform live, so they have easy reference to their music in a format that is concise enough to fit into a single page 99% of the time.

Why do you need a renderer for this?

The modern live musician shouldn't have to deal with bringing a folder full of lead sheets everywhere they want to perform. This is not a new concept, and many apps have already been made for both the Apple App Store and the Google Play Store.

However, all of these lack simple features that wouldn't even be that hard to implement. Quickly and easily sorting a playlist of songs based on title or artist? Sorting your music catalogue based on custom categories, for example to sort by classical and pop music, or for beginning and end of a set? Being able to search using not just song titles and artists but also the lyrics? Changing the font letter and size quickly to adapt to different situations instead of digging through the convoluted settings menu? These should be features that should be common among this kind of program, and yet a lot of offerings out there simply don't have them.

There are other features I'd like too, such as the ability to export my entire library as an archive of .chopro files and being able to connect to an external service that lets me back up my lead sheets, among other things. Some of the offerings out there do some of these, but they're still poorly implemented in most cases.

How'd it go?

My plan for this jam was to rebuild the foundation to make a mobile application to replace the offerings on the market. I had started this project about a year ago, but fell off the wagon after completing it because I became busy with other things, and because I didn't know what I was doing a lot of the time so it was getting more and more complicated to refactor the code. I wanted to start fresh, and this jam gave me the opportunity to do so.

I managed to get a simple prototype of the new app up and running as a Windows application, using Flutter to build it. While not ideal for a Windows application, the fact that I used Flutter allows me in the future to very easily port my code over to Android and iOS if I so choose. (I actually wanted to develop the app on an Android emulator but there were issues with new versions of Android Studio that prevented me from doing that.) This prototype has the ability to add and remove songs, edit their information, and render a nice looking page with the song title, artist, and lyrics. It can also keep an updated list of artists and categories that you can search through based on the data you gave to your song library. This doesn't cover all of the features I wanted but I plan to keep working on this in the future, hopefully streaming the process as well as I did during the jam.

Next steps from here would be to implement things like a database so that the app can keep a persistent song list, being able to export the library and individual songs, as well as implement the other quality of life I mentioned above and more.


Edited by SentientCoffee on Reason: Add screenshots, and links to stream vods