Play the Orchestra: MakeUofT 2019 Project

I had the privilege of working with Eli Scott, Helen Newton, and Adam Carnaffan (all EngSci 2T2) at MakeUofT 2019, the largest makeathon in Canada, to actualize our idea of playing the orchestra. We created a product that allows a user to ‘play’ a live orchestra in real-time via a MIDI keyboard. The system takes in MIDI data from the keyboard and intelligently routes each note of the chord to the screens in front of different members of the orchestra. It also incorporates custom chord analysis and prediction software, in addition to a physical display unit that we built out of a Raspberry Pi.

The project ended up winning top-3 overall and first prize for documentation.

Hackster.io Documentation | Github Documentation

Process

After a last-minute meeting at a coffee shop the night before, we had our idea picked out. The next morning, we were off to the races.

In my experience, teams who do well in hackathons tend to incorporate the sponsor’s technologies and have an interesting, flashy design that fits well with the theme of the event. I wanted our final solution to have those aspects, but I also wanted us to be able to have something to show for our work as quickly as possible. I remembered how, in a game development lecture from a UOIT student group, they discussed the concept of an MVP. A good MVP communicates the key functionality of the product with the least possible work. My plan for creating our final product was to get that done as soon as possible then incrementally improve it for the rest of the hackathon. This mitigated the risk of having nothing to show at the final presentation (which has been known to happen).

Flow of Information
This is the path of information in our Play the Orchestra system. This constituted our minimum viable product (MVP), a tool discussed at length later on. This design was fairly simple to start off but enabled us to grow the product to a winning design.

Within the first 4 hours, we had a system that could read 4-note MIDI chords from a keyboard and send it through a custom low latency network to 4 separate devices. With our remaining 18 hours, we worked to improve the following:

  1. Aesthetics (showing a proper note staff)
  2. Chord analysis (now spun off/coming soon in my project, Collier.js)
  3. Intelligent chord prediction/suggestion (using sponsored tech, Azure ML)
  4. Making a physical device with a Raspberry Pi (to fit better with the internet of things as opposed to just having a software version)
  5. Scalability of our general software solution (from a quartet to an orchestra)
  6. Polish our documentation (using sponsored tech, hackster.io)
  7. Testing our product with real musicians
  8. Creating our well-edited submission video.

In the end, we won third place overall (competing against teams of 4th-year students) as well as prizes for best documentation. We came out with several thousand dollars with of tech from sponsors.

Screen Shot 2019-07-10 at 4.46.49 PM
Helen, Eli, Adam, and myself with some of our prizes.

Holistic Review

In addition to having a lot of fun with my friends, I learned a lot from this hackathon about how to get technical projects done in limited time with a small group. One of the most important things I learned for hackathons specifically is that your minimum viable product should be very quick to build. It should be simple, and you should be a little ashamed of it. You’re trying to find a diamond in the rough to polish over the rest of the hackathon. An overly-complicated first version of a hackathon project is far less likely to succeed because you don’t know if your foundation is solid. You could flesh out a (relatively) massive system architecture only to find out that a core premise of your app is flawed.