This project was a collaboration with Myles Dakan during our time together at the Recurse Center. Myles had already created an interesting Python app for Change Ringing - a way to produce music with bells by ringing them in a pattern-based sequence. For more information see this video and detailed explanation. The app interprets change ringing notation in a variety of forms and automatically generates the music as well as its notation.
The functional python script was interesting, but no average user would be able to interact with it from the command line. We chatted for a bit and decided to work on “webifying” the application with a Python web framework I had been recently learning called Flask. With a little bit of server side rendered Jinja HTML, some python backend design, and some refactoring and error handling work from Myles, we put together a simple website that lets users experiment with Change Ringing and hear a midi sample of the output. Users can generate their own content using change ringing notation that is standardized into an expected string on the backend. This app was a learning exercise to explore Python 3 based backend development with the Flask framework, Jinja, and Pillow with some bootstrap based CSS. The app is deployed to Heroku using Gunicorn.
Check out the Change Ringing Web Site and give it a try! (Warning: This will take about 20 seconds to load for the first time as it has to wake up the Heroku Server) As always, if you have any comments or questions feel free to send them my way or take a peak at the source if you wish!