Douglas Blumeyer's RTT How-To: Difference between revisions
Cmloegcmluin (talk | contribs) use \log |
Cmloegcmluin (talk | contribs) update re: canonical form |
||
Line 610: | Line 610: | ||
And ta-da! You’ve found a mapping from a comma-basis, and it is {{ket|{{map|19 30 44}}}}. In other words, for this temperament, you have converted a basis for its null-space to a row-basis for its mapping row-space. Feel free to try this with any other combination of two commas tempered out by this mapping-row. | And ta-da! You’ve found a mapping from a comma-basis, and it is {{ket|{{map|19 30 44}}}}. In other words, for this temperament, you have converted a basis for its null-space to a row-basis for its mapping row-space. Feel free to try this with any other combination of two commas tempered out by this mapping-row. | ||
So why the anti-transpose sandwich? What we (and everyone) want in a | So why the anti-transpose sandwich? What we (and everyone) want in a mapping is to have a triangle of zeros in the bottom left corner. What we want in a comma-basis is also to have a triangle of zeros in the bottom left corner. But the comma-basis is on the other side of duality from the mapping, so it must be transposed before we can apply our nullSpaceBasis[] function to it, because that function is designed for mappings. But when we transpose the comma-basis we end up with the triangle of zeros in the top right. If we take the null-space of that and then transpose it back again, we don't get a nice form of the mapping, we get a mapping with a triangle of zeros in the top right. The way to fix this is to anti-transpose instead of transpose, before and after taking the null-space. Because when you anti-transpose the comma-basis, you still turn columns into rows, but this time the triangle of zeros stays on the bottom left. | ||
Here's the Wolfram Language implementation: | Here's the Wolfram Language implementation: | ||
Line 1,079: | Line 1,079: | ||
</math> | </math> | ||
In this form, as we observed, the period is an octave and the generator is a fifth, which is a popular and convenient way to think about meantone. But there are other good forms this mapping-row-basis could be put into. | |||
For example, you might want the form that Graham Breed's temperament finder puts them in, where all values in a mapping-row-basis row may be negative, but this is in the service of the generator being positive, and less than half the size of the period. For example, for meantone, we'd want the fourth instead of the fifth, and we can see that | |||
<math> | <math> | ||
Line 1,090: | Line 1,090: | ||
</math> | </math> | ||
maps the fourth (4/3, {{vector|2 -1 0 }}) to {{vector|0 1}}. | maps the fourth (4/3, {{vector|2 -1 0 }}) to {{vector|0 1}}. That form is called [[mingen]] form. | ||
It’s often the case that a temperament’s nullity is greater than 1 or its rank is greater than 1, and therefore we have an infinitude of equivalent ways of expressing the comma-basis or the mapping-row-basis. This can be problematic, if we want to efficiently communicate about and catalog temperaments. It’s good to have a standardized form in these cases. The approach RTT takes here is to get these matrices into | But there are still more forms! One very important form is called '''[[canonical form]]'''. | ||
It’s often the case that a temperament’s nullity is greater than 1 or its rank is greater than 1, and therefore we have an infinitude of equivalent ways of expressing the comma-basis or the mapping-row-basis. This can be problematic, if we want to efficiently communicate about and catalog temperaments. It’s good to have a standardized form in these cases. The approach RTT takes here is to get these matrices into canonical form. In plain words, this just means: we have a function which takes in a matrix and spits out a matrix of the same shape, and no matter which matrix we input from a set of matrices which we consider all to be equivalent to each other, it will spit out the same result. This output is thereby “canonical”, and it can therefore uniquely identify a temperament. | |||
To be clear, canonical form isn’t necessary to avoid ambiguity: you will never find a comma-basis that could represent more than one temperament. | To be clear, canonical form isn’t necessary to avoid ambiguity: you will never find a comma-basis that could represent more than one temperament. | ||
For example, the canonical form of meantone is: | For example, the canonical form of meantone is: | ||
Line 1,107: | Line 1,107: | ||
</math> | </math> | ||
So if you take the canonical form of {{ket|{{map|5 8 12}} {{map|7 11 16}}}}, that’s what you get. It’s also what you get if you take the canonical form of {{ket|{{map|12 19 28}} {{map|19 30 44}}}}, or any equivalent other mapping-row-basis. That’s the power of canonicalization. | |||
Canonical form can be done by hand, but it's a bit involved, because it requires first [[defactoring]] and then putting into [[Hermite Normal Form]]. I've demonstrated how to do these processes at the links provided. | |||
Canonicalization used to be achieved in RTT through the use of the "wedgie", an object that involves more advanced math. So while you may see "wedgies" around on the wiki and elsewhere, don't worry — you don't need to worry about them in order to do RTT. If you want to learn more anyway, I've gathered up everything I figured out about those here: [[VEA]]. | |||
== other topics (TBD) == | == other topics (TBD) == |