Douglas Blumeyer's RTT How-To: Difference between revisions
Cmloegcmluin (talk | contribs) consistent "comma basis" |
Cmloegcmluin (talk | contribs) some mapping -> map basis, where appropriate |
||
Line 467: | Line 467: | ||
We call such a matrix a '''comma basis'''. The plural of “basis” is “bases”, but pronounced /ˈbeɪ siz/. | We call such a matrix a '''comma basis'''. The plural of “basis” is “bases”, but pronounced /ˈbeɪ siz/. | ||
Now how in the world could that matrix represent the same temperament as {{map|19 30 44}}? Well, they’re two different ways of describing it. {{map|19 30 44}}, as we know, tells us how many generator steps it takes to reach each prime approximation. This matrix, it turns out, is an equivalent way of stating the same information. This matrix is a minimal representation of the null-space of that mapping, or in other words, of all the commas it tempers out. | Now how in the world could that matrix represent the same temperament as {{map|19 30 44}}? Well, they’re two different ways of describing it. {{map|19 30 44}}, as we know, tells us how many generator steps it takes to reach each prime approximation. This matrix, it turns out, is an equivalent way of stating the same information. This matrix is a minimal representation of the null-space of that mapping, or in other words, of all the commas it tempers out. (Don't worry about the word "mapping" just yet; for now, just imagine I'm writing "map". We'll explain the difference very soon.). | ||
This was a bit tricky for me to get my head around, so let me hammer this point home: when you say "the null-space", you're referring to ''the entire infinite set of all commas that a mapping tempers out'', ''not only'' the two commas you see in any given basis for it. Think of the comma basis as one of many valid sets of instructions to find every possible comma, by adding or subtracting these two commas from each other<ref>To be clear, because what you are adding and subtracting in interval vectors are exponents (as you know), the commas are actually being multiplied by each other; e.g. {{vector|-4 4 -1}} + {{vector|10 1 -5}} = {{vector|6 5 -6}}, which is the same thing as <span><math>\frac{81}{80} × \frac{3072}{3125} = \frac{15552}{15625}</math></span></ref>. The math term for adding and subtracting vectors like this, which you will certainly see plenty of as you explore RTT, is "linear combination". It should be visually clear from the PTS diagram that this 19-ET comma basis couldn't be listing every single comma 19-ET tempers out, because we can see there are at least four temperament lines that pass through it (there are actually infinity of them!). But so it turns out that picking two commas is perfectly enough; every other comma that 19-ET tempers out could be expressed in terms of these two! | This was a bit tricky for me to get my head around, so let me hammer this point home: when you say "the null-space", you're referring to ''the entire infinite set of all commas that a mapping tempers out'', ''not only'' the two commas you see in any given basis for it. Think of the comma basis as one of many valid sets of instructions to find every possible comma, by adding or subtracting these two commas from each other<ref>To be clear, because what you are adding and subtracting in interval vectors are exponents (as you know), the commas are actually being multiplied by each other; e.g. {{vector|-4 4 -1}} + {{vector|10 1 -5}} = {{vector|6 5 -6}}, which is the same thing as <span><math>\frac{81}{80} × \frac{3072}{3125} = \frac{15552}{15625}</math></span></ref>. The math term for adding and subtracting vectors like this, which you will certainly see plenty of as you explore RTT, is "linear combination". It should be visually clear from the PTS diagram that this 19-ET comma basis couldn't be listing every single comma 19-ET tempers out, because we can see there are at least four temperament lines that pass through it (there are actually infinity of them!). But so it turns out that picking two commas is perfectly enough; every other comma that 19-ET tempers out could be expressed in terms of these two! | ||
Line 485: | Line 485: | ||
Sometimes a comma basis may have only a single comma. That’s okay. A single vector can become a matrix. To disambiguate this situation, you could put the vector inside a covector, like this: {{map|{{vector|-4 4 -1}}}}. Similarly, a single covector can become a matrix, by nesting inside a vector, like this: {{vector|{{map|19 30 44}}}}. | Sometimes a comma basis may have only a single comma. That’s okay. A single vector can become a matrix. To disambiguate this situation, you could put the vector inside a covector, like this: {{map|{{vector|-4 4 -1}}}}. Similarly, a single covector can become a matrix, by nesting inside a vector, like this: {{vector|{{map|19 30 44}}}}. | ||
If a comma basis is the name for the matrix made out of commas, then we could say a “'''mapping'''” is the name for the matrix made out of maps. | If a comma basis is the name for the matrix made out of commas, then we could say a “'''mapping'''” is the name for the matrix made out of maps. Why isn't it '''map basis''', you ask? Well, the answer is: it is that too. You can totally call it that, and when you use one or the other name just depends on the context. When you use the word "mapping" for it, you're treating it like a function, or a machine: it takes in intervals, and spits out new forms of intervals. That's how we've been using it here. But in other places, you're thinking of this matrix as a basis for the infinite space of possible maps that could be combined to produce a matrix which works the same way as a mapping, i.e. it tempers out the same commas. In these contexts, it might make more sense to call such a mapping matrix a "map basis". | ||
So, yes, that's right: maps are similar to commas insofar as — once you have more than one of them in your matrix — the possibilities for individual members immediately go infinite (technically speaking, though, while a comma basis is a basis of the null-space of the temperament, a map basis is a ''row-''basis of the ''row-''space of the temperament). | |||
One last note back on the bracket notation before we proceed: you will regularly see matrices across the wiki that use only square brackets on the outside, e.g. [{{map|5 8 12}} {{map|7 11 16}}] or [{{vector|-4 4 -1}} {{vector|-10 -1 5}}]. That's fine because it's unambiguous; if you have a list of rows, it's fairly obvious you've arranged them vertically, and if you've got a list of columns, it's fairly obvious you've arranged them horizontally. I personally prefer the style of using angle brackets at both levels — for slightly more effort, it raises slightly less questions — but using only square brackets on the outside should not be said to be wrong. | |||
=== null-space === | === null-space === | ||
Line 604: | Line 606: | ||
</math> | </math> | ||
And ta-da! You’ve found | And ta-da! You’ve found a map basis from a comma basis, and it is {{vector|{{map|19 30 44}}}}. In other words, you've found a map basis which is a row-basis for the mapping row-space of the same temperament for which the comma basis we started with is a basis for the null-space. Feel free to try this with any other combination of two commas tempered out by this map. | ||
So why why did we need to do those extra reversals at the beginning and end? Besides, I never said we ''must'' find get the zeroes in the top half on the top right of the augmented matrix when doing column Gaussian elimination, so wasn't rearranging the columns pointless? Well, the reason I told you to do it was because if you're going to adapt this process to a math program like Wolfram Alpha or perhaps even general computer code, you ''will'' need that step, because the way the null-space algorithm is implemented, it ''will'' try to get those zeroes on the right. So I understand this is a bit of a hand-wavy answer, and perhaps one day someone else can edit this with harder facts. But based on observation, if you do not do the reversing, you end up with an incorrect answer, and in particular, it has got zeroes on the wrong side of the matrix than you would expect. Unfortunately, to the best of my Wolfram Alpha ability, I'm unable to make the entire process work in one go (it is possible with Wolfram Language in general, which you can play with in a Wolfram computable notebook), so here is just the part where you take the null-space of the already transposed and reversed comma basis: | So why why did we need to do those extra reversals at the beginning and end? Besides, I never said we ''must'' find get the zeroes in the top half on the top right of the augmented matrix when doing column Gaussian elimination, so wasn't rearranging the columns pointless? Well, the reason I told you to do it was because if you're going to adapt this process to a math program like Wolfram Alpha or perhaps even general computer code, you ''will'' need that step, because the way the null-space algorithm is implemented, it ''will'' try to get those zeroes on the right. So I understand this is a bit of a hand-wavy answer, and perhaps one day someone else can edit this with harder facts. But based on observation, if you do not do the reversing, you end up with an incorrect answer, and in particular, it has got zeroes on the wrong side of the matrix than you would expect. Unfortunately, to the best of my Wolfram Alpha ability, I'm unable to make the entire process work in one go (it is possible with Wolfram Language in general, which you can play with in a Wolfram computable notebook), so here is just the part where you take the null-space of the already transposed and reversed comma basis: | ||
Line 696: | Line 698: | ||
=== the other side of duality === | === the other side of duality === | ||
So we can now convert back and forth between a | So we can now convert back and forth between a map basis and a comma basis. We could imagine drawing a diagram with a line of duality down the center, with a temperament's map basis on the left, and its comma basis on the right. Either side ultimately gives the same information, but sometimes you want to come at it in terms of the maps, and sometimes in terms of the commas. | ||
So far we've looked at how to intersect comma vectors to form a comma basis. Next, let's look at the other side of duality, and see how to form a | So far we've looked at how to intersect comma vectors to form a comma basis. Next, let's look at the other side of duality, and see how to form a map basis out of unioning maps. In many ways, the approaches are similar; the line of duality is a lot like a mirror in that way. | ||
When we union two maps, we put them together into a matrix, just like how we put two vectors together into a matrix. But again, where vectors are vertical columns, maps are horizontal rows. So when we combine {{map|5 8 12}} and {{map|7 11 16}}, we get a matrix that looks like | When we union two maps, we put them together into a matrix, just like how we put two vectors together into a matrix. But again, where vectors are vertical columns, maps are horizontal rows. So when we combine {{map|5 8 12}} and {{map|7 11 16}}, we get a matrix that looks like | ||
Line 713: | Line 715: | ||
Again, we find ourselves in the position where we must reconcile a strange new representation of an object with an existing one. We already know that meantone can be represented by the vector for the comma it tempers out, {{vector|-4 4 -1}}. How are these two representations related? | Again, we find ourselves in the position where we must reconcile a strange new representation of an object with an existing one. We already know that meantone can be represented by the vector for the comma it tempers out, {{vector|-4 4 -1}}. How are these two representations related? | ||
Well, it’s actually quite simple! They’re related in the same way as {{vector|{{map|19 30 44}}}} was related to {{map|{{vector|-4 4 -1}} {{vector|-10 -1 5}}}}: by the null-space operation. Specifically, {{map|{{vector|-4 4 -1}}}} is a basis for the null-space of the | Well, it’s actually quite simple! They’re related in the same way as {{vector|{{map|19 30 44}}}} was related to {{map|{{vector|-4 4 -1}} {{vector|-10 -1 5}}}}: by the null-space operation. Specifically, {{map|{{vector|-4 4 -1}}}} is a basis for the null-space of the temperament with map basis {{vector|{{map|5 8 12}} {{map|7 11 16}}}}, because it is the minimal representation of all the commas tempered out by meantone temperament. | ||
We can work this one out by hand too: | We can work this one out by hand too: | ||
Line 803: | Line 805: | ||
|} | |} | ||
And there’s our {{map|{{vector|4 -4 1}}}}. Feel free to try reversing the operation by working out the | And there’s our {{map|{{vector|4 -4 1}}}}. Feel free to try reversing the operation by working out the map basis from this if you like. And/or you could try working out that {{map|{{vector|4 -4 1}}}} is a basis for the null-space of any other combination of ETs we found that could specify meantone, such as 7&12, or 12&19. | ||
It’s worth noting that, just as 2 commas were exactly enough to define a rank-1 temperament, though there were an infinitude of equivalent pairs of commas we could choose to fill that role, there’s a similar thing happening here, where 2 maps are exactly enough to define a rank-2 temperament, but an infinitude of equivalent pairs of them. We can even see that we can convert between these maps using Gaussian addition and subtraction, just like we could manipulate commas to get from one to the other. For example, the map for 12-ET {{map|12 19 28}} is exactly what you get from summing the terms of 5-ET {{map|5 8 12}} and 7-ET {{map|7 11 16}}: {{map|5+7 8+11 12+16}} = {{map|12 19 28}}. Cool! | It’s worth noting that, just as 2 commas were exactly enough to define a rank-1 temperament, though there were an infinitude of equivalent pairs of commas we could choose to fill that role, there’s a similar thing happening here, where 2 maps are exactly enough to define a rank-2 temperament, but an infinitude of equivalent pairs of them. We can even see that we can convert between these maps using Gaussian addition and subtraction, just like we could manipulate commas to get from one to the other. For example, the map for 12-ET {{map|12 19 28}} is exactly what you get from summing the terms of 5-ET {{map|5 8 12}} and 7-ET {{map|7 11 16}}: {{map|5+7 8+11 12+16}} = {{map|12 19 28}}. Cool! | ||
Line 816: | Line 818: | ||
</math> | </math> | ||
supposed to be a mapping for meantone? What does that even mean? | supposed to be a map basis, or mapping, for meantone? What does that even mean? | ||
=== rank-2 mappings === | === rank-2 mappings === | ||
Line 828: | Line 830: | ||
* {{map|19 30 44}} asks us to imagine a generator g for which g¹⁹ ≈ 2, g³⁰ ≈ 3, and g⁴⁴ ≈ 5. | * {{map|19 30 44}} asks us to imagine a generator g for which g¹⁹ ≈ 2, g³⁰ ≈ 3, and g⁴⁴ ≈ 5. | ||
From these facts, we can see that what the mapping | From these facts, we can see that what the mapping | ||
<math> | <math> | ||
Line 911: | Line 913: | ||
So this is still meantone! But now it’s a bit more practical to think about. Because notice what happens to the octave, {{vector|1 0 0}}. To approximate the octave, you simply move by one of the first generator, or {{vector|1 0}}. The second generator has nothing to do with it. And how about the fifth, {{vector|-1 1 0}}? Well, the first generator maps that to 0 steps, and the second generator maps that to 1 step, or {{vector|0 1}}. So that tells us our second generator is the fifth. Which is… almost perfect! I would have preferred a fourth, which is the octave-complement of the fifth which is less than half of an octave. But it’s basically the same thing. Good enough. | So this is still meantone! But now it’s a bit more practical to think about. Because notice what happens to the octave, {{vector|1 0 0}}. To approximate the octave, you simply move by one of the first generator, or {{vector|1 0}}. The second generator has nothing to do with it. And how about the fifth, {{vector|-1 1 0}}? Well, the first generator maps that to 0 steps, and the second generator maps that to 1 step, or {{vector|0 1}}. So that tells us our second generator is the fifth. Which is… almost perfect! I would have preferred a fourth, which is the octave-complement of the fifth which is less than half of an octave. But it’s basically the same thing. Good enough. | ||
Hopefully manipulating these rows like this gives you some sort of feel for how what matters in a | Hopefully manipulating these rows like this gives you some sort of feel for how what matters in a mapping is not so much the values themselves but their relationship with each other. | ||
To conclude this section, I have a barrage of unrelated points of order: | To conclude this section, I have a barrage of unrelated points of order: | ||
* We’ve made it to a critical point here: we are now able to explain why RTT is called “regular” temperament theory. Regular here is a mathematical term, and I don’t have a straightforward definition of it for you, but it apparently refers to the fact that all intervals in the tuning are combinations of only these specified generators. So there you go. | * We’ve made it to a critical point here: we are now able to explain why RTT is called “regular” temperament theory. Regular here is a mathematical term, and I don’t have a straightforward definition of it for you, but it apparently refers to the fact that all intervals in the tuning are combinations of only these specified generators. So there you go. | ||
* Both {{vector|{{map|5 8 12}} {{map|7 11 16}}}} and {{vector|{{map|1 1 0}} {{map|0 1 4}}}} are equivalent mappings, then. Converting between them we could call a change of basis | * Both {{vector|{{map|5 8 12}} {{map|7 11 16}}}} and {{vector|{{map|1 1 0}} {{map|0 1 4}}}} are equivalent mappings, then. In other words, they are both map bases of the same mapping row-space. Converting between them we could call a change of basis. | ||
* Note well: this is not to say that {{map|1 1 0}} or {{map|0 1 4}} ''are'' the generators for meantone. They are generator ''mappings'': when assembled together, they collectively describe behavior of the generators, but they are ''not'' themselves the generators. This situation can be confusing; it confused me for many weeks. I thought of it this way: because the first generator is 2/1 — i.e. {{vector|1 0 0}} maps to {{vector|1 0}} — referring to {{map|1 1 0}} as the octave or period seems reasonable and is effective when the context is clear. And similarly, because the second generator is 3/2 — i.e. {{vector|-1 1 0}} maps to {{vector|0 1}} — referring to {{map|0 1 4}} as the fifth or the generator seems reasonable as is effective when the context is clear. But it's critical to understand that the first generator "being" the octave here is ''contingent upon the definition of the second generator'', and vice versa, the second generator "being" the fifth here is ''contingent upon the definition of the first generator''. Considering {{map|1 1 0}} or {{map|0 1 4}} individually, we cannot say what intervals the generators are. What if the mapping was {{vector|{{map|0 1 4}} {{map|1 2 4}}} instead? We'd still have the first generator mapping as {{map|1 1 0}}, but now that the second generator mapping is {{map|1 2 4}}, the two generators must be the fourth and the fifth. In summary, neither mapping row describes a generator in a vacuum, but does so in the context of all the other mapping rows. | * Note well: this is not to say that {{map|1 1 0}} or {{map|0 1 4}} ''are'' the generators for meantone. They are generator ''mappings'': when assembled together, they collectively describe behavior of the generators, but they are ''not'' themselves the generators. This situation can be confusing; it confused me for many weeks. I thought of it this way: because the first generator is 2/1 — i.e. {{vector|1 0 0}} maps to {{vector|1 0}} — referring to {{map|1 1 0}} as the octave or period seems reasonable and is effective when the context is clear. And similarly, because the second generator is 3/2 — i.e. {{vector|-1 1 0}} maps to {{vector|0 1}} — referring to {{map|0 1 4}} as the fifth or the generator seems reasonable as is effective when the context is clear. But it's critical to understand that the first generator "being" the octave here is ''contingent upon the definition of the second generator'', and vice versa, the second generator "being" the fifth here is ''contingent upon the definition of the first generator''. Considering {{map|1 1 0}} or {{map|0 1 4}} individually, we cannot say what intervals the generators are. What if the mapping was {{vector|{{map|0 1 4}} {{map|1 2 4}}} instead? We'd still have the first generator mapping as {{map|1 1 0}}, but now that the second generator mapping is {{map|1 2 4}}, the two generators must be the fourth and the fifth. In summary, neither mapping row describes a generator in a vacuum, but does so in the context of all the other mapping rows. | ||
* This also gives us a new way to think about the scale tree patterns. Remember how earlier we pointed out that {{map|12 19 28}} was simply {{map|5 8 12}} + {{map|7 11 16}}? Well, if {{vector|{{map|5 8 12}} {{map|7 11 16}}}} is a way of expressing meantone in terms of its two generators, you can imagine that 12-ET is the point where those two generators converge on being the same exact size<ref>For real numbers <span><math>p,q</math></span> we can make the two generators respectively <span><math>\frac{p}{5p+7q}</math></span> and <span><math>\frac{q}{5p+7q}</math></span> of an octave, e.g. <span><math>(p,q)=(1,0)</math></span> for 5-ET, <span><math>(0,1)</math></span> for 7-ET, <span><math>(1,1)</math></span> for 12-ET, and many other possibilities.</ref>. If they become the same size, then they aren’t truly two separate generators, or at least there’s no effect in thinking of them as separate. And so for convenience you can simply combine their mappings into one. | * This also gives us a new way to think about the scale tree patterns. Remember how earlier we pointed out that {{map|12 19 28}} was simply {{map|5 8 12}} + {{map|7 11 16}}? Well, if {{vector|{{map|5 8 12}} {{map|7 11 16}}}} is a way of expressing meantone in terms of its two generators, you can imagine that 12-ET is the point where those two generators converge on being the same exact size<ref>For real numbers <span><math>p,q</math></span> we can make the two generators respectively <span><math>\frac{p}{5p+7q}</math></span> and <span><math>\frac{q}{5p+7q}</math></span> of an octave, e.g. <span><math>(p,q)=(1,0)</math></span> for 5-ET, <span><math>(0,1)</math></span> for 7-ET, <span><math>(1,1)</math></span> for 12-ET, and many other possibilities.</ref>. If they become the same size, then they aren’t truly two separate generators, or at least there’s no effect in thinking of them as separate. And so for convenience you can simply combine their mappings into one. | ||
Line 1,041: | Line 1,043: | ||
Because we're starting in 4D here, if we temper out one comma, we still have a rank-3 temperament, with 3 independent generators. Temper out two commas, and we have a rank-2 temperament, with 2 generators (remember, one of them is the period, which is usually the octave). And we’d need to temper out 3 commas here to pinpoint a single ET. | Because we're starting in 4D here, if we temper out one comma, we still have a rank-3 temperament, with 3 independent generators. Temper out two commas, and we have a rank-2 temperament, with 2 generators (remember, one of them is the period, which is usually the octave). And we’d need to temper out 3 commas here to pinpoint a single ET. | ||
The particular case I’d like to focus our attention on here is the rank-2 case. This is the first situation we’ve been able to achieve which boasts both an infinitude of matrices made from comma vectors which can represent the temperament by its comma basis, as well as an infinitude of matrices made from ET maps which can represent temperament by its | The particular case I’d like to focus our attention on here is the rank-2 case. This is the first situation we’ve been able to achieve which boasts both an infinitude of matrices made from comma vectors which can represent the temperament by its comma basis, as well as an infinitude of matrices made from ET maps which can represent a temperament by its map basis. These are not contradictory. Let’s look at an example: septimal meantone. | ||
Septimal meantone may be thought of as the temperament which tempers out the meantone comma and the starling comma (126/125), or “meantone|starling”. But it may also be thought of as “meantone|marvel”, where the marvel comma is 225/224. We don’t even necessarily need the meantone comma at all: it can even be “starling|marvel”! This speaks to the fact that any temperament with a nullity greater than 1 has an infinitude of equivalent comma bases. It’s up to you which one to use. | Septimal meantone may be thought of as the temperament which tempers out the meantone comma and the starling comma (126/125), or “meantone|starling”. But it may also be thought of as “meantone|marvel”, where the marvel comma is 225/224. We don’t even necessarily need the meantone comma at all: it can even be “starling|marvel”! This speaks to the fact that any temperament with a nullity greater than 1 has an infinitude of equivalent comma bases. It’s up to you which one to use. | ||
On the other side of duality, septimal meantone’s | On the other side of duality, septimal meantone’s map basis has two rows, corresponding to its two generators. We don’t have PTS for 7-limit JI handy, but because septimal meantone includes, or extends plain meantone, we can still refer to 5-limit PTS, and pick ETs from the meantone line there. The difference is that this time we need to include their 7-term. So the union of {{map|12 19 28 34}} and {{map|19 30 44 53}} would work. But so would {{map|19 30 44 53}} and {{map|31 49 72 87}}. We have an infinitude of options on this side of duality too, but here it’s not because our nullity is greater than 1, but because our rank is greater than 1. | ||
=== normal form === | === normal form === | ||
Line 1,069: | Line 1,071: | ||
The latter is sometimes called the “musician’s form” of the temperament, because it’s easy to reason about from a musical perspective. But it turns out there’s not a particularly clean function for consistently getting to it, or even defining it. | The latter is sometimes called the “musician’s form” of the temperament, because it’s easy to reason about from a musical perspective. But it turns out there’s not a particularly clean function for consistently getting to it, or even defining it. | ||
Another form you might want the | Another form you might want the map basis in is the type Graham Breed's temperament finder puts them in, where all values in a map basis row may be negative, but this is in the service of the generator being 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,080: | Line 1,082: | ||
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}}. | ||
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 | 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 map 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 '''“normal” 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 what we call the “normalized” matrix, and it can therefore uniquely identify a temperament. | ||
To be clear, normal form isn’t necessary to avoid ambiguity: you will never find a comma basis that could represent more than one temperament. | To be clear, normal form isn’t necessary to avoid ambiguity: you will never find a comma basis that could represent more than one temperament. | ||
Line 1,126: | Line 1,128: | ||
So we mentioned that a multimap is an alternative way to represent a temperament. Let's look at an example now. Meantone's multimap looks like this: {{multicovector|1 4 4}}. As you can see, it is a bicovector, or bimap, because it has two of each bracket. | So we mentioned that a multimap is an alternative way to represent a temperament. Let's look at an example now. Meantone's multimap looks like this: {{multicovector|1 4 4}}. As you can see, it is a bicovector, or bimap, because it has two of each bracket. | ||
Why care about multimaps? Well, a key reason is that they can serve the same purpose as the normal form of a temperament’s | Why care about multimaps? Well, a key reason is that they can serve the same purpose as the normal form of a temperament’s map basis: the process for converting a map basis to a multimap will convert any equivalent map basis to the same exact multimap. In other words, a multimap can serve as a unique identifier for its temperament. And, unlike normal forms for matrices, there is no question about which normal form to use. | ||
Alright, then, sounds great! But how do I convert a | Alright, then, sounds great! But how do I convert a map basis to a multimap? The process is doable. It’s closely related to the wedge product (hence the name “wedgie”), but better known as the '''exterior product'''. We write it with the symbol ∧, which is great because that’s the logical operator for “and”, forming a clear association with the unioning of two ETs. | ||
First I’ll list the steps. Don’t worry if it doesn’t all make sense the first time. We’ll work through an example and go into more detail as we do. To be clear, what we're doing here is both more and less and different ways from the strict definition of the exterior product as you may see it elsewhere; I'm specifically here describing the process for finding the multimap in the form you're going to be interested in for RTT purposes. | First I’ll list the steps. Don’t worry if it doesn’t all make sense the first time. We’ll work through an example and go into more detail as we do. To be clear, what we're doing here is both more and less and different ways from the strict definition of the exterior product as you may see it elsewhere; I'm specifically here describing the process for finding the multimap in the form you're going to be interested in for RTT purposes. | ||
# Take each combination of <span><math>r</math></span> primes where <span><math>r</math></span> is the rank, sorted in [https://en.wikipedia.org/wiki/Lexicographic_order lexicographic order], e.g. if we're in the 7-limit, we'd have <span><math>(2,3,5)</math></span>, <span><math>(2,3,7)</math></span>, <span><math>(2,5,7)</math></span>, and <span><math>(3,5,7)</math></span>. | # Take each combination of <span><math>r</math></span> primes where <span><math>r</math></span> is the rank, sorted in [https://en.wikipedia.org/wiki/Lexicographic_order lexicographic order], e.g. if we're in the 7-limit, we'd have <span><math>(2,3,5)</math></span>, <span><math>(2,3,7)</math></span>, <span><math>(2,5,7)</math></span>, and <span><math>(3,5,7)</math></span>. | ||
# Convert each of those combinations to a square <span><math>r×r</math></span> matrix by slicing a column for each prime out of the | # Convert each of those combinations to a square <span><math>r×r</math></span> matrix by slicing a column for each prime out of the map basis and putting them together. | ||
# Take each matrix's determinant. | # Take each matrix's determinant. | ||
# Change the sign of every result if the first non-zero result is negative. | # Change the sign of every result if the first non-zero result is negative. | ||
Line 1,145: | Line 1,147: | ||
We have rank <span><math>r</math></span> = 2, so we’re looking for every combination of two primes. That’s out of the three total primes we have in the 5-limit: 2, 3, and 5. So those combinations are <span><math>(2,3)</math></span>, <span><math>(2,5)</math></span>, and <span><math>(3,5)</math></span>. Those are already in lexicographic order, or in other words, just like how alphabetic order works, but generalized to work for size of numbers too (so that 11 comes after 2, not before). | We have rank <span><math>r</math></span> = 2, so we’re looking for every combination of two primes. That’s out of the three total primes we have in the 5-limit: 2, 3, and 5. So those combinations are <span><math>(2,3)</math></span>, <span><math>(2,5)</math></span>, and <span><math>(3,5)</math></span>. Those are already in lexicographic order, or in other words, just like how alphabetic order works, but generalized to work for size of numbers too (so that 11 comes after 2, not before). | ||
Here's the meantone | Here's the meantone map basis again, with some color applied which should help identify the combinations: | ||
<math> | <math> | ||
Line 1,154: | Line 1,156: | ||
</math> | </math> | ||
So now each of those combinations becomes a square matrix, made out of bits from the | So now each of those combinations becomes a square matrix, made out of bits from the map basis, which again is: | ||
<math> | <math> | ||
Line 1,188: | Line 1,190: | ||
Let’s try a slightly harder example now: a rank-3 temperament, and in the 7-limit. There are four different ways to take 3 of 4 primes: <span><math>(2,3,5)</math></span>, <span><math>(2,3,7)</math></span>, <span><math>(2,5,7)</math></span>, and <span><math>(3,5,7)</math></span>. | Let’s try a slightly harder example now: a rank-3 temperament, and in the 7-limit. There are four different ways to take 3 of 4 primes: <span><math>(2,3,5)</math></span>, <span><math>(2,3,7)</math></span>, <span><math>(2,5,7)</math></span>, and <span><math>(3,5,7)</math></span>. | ||
If the | If the map basis is | ||
<math> | <math> | ||
Line 1,237: | Line 1,239: | ||
|} | |} | ||
And so our results are <span><math>-2</math></span>, <span><math>3</math></span>, <span><math>1</math></span>, <span><math>-11</math></span>. There's no GCD to extract. We prefer for the first term to be positive; this doesn’t make a difference in how things behave, but is done because it normalizes things (we could have found the result where the first term came out positive by simply changing the order of the rows of our | And so our results are <span><math>-2</math></span>, <span><math>3</math></span>, <span><math>1</math></span>, <span><math>-11</math></span>. There's no GCD to extract. We prefer for the first term to be positive; this doesn’t make a difference in how things behave, but is done because it normalizes things (we could have found the result where the first term came out positive by simply changing the order of the rows of our map basis, which doesn’t affect how it works as a mapping at all, or mean there's anything different about the temperament). And so we change the signs<ref>If it helps you, you could think of this sign-changing step as paired with the GCD extraction step, if you think of it like extracting a GCD of -1.</ref>, and our list ends up as <span><math>2</math></span>, <span><math>-3</math></span>, <span><math>-1</math></span>, <span><math>11</math></span>. Finally, set these inside triply-nested brackets, because it’s a trimap for a rank-3 temperament, and we get {{multicovector|rank=3|2 -3 -1 11}}. | ||
As for getting from the multimap back to the | As for getting from the multimap back to the map basis, you can solve a system of equations for that. Though it’s not easy and there may not be a unique solution. And you probably will never have the multimap without the map basis anyway. | ||
=== multicommas === | === multicommas === | ||
Line 1,247: | Line 1,249: | ||
To understand why, we have to cover a few key points: | To understand why, we have to cover a few key points: | ||
# Just as a vector is the dual of a covector, we also have a '''multivector''' which is the dual of a multicovector. Analogously, we call the thing the multivector represents a '''multicomma'''. | # Just as a vector is the dual of a covector, we also have a '''multivector''' which is the dual of a multicovector. Analogously, we call the thing the multivector represents a '''multicomma'''. | ||
# We can calculate a multicomma from a comma basis much in the same way we can calculate a multimap from a | # We can calculate a multicomma from a comma basis much in the same way we can calculate a multimap from a map basis | ||
# We can convert between multimaps and multicommas using an operation called “taking the '''complement'''”<ref>Elsewhere on the wiki you may find the complement operation called "taking [[the dual]]", or even the dual of a multimap being called simply "the dual". In these materials, I am using the dual to refer to the general case, while the specific case of the dual of a multimap is a multicomma and the operation to get from one of these to its dual is called taking the complement (whereas to get to the dual of a | # We can convert between multimaps and multicommas using an operation called “taking the '''complement'''”<ref>Elsewhere on the wiki you may find the complement operation called "taking [[the dual]]", or even the dual of a multimap being called simply "the dual". In these materials, I am using the dual to refer to the general case, while the specific case of the dual of a multimap is a multicomma and the operation to get from one of these to its dual is called taking the complement (whereas to get to the dual of a map basis, which is a comma basis, the operation is called taking the null-space).</ref><ref>You may also sometimes see "Hodge dual" used where you'd expect to see the complement operation. The Hodge star operation, or Hodge dual operation, is not another name for the complement operation. It is a linear algebra operation which works as a limited substitute for the exterior algebra operation. The limitation is that it only works when the rank is 2. This is because when rank is 2, bicovectors can be represented as skew-symmetric matrices (see: https://en.wikipedia.org/wiki/Bivector#Matrices), which gives you access to some extra linear algebra utilities such as Hodge star.</ref>, which basically involves reversing the order of terms and changing the signs of some of them. | ||
[[File:Algebra notation.png|300px|thumb|right|'''Figure 6a.''' RTT bracket notation comparison.]] | [[File:Algebra notation.png|300px|thumb|right|'''Figure 6a.''' RTT bracket notation comparison.]] | ||
Line 1,411: | Line 1,413: | ||
So we now understand how to get to multimaps. And we understand that they uniquely identify the temperament. But what about the individual terms — do they mean anything in and of themselves? It turns out: yes! | So we now understand how to get to multimaps. And we understand that they uniquely identify the temperament. But what about the individual terms — do they mean anything in and of themselves? It turns out: yes! | ||
The first thing to understand is that each term of the multimap pertains to a different combination of primes. We already know this: it’s how we calculated it from the | The first thing to understand is that each term of the multimap pertains to a different combination of primes. We already know this: it’s how we calculated it from the map basis. For example, in the multimap for meantone, {{multicovector|1 4 4}}, the 1 is for <span><math>(2,3)</math></span>, the first 4 is for <span><math>(2,5)</math></span>, and the second 4 is for <span><math>(3,5)</math></span>. | ||
Now, let’s convert every term of the multimap by taking its absolute value and its inverse. In this case, each of our terms is already positive, so that has no effect. But taking the inverse converts us to <span><math>\frac 11</math></span>, <span><math>\frac 14</math></span>, <span><math>\frac 14</math></span>. These values tell us what fraction of the tempered lattice we can generate using the corresponding combination of primes. | Now, let’s convert every term of the multimap by taking its absolute value and its inverse. In this case, each of our terms is already positive, so that has no effect. But taking the inverse converts us to <span><math>\frac 11</math></span>, <span><math>\frac 14</math></span>, <span><math>\frac 14</math></span>. These values tell us what fraction of the tempered lattice we can generate using the corresponding combination of primes. | ||
Line 1,425: | Line 1,427: | ||
But now try it with only 5 and one other of primes 2 or 3. Prime 5 takes you over 4 in both directions. But if you have only prime 2 otherwise, then you can only move up or down from there, so you’ll only cover every fourth vertical line through the tempered lattice. Or if you only had prime 3 otherwise, then you could only move left and right from there, you’d only cover every fourth horizontal line ''(see Figure 6c)''. | But now try it with only 5 and one other of primes 2 or 3. Prime 5 takes you over 4 in both directions. But if you have only prime 2 otherwise, then you can only move up or down from there, so you’ll only cover every fourth vertical line through the tempered lattice. Or if you only had prime 3 otherwise, then you could only move left and right from there, you’d only cover every fourth horizontal line ''(see Figure 6c)''. | ||
One day you might come across a multimap which has a term equal to zero. If you tried to interpret this term using the information here so far, you'd think it must generate <span><math>\frac 10</math></span>th of the tempered lattice. That's not easy to visualize or reason about. Does that mean it generates essentially infinity lattices? No, not really. More like the opposite. The question itself is somewhat undefined here. If anything, it's more like that combination of primes generates approximately ''none'' of the lattice. Because in this situation, the combination of primes whose multimap term is zero generates so little of the tempered lattice that it's completely missing one entire dimension of it, so it's an infinitesimal amount of it that it generates. For example, the 11-limit temperament 7&12&31 has multimap {{map|rank=3|0 1 1 4 4 -8 4 4 -12 -16}} and | One day you might come across a multimap which has a term equal to zero. If you tried to interpret this term using the information here so far, you'd think it must generate <span><math>\frac 10</math></span>th of the tempered lattice. That's not easy to visualize or reason about. Does that mean it generates essentially infinity lattices? No, not really. More like the opposite. The question itself is somewhat undefined here. If anything, it's more like that combination of primes generates approximately ''none'' of the lattice. Because in this situation, the combination of primes whose multimap term is zero generates so little of the tempered lattice that it's completely missing one entire dimension of it, so it's an infinitesimal amount of it that it generates. For example, the 11-limit temperament 7&12&31 has multimap {{map|rank=3|0 1 1 4 4 -8 4 4 -12 -16}} and map basis {{vector|{{map|1 0 -4 0 -12}} {{map|0 1 4 0 8}} {{map|0 0 0 1 1}}}}; we can see from this how primes <span><math>(2,3,5)</math></span> can only generate a rank-2 cross-section of the full rank-3 lattice, because while 2 and 3 do the trick of generating that rank-2 part (exactly as they do in 5-limit meantone), prime 5 doesn't bring anything to the table here so that's all we get. | ||
We’ll look in more detail later at how exactly to best find these generators, once you know which primes to make them out of. | We’ll look in more detail later at how exactly to best find these generators, once you know which primes to make them out of. | ||
Line 1,444: | Line 1,446: | ||
!RTT application | !RTT application | ||
|map (often an ET) | |map (often an ET) | ||
|mapping | |mapping, map basis | ||
|multimap | |multimap | ||
|multicomma | |multicomma | ||
Line 1,451: | Line 1,453: | ||
|- | |- | ||
!RTT structure | !RTT structure | ||
|map, mapping row | |map, mapping row, map basis row | ||
|list of maps | |list of maps | ||
|list of denominators of unit fractions of tempered lattice generated by combinations of primes | |list of denominators of unit fractions of tempered lattice generated by combinations of primes |