My friends and I are all pretty into music, and so we wanted to build a project related to music! A couple of us were working on our first hackathon project, so the hackathon was a major learning experience for all of us.
What it does
Given a user-specified "key" for the song (a key for a song is basically a set of notes designed to work together to achieve a certain affect -- e.g. "C major" or "D minor"), the program generates chords structures and songs based on popular music chord structures.
How we built it
We worked with an API called Tone.js, and did all the backend in typescript. A couple of us were familiar with basic music theory, and that was really helpful background for figuring out what notes/patterns of chords we could use to build "songs"
Challenges we ran into
One hurdle we had to work around was all of us having different obligations outside of Bitcamp, which limited how much time we actually had to work on the project. That made it harder to deal with a few of the logical issues related to connecting the music theory to programming. The API we were using also gave us a couple issues.
Accomplishments that we're proud of
Despite API issues, we were still able to figure out how to produce chords and solve several of the logical issues we had to deal with when trying to navigate basic music theory in code. It was pretty fun being able to actually generate full chords and make code which allowed us to move them around different keys without breaking the rules of theory.
What we learned
Typescript and APIs! None of us had ever used typescript before, but it was surprisingly easy to use.
What's next for AuxiGen
While we were able to produce chords and work around basic theory issues we were facing successfully, the set of chord progressions we use don't always sound great together. If we spent more time working on the project, we would like to figure out ways to more strategically choose chord progressions so that they go better with each other. Another cool expansion would be to support more modes/types of chord groupings. It would also be nice to build out a more substantial/appealing front-end.