ImprovScore

Real-time synchronized musical performances.

 

ImprovScore is a web application that serves as a digital score and algorithmic conductor for groups of improvising musicians. It is the result of years of performance experience in the San Francisco Bay Area creative music community, as well as my own experimentation with utilizing technology in musical performance.

 
 

Application Overview

 
 
1
Jackbox Games-style interface for musicians to join a session.
2
Message to Players: Editable, updates in real-time, viewable by all session participants.
3
Interval Range: Determines frequency of musical events.
4
Player List: Updated in real-time as players join and leave the session.
5
Compositional Arc: Provides a visual representation of the dynamic arc of the performance, updated in real time as performance controls are adjusted.
6
Micro-Dynamics: Influences the degree of change between musical events. At lower settings, every member of an ensemble might play continually the entire performance. Higher settings increase the likelihood of smaller groups being formed, such as duos, trios, etc.
 
 

Alpha Version

I began performing live using a similar (but much simpler) application in 2017. At the time I had a vision for how the app might evolve into what ImprovScore is now, but I lacked the coding skills required to build it. The advent of vibe coding has enabled me to bring my initial vision to life.

 
 

I created the alpha version of ImprovScore using ChatGPT, having had previous success creating simpler apps in a single HTML/CSS/JS file. This version was a proof of concept only (it was not usable for performance), but helped me start making decisions about the UI, compositional controls, and performance tuning.

Progress improved once I switched to a full-stack architecture. Working on different parts of the app in isolation helped me overcome the limits of the model's context window size. Eventually I learned to recognize the signs when a new chat session is likely to be more productive.

Alpha version of ImprovScore
 
 

The Hard Part

I switched to Cursor for the beta release. Technical aspects of the app that had previously been insurmountable for me (like the websockets.io implementation that powers the session/lobby interaction) were completed quickly by AI. The app was up and functional in under an hour, but tuning the performance aspects turned out to be a much larger challenge.

Ultimately, the application is a musical score: if the resulting music isn't satisfying, the technical novelty is of little consequence. Testing the score with large ensembles (of up to 12 musicians) and with lengthy performances (of up to 1 hour) would be complicated and time-consuming.

To address these challenges, I implemented a simulation mode. This enabled me to evaluate sessions of any length in any group size in seconds, with thorough reporting. I was able to accomplish in a few days what a traditional composer would require months to do.

Results from a 20-minute session in simulation mode.
Click here to enlarge.
 
 
 

Next Steps

If you would like to try ImprovScore with your own group, the beta version is live now. Contact me if you would like to be notified of live performances in the San Francisco Bay Area.