So as you might have noticed from my previous posts, I play guitar – A lot. I picked it up back in 2014, mainly because I love singing which is much more fun with a guitar. Over the years, I’ve gotten modestly better at playing and learned a couple of songs by heart. Well not a couple… After sitting down and collecting a list together with my girlfriend we counted 80ish different songs.

Jukebox Hero

Once we had the list, the next step seemed obvious: Hanging around the house, my girlfriend would pick a random number and I’d try to play that song, usually without too many problems. But of course there’s always room for improvement. I started taking notes along with the songs in order to track what I needed to practice or how well a certain song was seated in my repertoire.

I Engineer

Having a list of my performance skills immediately struck a chord (pun intended) with me. If could track how well I knew each song, I might be able to devise a system to efficiently practice the songs that I was doing poorly at. But since manually going through a list and updating such data is cumbersome and gets in the way of doing what’s actually fun: Playing guitar. So I decided to throw some of my technology skills at the problem: I was going to write a web application.

The goals I set for myself were the following:

  • Store and display title, artist, play count and skill level for each song
  • Add new songs from a form
  • Add and edit individual notes per song
  • Reproduce the jukebox-like game
  • Work from my smartphone

How Far We’ve Come

After a couple of sessions of coding I came up with a first working version (code on my GitHub). The application is written in my go-to language Python using the flask framework (which I had almost no prior experience with) and uses semanticui for the styling and interface. I got to play around with a couple of nice new tools such as SQLAlchemy and much more Javascript than I was comfortable with at the time. Some features like the searchable list required a lot more effort than I’d thought. But I soldiered through and finally got my first version deployed to the Raspberry Pi plugged in next to my router.

Since then, the application is configured to start up along with the Pi and is accessible from within my own WiFi. I might upload an instance to Heroku or similar at some point, but for now you’ll have to make do with screenshots:

How Far I’ll Go

The web application worked perfectly, I’ve been using it regularly ever since I set it up and it has only crashed once in the three months I’ve been using it. But – There is something that bothers me: Even though I’m mostly confined to my apartment due to the ongoing pandemic right now, I still want to be able to take my list (and my guitar) along when I go out. This gave me a good excuse to sit down and build a clone as an android app. This will probably warrant another Post 🙂

Over-Engineered Songbook with Flask
Tagged on:             

Leave a Reply

Your email address will not be published. Required fields are marked *