Normal forms: Difference between revisions
Cmloegcmluin (talk | contribs) corrections, adjustments, additional explanations and examples |
|||
| Line 23: | Line 23: | ||
There is some redundancy in the statement of these conditions, but that does no harm. | There is some redundancy in the statement of these conditions, but that does no harm. | ||
For more information, diagrams, an alternative articulation of the same definition, and comparisons with related integer matrix forms, see: [[ | For more information, diagrams, an alternative articulation of the same definition, and comparisons with related integer matrix forms, see: [[canonical form#HNF]]. | ||
== Normal val lists == | == Normal val lists == | ||
| Line 31: | Line 31: | ||
=== Canonical form === | === Canonical form === | ||
We may write a list of <span><math>k</math></span> vals as an <span><math>k×d</math></span> matrix, where the rows of the matrix are the vals, and <span><math>d</math></span> is the ''dimensionality'' of the system<ref>Calling the [https://en.wikipedia.org/wiki/Prime-counting_function prime-counting function], written π(x), on the prime limit will give us this number. For examples, π(2) = 1, π(3) = 2, π(5) = 3, π(7) = 4, π(11) = 5, etc.</ref>. To get the '''canonical form''', we do the following: | |||
# First, [[defactor]] it. | # First, [[defactor]] it. Note that if the matrix was not [https://en.wikipedia.org/wiki/Rank_(linear_algebra)#Main_definitions full-rank], this will result in the elimination of some rows. We now have an <span><math>r×d</math></span> matrix, with <span><math>r</math></span> rows where <span><math>r</math></span> is the ''rank''. | ||
# | # Then, put this result into HNF. | ||
For example, septimal meantone has the canonical form of | For example, septimal meantone has the canonical form of {{map|{{val|1 0 -4 -13}} {{val|0 1 4 10}}}}, corresponding to generators of ~2/1 and ~3/1. | ||
The key advantage of canonical form is its purity and simplicity. If your primary need is uniquely identifying temperaments, this is the ideal choice. The remaining normal forms each introduce further constraints on the sizes of the generators, which can be nice and convenient if that matters for your use case, but otherwise is unnecessary. | |||
For more information, see [[canonical form]]. | |||
=== Positive generator form === | === Positive generator form === | ||
| Line 151: | Line 154: | ||
The '''equave-reduced generator form''' is similar to the positive generator form, but the matrix is further normalized such that each generator is equave-reduced, where the [[equave]] can be found as the formal prime represented by the first ''column'' of the matrix (which is usually the octave). For more information, see: [[Octave reduction#Generalization]] | The '''equave-reduced generator form''' is similar to the positive generator form, but the matrix is further normalized such that each generator is equave-reduced, where the [[equave]] can be found as the formal prime represented by the first ''column'' of the matrix (which is usually the octave). For more information, see: [[Octave reduction#Generalization]] | ||
Consider the case of septimal meantone. As we know, its positive generator form is {{vector|{{map| 1 0 -4 -13 }} {{map| 0 1 4 10 }}}} which corresponds to generators of ~2/1 and ~3/1. In this case, as is typical, the formal prime represented by the first column of the matrix is 2, and so the equave is the octave. Therefore, all generators must be octave-reduced. But our second generator is ~3/1, which is not octave-reduced. We must alter the mapping in such a way that this row represents a generator of ~3/2 instead. We can do that here by adding the second row of the mapping to the first: {{vector|{{map| 1 1 0 -3 }} {{map| 0 1 4 10 }}}}. So that is septimal meantone's equave-reduced generator form, corresponding to generators of ~2/1 and ~3/2. | Consider the case of septimal meantone. As we know, its positive generator form is {{vector|{{map|1 0 -4 -13}} {{map|0 1 4 10}}}} which corresponds to generators of ~2/1 and ~3/1. In this case, as is typical, the formal prime represented by the first column of the matrix is 2, and so the equave is the octave. Therefore, all generators must be octave-reduced. But our second generator is ~3/1, which is not octave-reduced. We must alter the mapping in such a way that this row represents a generator of ~3/2 instead. We can do that here by adding the second row of the mapping to the first: {{vector|{{map|1 1 0 -3}} {{map|0 1 4 10}}}}. So that is septimal meantone's equave-reduced generator form, corresponding to generators of ~2/1 and ~3/2. | ||
Probably the most reliable way to achieve equave-reduced generator form in general, however, is not to work with JI preimages of the generators such as ~3/1 and ~3/2, which may not always be obvious or unambiguous, and which [[Transversal generators|can be tricky to find]]. Instead the Frobenius generators may be used, as described in the positive generator form section just above, and reduction can be accomplished by calling modulo on their cents. For example the transversal generators for the positive generator form of septimal meantone are 20253807/9765625 and 3/1, not 2/1 and 3/1, so it's not obvious that 20253807/9765625 is very close to 2/1 and it wouldn't be pleasant to reduce 3/1 by that. However in cents these are 1201.34 and 1898.56, so it's quite obvious there that you need to reduce 1898.56 by 1201.34 once to get it between 0 and 1201.34. | |||
For a general discussion of how to manipulate the sizes of generators in this way, see [[generator size manipulation]]. | For a general discussion of how to manipulate the sizes of generators in this way, see [[generator size manipulation]]. | ||
| Line 165: | Line 170: | ||
== Normal interval lists == | == Normal interval lists == | ||
A similar set of normal forms are defined for interval lists. | A similar set of normal forms are defined for interval lists. The canonical and positive forms parallel those for vals, however, the normal form defined for intervals which has "minimal" in its name is quite different conceptually than the normal form defined for vals which has "minimal" in its name. Also, there is no notion of an equave-reduced form for intervals. | ||
In the case of interval lists, the most common format they are presented in is as ratios, not vectors, e.g. [81/80, 64/63] rather than {{map|{{vector|-4 4 1 0}} {{vector|-6 2 0 1}}}}. So you may need to convert ratios to vectors and back when working with these forms. | |||
=== Canonical form === | === Canonical form === | ||
Given a | Given a matrix of ''p''-limit intervals, we can find its canonical form in much the same way as a mapping. The only difference is that the matrix must be antitransposed once at the beginning of the operation and once again at the end. For an example, see: [[canonical form#canonical comma-bases] | ||
# | |||
The set of elements of the original list generates a finitely generated free abelian subgroup of the positive rationals under multiplication, and therefore of any ''p''-limit group it lives inside. The normalized list contains a minimal set of ratios, in an ordering of nondecreasing prime limit which is parsimonious in its use of higher limits. For example, if we normalize [81/80, 126/125] we obtain [80/81, 57344/59049]. The first interval is 5-limit, which is as small as possible. The second is 7-limit, which must be the case because the group these two generate is 7-limit. However, it uses only 2, 3 and 7 in its prime factorization, parsimoniously rejecting 5 as the next highest prime limit. Because [[regular temperament]]s, where the prime mappings are known but not the specific tuning of the generators, are fully characterized by their kernel, the group of intervals they map to the unison, they can also be characterized by the regular interval list of a set of generators (called commas or unison vectors) for the kernel. The above normal interval list, for example, characterizes septimal meantone, defining the normal comma list of septimal meantone. | |||
Note that the canonical form of the comma list requires the list to be defactored. For example, both [25/27, 35/36] and [25/27, 49/48] characterize Beep. But the latter is enfactored, so the former is Beep's canonical form. | Note that the canonical form of the comma list requires the list to be defactored. For example, both [25/27, 35/36] and [25/27, 49/48] characterize Beep. But the latter is enfactored, so the former is Beep's canonical form. | ||
| Line 192: | Line 190: | ||
For example, the canonical form of meantone's comma-basis is {{map|{{vector|4 -4 1}}}}. HNF has ensured that the first number is positive. But the vector {{vector|4 -4 1}} represents the ratio 80/81, which is less than unity; it is still the meantone comma, but it is the meantone comma ''downward'' in pitch. | For example, the canonical form of meantone's comma-basis is {{map|{{vector|4 -4 1}}}}. HNF has ensured that the first number is positive. But the vector {{vector|4 -4 1}} represents the ratio 80/81, which is less than unity; it is still the meantone comma, but it is the meantone comma ''downward'' in pitch. | ||
Having negative commas like this can be surprising or confusing, and so the '''positive ratio form''' addresses this concern. To correct any negative comma, simply replace it with its reciprocal, by changing the signs on every number | Having negative commas like this can be surprising or confusing, and so the '''positive ratio form''' addresses this concern. To correct any negative comma, simply replace it with its reciprocal. In vector form, this can be done by changing the signs on every number; meantone can be put into positive ratio form as {{map|{{vector|-4 4 -1}}}}. | ||
The positive ratio form of septimal meantone is [81/80, 59049/57344] | The positive ratio form of septimal meantone is [81/80, 59049/57344] | ||
| Line 202: | Line 200: | ||
This is the form shown in the "comma lists" of each temperament on this wiki. | This is the form shown in the "comma lists" of each temperament on this wiki. | ||
= Maple code = | == Maple code == | ||
Below is [[Wikipedia: Maple (software)|Maple]] code for finding the normal interval and val list, given an interval list or a val list. Note that this code does not defactor, so it assumes your lists have already been defactored. | Below is [[Wikipedia: Maple (software)|Maple]] code for finding the normal interval and val list, given an interval list or a val list. Note that this code does not defactor, so it assumes your lists have already been defactored. | ||