Scale Degree Progress

For this summer’s Google Summer of Code (GSoC), we are making good progress toward refining a collection of tools for scales and modes.

Painting Notes onto an Alto Clef via a paint program that utilizes "n^th modal pitch"
Painting Notes onto an Alto Clef via a paint program that utilizes “n^th modal pitch”

The toolbox is expanding to include new grids, like the alto clef pictured above, “n^th modal pitch” which handles the degrees of a scale in a purely mathematical way with an index of zero (i.e. 0 is the first pitch of any given mode; 1 is the second; -1 is the pitch before 0 in the octave before). This allows for easy mathematical mapping, especially when working with modes of various lengths.

Music Blocks code for the above paint program. The new “n^th modal pitch” block, new “display grid” block, and new debugger tools (e.g. solfege syllable) make this program possible.
Click HERE for a similar project on the planet.

Next Steps: True Scale Degree and Movable Solfege

The Music Blocks team has many improvements planned for the summer. Next on the agenda is a “true scale degree” which is in some ways similar to “n^th modal pitch” but stays within the conventions of tonal music. For example: with `n^th modal pitch` “0” is the first position in the scale, but for `scale degree` “1” is the first position in the scale; for `n^th modal pitch` the number for the octave depends on how many pitches are contained in any given mode, but for `scale degree` the octave always changes from `7` to `1` (and back); and for `n^th modal pitch` no qualifiers such as sharp/flat/natural are necessary, but for `scale degree` qualifiers are an important way to express the function of the pitch within the specified mode.

(I am sure this is a lot to take in, so I encourage you to try the two different systems to compare. Studies musicians should be able to quickly grasp the meaning and purpose of “scale degree” although they may be unfamiliar with the concept of “n^th modal pitch”. Both are powerful ways to build with Music Blocks.)

Why did the design for Scale Degree take so long?

(You may have not been wondering, but I am going to tell you because it is interesting)

The design challenge that presented itself with Scale Degree (as well as with Movable Solfege) is that the user may specify modes that have a cardinality (i.e. number of pitches) greater or less than seven. Also, sometimes a user may specify a mode that has a cardinality of seven pitches, but those pitches may be clustered together creating an unbalanced geometry to the mode.

An example to illustrate the latter: A user may specify a mode (i.e. a set of pitches) of `0,1,2,4, and 7` (this is endearingly called “Fibonacci Scale” in Music Blocks). This mode has five pitches, so on the surface it seems to be a five note (i.e. pentatonic) scale. However, 0, 1, and 2 (C, C#/Db, and D if 0 is set to C) are clustered together. Typically for pitches that are clustered together, some of them are not structural but behave more like “color tones” (e.g. chromatic passing tone, upper/lower neighbor, etc.). So given this, how do we know which notes are structural? And, further, how do we arbitrate pitches if the user writes code in a seven note system but places a `set key` block at the top of their code to try their creation in a five note system?

After much struggling with this design issue, I came up with the following compromises:

  1. Allow two systems of spelling for scale degree. One system assumes that the user is being literal with respect to “all naturals” (i.e. C Major) and one that intervenes with more active operations.
  2. For the second system mentioned above, use a scale’s “letter class” framework to arbitrate a pitch’s structural function within a given pitch class set (i.e. mode).

A user may be writing code, for example, with “scale degree” blocks that is in Lydian which has a sharp four. Every time they get to the fourth scale degree, they explicitly state “4#”. This user will not want any intervention if they decide they want to place another set key block into the code. This user will want the first system mentioned in #1 above. To trigger this system, we require that the user use both the set key block and the movable=do block.

Another user may be writing code in C major (or another key), but then decide that they want to try the sound as “Lydian”. That user may put a “set key” block in their code to try and force the sound of their melody to Lydian. Music Blocks must be able to see a scale degree of “4” and make it sharp to fit the Lydian geometry. This behaviour is the default behavior as it fits well within musical conventions (especially for all the common seven note modes).

As for arbitration (and how to fit a triangle shape block into a pentagon shaped hole)…

In order to have a simple, yet robust and musically meaningful formula I utilized letter class (LC). I found a chart from my college theory professor, Dr. Hermann, which had a letter class (A, B, C, D, E, F, and G) displayed in a circle. This is a very simple idea, and probably just as easily overlooked. However, as I struggled over how to arbitrate pitches into modes of various lengths, one thing occurred to me: the placements of the seven letter classes (LC’s) are in placements of structural importance. Further, I realized that the unique pitch classes (PC’s) assigned to each LC can be reliably paired (other than the LC that is the first note of the scale — that pitch should remain by itself).

Let’s say you start from C, we can have C=0 (and only 0). D could either be 1 or 2 — a minor or major 2nd; E could be 3 or 4 — a minor or major 3rd; F could be 5 or 6 — a perfect or augmented 4th; G could be 6 or 7 — a diminished or perfect 5th; A could be 8 or 9 — a minor or major 6th; and B could be 10 or 11 — a minor or major 7th. Note that the tritone, 6, can either be a 4th or a 5th. The tritone is unstable and tends to want to move up (as an augmented 4th) or move down (as a diminished 5th).

What we decided to do with the aforementioned observation is to create a preference to arbitrate any LC placements which are unaccounted. For the common modes (e.g. dorian, mixolyidan, lydian, etc) this is not an issue as they all have 7 PC’s and 7 LC’s. However, if the user specifies a pentatonic scale, the preference is needed to choose a pitch for the LC’s that is missing. Our rule for preference is that major intervals and perfect intervals gain preference when the LC’s corresponding minor interval or diminished/augmented interval is not present (or when both are present).

This arbitration rule gives us a robust system with a musically relevant framework. Further, if a user decides that our system of arbitration does not suit their purposes, they may override it by specifying any unaccounted LC’s or PC’s via the custom mode widget.

All of this functionality “under the hood” gives the user many options as they explore scales. They can quickly map pitches into a new mode (a kind of “advanced transposition”) even when working across modes of various lengths and tonal geometries. Further, this work for scale degree will be completely congruent with movable solfege (for both “movable do” and “do minor”) by the end of the summer. This will allow musicians learned in any of the common conventions the tools of expression they need to get coding quickly.