Skip to main content

Distance coloring scheme: what distance does it measure?


The colorings of Synfire palettes offer a nice guidance to compose harmonic progressions. 


Any chance to get some more information on the dynamic Distance coloring scheme. The manual is not very specific about it. For example, could you perhaps share what kind of geometric model is implemented for this scheme? 


Sat, 2020-12-12 - 12:27 Permalink

Had to look up the source code where it is flagged as experimental. 

It is based on the relationship between harmonic functions, i.e. only the fundamental triad is involved (chord extensions not considered). Some distance is calculated from that, but I'd say it is not a very expressive metric. It probably shouldn't have made it into the final release. As you bring it up, we might eventually drop it altogether.

For a better alternative, try Relationship: "Colors reflect functional proximity to the current chord. Distance is measured in terms of harmonic function terms (i.e. t -> tP is closer than t -> DD)"


Sat, 2020-12-12 - 15:54 Permalink

Thanks a lot for your helpful response. This clears matters up for me.

I am actually presently using non-standard scales and relatively complex chords, and so anything that is based on triad relations or functional harmony is not really useful for my current purposes. 

I am looking for ways to shape harmonic progressions outside of traditional tonal harmony. I first thought that Distance coloring might refer to something like the voice leading distance, which is useful also beyond tonal music. In case this is interesting/relevant for you, I could even share algorithmic details on how this could be implemented (I added that notion to other algorithmic composition systems before).

Anyway, thanks again!

Sat, 2020-12-12 - 16:26 Permalink

By the way, here are some thoughts on how the Schoenbergian harmonic progression directions can be modelled directly with the Synfire Subsets coloring. Schoneberg's directions are discussed in detail in the 1911 Harmony textbook; and a short summary is provided in the early pages of his later book Structural Functions of Harmony, p. 6ff (see Schoenberg stated this directions originally for triads, but they can be generalised and musically work relatively well for arbitary tonal chords.

OK, here are some details on how these notions can currently be used in Synfire (I dare to assume you know the Schoenbergian terms from the literature cited above). In Synfire, enable only the Subsets coloring. The following explanation uses this coloring and additionally the notion whether the root of a following chord is already contained in the previous chord. In Synfire, the chord tones of the current chord are highlighted in the horizontal scales, and the root of a chord is the scale tone over which the column to which this chord belows is build.

Ascending/strong progression

 Progression to a highlighted subset chord (i.e. a chord with shared tones, what Schoenberg calls a harmonic band), but where the chord root of the following chord is not contained in the current chord. Schoenberg recommends to use mainly these progressions. 

Descending progression

 Progression to a subset chord (i.e. a chord with a harmonic band), but where the root is also already part of the current chord. Schoenberg cautions not to use this kind of progression much (and in his Harmony provides some exception where it might be useful in a kind of "passing chord" context).

Superstrong progression

 Progression to a chord that does not have any commont tones and is just not highlighted at all with the Subset coloring (white by default when only using the Subsets coloring).  When using chords with many tones, there may be no white chord at all available (at least no chord belonging only to the main horizontal scale). Schoenberg recommends using these progressions rarely for particularly strong effect (e.g., in a deceptive cadence or Trugschluss).

In case you are interested in formal details, the following two papers formalise the above notions as rules (and show some more examples) for algorithmic composition systems. Anyway, with Synfire this can be explored interactively, no formalisation needed. :) 

A computational model that generalises Schoenberg's guidelines for favourable chord progressions

On Modelling Harmony with Constraint Programming for Algorithmic Composition Including a Model of Schoenberg's Theory of Harmony