Bulbul
image
How might we...
Democratise music creation through human-guided procedural generation.
Description
Bulbul is a procedural music application that generates expressive pieces of music using interactive markov chains.

The project's most recent iteration is deployed on the web using javascript & various libraries (Tone.js, Three.js, etc).

The application is essentially an instrument that plays an instrument, the musician controls the meta-instrument which in turn plays different kinds of melodies on the synths built into the code.

Bulbul won the 'Best Design' prize at PrincetonHack.
User Research
Prototype 01: Paper Prototype
Prototype one was a paper prototype. Testing was done on two different ideas: a digital cave for secular meditation and the procedural music generation interface.

Key Insight: Procedural music generation is more within scope. With an interesting interface, the project will be interesting.
Prototype 02: Digital Prototype
Prototype two was my first digital prototype. It was a quick program made with Java in the Processing library. The objective was to compare and contrast the paper prototype with the new digital interface.

Key Insight: More playful interface & seek collaborators for execution.
Prototype 03: Exploring the field
This round of prototyping was more informal. I wanted to test out existing music projects and see what parts resonated with people the most.

Key Insights: Find the sweetspot between avant-gard & familiar in user interface design. Give simplified explainaition of back-end.
Prototype 04: Execution
After testing previous prototypes, I started experimenting with the viability of different generation methods. The main method I explored were Markov chains to generate sequences of chords, and binary transition matrices.

Key Insights: Validating the effectiveness of Markov chains.
Check out the python files here.
Prototype 05: Minimum Viable Prototype
This is a full implementation of the generation procedure with a functional UI along with curated samples.
Check out the project here.
Process
To create this project I collaborated with Abhishek Cherath a physics student at Stony Brook University. We executed this project by setting goals and conducting three 36 hour development sprints over a semester with user testing between them to properly orient the development process.

My Role: Creative Director, Co-developer & User Researcher.
Collaborators: Abhishek Cherath