Inspiration

Listening and playing music online is currently not collaborative, and for novice musicians the basis of music, such as chord progressions, is not always easy.

What it does

This project consists of two components: An engine that generates music (currently chord progressions, but extensible due to a modular structure) using one of many machine learning content databases, and a site that connects music producers to listeners, with real-time feedback from listeners. These components work hand-in-hand to update the relevant music generation database based on listener feedback, thus tweaking the machine-learning algorithm in the engine (also modular, currently a genetic algorithm) for the next sample of chords.

How we built it

The UI was built using HTML and CSS. The generation backend and MIDI demo code was written using Java with the Fugue library, Jenetics, and Maven as a build system.

Challenges we ran into

Currently, our demo dataset consists of only a small amount of music, thus lacking variety. We can overcome this by rating a larger amount of music for the initial database.

Accomplishments that we're proud of

  • Implementation of a chord progression generation engine that considers long motifs as part of scoring, together with individual chords and short tuples.
  • Design of a unified business model that fits the modular structure of our backend technology in terms of long-term extensibility.

What we learned

  • Communication between separate subteams is key to understanding the product design and interaction of components.
  • Genetic algorithm generation counts are key when longer chord progressions are generated.
  • Sleep is not important.

What's next for Concertfish

  • Connecting the frontend to the backend for a functional initial product.
  • Addition of a large number of music samples to the initial databases for various
  • Implementation of overlay databases to sub-classify chords and progressions. This allows the user to overlay a second database (for example, of mood) onto a database of likability and genre-appropriate progressions, to obtain a piece that matches the rating criteria of both databases.

Built With

Share this project:

Updates