Inspiration

I studied cinema and music and aspired to be a film composer. I later found myself working as a programmer developing web applications. The DOME was my attempt to find harmony (no pun intended) between these various fields.

What it does

The DOME provides dynamic music soundtracks that can evolve or respond to triggers (which can be user-generated events), so it's ideally suited to creating musical accompaniment for interactive applications, especially games.

How we built it

The prototype as seen in the demo video was written in Ruby, but the project has been written in various languages, having started out as a JVM based project, so Java, Python (Jython), Ruby (JRuby), and even a web-based applet version written in Scala (note: most of this early work was done over a decade ago).

The IC version was written specifically for the Supernova hackathon using Motoko, JavaScript (React), and the WebAudio and WebMIDI APIs.

Challenges we ran into

The most challenging aspects of the system involve timing, and especially tempo changes.

Probably the most challenging aspects are yet to come, however, as having methods for gracefully handling transitions is likely to be tricky, as well as just composing/programming compelling music for the system, and being able to embed it in a game.

Accomplishments that we're proud of

Just getting to the point of having a viable prototype that serves as a proof of concept is a significant accomplishment.

Specifically for the hackathon, being able to serve music data from a canister and play it via the WebAudio and WebMIDI APIs is great.

What we learned

We learned that it's definitely possible to make this work for Web3!

What's next for DOME: Interactive Music for Games

Next would be to continue the development of the canister based backend, and web based front end, with a view to keeping as much of the complexity as possible in the backend, in order to simplify the requirements for making it embeddable in games or other apps.

Built With

Share this project:

Updates