comb

Comb was conceptualized as a music composition tool. Sort of as a sketchpad for chord progressions. Each cell is a (triad) chord that will play when clicked by the user. The top row is a palette of chords arranged in a particular way. The bottom row is a memory of which chords have been played. This allows the user to play freely without worrying about remembering what they just did. The cells are carefully arranged to help the user make “good” musical choices (ie, with respect to western music theory) intuitively. The row is divided into colored blocks of cells, each one of which is the collection of chords from a particular key. The root chord is the lowest, rightmost cell. So the blocks at the ends are both the key of F#. Adjacent cells are those with similar (meaning shared notes) chords. This means that moving between nearby cells with produce pleasing (to western ears at least) progressions. The layout is loosely based on other chord progression maps such as that of Steve Mugglin and it can be fruitful to interact with it in a similar way. That is, start at the root chord, jump anywhere in a key, and then “walk” your way back to the root through adjacent cells.

One of the strongest benefits of the layout of the cells is that it makes smooth modulations aka key changes trivially simple. The concept of changing key in a chord progression is simple. For the most harmonious sounding results, you choose a “pivot” chord. The pivot should contain notes from both the initial key and the one that is being changed to. In Comb this takes no thought. The pivots are simply the cells that sit on the border. A user can change key smoothly by simply moving across the board through adjacent cells. The most similar keys are placed next to one another. It is also intuitive for the user who wants to break the rules, so to speak. If they want more discordant changes, then they can simply skip over cells, or even entire keys. The layout was no coincidence and took quite a bit of experimentation to arrive at. Comb is written entirely in P5.js.

future work

Comb is mostly still a prototype, and has gone unmaintained for some time. I think that it would benefit greatly from a rethink and rewrite. There are many features and directions that it could go in and there is a lot of experimentation to do. For example an editable layout, and editable chords. The second is particularly important, since most songwriters and composers use more than simple three note chords. Another important feature to experiment with is some kind of midi compatibility to control other instruments or at least to export progressions to music production software. It also needs improvements to the sound engine. It currently plays simple sine waves, and would benefit greatly with some per-note level controls and possibly synth features. Such improvements would need to strike a balance between the improved functionality and the original’s minimalism and ease-of-use.