Temperament mapping matrix: Difference between revisions

From Xenharmonic Wiki
Jump to navigation Jump to search
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 07:36:02 UTC</tt>.<br>
: 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>355667144</tt>.<br>
: 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 p-limit rational numbers, which is an r-rank free abelian group, also naturally has the structure of being a Z-module. If one wants to admit the existence of monzos with [[Fractional monzos|fractional or real coefficients]], then this module becomes a vector space. Temperaments, which
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 -&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 **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.


can be embedded into an r-dimensional vector space or Z-module can be embedded into a vector space or
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.


[[Regular Temperaments|regular temperament]] can be represented</pre></div>
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 -&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 **M*:** 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 [[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:
 
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&lt;15 24 35 42 52|]&lt;/span&gt;**
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&lt;22 35 51 62 76|]&lt;/span&gt;**
 
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
 
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&lt;1 2 3 2 4|]&lt;/span&gt;**
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&lt;0 -3 -5 6 -4|]&lt;/span&gt;**
 
or, in shorthand, [&lt;1 2 3 2 4|, &lt;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:
 
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[1 -1]&lt;/span&gt;**
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[0 1]&lt;/span&gt;**
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[0 0]&lt;/span&gt;**
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[0 0]&lt;/span&gt;**
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[0 0]&lt;/span&gt;**
 
we can also write this matrix as
 
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[| 1 0 0 0 0&gt;]&lt;/span&gt;**
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[|-1 1 0 0 0&gt;]&lt;/span&gt;**
 
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.
 
The result of **P*****M** 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;.
 
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&gt;, |6 -2 0 -1 0&gt;, |2 -2 2 0 -1&gt;]. If we then evaluate the product **P*N** 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 **P**.
 
 
**The Dual Transformation**
To explore the dual transformation implied by **P**, 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 [[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
 
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&lt; 7 11 16 20 24|]&lt;/span&gt;**
**&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&lt;15 24 35 42 52|]&lt;/span&gt;**
 
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 &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 **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 [&lt;1 2 3 2 4|, &lt;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">&lt;html&gt;&lt;head&gt;&lt;title&gt;Temperament Mapping Matrices (M-maps)&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;!-- ws:start:WikiTextHeadingRule:0:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id="toc0"&gt;&lt;a name="Basics"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:0 --&gt;Basics&lt;/h1&gt;
<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">&lt;html&gt;&lt;head&gt;&lt;title&gt;Temperament Mapping Matrices (M-maps)&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;!-- ws:start:WikiTextHeadingRule:0:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id="toc0"&gt;&lt;a name="Basics"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:0 --&gt;Basics&lt;/h1&gt;
  The multiplicative group of p-limit rational numbers, which is an r-rank free abelian group, also naturally has the structure of being a Z-module. If one wants to admit the existence of monzos with &lt;a class="wiki_link" href="/Fractional%20monzos"&gt;fractional or real coefficients&lt;/a&gt;, then this module becomes a vector space. Temperaments, which&lt;br /&gt;
  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 &lt;a class="wiki_link" href="/Regular%20Temperaments"&gt;regular temperament&lt;/a&gt;, which is a group homomorphism &lt;strong&gt;T&lt;/strong&gt;: J -&amp;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 &lt;strong&gt;mapping matrix&lt;/strong&gt; or &lt;strong&gt;mapping&lt;/strong&gt; 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 &amp;quot;monzo-map&amp;quot; or &lt;strong&gt;M-map&lt;/strong&gt; when context demands, as opposed to the &lt;a class="wiki_link" href="/Subgroup%20Mapping%20Matrices%20%28V-maps%29"&gt;V-map&lt;/a&gt; which is a mapping on vals.&lt;br /&gt;
&lt;br /&gt;
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 &lt;a class="wiki_link" href="/Saturation"&gt;saturated&lt;/a&gt;. 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.&lt;br /&gt;
&lt;br /&gt;
The column module of any mapping matrix is the module of T-tempered intervals, also known as the module of &lt;a class="wiki_link" href="/tmonzos%20and%20tvals"&gt;tmonzos&lt;/a&gt; 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.&lt;br /&gt;
&lt;br /&gt;
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 &lt;a class="wiki_link" href="/Normal%20lists#x-Normal%20val%20lists"&gt;normal val list&lt;/a&gt;, or more generally if they have the same Hermite normal form.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id="toc1"&gt;&lt;a name="Dual Transformation"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;Dual Transformation&lt;/h1&gt;
Any mapping matrix can be said to represent a linear map &lt;strong&gt;M:&lt;/strong&gt; J -&amp;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 &lt;strong&gt;M*:&lt;/strong&gt; K* -&amp;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 &lt;a class="wiki_link" href="http://xenharmonic.wikispaces.com/tmonzos%20and%20tvals"&gt;tvals&lt;/a&gt; on K, so &lt;strong&gt;M&lt;/strong&gt;* 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.&lt;br /&gt;
&lt;br /&gt;
These two transformations correspond to different types of matrix multiplication: the ordinary transformation &lt;strong&gt;M&lt;/strong&gt; corresponds to multiplication with the mapping on the left and a matrix whose columns are monzos on the right, and the dual transformation &lt;strong&gt;M&lt;/strong&gt;* corresponds to multiplication with the mapping on the right and a matrix whose rows are tvals on the left.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id="toc2"&gt;&lt;a name="Example"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;Example&lt;/h1&gt;
11-limit porcupine tempers out 55/54, 64/63, and 100/99, and is supported by the patent vals for &lt;a class="wiki_link" href="/15-EDO"&gt;15-EDO&lt;/a&gt; and &lt;a class="wiki_link" href="/22-EDO"&gt;22-EDO&lt;/a&gt;. 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:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&amp;lt;15 24 35 42 52|]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&amp;lt;22 35 51 62 76|]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
where the row vectors are still placed in bras as a notational device to signify that these are vals. If we put this in &lt;a class="wiki_link" href="http://xenharmonic.wikispaces.com/Normal%20lists#x-Normal%20val%20lists"&gt;normal val list&lt;/a&gt; form, we get&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&amp;lt;1 2 3 2 4|]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&amp;lt;0 -3 -5 6 -4|]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
or, in shorthand, [&amp;lt;1 2 3 2 4|, &amp;lt;0 -3 -5 6 -4|]. We'll call this matrix &lt;strong&gt;P&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tempering an Interval&lt;/strong&gt;&lt;br /&gt;
We'll now right-multiply &lt;strong&gt;P&lt;/strong&gt; by the following matrix &lt;strong&gt;M&lt;/strong&gt; of two monzos, representing 2/1 and 3/2:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[1 -1]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[0 1]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[0 0]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[0 0]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[0 0]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
we can also write this matrix as&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[| 1 0 0 0 0&amp;gt;]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[|-1 1 0 0 0&amp;gt;]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
or, in shorthand, [|1 0 0 0 0&amp;gt;, |-1 1 0 0 0&amp;gt;], where it's understood in both cases that the kets represent columns.&lt;br /&gt;
&lt;br /&gt;
The result of &lt;strong&gt;P&lt;/strong&gt;&lt;strong&gt;*M&lt;/strong&gt; is the matrix [|1 0&amp;gt;, |1 -3&amp;gt;], telling us that 2/1 maps to the tmonzo |1 0&amp;gt;, and that 3/2 maps to the tmonzo |1 -3&amp;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&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
We can use this technique to indeed confirm that 55/54, 64/63, and 100/99 form a basis for the null module of &lt;strong&gt;P&lt;/strong&gt; by putting these intervals in monzo form as columns of a matrix &lt;strong&gt;N&lt;/strong&gt;, which works out to be [|-1 -3 1 0 1&amp;gt;, |6 -2 0 -1 0&amp;gt;, |2 -2 2 0 -1&amp;gt;]. If we then evaluate the product &lt;strong&gt;P*N&lt;/strong&gt; we get the matrix [|0 0&amp;gt;, |0 0&amp;gt;, |0 0&amp;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 &lt;strong&gt;P&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Dual Transformation&lt;/strong&gt;&lt;br /&gt;
To explore the dual transformation implied by &lt;strong&gt;P&lt;/strong&gt;, we'll look at the tval matrix [&amp;lt;7 1|, &amp;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 &lt;a class="wiki_link" href="/Transversal%20generators"&gt;transversal&lt;/a&gt;) 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 &lt;strong&gt;V&lt;/strong&gt;, then the result of &lt;strong&gt;V*P&lt;/strong&gt; is the matrix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
can be embedded into an r-dimensional vector space or Z-module can be embedded into a vector space or&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&amp;lt; 7 11 16 20 24|]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;[&amp;lt;15 24 35 42 52|]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a class="wiki_link" href="/Regular%20Temperaments"&gt;regular temperament&lt;/a&gt; can be represented&lt;/body&gt;&lt;/html&gt;</pre></div>
for which the rows are the patent vals for &lt;a class="wiki_link" href="/7-EDO"&gt;7-EDO&lt;/a&gt; and &lt;a class="wiki_link" href="/15-EDO"&gt;15-EDO&lt;/a&gt;, respectively. Since the dual transformation is injective, these vals can be interpreted as the full-limit vals which are implied by the &amp;lt;7 1| and &amp;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 &lt;strong&gt;V*P&lt;/strong&gt; is another valid mapping matrix for porcupine. We can confirm this by putting the matrix back into normal val list form and getting [&amp;lt;1 2 3 2 4|, &amp;lt;0 -3 -5 6 -4|] as a result again.&lt;/body&gt;&lt;/html&gt;</pre></div>

Revision as of 09:02, 31 July 2012

IMPORTED REVISION FROM WIKISPACES

This is an imported revision from Wikispaces. The revision metadata is included below for reference:

This revision was by author mbattaglia1 and made on 2012-07-31 09:02:25 UTC.
The original revision id was 355676710.
The revision comment was:

The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.

Original Wikitext content:

=Basics= 
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.

Original HTML content:

<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 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 />
<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 />
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>