A downloadable generator

SillyPond generates unplayable sheet music in the style of John Stump's "Faerie’s Aire and Death Waltz". It's my entry for PROCJAM 2019! Using a mixture of generative grammars, a linguistics library, noise functions, and a lot of hand-stitched random distributions, SillyPond constructs a description of sheet music, which is then converted to an image using the open-source music engraving software LilyPond.

You can find the source code on GitHub. To generate your own sheet music, you only need Ruby and LilyPond.

When working this generator, I really enjoyed that it's basically a bunch of smaller generators, bundled together: a title generator, a subtitle generator, a melody generator, an instruction generator… – and that each part can be improved separately.

Giving the page some interesting high-level structure was the most challenging part for me. Because I don't really keep a state while generating the elements, they tended to be distributed on the page pretty evenly. I solved this by using Perlin noise to influence some of the random distributions slowly, progressing down the page.

Fun fact: LilyPond can actually create MIDI files, so if you want to listen to "On the Beautiful Blue Penguin", you can find an MP3 file here!


Log in with itch.io to leave a comment.

I'd love it if there was some way to play this in-browser!