Offtonic MOS Spectrum Visualizer

This is the Offtonic MOS Spectrum Visualizer. It displays the MOS scales that exist with varying generators. If you click on the graph, a keyboard will show up below the visualizer and you'll zoom in vertically; after a few zooms, another click will reset the zoom back to the full octave. Be aware that it does take a second or two to load each time you change the zoom.

The what? What does all this mean?

Ah. OK. So, MOS means "moment of symmetry", and when this term is used with scales, it refers to scales that repeat on a period where every interval type other than the period comes in exactly two flavors. These MOS scales have the further restriction that they're generated by a generator, which is an interval that gets repeated over and over.

I still don't understand.

Let me show you an example, then. Let's assume that the period is an octave — meaning that the scale repeats at the octave, like the usual scales we all know — and the generator is a perfect fifth. Say you start on C. If you go up four fifths, you'll start at C and get to G, then D, then A, then E, for a total of 5 notes, C D E G A. There only two step sizes: C to D, D to E, and G to A are major seconds, and E to G and A to C are minor thirds. There are only two types of intervals made by going two steps: C to E is a major third, and D to G, E to A, G to C, and A to D are perfect fourths. There are only two types of interval made by going three steps, but they're just the inverses of two steps; similarly, the four-step intervals are the inverses of the one-step intervals. Since each class of interval only comes in two sizes, this is an MOS scale. It has n = 5 notes, and we can classify it in terms of its step sizes: C to D, D to E, and G to A are the smaller step, of which there are 3, and E to G and A to C are the larger step, of which there are 2, so we call this scale 2L3s. If we're using the Pythagorean perfect fifth, the generator is g ≈ 701.955¢.

If we add one more note, the B, we now have three step sizes: C to D is a major second, E to G is a minor third, and B to C is a minor second. That's not an MOS. But if we add one further note, the F#, then we have a new MOS scale: C D E F# G A B, where C to D, D to E, E to F#, G to A, and A to B are major seconds, and F# to G and B to C are minor seconds. This scale is 5L2s and it's the familiar diatonic scale (we're starting on C to generate it, but this doesn't mean that C is a tonic of any sort; the scale is an MOS regardless of what note, if any, serves as a tonic). Add one more note, the C#, and now it's no longer a MOS, because C to C# is an augmented unison, C# to D is a minor second, and D to E is a major second. But if we add a few more to get to twelve, we have C C# D D# E E# F# G G# A A# B, our familiar chromatic scale with all sharps (using E# because we started counting from C; we could easily have started at F instead, or Bb or whatever).

How do you classify that scale? It has 5 augmented unisons and 7 minor seconds, so is it 7L5s?

In 12-tone equal temperament, we don't know, so we might as well just call it 12-equal. But if we're using a generator a bit off from 700¢, this changes things a lot. A bit above 700¢ and the augmented unison is larger than the minor second, so it's 5L7s, but a bit below and it's the other way around, so 7L5s. If we keep going and adding notes, on the side larger than 700¢ we'll get to n = 17 as the next MOS size, while on the side smaller than 700¢ we'll get to n = 19 instead. The Offtonic MOS Spectrum Visualizer is intended to show you which generator ranges give you which MOS scales. Hover over a spot on the graph to see the details of the MOS scale at that spot.

What's up with the horizontal axis and the colors?

Reading the graph is simple. You have generator sizes on the vertical axis and MOS sizes on the horizontal axis. The way it makes the most sense to think about it, to me, is that you start at the left edge with some generator, and then you add a note to the scale. If it forms a MOS, you color it with the color of the MOS (as I'll explain in a second); if it doesn't, you use the color of the previous MOS and move one step to the right.

As for the colors, it's a bit less simple, but still understandable (I hope). The hue is determined by n, the size of the MOS. A 2-note MOS is red, for example, as you can see at the far left edge (the MOS scales start at n = 2 because n = 1 is just the octave, with no generators involved). Further colors are obtained by just going around the color wheel a golden ratio number of times, which, since the golden ratio is irrational and kind of weirdly-sized, will always yield a unique color that isn't too close to the colors directly around it. The color is darker if there are more L steps and lighter if there are more s steps. The color is grayer if the L/s size ratio is closer to 1, meaning that the L and s steps are close to equal. Whenever you see a gray stripe, then, that represents an equal temperament.

How are the notes of the keyboard organized?

Kind of... not obviously. We start with C, the starting note, in the bottom row in white, and we add generators both forward from C and backwards from C until we get an MOS. All the notes added to get to a particular MOS are colored with that MOS's hue. If that MOS is proper, which here means that two of the small step size are bigger than the large step size, any new notes added go on the next tier. The keyboard shortcuts are such that, on a standard American QWERTY keyboard, the [ key is C, and if you go up the top row to the left then up the number row, you go down in generators, while if you go down the top row to the right then the home row then the bottom row, you go up in generators. If your generator is interpreted as a fifth, [ is C, ] is G, \ is D, a is A, s is E, d is B, f is F#, g is C#, h is G#, etc., and going the other way, p is F, o is Bb, i is Eb, u is Ab, etc. (If you play the u and h keys at the same time, you'll hear your tuning's Pythagorean comma.)

Now, MOS scales don't need to have a period of an octave. I'm assuming that here for the sake of simplicity, but you really don't need that assumption. In that case, just treat the cent values as 1/1200 of a period.

Also, note that from time to time there may be graph artifacts when a pixel lands exactly (within the code's precision) on a rational fraction (with small denominator) of an octave like 600.00000¢ = 1/2 octave. Any rational fraction of the octave will yield only equal-tempered MOS scales eventually, but a generator just slightly off from that will have new MOS scales with larger and larger n, so if that fraction is rendered in the visualizer, it'll appear as a horizontal line in a different color from the things around it. I tried to minimize the impact but sometimes it still creeps up, so ignore it.