POTE tuning: Difference between revisions
Links for the side issue of pitch inflation. I think we're allowed to link to Wikipedia. I couldn't find a citation for the specific issue of pianos driving the pitch up although I believe this is the case. It doesn't matter either way for the usefulness of POTE |
ArrowHead294 (talk | contribs) m update shortcut |
||
| (4 intermediate revisions by 2 users not shown) | |||
| Line 4: | Line 4: | ||
== Motivation == | == Motivation == | ||
POTE is the same as TE in the limit of very small intervals. This means it is most similar to TE for intervals smaller than an octave, and most divergent for intervals of several octaves. As a tuning for the full audible range, the logic is that smaller intervals are more common in chords and so more important to optimize for. There are other ways to do this. POTE is the simplest way of prioritizing smaller intervals. | POTE is the same as TE in the limit of very small intervals. This means it is most similar to TE for intervals smaller than an octave, and most divergent for intervals of several octaves. As a tuning for the full audible range, the logic is that smaller intervals are more common in chords and so more important to optimize for. There are other ways to do this. POTE is the simplest way of prioritizing smaller intervals. | ||
| Line 16: | Line 15: | ||
== Weaknesses == | == Weaknesses == | ||
* POTE tuning inherits problems of TE in being chosen for mathematical simplicity rather than a sound psychoacoustic basis. | * POTE tuning inherits problems of TE in being chosen for mathematical simplicity rather than a sound psychoacoustic basis. | ||
* Like [[Kees height]], POTE agrees with TE for arbitrarily small intervals, which means it puts less emphasis on actually audible intervals, particularly those larger than an octave. This tendency is mediated by [[Constrained_tuning#CTWE_tuning|Constrained Tenney–Weil–Euclidean tuning]] | * Like [[Kees height]], POTE agrees with TE for arbitrarily small intervals, which means it puts less emphasis on actually audible intervals, particularly those larger than an octave. This tendency is mediated by [[Constrained_tuning#CTWE_tuning|Constrained Tenney–Weil–Euclidean tuning]] | ||
| Line 33: | Line 31: | ||
# Find the TE [[generator tuning map|generator map]] {{nowrap| ''G'' {{=}} ''J''<sub>''W''</sub>{{subsup|''V''|''W''|{{+}}}} }}, where {{nowrap| ''J''<sub>''W''</sub> {{=}} {{val| 1 1 1 1 }} }}. | # Find the TE [[generator tuning map|generator map]] {{nowrap| ''G'' {{=}} ''J''<sub>''W''</sub>{{subsup|''V''|''W''|{{+}}}} }}, where {{nowrap| ''J''<sub>''W''</sub> {{=}} {{val| 1 1 1 1 }} }}. | ||
# Find the TE [[tuning map]] {{nowrap| ''T'' {{=}} ''GV''<sub>''W''</sub> }}. | # Find the TE [[tuning map]] {{nowrap| ''T'' {{=}} ''GV''<sub>''W''</sub> }}. | ||
# Find the POTE generator map {{nowrap|''G''{{ | # Find the POTE generator map {{nowrap|''G''{{``}} {{=}} ''G''/''t''<sub>1</sub>}}; in other words ''G'' divided by the first entry of ''T''. | ||
If you carry out these operations, you should find | If you carry out these operations, you should find | ||
| Line 39: | Line 37: | ||
* ''V''<sub>''W''</sub> ~ {{mapping| 1.000 0 0.861 -0.356 | 0.000 3.155 0.431 4.274 }} | * ''V''<sub>''W''</sub> ~ {{mapping| 1.000 0 0.861 -0.356 | 0.000 3.155 0.431 4.274 }} | ||
* ''G'' ~ {{val| 1.000902 0.317246 }} | * ''G'' ~ {{val| 1.000902 0.317246 }} | ||
* ''G''{{ | * ''G''{{``}} ~ {{val| 1.000000 0.316960 }} | ||
The tuning of the POTE [[generator]] corresponding to the mapping ''V'' is therefore 0.31696 octaves, or 380.352 | The tuning of the POTE [[generator]] corresponding to the mapping ''V'' is therefore 0.31696 octaves, or 380.352{{c}}. Naturally, this only gives the single POTE generator in the rank-2 case, but the POTE tuning can still be found in this way for mappings defining higher-rank temperaments. The method can be generalized to subgroup temperaments, treating the formal prime represented by the first column as the [[equave]]. | ||
=== Computer program | === Computer program === | ||
Based on the [https://www.python.org/ Python] script in [[Tenney–Euclidean tuning #Computer program]], here is a variant that takes a mapping and gives POTE generators, using [https://scipy.org/ Scipy]. | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
| Line 50: | Line 48: | ||
from scipy import linalg | from scipy import linalg | ||
def | def te (mapping, subgroup_basis): | ||
just_tuning_map = np.log2 ( | just_tuning_map = 1200*np.log2 (subgroup_basis) | ||
te_weight = np.diag (1/np.log2 ( | te_weight = np.diag (1/np.log2 (subgroup_basis)) | ||
mapping_w = mapping @ te_weight | |||
just_tuning_map_w = just_tuning_map @ te_weight | |||
te_generators = linalg.lstsq (np.transpose ( | te_generators = linalg.lstsq (np.transpose (mapping_w), just_tuning_map_w)[0] | ||
te_tuning_map = te_generators @ mapping | te_tuning_map = te_generators @ mapping | ||
return te_generators, te_tuning_map | |||
pote_generators = te_generators/te_tuning_map[0] | |||
def pote (mapping, subgroup_basis): | |||
te_generators, te_tuning_map = te (mapping, subgroup_basis) | |||
pote_generators = te_generators/(te_tuning_map[0]/1200) | |||
pote_tuning_map = te_tuning_map/(te_tuning_map[0]/1200) | |||
return pote_generators, pote_tuning_map | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="python"> | |||
# taking 7-limit magic as an example ... | # taking 7-limit magic as an example ... | ||
mapping = np.array ([[1, 0, 2, -1], [0, 5, 1, 12]]) | |||
subgroup_basis = np.array ([2, 3, 5, 7]) | |||
# to find | # to find the POTE tuning you enter | ||
pote (mapping, subgroup_basis) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Output: | Output: | ||
<pre> | <pre> | ||
[ | [1200. , 380.35203249] | ||
[1200. | [1200. , 1901.76016243, 2780.35203249, 3364.22438984] | ||
</pre> | </pre> | ||