This week, I’d like to share some design explorations for a new tool that I’ve been building for writing chord progressions. This tool is for producers (such as myself) who don’t work with a keyboard but prefer to program their tracks directly inside the software.
In the world of music production software, the primary interface for writing chord progression is the piano roll:
Within the piano roll, you draw chords by stacking notes in the note editor. For example, to draw an F min 7 chord, which consists of the notes F, Ab, C, and Eb, this is the process you’ll follow:
Invoke the pencil tool (CMD + B) → Place each individual note on the piano roll → Switch to the regular cursor (CMD + B again) → Drag and select all the notes → Click on the right edge of any note in the set and drag to the appropriate length
The number of steps begins to compound as you add more notes to your chords and more chords to your progression. Soon, the process becomes too labor intensive. It takes a lot of fine grained adjustment to create variations. As a result, there’s a lack of spontaneity in the chord exploration process. Producers often dedicate entire sessions for just writing chord progressions and saving them as MIDI clips. It’s far too cumbersome to do it on the fly.
This week, I felt inspired to create first draft designs for a tool that could optimize this workflow:
The core idea here is to treat a chord as a unified entity as opposed to a loose collection of stacked notes. I’ve also labelled the chords with respect to their position in the scale to further highlight their relationship with other chords.
You can add more chords to the progression by clicking the ‘Add chord’ button.
To change chords, you can hover over a chord to get buttons for all the other chords in the scale. There’s also a button for removing the chord from the sequence.
With these affordances, you can quickly switch between different chords in a scale instead of building up each chord note-by-note. This enables you to audition different chords while still staying in flow.
This v1 UI sets the direction for how I can create a more spontaneous and intuitive workflow for writing chord progressions. But there are a lot of gaps to fill before this tool is able to match the full expressive capabilities of the piano roll. A few functionalities I’d like to explore next include: octaves, inversions, accidentals, note start / end offsets, and variable chord lengths.
But before I do that, my next move is to build a quick browser-based prototype to ensure that the core interaction works well and feels right. I’ll be back next week with a progress update. Until then, please reach out with any feedback on these explorations.