Temperament mapping matrix: Difference between revisions
Wikispaces>mbattaglia1 **Imported revision 355667144 - Original comment: ** |
Wikispaces>mbattaglia1 **Imported revision 355676710 - Original comment: ** |
||
| Line 1: | Line 1: | ||
<h2>IMPORTED REVISION FROM WIKISPACES</h2> | <h2>IMPORTED REVISION FROM WIKISPACES</h2> | ||
This is an imported revision from Wikispaces. The revision metadata is included below for reference:<br> | This is an imported revision from Wikispaces. The revision metadata is included below for reference:<br> | ||
: This revision was by author [[User:mbattaglia1|mbattaglia1]] and made on <tt>2012-07-31 | : This revision was by author [[User:mbattaglia1|mbattaglia1]] and made on <tt>2012-07-31 09:02:25 UTC</tt>.<br> | ||
: The original revision id was <tt> | : The original revision id was <tt>355676710</tt>.<br> | ||
: The revision comment was: <tt></tt><br> | : The revision comment was: <tt></tt><br> | ||
The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.<br> | The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.<br> | ||
<h4>Original Wikitext content:</h4> | <h4>Original Wikitext content:</h4> | ||
<div style="width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em"><pre style="margin:0px;border:none;background:none;word-wrap:break-word;white-space: pre-wrap ! important" class="old-revision-html">=Basics= | <div style="width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em"><pre style="margin:0px;border:none;background:none;word-wrap:break-word;white-space: pre-wrap ! important" class="old-revision-html">=Basics= | ||
The multiplicative group of | The multiplicative group of any set of rational numbers, which is an r-rank free abelian group, also naturally has the structure of being a Z-module. Thus, a [[Regular Temperaments|regular temperament]], which is a group homomorphism **T**: J -> K from the group J of JI rationals to a group K of tempered intervals, also has the structure of being a module homomorphism between Z-modules. This homomorphism can also be represented by a integer matrix, called a **mapping matrix** or **mapping** for the temperament. Since there is more than one type of mapping matrix which appears in music theory, it has also more rarely been called a "monzo-map" or **M-map** when context demands, as opposed to the [[Subgroup Mapping Matrices (V-maps)|V-map]] which is a mapping on vals. | ||
Assuming we use the convention that row matrices represent vals and column matrices represent monzos, then a matrix M is said to be a mapping matrix for a temperament T if and only if the null module of M consists of the kernel of T, M is of full row rank, and the rows of M generate a submodule which is [[Saturation|saturated]]. There is generally not a unique matrix M satisfying this definition for arbitrary temperament T, as for any M which is a valid mapping for T, any matrix U*M where U is unimodular will also be a valid mapping for T. The different mapping matrices obtainable in this way still temper out the same commas, but differ in the choice of basis for the tempered interval module. | |||
[[ | The column module of any mapping matrix is the module of T-tempered intervals, also known as the module of [[tmonzos and tvals|tmonzos]] for T. The row module of any mapping matrix for a temperament T is the submodule of all vals supporting T. Note also that this means that if T is of rank r, then a rank-r matrix in which the rows are r linearly independent vals supporting T and which form a saturated submodule of the module of vals will be a valid mapping for T. | ||
Note also that since all mapping matrices for T will have the same row module, we can easily check to see if two matrices represent the same temperament by checking to see if they generate the same [[Normal lists#x-Normal%20val%20lists|normal val list]], or more generally if they have the same Hermite normal form. | |||
=Dual Transformation= | |||
Any mapping matrix can be said to represent a linear map **M:** J -> K, where J is a module of JI intervals and K is a module of tempered intervals. There is thus an associated dual transformation **M*:** K* -> J*, where J* and K* are the dual modules to J and K, respectively. J* is the module of vals on J, and K* is the module of [[xenharmonic/tmonzos and tvals|tvals]] on K, so **M*** represents a linear transformation mapping from tvals to vals. This mapping will generally be injective but not surjective; its image is the submodule of vals supporting the associated temperament, and no two tvals map to the same val. | |||
These two transformations correspond to different types of matrix multiplication: the ordinary transformation **M** corresponds to multiplication with the mapping on the left and a matrix whose columns are monzos on the right, and the dual transformation **M*** corresponds to multiplication with the mapping on the right and a matrix whose rows are tvals on the left. | |||
=Example= | |||
11-limit porcupine tempers out 55/54, 64/63, and 100/99, and is supported by the patent vals for [[15-EDO]] and [[22-EDO]]. Since these two vals form a saturated submodule of the module of 11-limit vals, then the matrix formed by setting the rows to these vals is a valid mapping matrix for porcupine: | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[<15 24 35 42 52|]</span>** | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[<22 35 51 62 76|]</span>** | |||
where the row vectors are still placed in bras as a notational device to signify that these are vals. If we put this in [[xenharmonic/Normal lists#x-Normal%20val%20lists|normal val list]] form, we get | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[<1 2 3 2 4|]</span>** | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[<0 -3 -5 6 -4|]</span>** | |||
or, in shorthand, [<1 2 3 2 4|, <0 -3 -5 6 -4|]. We'll call this matrix **P**. | |||
**Tempering an Interval** | |||
We'll now right-multiply **P** by the following matrix **M** of two monzos, representing 2/1 and 3/2: | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[1 -1]</span>** | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[0 1]</span>** | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[0 0]</span>** | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[0 0]</span>** | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[0 0]</span>** | |||
we can also write this matrix as | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[| 1 0 0 0 0>]</span>** | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[|-1 1 0 0 0>]</span>** | |||
or, in shorthand, [|1 0 0 0 0>, |-1 1 0 0 0>], where it's understood in both cases that the kets represent columns. | |||
The result of **P*****M** is the matrix [|1 0>, |1 -3>], telling us that 2/1 maps to the tmonzo |1 0>, and that 3/2 maps to the tmonzo |1 -3>. This tells us that 2/1 maps to one of the generators for porcupine and that 3/2 is made up of one 2/1 minus three of the other generator. It so happens that the other generator is 10/9, which maps to |0 1>. | |||
We can use this technique to indeed confirm that 55/54, 64/63, and 100/99 form a basis for the null module of **P** by putting these intervals in monzo form as columns of a matrix **N**, which works out to be [|-1 -3 1 0 1>, |6 -2 0 -1 0>, |2 -2 2 0 -1>]. If we then evaluate the product **P*N** we get the matrix [|0 0>, |0 0>, |0 0>], meaning that all of these intervals map to the unison tmonzo. This confirms that the kernel of porcupine does indeed lie in the null module of **P**. | |||
**The Dual Transformation** | |||
To explore the dual transformation implied by **P**, we'll look at the tval matrix [<7 1|, <15 2|], where again the bras signify that the tvals represent matrix rows. The first tval maps the first generator (for which 2/1 is a [[Transversal generators|transversal]]) to 7 steps and the second generator (for which 10/9 is a transversal) to 1 step, and similarly with the second tval. If we call this matrix **V**, then the result of **V*P** is the matrix | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[< 7 11 16 20 24|]</span>** | |||
**<span style="font-family: 'Courier New',Courier,monospace;">[<15 24 35 42 52|]</span>** | |||
for which the rows are the patent vals for [[7-EDO]] and [[15-EDO]], respectively. Since the dual transformation is injective, these vals can be interpreted as the full-limit vals which are implied by the <7 1| and <15 2| tvals. Additionally, since the image of the dual transformation is the set of vals supporting porcupine, and since the above two vals are linearly independent, the resulting matrix **V*P** is another valid mapping matrix for porcupine. We can confirm this by putting the matrix back into normal val list form and getting [<1 2 3 2 4|, <0 -3 -5 6 -4|] as a result again.</pre></div> | |||
<h4>Original HTML content:</h4> | <h4>Original HTML content:</h4> | ||
<div style="width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em"><pre style="margin:0px;border:none;background:none;word-wrap:break-word;width:200%;white-space: pre-wrap ! important" class="old-revision-html"><html><head><title>Temperament Mapping Matrices (M-maps)</title></head><body><!-- ws:start:WikiTextHeadingRule:0:&lt;h1&gt; --><h1 id="toc0"><a name="Basics"></a><!-- ws:end:WikiTextHeadingRule:0 -->Basics</h1> | <div style="width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em"><pre style="margin:0px;border:none;background:none;word-wrap:break-word;width:200%;white-space: pre-wrap ! important" class="old-revision-html"><html><head><title>Temperament Mapping Matrices (M-maps)</title></head><body><!-- ws:start:WikiTextHeadingRule:0:&lt;h1&gt; --><h1 id="toc0"><a name="Basics"></a><!-- ws:end:WikiTextHeadingRule:0 -->Basics</h1> | ||
The multiplicative group of | The multiplicative group of any set of rational numbers, which is an r-rank free abelian group, also naturally has the structure of being a Z-module. Thus, a <a class="wiki_link" href="/Regular%20Temperaments">regular temperament</a>, which is a group homomorphism <strong>T</strong>: J -&gt; K from the group J of JI rationals to a group K of tempered intervals, also has the structure of being a module homomorphism between Z-modules. This homomorphism can also be represented by a integer matrix, called a <strong>mapping matrix</strong> or <strong>mapping</strong> for the temperament. Since there is more than one type of mapping matrix which appears in music theory, it has also more rarely been called a &quot;monzo-map&quot; or <strong>M-map</strong> when context demands, as opposed to the <a class="wiki_link" href="/Subgroup%20Mapping%20Matrices%20%28V-maps%29">V-map</a> which is a mapping on vals.<br /> | ||
<br /> | |||
Assuming we use the convention that row matrices represent vals and column matrices represent monzos, then a matrix M is said to be a mapping matrix for a temperament T if and only if the null module of M consists of the kernel of T, M is of full row rank, and the rows of M generate a submodule which is <a class="wiki_link" href="/Saturation">saturated</a>. There is generally not a unique matrix M satisfying this definition for arbitrary temperament T, as for any M which is a valid mapping for T, any matrix U*M where U is unimodular will also be a valid mapping for T. The different mapping matrices obtainable in this way still temper out the same commas, but differ in the choice of basis for the tempered interval module.<br /> | |||
<br /> | |||
The column module of any mapping matrix is the module of T-tempered intervals, also known as the module of <a class="wiki_link" href="/tmonzos%20and%20tvals">tmonzos</a> for T. The row module of any mapping matrix for a temperament T is the submodule of all vals supporting T. Note also that this means that if T is of rank r, then a rank-r matrix in which the rows are r linearly independent vals supporting T and which form a saturated submodule of the module of vals will be a valid mapping for T.<br /> | |||
<br /> | |||
Note also that since all mapping matrices for T will have the same row module, we can easily check to see if two matrices represent the same temperament by checking to see if they generate the same <a class="wiki_link" href="/Normal%20lists#x-Normal%20val%20lists">normal val list</a>, or more generally if they have the same Hermite normal form.<br /> | |||
<br /> | |||
<!-- ws:start:WikiTextHeadingRule:2:&lt;h1&gt; --><h1 id="toc1"><a name="Dual Transformation"></a><!-- ws:end:WikiTextHeadingRule:2 -->Dual Transformation</h1> | |||
Any mapping matrix can be said to represent a linear map <strong>M:</strong> J -&gt; K, where J is a module of JI intervals and K is a module of tempered intervals. There is thus an associated dual transformation <strong>M*:</strong> K* -&gt; J*, where J* and K* are the dual modules to J and K, respectively. J* is the module of vals on J, and K* is the module of <a class="wiki_link" href="http://xenharmonic.wikispaces.com/tmonzos%20and%20tvals">tvals</a> on K, so <strong>M</strong>* represents a linear transformation mapping from tvals to vals. This mapping will generally be injective but not surjective; its image is the submodule of vals supporting the associated temperament, and no two tvals map to the same val.<br /> | |||
<br /> | |||
These two transformations correspond to different types of matrix multiplication: the ordinary transformation <strong>M</strong> corresponds to multiplication with the mapping on the left and a matrix whose columns are monzos on the right, and the dual transformation <strong>M</strong>* corresponds to multiplication with the mapping on the right and a matrix whose rows are tvals on the left.<br /> | |||
<br /> | |||
<!-- ws:start:WikiTextHeadingRule:4:&lt;h1&gt; --><h1 id="toc2"><a name="Example"></a><!-- ws:end:WikiTextHeadingRule:4 -->Example</h1> | |||
11-limit porcupine tempers out 55/54, 64/63, and 100/99, and is supported by the patent vals for <a class="wiki_link" href="/15-EDO">15-EDO</a> and <a class="wiki_link" href="/22-EDO">22-EDO</a>. Since these two vals form a saturated submodule of the module of 11-limit vals, then the matrix formed by setting the rows to these vals is a valid mapping matrix for porcupine:<br /> | |||
<br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[&lt;15 24 35 42 52|]</span></strong><br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[&lt;22 35 51 62 76|]</span></strong><br /> | |||
<br /> | |||
where the row vectors are still placed in bras as a notational device to signify that these are vals. If we put this in <a class="wiki_link" href="http://xenharmonic.wikispaces.com/Normal%20lists#x-Normal%20val%20lists">normal val list</a> form, we get<br /> | |||
<br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[&lt;1 2 3 2 4|]</span></strong><br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[&lt;0 -3 -5 6 -4|]</span></strong><br /> | |||
<br /> | |||
or, in shorthand, [&lt;1 2 3 2 4|, &lt;0 -3 -5 6 -4|]. We'll call this matrix <strong>P</strong>.<br /> | |||
<br /> | |||
<strong>Tempering an Interval</strong><br /> | |||
We'll now right-multiply <strong>P</strong> by the following matrix <strong>M</strong> of two monzos, representing 2/1 and 3/2:<br /> | |||
<br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[1 -1]</span></strong><br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[0 1]</span></strong><br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[0 0]</span></strong><br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[0 0]</span></strong><br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[0 0]</span></strong><br /> | |||
<br /> | |||
we can also write this matrix as<br /> | |||
<br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[| 1 0 0 0 0&gt;]</span></strong><br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[|-1 1 0 0 0&gt;]</span></strong><br /> | |||
<br /> | |||
or, in shorthand, [|1 0 0 0 0&gt;, |-1 1 0 0 0&gt;], where it's understood in both cases that the kets represent columns.<br /> | |||
<br /> | |||
The result of <strong>P</strong><strong>*M</strong> is the matrix [|1 0&gt;, |1 -3&gt;], telling us that 2/1 maps to the tmonzo |1 0&gt;, and that 3/2 maps to the tmonzo |1 -3&gt;. This tells us that 2/1 maps to one of the generators for porcupine and that 3/2 is made up of one 2/1 minus three of the other generator. It so happens that the other generator is 10/9, which maps to |0 1&gt;.<br /> | |||
<br /> | |||
We can use this technique to indeed confirm that 55/54, 64/63, and 100/99 form a basis for the null module of <strong>P</strong> by putting these intervals in monzo form as columns of a matrix <strong>N</strong>, which works out to be [|-1 -3 1 0 1&gt;, |6 -2 0 -1 0&gt;, |2 -2 2 0 -1&gt;]. If we then evaluate the product <strong>P*N</strong> we get the matrix [|0 0&gt;, |0 0&gt;, |0 0&gt;], meaning that all of these intervals map to the unison tmonzo. This confirms that the kernel of porcupine does indeed lie in the null module of <strong>P</strong>.<br /> | |||
<br /> | |||
<br /> | |||
<strong>The Dual Transformation</strong><br /> | |||
To explore the dual transformation implied by <strong>P</strong>, we'll look at the tval matrix [&lt;7 1|, &lt;15 2|], where again the bras signify that the tvals represent matrix rows. The first tval maps the first generator (for which 2/1 is a <a class="wiki_link" href="/Transversal%20generators">transversal</a>) to 7 steps and the second generator (for which 10/9 is a transversal) to 1 step, and similarly with the second tval. If we call this matrix <strong>V</strong>, then the result of <strong>V*P</strong> is the matrix<br /> | |||
<br /> | <br /> | ||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[&lt; 7 11 16 20 24|]</span></strong><br /> | |||
<strong><span style="font-family: 'Courier New',Courier,monospace;">[&lt;15 24 35 42 52|]</span></strong><br /> | |||
<br /> | <br /> | ||
<a class="wiki_link" href="/ | for which the rows are the patent vals for <a class="wiki_link" href="/7-EDO">7-EDO</a> and <a class="wiki_link" href="/15-EDO">15-EDO</a>, respectively. Since the dual transformation is injective, these vals can be interpreted as the full-limit vals which are implied by the &lt;7 1| and &lt;15 2| tvals. Additionally, since the image of the dual transformation is the set of vals supporting porcupine, and since the above two vals are linearly independent, the resulting matrix <strong>V*P</strong> is another valid mapping matrix for porcupine. We can confirm this by putting the matrix back into normal val list form and getting [&lt;1 2 3 2 4|, &lt;0 -3 -5 6 -4|] as a result again.</body></html></pre></div> | ||