Generator preimage: Difference between revisions
Cmloegcmluin (talk | contribs) fix Wolfram method names |
m typo again |
||
| (14 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
Every [[generator]] of a [[regular temperament]] has a preimage, which is an infinite set of JI intervals that map to it. A [[transversal]] means a selection of one representative element from each of a list of sets. So if for each generator in our temperament's list of generators we choose one JI interval that maps to it, then we have a | Also known as a '''generator preimage transversal''' or a '''generator [[detempering]]'''. Every [[generator]] of a [[regular temperament]] has a [[preimage]], which is an infinite set of JI intervals that map to it. A [[transversal]] means a selection of one representative element from each of a list of sets. So if for each generator in our temperament's list of generators we choose one JI interval that maps to it, then we have a generator preimage transversal for that temperament. | ||
Generator preimages are commonly used to describe temperaments. For example, [[meantone]] is generated by an octave and fifth, and the corresponding generator preimage is [[2/1]] and [[3/2]]. [[Miracle]] is generated by an octave and a semitone, corresponding to [[2/1]] and [[16/15]]~[[15/14]]. | |||
=Technical Definition= | =Technical Definition= | ||
| Line 21: | Line 23: | ||
For another example, consider [<1 1 1 2|, <0 2 1 1|, <0 0 2 1|] which is the [[Normal_lists|normal val list]] for breed temperament, the temperament tempering out 2401/2400. A corresponding list of transversal generators is [2, 49/40, 10/7]. | For another example, consider [<1 1 1 2|, <0 2 1 1|, <0 0 2 1|] which is the [[Normal_lists|normal val list]] for breed temperament, the temperament tempering out 2401/2400. A corresponding list of transversal generators is [2, 49/40, 10/7]. | ||
=Finding the | =Finding the generator preimage transversal= | ||
{{todo|cleanup|inline=1|text=Add simpler algorithm}} | |||
Two methods for finding the | Two methods for finding the generator preimage transversal have been developed. The first was developed by [[Gene Ward Smith]] sometime in or before June 2011, which uses the [[Hermite normal form]]. The second was developed by [[User:Sintel|Sintel]] in December 2021, which uses the [[Smith normal form]]. | ||
== Method using the Smith Normal Form == | == Method using the Smith Normal Form == | ||
So we want to find a | So we want to find a generator preimage transversal <math>T</math> for a mapping <math>M</math> where: | ||
| Line 33: | Line 36: | ||
and where <math>I</math> is the identity matrix. When this is the case, then for each generator of the temperament represented by <math>M</math>, a different column of <math>T</math> as a prime-count vector represents an interval that <math>M</math> maps to that generator. And when this <math>T</math> has all integer entries, then these generators are all JI. | and where <math>I</math> is the identity matrix. When this is the case, then for each generator of the temperament represented by <math>M</math>, a different column of <math>T</math> as a [[prime-count vector]] represents an interval that <math>M</math> maps to that generator. And when this <math>T</math> has all integer entries, then these generators are all JI. | ||
Essentially we need a way to do: | Essentially we need a way to do: | ||
| Line 161: | Line 164: | ||
And so | And so a transversal of the preimages of its generators are <math>RD^{T}L</math>: | ||
| Line 206: | Line 209: | ||
== Method using the Hermite Normal Form == | == Method using the Hermite Normal Form == | ||
We can find a | We can find a generator preimage transversal for V by the following procedure: | ||
<ul><li>Take the transpose of the [[Tenney-Euclidean_Tuning#The pseudoinverse|pseudoinverse]] of V, call that U</li><li>Find a basis for the commas of V</li><li>For each row U[i] of U, clear denominators and append the monzos of the comma basis for V</li><li>[[Saturation|Saturate]] the result to a list of monzos, call that S</li><li>Apply the ith val V[i] (dot product) to each element of S</li><li>Insert V[i].S[j] in front of the elements of S[j] as the first element, obtaining the jth element T[j] of a modified list T</li><li>Hermite reduce the modified list T, take the first row, and remove the first element (which should be a 1.)</li><li>Consider the rest to be a monzo and convert it to a rational number</li><li>This is a corresponding transveral generator to the ith val V[i] of V; it may be reduced to an equivalent generator of minimal [[Tenney_Height|Tenney height]] by multiplying by the commas of V</li></ul> | <ul><li>Take the transpose of the [[Tenney-Euclidean_Tuning#The pseudoinverse|pseudoinverse]] of V, call that U</li><li>Find a basis for the commas of V</li><li>For each row U[i] of U, clear denominators and append the monzos of the comma basis for V</li><li>[[Saturation|Saturate]] the result to a list of monzos, call that S</li><li>Apply the ith val V[i] (dot product) to each element of S</li><li>Insert V[i].S[j] in front of the elements of S[j] as the first element, obtaining the jth element T[j] of a modified list T</li><li>Hermite reduce the modified list T, take the first row, and remove the first element (which should be a 1.)</li><li>Consider the rest to be a monzo and convert it to a rational number</li><li>This is a corresponding transveral generator to the ith val V[i] of V; it may be reduced to an equivalent generator of minimal [[Tenney_Height|Tenney height]] by multiplying by the commas of V</li></ul> | ||
| Line 413: | Line 416: | ||
[[Category:generator]] | [[Category:generator]] | ||
[[Category:Regular temperament theory]] | [[Category:Regular temperament theory]] | ||
[[Category:todo:reduce_mathslang]] | [[Category:todo:reduce_mathslang]] | ||