Douglas Blumeyer's RTT How-To: Difference between revisions
Cmloegcmluin (talk | contribs) make sure to use basis of null-space where appropriate; also make anti-null-space a thing |
Cmloegcmluin (talk | contribs) canonical multimap and multicomma updates |
||
Line 1,158: | Line 1,158: | ||
# 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. | # 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. | ||
# Set the results inside <span><math>r</math></span> brackets | # Set the results inside <span><math>r</math></span> brackets | ||
And you've got your multimap! | And you've got your multimap! | ||
Now, if you want the canonical multimap, two further steps are required: | |||
# Change the sign of every result if the first non-zero result is negative. | |||
# Extract the GCD from these results. | |||
Let’s work through these steps for the example of meantone. | Let’s work through these steps for the example of meantone. | ||
Line 1,205: | Line 1,208: | ||
</math> | </math> | ||
So just set these inside a number brackets equal to the rank, and we’ve got {{multicovector|1 4 4}}. | |||
Let's go for the canonical multimap. The first term is positive, so no sign changes are necessary. And these have no GCD, or in other words, their GCD is 1. So we're already there. | |||
This method even works on an equal temperament, e.g. {{map|12 19 28}}. The rank is 1 so each combination of primes has only a single prime: they’re <span><math>(2)</math></span>, <span><math>(3)</math></span>, and <span><math>(5)</math></span>. The square matrices are therefore <span><math>\begin{bmatrix}12\end{bmatrix} \begin{bmatrix}19\end{bmatrix} \begin{bmatrix}28\end{bmatrix}</math></span>. The determinant of a 1×1 matrix is defined as the value of its single term, so now we have 12 19 28. | This method even works on an equal temperament, e.g. {{map|12 19 28}}. The rank is 1 so each combination of primes has only a single prime: they’re <span><math>(2)</math></span>, <span><math>(3)</math></span>, and <span><math>(5)</math></span>. The square matrices are therefore <span><math>\begin{bmatrix}12\end{bmatrix} \begin{bmatrix}19\end{bmatrix} \begin{bmatrix}28\end{bmatrix}</math></span>. The determinant of a 1×1 matrix is defined as the value of its single term, so now we have 12 19 28. <span><math>r</math></span> = 1, so we set the answer inside one layer of brackets, so our monocovector is {{map|12 19 28}}. Going for the canonical multimap, we check that the leading term is positive, and no GCD. Both yes. So, this looks the same as what we started with, which is fine. | ||
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>. | ||
Line 1,260: | Line 1,265: | ||
|} | |} | ||
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>. | 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>. 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}}. | ||
Now for canonical form. We need the first term to be positive; this doesn’t make a difference in how things behave, but is done because it canonicalizes 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>. There's no GCD to extract. So now we have {{multicovector|rank=3|2 -3 -1 11}}. | |||
As for getting from | As for getting from a 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 find yourself with a multimap but without a corresponding map basis anyway. | ||
=== multicommas === | === multicommas === | ||
You may have noticed that the multimap for meantone, {{multicovector|1 4 4}}, looks really similar to the meantone comma, {{vector|-4 4 -1}}. This is not a coincidence. | You may have noticed that the canonical multimap for meantone, {{multicovector|1 4 4}}, looks really similar to the meantone comma, {{vector|-4 4 -1}}. This is not a coincidence. | ||
To understand why, we have to cover a few key points: | To understand why, we have to cover a few key points: | ||
Line 1,277: | Line 1,284: | ||
To demonstrate these points, let’s first calculate the multicomma from a comma basis, and then confirm it by calculating the same multicomma as the complement of its dual multimap. | To demonstrate these points, let’s first calculate the multicomma from a comma basis, and then confirm it by calculating the same multicomma as the complement of its dual multimap. | ||
Here’s the comma basis for meantone: {{map|{{vector|-4 4 -1}}}}. Calculating the multicomma is almost the same as calculating the multimap. The only difference is that as a preliminary step you must transpose the matrix, or in other words, exchange rows and columns. In our bracket notation, that just looks like replacing {{map|{{vector|-4 4 -1}}}} with {{vector|{{map|-4 4 -1}}}}. Now we can see that this is just like our ET map example from the previous section: basically an identity operation, breaking the thing up into three 1×1 matrices <span><math>\begin{bmatrix}-4\end{bmatrix} \begin{bmatrix}4\end{bmatrix} \begin{bmatrix}-1\end{bmatrix}</math></span> which are their own determinants and then nesting back inside one layer of brackets because nullity is 1. So we have {{vector|-4 4 -1}}. | Here’s the comma basis for meantone: {{map|{{vector|-4 4 -1}}}}. Calculating the multicomma is almost the same as calculating the multimap. The only difference is that as a preliminary step you must transpose the matrix, or in other words, exchange rows and columns. In our bracket notation, that just looks like replacing {{map|{{vector|-4 4 -1}}}} with {{vector|{{map|-4 4 -1}}}}. Now we can see that this is just like our ET map example from the previous section: basically an identity operation, breaking the thing up into three 1×1 matrices <span><math>\begin{bmatrix}-4\end{bmatrix} \begin{bmatrix}4\end{bmatrix} \begin{bmatrix}-1\end{bmatrix}</math></span> which are their own determinants and then nesting back inside one layer of brackets because nullity is 1. So we have {{vector|-4 4 -1}}. | ||
If we want the canonical multicomma, extracting any GCD is necessary. But unlike with the canonical multimap, we can't necessarily assume the leading term's sign will be positive. Since the canonical state is defined in terms of the canonical multimap, if we want to know the signs of the canonical multicomma, we'll have to find the canonical multimap. We can either separately find the canonical multimap, then take its complement, and that'd be our canonical multicomma. Or, we can take the complement of the multicomma we've found here, and if that has a negative leading term, then we just need to change the signs on both the multimap and the multicomma so they remain each other's duals but | |||
the multimap's leading term is positive, thus canonicalizing them together. | |||
Now let’s see how to do the complement operation. | Now let’s see how to do the complement operation. | ||
Line 1,417: | Line 1,427: | ||
Each set of one side corresponds to a set in the other side which has the exact opposite elements. | Each set of one side corresponds to a set in the other side which has the exact opposite elements. | ||
Note that multicommas could just as well serve the purpose of a unique identifier for temperaments. There’s no particular reason to prefer the multimap to the multicomma. By convention, however, the multimap is the one that’s used. | Note that multicommas could just as well serve the purpose of a unique identifier for temperaments. There’s no particular reason to prefer the canonical multimap to the canonical multicomma. By convention, however, the canonical multimap is the one that’s used. | ||
If you need to do this process for a higher dimensionality than 6, then you'll need to understand how I found the symbols for each cell of Figure 6a. Here's how: | If you need to do this process for a higher dimensionality than 6, then you'll need to understand how I found the symbols for each cell of Figure 6a. Here's how: | ||
Line 1,432: | Line 1,442: | ||
=== tempered lattice fractions generated by prime combinations === | === tempered lattice fractions generated by prime combinations === | ||
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 canonical 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 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>. | The first thing to understand is that each term of the canonical 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 canonical 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 canonical 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. | ||
What does that mean? Who cares? The motivation here is that it’s a good thing to be able to generate the entire lattice. We may be looking for JI intervals we could use as generators for our temperament, and if so, we need to know what primes to build them out of so that we can make full use of the temperament. So this tells us that if we try to build generators out of primes 2 and 3, we will succeed in generating <span><math>\frac 11</math></span> or in other words all of the tempered lattice. Whereas if we try to build the generators out of primes 2 and 5, or 3 and 5, we will fail; we will only be able to generate <span><math>\frac 14</math></span> of the lattice. In other words, prime 5 is the bad seed here; it messes things up. | What does that mean? Who cares? The motivation here is that it’s a good thing to be able to generate the entire lattice. We may be looking for JI intervals we could use as generators for our temperament, and if so, we need to know what primes to build them out of so that we can make full use of the temperament. So this tells us that if we try to build generators out of primes 2 and 3, we will succeed in generating <span><math>\frac 11</math></span> or in other words all of the tempered lattice. Whereas if we try to build the generators out of primes 2 and 5, or 3 and 5, we will fail; we will only be able to generate <span><math>\frac 14</math></span> of the lattice. In other words, prime 5 is the bad seed here; it messes things up. | ||
Line 1,448: | Line 1,458: | ||
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 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. | One day you might come across a canonical 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 canonical 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 canonical 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. |