Mathematics of MOS: Difference between revisions
ArrowHead294 (talk | contribs) m De-escape as <nowiki/> works |
|||
| Line 5: | Line 5: | ||
A MOS scale consists of: | A MOS scale consists of: | ||
# A period ''P'' (of any size but most commonly the octave or a 1/N fraction of an octave) | # A period ''P'' (of any size but most commonly the octave or a 1/''N'' fraction of an octave) | ||
# A generator ''g'' (of any size, for example 700{{cent}} in 12edo) which is added repeatedly to make a chain of scale steps, starting from the unison or 0{{cent}} scale step, and then reducing to within the period | # A generator ''g'' (of any size, for example 700{{cent}} in 12edo) which is added repeatedly to make a chain of scale steps, starting from the unison or 0{{cent}} scale step, and then reducing to within the period | ||
# No more than two sizes of scale steps (Large and small, often written "L" and "s") | # No more than two sizes of scale steps (Large and small, often written "L" and "s") | ||
| Line 11: | Line 11: | ||
# The unison or starting point of the scale is then allowed to be transferred to any scale degree—all the modes of an MOS are legal. | # The unison or starting point of the scale is then allowed to be transferred to any scale degree—all the modes of an MOS are legal. | ||
Condition 4 is {{w|Myhill's property}}, where, as a [[periodic scale]], the scale has every generic interval aside from the initial unison interval and intervals some number of periods from it having exactly two specific intervals. Another characterization of when a generated scale is a MOS is that the number of scale steps is the denominator of a {{w| | Condition 4 is {{w|Myhill's property}}, where, as a [[periodic scale]], the scale has every generic interval aside from the initial unison interval and intervals some number of periods from it having exactly two specific intervals. Another characterization of when a generated scale is a MOS is that the number of scale steps is the denominator of a convergent or semiconvergent to the {{w|continued fraction}} of ''g''/''P'', the ratio of the generator to the period. | ||
These conditions entail that the generated scale has exactly two sizes of steps when sorted into ascending order of size, and usually that latter condition suffices to define a MOS. However, when the generator is a rational fraction of the period and the number of steps is more than half of the total possible, a generated scale can have only two sizes of steps and fail to be a MOS, meaning that not all non-unison classes have only two specific intervals. | These conditions entail that the generated scale has exactly two sizes of steps when sorted into ascending order of size, and usually that latter condition suffices to define a MOS. However, when the generator is a rational fraction of the period and the number of steps is more than half of the total possible, a generated scale can have only two sizes of steps and fail to be a MOS, meaning that not all non-unison classes have only two specific intervals. | ||
| Line 89: | Line 89: | ||
Note that some procedures below depend on others. Special procedure names (i.e. not built into Maple) are shown in <code>'''bold type'''</code>. | Note that some procedures below depend on others. Special procedure names (i.e. not built into Maple) are shown in <code>'''bold type'''</code>. | ||
<pre<includeonly />> | <pre<includeonly/>> | ||
'''log2''' := proc(x) | '''log2''' := proc(x) | ||
<nowiki /># logarithm base 2 | <nowiki/># logarithm base 2 | ||
evalf(ln(x)/ln(2)) end: | evalf(ln(x)/ln(2)) end: | ||
'''nextfarey''' := proc(q, n) | '''nextfarey''' := proc(q, n) | ||
<nowiki /># next in row n of Farey sequence from q, 0 <= q <= 1 | <nowiki/># next in row n of Farey sequence from q, 0 <= q <= 1 | ||
local a, b, r, s; | local a, b, r, s; | ||
if q >= (n-1)/n then RETURN(1) fi; | if q >= (n-1)/n then RETURN(1) fi; | ||
| Line 105: | Line 105: | ||
'''prevfarey''' := proc(q, n) | '''prevfarey''' := proc(q, n) | ||
<nowiki /># previous in row n of Farey sequence from q, 0 <= q <= 1 | <nowiki/># previous in row n of Farey sequence from q, 0 <= q <= 1 | ||
local a, b, r, s; | local a, b, r, s; | ||
if q=0 then RETURN(0) fi; | if q=0 then RETURN(0) fi; | ||
| Line 116: | Line 116: | ||
'''fareypair''' := proc(q) | '''fareypair''' := proc(q) | ||
<nowiki /># Farey pair with q as its mediant | <nowiki/># Farey pair with q as its mediant | ||
local n; | local n; | ||
n := denom(q); | n := denom(q); | ||
| Line 122: | Line 122: | ||
'''mediant''' := proc(u, v) | '''mediant''' := proc(u, v) | ||
<nowiki /># mediant of two rational numbers u and v | <nowiki/># mediant of two rational numbers u and v | ||
(numer(u) + numer(v))/(denom(u) + denom(v)) end: | (numer(u) + numer(v))/(denom(u) + denom(v)) end: | ||
'''convergents''' := proc(z) | '''convergents''' := proc(z) | ||
<nowiki /># convergent list for z | <nowiki/># convergent list for z | ||
local q; | local q; | ||
convert(z,confrac,'q'); | convert(z,confrac,'q'); | ||
| Line 132: | Line 132: | ||
'''exlist''' := proc(l) | '''exlist''' := proc(l) | ||
<nowiki /># expansion of a convergent list to semiconvergents | <nowiki/># expansion of a convergent list to semiconvergents | ||
local i, j, s, d; | local i, j, s, d; | ||
if nops(l)<3 then RETURN(l) fi; | if nops(l)<3 then RETURN(l) fi; | ||
| Line 146: | Line 146: | ||
'''semiconvergents''' := proc(z) | '''semiconvergents''' := proc(z) | ||
<nowiki /># semiconvergent list for z | <nowiki/># semiconvergent list for z | ||
'''exlist'''('''convergents'''(z)) end: | '''exlist'''('''convergents'''(z)) end: | ||
'''penult''' := proc(q) | '''penult''' := proc(q) | ||
<nowiki /># penultimate convergent to q | <nowiki/># penultimate convergent to q | ||
local i, u; | local i, u; | ||
u := '''convergents'''(q); | u := '''convergents'''(q); | ||
| Line 159: | Line 159: | ||
'''Ls''' := proc(q) | '''Ls''' := proc(q) | ||
<nowiki /># large-small steps from mediant q | <nowiki/># large-small steps from mediant q | ||
local u; | local u; | ||
u := '''fareypair'''(q); | u := '''fareypair'''(q); | ||
| Line 165: | Line 165: | ||
'''medi''' := proc(u) | '''medi''' := proc(u) | ||
<nowiki /># mediant from Large-small steps | <nowiki/># mediant from Large-small steps | ||
local q, r; | local q, r; | ||
if u[2]=1 then RETURN(1/(u[1]+1)) fi; | if u[2]=1 then RETURN(1/(u[1]+1)) fi; | ||
| Line 175: | Line 175: | ||
'''Lsgen''' := proc(g, n) | '''Lsgen''' := proc(g, n) | ||
<nowiki /># given generator g and scale size n determines large-small steps | <nowiki/># given generator g and scale size n determines large-small steps | ||
local q, u, w; | local q, u, w; | ||
q := round(n*g)/n; | q := round(n*g)/n; | ||
| Line 185: | Line 185: | ||
'''revlist''' := proc(l) | '''revlist''' := proc(l) | ||
<nowiki /># reverse of list | <nowiki/># reverse of list | ||
local i, v, e; | local i, v, e; | ||
e := nops(l); | e := nops(l); | ||
| Line 193: | Line 193: | ||
'''invcon''' := proc(l) | '''invcon''' := proc(l) | ||
<nowiki /># inverse continued fraction | <nowiki/># inverse continued fraction | ||
local d, i, h, k; | local d, i, h, k; | ||
h[-2] := 0; | h[-2] := 0; | ||
| Line 206: | Line 206: | ||
'''quest''' := proc(x) | '''quest''' := proc(x) | ||
<nowiki /># Minkowski ? function | <nowiki/># Minkowski ? function | ||
local i, j, d, l, s, t; | local i, j, d, l, s, t; | ||
l := convert(x, confrac); | l := convert(x, confrac); | ||
| Line 220: | Line 220: | ||
'''Box''' := proc(x) | '''Box''' := proc(x) | ||
<nowiki /># inverse ? function | <nowiki/># inverse ? function | ||
local d, e, i, n, w, y; | local d, e, i, n, w, y; | ||
if type(x, integer) then RETURN(x) fi; | if type(x, integer) then RETURN(x) fi; | ||
| Line 255: | Line 255: | ||
See [[Recursive structure of MOS scales#Proofs]]. | See [[Recursive structure of MOS scales#Proofs]]. | ||
=== MOS scales ''aL'' ''bs'' with gcd(a,& | === MOS scales ''aL'' ''bs'' with {{nowrap|gcd(a, b) > 1}} reduce to single-period MOS scales on a smaller period === | ||
Assume that {{nowrap|gcd(''m'', ''n'') > 1}} and assume that ({{frac|''n''|''d''}})-steps came in 2 sizes, {{nowrap|''pa'' + ''qb''}} and {{nowrap|''ra'' + ''sb''}}. Then at least one size, say {{nowrap|''pa'' + ''qb''}}, must differ from {{nowrap|{{frac|''a''|''d''}} L + {{frac|''b''|''d''}} s}}. WLOG {{nowrap|''p'' > {{frac|''a''|''d''}}}} and {{nowrap|''pa'' + ''qb''}} occurs on degree 0. Since the equave is equal to {{nowrap|''aL'' + ''bs''}}, on a degree ''k''({{frac|''n''|''d''}}) for some integer {{nowrap|''k'' > 0}}, there must be another ({{frac|''n''|''d''}})-step with fewer L's than {{frac|''a''|''d''}}. This involves more than two changes from ''L'' to ''s''. Scooting an ({{frac|''n''|''d''}})-step one step at a time from degree 0 to ''k''({{frac|''n''|''d''}}) changes its size one step size substitution at a time, showing that intermediate ({{frac|''n''|''d''}})-steps also exist. This violates the MOS property, whence ({{frac|''n''|''d''}})-steps have only one size, which must be the period. | Assume that {{nowrap|gcd(''m'', ''n'') > 1}} and assume that ({{frac|''n''|''d''}})-steps came in 2 sizes, {{nowrap|''pa'' + ''qb''}} and {{nowrap|''ra'' + ''sb''}}. Then at least one size, say {{nowrap|''pa'' + ''qb''}}, must differ from {{nowrap|{{frac|''a''|''d''}} L + {{frac|''b''|''d''}} s}}. WLOG {{nowrap|''p'' > {{frac|''a''|''d''}}}} and {{nowrap|''pa'' + ''qb''}} occurs on degree 0. Since the equave is equal to {{nowrap|''aL'' + ''bs''}}, on a degree ''k''({{frac|''n''|''d''}}) for some integer {{nowrap|''k'' > 0}}, there must be another ({{frac|''n''|''d''}})-step with fewer L's than {{frac|''a''|''d''}}. This involves more than two changes from ''L'' to ''s''. Scooting an ({{frac|''n''|''d''}})-step one step at a time from degree 0 to ''k''({{frac|''n''|''d''}}) changes its size one step size substitution at a time, showing that intermediate ({{frac|''n''|''d''}})-steps also exist. This violates the MOS property, whence ({{frac|''n''|''d''}})-steps have only one size, which must be the period. | ||
| Line 276: | Line 276: | ||
Suppose that such a scale ''S'' (with {{nowrap|''n'' ≥ 2}} notes) has ''a'' L steps and ''b'' s steps per period ''p'', and has generator ''g''. Since ''S'' is generated, the interval sizes modulo ''p'' that occur in ''S'' are: | Suppose that such a scale ''S'' (with {{nowrap|''n'' ≥ 2}} notes) has ''a'' L steps and ''b'' s steps per period ''p'', and has generator ''g''. Since ''S'' is generated, the interval sizes modulo ''p'' that occur in ''S'' are: | ||
<nowiki>{</nowiki>{{nowrap|(−''n'' + 1)''g''}}, …, −''g'', 0, ''g'', …, {{nowrap|(''n'' − 1)''g''}}<nowiki>} | <nowiki>{</nowiki>{{nowrap|(−''n'' + 1)''g''}}, …, −''g'', 0, ''g'', …, {{nowrap|(''n'' − 1)''g''}}<nowiki/>}, | ||
and all sizes {0, ''g'', …, {{nowrap|(''n'' − 1)''g''}}<nowiki>} | and all sizes {0, ''g'', …, {{nowrap|(''n'' − 1)''g''}}<nowiki/>} are distinct. | ||
We thus have: | We thus have: | ||
| Line 288: | Line 288: | ||
for appropriate integers ''c, d, e, f'', where {{nowrap|{{abs|''c''}}, {{abs|''e''}} < ''n''}}. | for appropriate integers ''c, d, e, f'', where {{nowrap|{{abs|''c''}}, {{abs|''e''}} < ''n''}}. | ||
Now we assume that ''g'' and ''p'' are linearly independent. By assumption {{nowrap|''a''L + ''b''s {{=}} (''ac'' + ''be'')''g'' + (''ad'' + ''bf'')''p''}} = ''p''. Since {{nowrap|''a''L + ''b''s}} occurs on the "brightest" mode, from generatedness we have {{nowrap|''ac'' + ''be'' ∈ { | Now we assume that ''g'' and ''p'' are linearly independent. By assumption {{nowrap|''a''L + ''b''s {{=}} (''ac'' + ''be'')''g'' + (''ad'' + ''bf'')''p''}} = ''p''. Since {{nowrap|''a''L + ''b''s}} occurs on the "brightest" mode, from generatedness we have {{nowrap|''ac'' + ''be'' ∈ {0, …, ''n'' − 1}<nowiki/>}}. Hence we must have {{nowrap|''ac'' + ''be'' {{=}} 0}}, and thus {{nowrap|''c'' {{=}} ±''b''}} and {{nowrap|''e'' {{=}} ∓''a''}}, from the assumption that ''a'' and ''b'' are coprime. | ||
In fact, {L, s} is another valid basis for the abelian group with basis {''p'', ''g''}, since by binarity we have {{nowrap|''p, g'' ∈ span(L, s)}}. Assume {{nowrap|''c'' {{=}} ''b''}} and {{nowrap|''e'' {{=}} −''a''}} (this corresponds to assuming that ''g'' is the "bright" generator). Let {{nowrap|χ {{=}} L − s}} > 0; then χ is ''p''-equivalent to +''ng''. Now by generatedness and binarity, any interval class that has at least two sizes must have sizes separated by ''ng'' (the separation corresponding to changing an L step to an s step). Since ''g'' and ''p'' are linearly independent, for each {{nowrap|''j'' ∈ { | In fact, {L, s} is another valid basis for the abelian group with basis {''p'', ''g''}, since by binarity we have {{nowrap|''p, g'' ∈ span(L, s)}}. Assume {{nowrap|''c'' {{=}} ''b''}} and {{nowrap|''e'' {{=}} −''a''}} (this corresponds to assuming that ''g'' is the "bright" generator). Let {{nowrap|χ {{=}} L − s}} > 0; then χ is ''p''-equivalent to +''ng''. Now by generatedness and binarity, any interval class that has at least two sizes must have sizes separated by ''ng'' (the separation corresponding to changing an L step to an s step). Since ''g'' and ''p'' are linearly independent, for each {{nowrap|''j'' ∈ {1, …, ''n'' − 1}<nowiki/>}} there exists at most one {{nowrap|''k'' {{=}} ''k''(''j'') ∈ {1, …, ''n'' − 1}<nowiki/>}} such that ''jg'' is ''p''-equivalent to one size of ''k''-step. Hence if the class of ''k''-steps has ''at least'' two sizes, the sizes must be ''j''(''k'')''g'' and {{nowrap|(''j''(''k'') − ''n'')''g''}}; any other size must leave the range {{nowrap|(1 − ''n'')''g''}}, …, 0, …, {{nowrap|(''n'' − 1)''g''}}. Thus the class of ''k''-steps has at most two sizes for {{nowrap|1 ≤ ''k'' ≤ ''n'' − 1}}. Each non-''p''-equivalent class must have ''exactly'' two sizes, since the inverse of the ''k''-step that is equivalent to ''jg'' is an {{nowrap|(''n'' − ''k'')}}-step equivalent to −''jg'', which by linear independence must be distinct from an {{nowrap|(''n'' − ''k'')}}-step equivalent to a positive number of ''g'' generators. (Note that the latter {{nowrap|(''n'' − ''k'')}}-step does occur in the "brightest" mode of ''S'', i.e. the mode with the most ''g'' generators stacked ''up'' rather than ''down'' from the tonic.) This completes the proof. | ||
The previous argument cannot be used for the non-linearly independent case. This is because not all binary generated scales with rational step ratios are limit points of binary generated scales with irrational step ratios. A counterexample is the 13-note scale ssLsLssLsLss ({{nowrap|s {{=}} 1\17|L {{=}} 2\17}}), which is obtained from LsLsLssLsLss (5L 7s) by stacking one more 10\17 generator. | The previous argument cannot be used for the non-linearly independent case. This is because not all binary generated scales with rational step ratios are limit points of binary generated scales with irrational step ratios. A counterexample is the 13-note scale ssLsLssLsLss ({{nowrap|s {{=}} 1\17|L {{=}} 2\17}}), which is obtained from LsLsLssLsLss (5L 7s) by stacking one more 10\17 generator. | ||