Inspiration
Steganography is the practice of hiding secrets within ordinary files in order to avoid detection. Typically, image files are used within which several pixels are changed, indiscernible to the human eye. What sparked our interest was exploring the idea of hiding messages within music. The concept is to integrate characters within the notes on a sheet of music so that when the average listener hears the piece they would be none the wiser of the scheme going on.
What it does
Steggy is a stegosaurus, and he's good at keeping secrets. Whisper to him any information and he'll keep his promise! The website allows users to type in a message into a form, upon which they can submit and download a MusicXML file containing the music with their information hidden within. MusicXML is the standard for digital sheet music and can be used with software such as MuseScore to view or play the file. For simplicity, we chose to hide the given text within a composition of Twinkle Twinkle Little Star.
How we built it
The app as a whole is built with the Next.js framework, allowing for easy creation of webpages, creating components, and server-side rendering. The encrypting and decrypting of MusicXML files are called through API routes. Tailwind CSS was used for efficient styling and design.
Challenges we ran into
The primary challenge was figuring out how to map characters to music notes, and how to incorporate them into a piece of music without sounding disjoint, as that would make it far too obvious something was amiss. In the same scope, it would not be ideal to have the length or complexity of the music correspond to the length or complexity of the text. Choosing Twinkle Twinkle Little Stars as the piece to build off of was incredibly limiting, as the song only has 12 bars. It was very cumbersome to devise a scheme to satisfy all these requirements.
Another challenge (for our eyes) would be reading raw MusicXML files
Accomplishments that we're proud of
For one thing, Steggy is really cute. For another, we were able to successfully hide and extract messages from a sheet of music.
What we learned
We learned how to write, load, and work with MusicXML files as we wanted a way to make the generated music as accessible as possible. This was also our first time working with Next.js and Tailwind, so a lot of learning was to be done with those tools as well.
What's next for Musical Steggy
The primary goal is to find a way to play the MusicXML files within the web app in the browser, as it would greatly improve the user experience. Unfortunately, we were not able to find a way to convert the MusicXML file and add the audio to our browser, however we shall not give up! There are plenty of other features that would be nice to have, such as possibly rendering the sheet music itself within the website.
One major improvement would be adding other pieces, preferably longer, to the steganography scheme. Possibly, we could find a way to generate our own music :O
Log in or sign up for Devpost to join the conversation.