MOS substitution: Difference between revisions
No edit summary Tags: Mobile edit Mobile web edit |
Tags: Mobile edit Mobile web edit |
||
| Line 53: | Line 53: | ||
<math>\displaystyle{ \mathsf{MOS\_subst}(a, b, c; \mathbf{y}, \mathbf{z}; k) := \mathsf{subst}\left( a\mathbf{w}(b + c)\mathbf{X}(0) , \mathbf{X}, b\mathbf{y}c\mathbf{z}(k) \right) }</math> | <math>\displaystyle{ \mathsf{MOS\_subst}(a, b, c; \mathbf{y}, \mathbf{z}; k) := \mathsf{subst}\left( a\mathbf{w}(b + c)\mathbf{X}(0) , \mathbf{X}, b\mathbf{y}c\mathbf{z}(k) \right) }</math> | ||
Here <math>\mathbf{z}</math> is the new step size inserted, <math>\mathbf{y}</math> is the step size in the starting MOS identified with <math>\mathbf{z}</math> by the template MOS, and <math>k</math> is the brightness of the mode of the filling MOS used (<math>k = 0</math> corresponds to the darkest mode; the conventional understanding of "brightness" makes sense as <math>\mathbf{L}</math> (resp. <math>\mathbf{m}</math>) > <math>\mathbf{s}</math>). | Here <math>\mathbf{z}</math> is the new step size inserted, <math>\mathbf{y}</math> is the step size in the starting MOS identified with <math>\mathbf{z}</math> by the template MOS, and <math>k</math> is the brightness of the mode of the filling MOS used (<math>k = 0</math> corresponds to the darkest mode; the conventional understanding of "brightness" makes sense as <math>\mathbf{L}</math> (resp. <math>\mathbf{m}</math>) > <math>\mathbf{s}</math>). | ||
Revision as of 00:22, 1 January 2026
MOS substitution is a procedure for obtaining a ternary (3 step sizes) scale from two MOS patterns. It consists of substituting the step pattern of one MOS pattern (called the filling MOS), scale step for scale step, for all occurrences of a chosen step size of another MOS pattern (called the template MOS). Unlike MV3 scales, a MOS substitution scale may have any combination of step sizes.
Aberrismic theory uses MOS substitution. In fact, groundfault reports having come up with a similar concept but not following up on it.
Convention
MOS substitution scales are denoted using the notation "subst ax(bycz)" or just "aX(bYcZ)". Any particular scale of a given MOS substitution type is said to be "a subst ax(bycz)" or "a scale of type ax(bycz)". A specific MOS substitution scale may be denoted template_MOS_with_slot_letter_X(filling_MOS); to make this notation unique for a particular given MOS-substitution scale, the brightest mode for the template MOS is conventionally used, treating the slot letter X as the smaller step.
| Simplified UDP for filling MOS | Filling MOS | Step pattern | Denoted as | |
|---|---|---|---|---|
| Template MOS: | LXLXX
| |||
| 2|0 | mss
|
LmLss
|
LXLXX(mss) | |
| 1|1 | sms
|
LsLms
|
LXLXX(sms) | |
| 0|2 | ssm
|
LsLsm
|
LXLXX(ssm) | |
Math notation
- For more information on the idiosyncratic math notation on this page, see User:Inthar/Notation.
- Boldface Latin variables are step sizes, and [math]\displaystyle{ \mathbf{L} > \mathbf{m} > \mathbf{s} > \mathbf{0}. }[/math] [math]\displaystyle{ \mathbf{0} }[/math] denotes the zero step (0 cents).
- Italic lowercase Latin variables are integers.
- Italic uppercase Latin variables are scale words.
- Function names in sans serif font are scale constructions.
- For integers [math]\displaystyle{ m, n, \ (m, n) := \gcd(m, n). }[/math]
- If w is a word (in a specific rotation) in X and possibly other letters, and u is a circular word in a specific modal rotation, then [math]\displaystyle{ \mathsf{subst}(w, \mathbf{X}, u) }[/math] denotes the word w but with the ith occurrence of X replaced with u[i] (for i ≥ 0).
- aXbY(k) denotes the mode of aXbY which would have simplified UDP notation [math]\displaystyle{ k|a+b-1-k }[/math] under the assumption X > Y > 0.
Formal definition
Suppose a, b, and c are positive integers. Suppose that the noncircular binary word t(x, X) is the brightest mode of the MOS scale word with step signature ax(b + c)X when treating x as larger than X, and that the noncircular binary word f(y, z) is one rotation of the MOS scale word with step signature bycz. Then the result of replacing the ith occurrence of X in t replaced with the ith letter of f for 0 ≤ i < |f|, treated as a circular word, is said to be a MOS substitution scale word with template MOS ax(b + c)X and filling MOS bycz, or in shorthand, a "subst ax(bycz)".
Original derivation
MOS substitution was developed by Inthar for the purpose of adding aberrisma steps in an orderly manner to a MOS pattern [math]\displaystyle{ a\mathbf{L}b\mathbf{m} }[/math] (which we write in place of [math]\displaystyle{ a\mathbf{L}b\mathbf{s} }[/math] for convenience's sake, since [math]\displaystyle{ \mathbf{s} }[/math] denotes the new aberrisma steps added to the MOS) in the context of groundfault's aberrismic theory. MOS substitution is intended to take advantage of extra potential symmetry when [math]\displaystyle{ a, c }[/math] or [math]\displaystyle{ b, c }[/math] is not a coprime pair and mildly generalize the congruence substitution procedure for building balanced words to obtain non-balanced but still more "even" scales with simple generator sequence expressions (in the sense of being binary, i.e. using only two distinct generators).
The idea is that modifying the input scales in a sufficiently controlled fashion from the nicest case of MOS template scales and MOS filling scales whose period divides the count of unknown letters in the template will result in a scale that retains some degree of elegance in its lattice structure. However, this condition is not necessary for MOS substitution to result in a binary generator sequence (with two distinct generators), though the generator sequence necessary to generate the scale will be longer.
In the original aberrismic-informed context, say that [math]\displaystyle{ d = (a, c) > 1. }[/math] Consider the MOS word [math]\displaystyle{ (a + c)\mathbf{X}b\mathbf{m} }[/math], which we call the template MOS. Since the "most even" arrangement (in the sense of distributional evenness) of [math]\displaystyle{ a }[/math]-many [math]\displaystyle{ \mathbf{L} }[/math] steps and [math]\displaystyle{ c }[/math]-many [math]\displaystyle{ \mathbf{s} }[/math] steps is the MOS [math]\displaystyle{ a\mathbf{L}b\mathbf{s} }[/math] (which will in general be a non-primitive MOS), this method prescribes following the latter MOS, called the filling MOS, to fill in the [math]\displaystyle{ \mathbf{X} }[/math] steps. Fixing a choice of which [math]\displaystyle{ \mathbf{X} }[/math] in the MOS [math]\displaystyle{ (a + c)\mathbf{X}b\mathbf{m} }[/math] you start from, we can choose one of [math]\displaystyle{ (a+c)/d }[/math] modes of [math]\displaystyle{ a \mathbf{L} c \mathbf{s}. }[/math] If [math]\displaystyle{ a = c }[/math], we obtain a balanced (thus MV3) ternary scale; when in addition [math]\displaystyle{ b }[/math] is odd, the scale is also SV3 and chiral, and we recover the two chiralities from the two modes of [math]\displaystyle{ a\mathbf{L}a\mathbf{s} }[/math]. Of course, one may do this using template MOS [math]\displaystyle{ a\mathbf{L}(b + c)\mathbf{X} }[/math] and the [math]\displaystyle{ (b, c) }[/math]-multiperiod filling MOS [math]\displaystyle{ b\mathbf{m} c\mathbf{s} }[/math] instead. This article denotes the resulting scale [math]\displaystyle{ \mathsf{MOS\_subst}(a, b, c; \mathbf{y}, \mathbf{z}; k): }[/math]
[math]\displaystyle{ \displaystyle{ \mathsf{MOS\_subst}(a, b, c; \mathbf{y}, \mathbf{z}; k) := \mathsf{subst}\left( a\mathbf{w}(b + c)\mathbf{X}(0) , \mathbf{X}, b\mathbf{y}c\mathbf{z}(k) \right) } }[/math]
Here [math]\displaystyle{ \mathbf{z} }[/math] is the new step size inserted, [math]\displaystyle{ \mathbf{y} }[/math] is the step size in the starting MOS identified with [math]\displaystyle{ \mathbf{z} }[/math] by the template MOS, and [math]\displaystyle{ k }[/math] is the brightness of the mode of the filling MOS used ([math]\displaystyle{ k = 0 }[/math] corresponds to the darkest mode; the conventional understanding of "brightness" makes sense as [math]\displaystyle{ \mathbf{L} }[/math] (resp. [math]\displaystyle{ \mathbf{m} }[/math]) > [math]\displaystyle{ \mathbf{s} }[/math]).
Examples
In the following tables, the interval class of the generators stacked in the generator sequence is such that the perfect generator has fewer [math]\displaystyle{ \mathbf{X} }[/math] steps than the imperfect counterpart.
5L2m4s
To derive groundfault's diaslen scale which has step pattern [math]\displaystyle{ 5\mathbf{L}2\mathbf{m}4\mathbf{s} }[/math] as [math]\displaystyle{ \mathsf{MOS\_subst}(5, 2, 4; \mathbf{m}, \mathbf{s}; k) }[/math], we exploit [math]\displaystyle{ (b, c) = 2 }[/math] and substitute [math]\displaystyle{ 2\mathbf{m}4\mathbf{s} }[/math] into the template MOS [math]\displaystyle{ 5\mathbf{L}6\mathbf{X} }[/math] ([math]\displaystyle{ \mathbf{LXLXLXLXLXX} }[/math]). Since [math]\displaystyle{ 2\mathbf{m}4\mathbf{s} }[/math] has three distinct modes ([math]\displaystyle{ \mathbf{ssmssm}, \mathbf{smssms}, \mathbf{mssmss} }[/math]) and [math]\displaystyle{ 5\mathbf{L}6\mathbf{X} }[/math] is primitive, we obtain three distinct scales, all of which admit length-3 generator sequences of 2-steps, representing all 3 possible rotations of [math]\displaystyle{ (\mathbf{L}+\mathbf{m}, \mathbf{L}+\mathbf{s}, \mathbf{L}+\mathbf{s}) }[/math] as displayed in the following table:
| [math]\displaystyle{ k }[/math] | Filling MOS | Simplified UDP for filling MOS | Step pattern | Generator sequence | MOS for [math]\displaystyle{ \mathbf{s} = \mathbf{0} }[/math] | ||
|---|---|---|---|---|---|---|---|
| Template MOS: | LXLXLXLXLXX
|
Interval class of gen.: | 2-steps | ||||
| 2 | mssmss |
2|0 | LmLsLsLmLss
|
GS(L + m, L + s, L + s) | yes | ||
| 1 | smssms |
1|1 | LsLmLsLsLms
|
GS(L + s, L + m, L + s) | yes | ||
| 0 | ssmssm |
0|2 | LsLsLmLsLsm
|
GS(L + s, L + s, L + m) | yes | ||
5L2m6s
| [math]\displaystyle{ k }[/math] | Filling MOS | Simplified UDP for filling MOS | Step pattern | Generator sequence | MOS for [math]\displaystyle{ \mathbf{s} = \mathbf{0} }[/math] | ||
|---|---|---|---|---|---|---|---|
| Template MOS: | LXLXXLXLXXLXX
|
Interval class of gen.: | 5-steps | ||||
| 3 | msss |
3|0 | LmLssLsLmsLss
|
GS((2L + m + 2s)3, 2L + 3s) | yes | ||
| 2 | smss |
2|1 | LsLmsLsLsmLss
|
GS((2L + m + 2s)2, 2L + 3s, 2L + m + 2s) | yes | ||
| 1 | ssms |
1|2 | LsLsmLsLssLms
|
GS(2L + m + 2s, 2L + 3s, (2L + m + 2s)2) | yes | ||
| 0 | sssm |
0|3 | LsLssLmLssLsm
|
GS(2L + 3s, (2L + m + 2s)3) | yes | ||
Here the notation Gk denotes repeating the generator G k times in the generator sequence.
These are four of the 8 billiard scales that have pattern 5L2m6s. The other four billiard words have length-3 subwords of non-X letters, unlike the MOS substitution scales.
This scale pattern is available in 37edo with step ratio 5:3:1; the generator sequence in the tuning has 2L + m + 2s = 486.5 (~4/3) and 2L + 3s = 421.6 (~14/11), and notably this tuning represents all primes from 3 to 13 with only 3 being inaccurate. 65edo's 9:7:1 is an optimum for 2.3.5.11, and is given by a GS using three 4/3's and one 5/4.
6L7m9s
| [math]\displaystyle{ k }[/math] | Filling MOS | Simplified UDP for filling MOS | Step pattern | Generator sequence | MOS for [math]\displaystyle{ \mathbf{s} = \mathbf{0} }[/math] | ||
|---|---|---|---|---|---|---|---|
| Template MOS: | mXXmXXmXXmXXmXXmXXmXXX
|
Interval class of gen.: | 3-steps | ||||
| 4 | LsLss |
4|0 | mLsmLsmsLmsLmssmLsmLss
|
GS(L + m + s, L + m + s, L + m + s, L + m + s, m + 2s) | yes | ||
| 3 | LssLs |
3|1 | mLsmsLmsLmssmLsmLsmsLs
|
GS(L + m + s, L + m + s, L + m + s, m + 2s, L + m + s) | yes | ||
| 2 | sLsLs |
2|2 | msLmsLmssmLsmLsmsLmsLs
|
GS(L + m + s, L + m + s, m + 2s, L + m + s, L + m + s) | yes | ||
| 1 | sLssL |
1|3 | msLmssmLsmLsmsLmsLmssL
|
GS(L + m + s, m + 2s, L + m + s, L + m + s, L + m + s) | yes | ||
| 0 | ssLsL |
0|4 | mssmLsmLsmsLmsLmssmLsL
|
GS(m + 2s, L + m + s, L + m + s, L + m + s, L + m + s) | no | ||
Mathematical facts
A ternary scale whose L = m and s = 0 temperings are MOS comes from MOS substitution
If a ternary scale with step signature aLbmcs satisfies:
- the result of identifying L steps with m steps is a MOS;
- the result of deleting all s steps is a MOS,
then it is a MOS substitution scale, namely subst((a + b)Xcs(i), X, aLbm(j)) for some brightnesses i and j.
In particular, all monotone-MOS scales (i.e. such that the results of L = m, m = s, and s = 0 temperings are MOSes) arise from MOS substitution in this way.
If the template MOS is primitive, MOS substitution yields binary well-formed generator sequences
The following holds for [math]\displaystyle{ S = \mathsf{MOS\_subst}(a, b, c; \mathbf{L}, \mathbf{s}; k) }[/math] (and after switching [math]\displaystyle{ \mathbf{L} }[/math] with [math]\displaystyle{ \mathbf{m} }[/math] and [math]\displaystyle{ a }[/math] with [math]\displaystyle{ b, }[/math] for [math]\displaystyle{ \mathsf{MOS\_subst}(a, b, c; \mathbf{m}, \mathbf{s}; k) }[/math] as well):
Consider the mode of the template MOS [math]\displaystyle{ T = T(\mathbf{m},\mathbf{X}) = (a+c)\mathbf{X}b\mathbf{m}(0). }[/math] This is the mode of [math]\displaystyle{ T }[/math] that has the most [math]\displaystyle{ \mathbf{X} }[/math] steps near the end. If [math]\displaystyle{ T }[/math] is primitive, let [math]\displaystyle{ r }[/math] be the count of [math]\displaystyle{ \mathbf{X} }[/math] steps in a chosen (reduced) generator of [math]\displaystyle{ T. }[/math] Since [math]\displaystyle{ r }[/math] must be coprime to [math]\displaystyle{ a+c, }[/math] [math]\displaystyle{ r }[/math]-steps in the filling MOS [math]\displaystyle{ F = a\mathbf{L}c\mathbf{s}(k) }[/math] come in exactly 2 sizes, [math]\displaystyle{ i\mathbf{L}+j\mathbf{s} }[/math] and [math]\displaystyle{ (i-1)\mathbf{L}+(j+1)\mathbf{s}. }[/math] Since the detempering of the imperfect generator of [math]\displaystyle{ T }[/math] occurs only once in [math]\displaystyle{ S }[/math], [math]\displaystyle{ S }[/math] admits a particularly elegant well-formed binary (using two distinct generators) generator sequence of length [math]\displaystyle{ q = \frac{a+c}{\gcd(a,c)}, }[/math] the period of the filling MOS. The generator sequence corresponds to the circle of [math]\displaystyle{ r }[/math]-steps in the filling MOS. Letting [math]\displaystyle{ \mathsf{GS}(g_1, ..., g_{q}) }[/math] be this generator sequence, [math]\displaystyle{ g_j }[/math] is either [math]\displaystyle{ p\mathbf{m} + i\mathbf{L} + j\mathbf{s} }[/math] or [math]\displaystyle{ p\mathbf{m} + (i-1)\mathbf{L} + (j+1)\mathbf{s}, }[/math] according as the [math]\displaystyle{ j }[/math]-th [math]\displaystyle{ r }[/math]-step in the sequence of stacked [math]\displaystyle{ r }[/math]-steps on the chosen mode of [math]\displaystyle{ F }[/math] is [math]\displaystyle{ i\mathbf{L} + j\mathbf{s} }[/math] or [math]\displaystyle{ (i-1)\mathbf{L} + (j+1)\mathbf{s}. }[/math] (We could have chosen to use the mode of [math]\displaystyle{ T }[/math] on the other extreme of its generator arc instead, which corresponds to taking the circle of [math]\displaystyle{ (a+c - r) }[/math]-steps in [math]\displaystyle{ F }[/math] and is thus also valid.) The generator of the template MOS serves as the "guide generator" for this generator sequence.
If the template is a primitive MOS, and for some perfect generators [math]\displaystyle{ p_T, p_F, \ r := \left|p_T\right|_\mathbf{X} = \left|p_F\right|, }[/math] then MOS substitution yields a parallelogram substring in the lattice
With the additional assumption that the number of X letters in a perfect generator pT of the template MOS be a generator class of the filling MOS, the generator sequence yields q parallel chains C1, ..., Cq of the aggregate generator, the sum of the generators in the GS. The offset between Ci and Ci+1 is equal to subst(pT, X, pF), where pT and pF are perfect generators (of appropriate lengths) of the template and filling MOSes, respectively. The aggregate generator is subst((pT)q, X, Gr), where G is the period of the filling MOS.
Hence in the GS,
- the perfect generator of the filling MOS corresponds to advancing from Ci to Ci+1;
- the imperfect generator of the filling MOS corresponds to looping back to C1 but on the next note of C1, so it and the q − 1 notes thereafter are advanced by 1 note from any predecessor notes in the chains.
Hence these particular MOS substitution scales satisfy a property that we call parallelogram substring. An e-equivalent scale is a parallelogram substring if there exist integers m > 0, n > 0, 0 ≤ a < n, 0 ≤ b < n, a vector a, and two linearly independent vectors v and w such that the set of notes in the scale as a subset of the lattice of e-equivalent pitches is
[math]\displaystyle{ \{\mathbf{a} + i\mathbf{v}\}_{i=a}^{n-1} \cup \{\mathbf{a} + i\mathbf{v} + j\mathbf{w}\}_{(i,j) \in [n]_0 \times [m-2]_1} \cup \{\mathbf{a} + i\mathbf{v} + (m-1)\mathbf{w}\}_{i=0}^{b}. % prefix of last row }[/math]
Here the scale is thought as traversing a series of rows one step of the row at a time, and
- [math]\displaystyle{ \{\mathbf{a} + i\mathbf{v}\}_{i=a}^{n-1} }[/math] is a (nonempty) suffix of the first row
- [math]\displaystyle{ \{\mathbf{a} + i\mathbf{v} + j\mathbf{w}\}_{(i,j) \in [n]_0 \times [m-2]_1} }[/math] is a (possibly empty) parallelogram where rows are traversed fully
- [math]\displaystyle{ \{\mathbf{a} + i\mathbf{v} + (m-1)\mathbf{w}\}_{i=0}^{b} }[/math] is a (nonempty) prefix of the last row
- v and w are the generator and offset
In the above case, n = q, v = subst(pT, X, pF), and w = subst((pT)q, X, Gr) (the aggregate generator).
The converse is false, as the scale in 5 letters [9/8 28/27 9/8 64/63 9/8 28/27 243/224 28/27 64/63 567/512 64/63] is a parallelogram substring.
MOS substitution scales have block balance at most 2
Consider a MOS substitution scale aX (bY cZ). It is obvious that X has block balance 1, since we can replace the MOS substitution scale with the MOS scale aX (b + c)W to make this argument. Y and Z have block balance at most 2, since we can consider windows of the MOS scale of size k or k + 1, and the number of times Y (and also Z) differs by at most 2. This is proved below for Y, but it's exactly the same argument for Z:
Case 1: One of k and k + 1 equals (b + c) and Y occurs exactly b times or b plus or minus 1 in this case.
Case 2: Neither of k and k + 1 equals (b + c). Here, if Y occurs j or j + 1 times in a window of size k, then Y occurs j + 1 or j + 2 times in a window of size k + 2.
MOS substitution scales and RTT
Given a ternary scale with step signature aLbmcs with gcd(a, b, c) = 1 and a JI subgroup, there exist linearly independent (possibly non-patent) vals a, a + b, and a + b + c that interpret the scale. Assuming the join is not contorted, a rank-3 temperament can now be defined as the join of these three vals.
Pseudocode
def letterwise_subst(template_word, slot_letter, filling_word):
result = ""
i = 0
for letter in template_word:
if letter == slot_letter:
result += filling_word[i]
i += 1
else:
result += letter
return result
# In UDP, brightness = number of generators up * gcd of the step counts
# Function returns subst nX X (nY Y nZ Z (brightness_of_filling_mos) | (nY + nZ - gcd(nY, nZ) - brightness_of_filling_mos))
def mos_subst(nX, nY, nZ, sizeX, sizeY, sizeZ, brightness_of_filling_mos):
template_mos = mos_word(nX, nY + nZ, "X", "W", brightness=nX + nY + nZ - gcd(nX, nY + nZ)) # MOS word with nX X's and nY + nZ W's; X is treated as L and W as s for purposes of brightness
filling_mos = mos_word(nY, nZ, "Y", "Z", brightness=brightness_of_filling_mos)
word = letterwise_subst(template_mos, "W", filling_mos)
scale = subst_step_sizes(word, {"X": sizeX, "Y": sizeY, "Z": sizeZ})
return scale