TAMNAMS/Appendix: Difference between revisions
Created page with "{{Main|TAMNAMS}} This page is an appendix to '''TAMNAMS'''. == Reasoning for step ratio names == ===Derivation of the step ratio names=== The idea is to start with the simp..." |
Moved section on how to find mos intervals to appendix page; algorithms may need to be verified to show that they work as intended |
||
| Line 175: | Line 175: | ||
Note that often the central spectrum will be sufficient for exploring a mos pattern-period combination, and the extended spectrum is intended more for (literally) edge cases where it may be useful. Often if a temperament interpretation doesn't seem to show up for a mos pattern-period combination, it just means the temperament needs a more complex mos pattern to narrow down the generator range. An example of this phenomena is the highly complex mos pattern of [[12L 17s]] represents near-Pythagorean tunings well due to having a generator of a fourth or a fifth bounded between those of [[12edo]] and those of [[29edo]], which are roughly equally off but in opposite directions, and many important near-Pythagorean systems show up in just the ratios of the central spectrum alone. | Note that often the central spectrum will be sufficient for exploring a mos pattern-period combination, and the extended spectrum is intended more for (literally) edge cases where it may be useful. Often if a temperament interpretation doesn't seem to show up for a mos pattern-period combination, it just means the temperament needs a more complex mos pattern to narrow down the generator range. An example of this phenomena is the highly complex mos pattern of [[12L 17s]] represents near-Pythagorean tunings well due to having a generator of a fourth or a fifth bounded between those of [[12edo]] and those of [[29edo]], which are roughly equally off but in opposite directions, and many important near-Pythagorean systems show up in just the ratios of the central spectrum alone. | ||
== Reasoning for mos interval names == | |||
===Reasoning for 0-indexed intervals=== | |||
Note that a unison is a 0-mosstep, rather than a mos1st; likewise, the term 1-mosstep is used rather than a mos2nd. One might be tempted to generalize diatonic 1-indexed ordinal names: ''In 31edo's ultrasoft [[mosh]] scale, the perfect mosthird (aka Pmosh3rd) is a neutral third and the major mosfifth (aka Lmosh5th) is a perfect fifth.'' The way intervals are named above (and in 12edo theory) has a problem. An interval that's n steps wide is named ''(n+1)th''. This means that adding two intervals is more complicated than it should be. Stacking two fifths makes a ninth, when naively it would make a tenth. We're used to this for the diatonic scale, but when dealing with unfamiliar scale structures, it can be very confusing. | |||
To overcome this, TAMNAMS uses a 0-indexed name system for non-diatonic mos intervals, which makes the arithmetic needed to understand mos intervals much smoother. Going up a 0-mosstep means to go up zero steps, and stacking two 4-mossteps produces an 8-mosstep, rather than stacking two mos5ths to produce a mos9th. The use of ordinal indexing is generally discouraged when referring to non-diatonic mos intervals. | |||
=== How to find mos interval sizes === | |||
To find what mos interval sizes are found in a mos, start with the patterns of large and small steps that represents the mos in its brightest mode and its darkest mode (which is the reverse pattern for the mos's brightest mode). The idea of [[Recursive structure of MOS scales|mos recursion]] may be of help with finding the generators of a mos. Likewise, the idea of modal brightness and [[Modal UDP notation|UDP]] may be of help for a mos's modes. | |||
Given the mos ''x''L ''y''s, the following algorithm is used to find the '''brightest mode''' for that mos. | |||
# If either ''x'' or ''y'' is equal to 1 (base cases): | |||
## If both ''x'' and ''y'' are equal to 1, then the final scale is "Ls". | |||
## If only ''x'' is equal to 1, then the final scale is L followed by ''y'' s's. | |||
## If only ''y'' is equal to 1, then the final scale is ''x'' L's followed by s. | |||
# If neither ''x'' nor ''y'' is equal to 1 (recursive cases): | |||
## Let ''k'' be the greatest common factor of ''x'' and ''y''. | |||
## If ''x'' and ''y'' share a common factor ''k'', where ''k'' is greater than 1, then recursively call this algorithm to find the scale for (''x''/''k'')L (''y''/''k'')s; the final scale will be (''x''/''k'')L (''y''/''k'')s duplicated ''k'' times. | |||
## If ''x'' and ''y'' don't share a common factor that is greater than 1 (if ''x'' and ''y'' are coprime), then: | |||
### Let ''m1'' = min(''x'', ''y'') and ''m2'' = max(''x'', ''y''). | |||
### Let ''z'' = ''m2'' mod ''m1'' and ''w'' = ''m1'' - ''z''. | |||
### Let ''prescale'' be the mos string for ''z''L ''w''s. Recursively call this algorithm to find the scale for ''z''L ''w''s; the final scale will be based on this. | |||
### If ''x'' < ''y'', reverse the order of characters in the prescale. This is only needed if there are more L's than s's in the final scale. | |||
### To produce the final scale, the L's and s's of the prescale must be replaced with substrings consisting of L's and s's. Let ''u'' = ceil(''m2''/''m1'') and ''v'' = floor(''m2''/''m1''). | |||
#### If ''x'' > ''y'', every instance of an L in ''prescale'' is replaced with one L and ''u'' s's, and every s replaced with one L and ''v'' s's. This produces the final scale in its brightest mode. | |||
#### If ''y'' > ''x'', every instance of an L in ''prescale'' is replaced with ''u'' L's and one s, and every s replaced with ''v'' L's and one s. This produces the final scale in its brightest mode. | |||
Using 3L 4s as an example, this is LsLsLss (brightest) and ssLsLsL (darkest). To find the large sizes of each ''k''-mosstep, consider the first ''k'' mossteps that make up the mos pattern for the brightest mode. Repeat this process with the mos pattern for the darkest mode to find each ''k''-mosstep's small size. To make these sizes more clear, we can denote the mos intervals as a sum of large and small steps ''i''L+''j''s, where ''i'' and ''j'' are the number of L's and s's in the interval's step pattern; this is to say that the order of L's and s's doesn't matter, rather the amount of each step size. The large and small sizes should differ by replacing one L in the large size with an s. | |||
{| class="wikitable" | |||
! rowspan="2" |Interval | |||
! colspan="2" |Large size (LsLsLss) | |||
! colspan="2" |Small size (ssLsLsL) | |||
|- | |||
!Step pattern | |||
!Sum | |||
! Step pattern | |||
!Sum | |||
|- | |||
| 0-mosstep (unison) | |||
|none | |||
|'''0''' | |||
|none | |||
|'''0''' | |||
|- | |||
|1-mosstep | |||
|L | |||
|'''L''' | |||
|s | |||
|'''s''' | |||
|- | |||
| 2-mosstep | |||
|Ls | |||
|'''L+s''' | |||
|ss | |||
|'''2s''' | |||
|- | |||
|3-mosstep | |||
| LsL | |||
|'''2L+s''' | |||
|ssL | |||
|'''1L+2s''' | |||
|- | |||
| 4-mosstep | |||
|LsLs | |||
|'''2L+2s''' | |||
|ssLs | |||
|'''1L+3s''' | |||
|- | |||
|5-mosstep | |||
|LsLsL | |||
|'''3L+2s''' | |||
|ssLsL | |||
|'''2L+3s''' | |||
|- | |||
| 6-mosstep | |||
|LsLsLs | |||
|'''3L+3s''' | |||
|ssLsLs | |||
|'''2L+4s''' | |||
|- | |||
|7-mosstep (octave) | |||
|LsLsLss | |||
|'''3L+4s''' | |||
|ssLsLsL | |||
|'''3L+4s''' | |||
|} | |||
Given the mos ''x''L ''y''s, the following algorithm is used to find the '''bright generator''' and its complement. | |||
# If either ''x'' or ''y'' is equal to 1 (base cases): | |||
## If both ''x'' and ''y'' are equal to 1, then the generator is "L" and its complement is "s". | |||
## If only ''x'' is equal to 1, then the generator is "L" followed by ''y-1'' s's, and the complement is "s". | |||
## If only ''y'' is equal to 1, then the generator is "L" and the complement is ''x-1'' L's followed by "s". | |||
# If neither ''x'' nor ''y'' is equal to 1 (recursive cases): | |||
## Let ''k'' be the greatest common factor of ''x'' and ''y''. | |||
## If ''x'' and ''y'' share a common factor ''k'', where ''k'' is greater than 1, then recursively call this algorithm to find the generator and complement for (''x''/''k'')L (''y''/''k'')s; the intervals returned this way will apply to the period rather than the octave. | |||
## If ''x'' and ''y'' don't share a common factor that is greater than 1 (if ''x'' and ''y'' are coprime), then: | |||
### Let ''m1'' = min(''x'', ''y'') and ''m2'' = max(''x'', ''y''). | |||
### Let ''z'' = ''m2'' mod ''m1'' and ''w'' = ''m1 - z''. | |||
### Let ''gen'' be the scale's generator and ''comp'' be the generator's octave complement for the mos ''z''L ''w''s. Recursively call this algorithm to find these intervals for ''z''L ''w''s; the final scale's generator and complement will be based on this. | |||
### If ''x'' < ''y'', reverse the order of characters in ''gen'' and ''comp'', then swap ''gen'' and ''comp''. This is only needed if there are more L's than s's in the scale. | |||
### To produce the scale's generator and complement, the L's and s's of both intervals must be replaced with substrings consisting of L's and s's. Let ''u'' = ceil(''m2''/''m1'') and ''v'' = floor(''m2''/''m1''). | |||
#### If ''x'' > ''y'', every instance of an L in both intervals is replaced with one L and ''u'' s's, and every s replaced with one L and ''v'' s's. This produces the final scale's generator and complement. | |||
#### If ''y'' > ''x'', every instance of an L in both intervals is replaced with ''u'' L's and one s, and every s replaced with ''v'' L's and one s. This produces the final scale's generator and complement. | |||
The length of ''gen'' is the number of mossteps for the bright generator, and the length of ''comp'' is the number of mossteps in the dark generator. For our example of 3L 4s, the algorithm returns the step pattern '''Ls''' as the bright generator and '''LsLss''' as its complement, which are 2 and 5 mossteps wide, respectively. Since the large size of a bright generator is perfect and its small size diminished, and the small size of a dark generator is perfect and its small size perfect, the scale's generators can be identified as shown in the table. | |||
{| class="wikitable" | |||
!Interval | |||
!Specific mos interval | |||
! Abbreviation | |||
!Interval size | |||
|- | |||
| 0-mosstep (unison) | |||
|Perfect unison | |||
|P0ms | |||
|0 | |||
|- | |||
| rowspan="2" |1-mosstep | |||
|Minor mosstep (or small mosstep) | |||
| m1ms | |||
|s | |||
|- | |||
|Major mosstep (or large mosstep) | |||
|M1ms | |||
| L | |||
|- | |||
| rowspan="2" |'''2-mosstep''' | |||
|Diminished 2-mosstep | |||
|d2ms | |||
|2s | |||
|- | |||
|'''Perfect 2-mosstep''' | |||
|P2ms | |||
|L+s | |||
|- | |||
| rowspan="2" |3-mosstep | |||
|Minor 3-mosstep | |||
|m3ms | |||
|1L+2s | |||
|- | |||
|Major 3-mosstep | |||
|M3ms | |||
|2L+s | |||
|- | |||
| rowspan="2" |4-mosstep | |||
|Minor 4-mosstep | |||
|m4ms | |||
|1L+3s | |||
|- | |||
|Major 4-mosstep | |||
|M4ms | |||
|2L+2s | |||
|- | |||
| rowspan="2" |'''5-mosstep''' | |||
|'''Perfect 5-mosstep''' | |||
|P5ms | |||
|2L+3s | |||
|- | |||
|Augmented 5-mosstep | |||
|A5ms | |||
|3L+2s | |||
|- | |||
| rowspan="2" |6-mosstep | |||
|Minor 6-mosstep | |||
|m6ms | |||
|2L+4s | |||
|- | |||
|Major 6-mosstep | |||
| M6ms | |||
|3L+3s | |||
|- | |||
|7-mosstep (octave) | |||
| Perfect octave | |||
|P7ms | |||
|3L+4s | |||
|} | |||
== Reasoning for mos pattern names == | == Reasoning for mos pattern names == | ||
The goal of TAMNAMS mos names is to choose memorable but aesthetically neutral names. | The goal of TAMNAMS mos names is to choose memorable but aesthetically neutral names. | ||