Talk:Marvel

From Xenharmonic Wiki
Revision as of 22:30, 15 January 2025 by Godtone (talk | contribs) (add reasonings based on decreasing error of odd-limits rather than consistency)
Jump to navigation Jump to search

Subheadings for scales

I suggest this although I realize that an extensive table of contents has a certain repellent effect on some readers. What do you think? --Xenwolf (talk) 09:42, 1 June 2021 (UTC)

They don't look quite different to me in this specific page. FloraC (talk) 13:43, 1 June 2021 (UTC)
In that case I'd consider it as a structural improvement. Thanks for stopping by to take a look. --Xenwolf (talk) 14:24, 1 June 2021 (UTC)

Challenge on optimality of 53edo for FloraC

53edo is consistent in the 7-limited 105-odd-limit except for two interval pairs (50/49 and 75/49 and their octave-complements). Can any other edo tuning of marvel even come close to this faithful of a representation of the 7-limit lattice? 72edo does better with only one inconsistent interval pair in the 125-odd-limit (128/125 and its octave-complement, unsurprisingly), but it's optimized for different things than just pure marvel. Similarly 41edo does even better in terms of consistency but it's clearly more overtempered than 72edo. I also don't believe that the inconsistency of 50/49 and 75/49 are particularly important, except for the damage on 7/5 and 10/7 which as far as I can tell is the only real flaw of 53edo's marvel.

Here is how every edo up to and including 240 which tempers out 225/224 with a consistent 9-odd-limit performs in the 105-odd-limit, which seems the largest 7-limited odd-limit that is reasonable to consider because 125 is obviously gonna cause inconsistencies in most tunings as 5 is the most tempered prime in marvel cuz of 32/25 = 9/7 and 7/6 = 75/64 among others.

>>> for edo in range(1,241): # using https://en.xen.wiki/w/User:Godtone#My_Python_3_code
...   if inconsistent_ivs_by_val(odd_lim(9),val(lim(7),ed(edo)))==[] and pval(S(15),ed(edo))==0:
...     print(edo,'EDO:',', '.join([ striv(x) for x in inconsistent_ivs_by_val( odd_lim(9,[],[15,21,25,27,35,45,49,63,75,81,105]), val(lim(7),ed(edo)) ) ])+'\n')
... 
12 EDO: 49/48, 49/45, 54/49, 81/70, 98/81, 60/49, 35/27, 64/49, 49/36, 72/49, 49/32, 54/35, 49/30, 81/49, 140/81, 49/27, 90/49, 96/49

19 EDO: 64/63, 49/48, 128/105, 49/40, 64/49, 49/32, 80/49, 105/64, 96/49, 63/32

22 EDO: 81/80, 50/49, 27/25, 25/21, 49/40, 100/81, 63/50, 81/64, 80/63, 98/75, 75/49, 63/40, 128/81, 100/63, 81/50, 80/49, 42/25, 50/27, 49/25, 160/81

29 EDO: 49/48, 36/35, 28/27, 25/24, 27/25, 49/45, 35/32, 54/49, 81/70, 75/64, 98/81, 128/105, 60/49, 100/81, 32/25, 35/27, 64/49, 49/36, 48/35, 112/81, 25/18, 36/25, 81/56, 35/24, 72/49, 49/32, 54/35, 25/16, 81/50, 49/30, 105/64, 81/49, 128/75, 140/81, 49/27, 64/35, 90/49, 50/27, 48/25, 27/14, 35/18, 96/49

31 EDO: 81/80, 81/70, 100/81, 81/64, 112/81, 81/56, 128/81, 81/50, 140/81, 160/81

41 EDO: 

50 EDO: 81/80, 64/63, 50/49, 21/20, 27/25, 81/70, 32/27, 128/105, 49/40, 100/81, 63/50, 81/64, 80/63, 64/49, 21/16, 27/20, 112/81, 45/32, 64/45, 81/56, 40/27, 32/21, 49/32, 63/40, 128/81, 100/63, 81/50, 80/49, 105/64, 27/16, 140/81, 50/27, 40/21, 49/25, 63/32, 160/81

53 EDO: 50/49, 98/75, 75/49, 49/25

60 EDO: 64/63, 49/48, 36/35, 25/24, 35/32, 54/49, 75/64, 128/105, 49/40, 32/25, 64/49, 21/16, 49/36, 48/35, 45/32, 64/45, 35/24, 72/49, 32/21, 49/32, 25/16, 80/49, 105/64, 128/75, 49/27, 64/35, 48/25, 35/18, 96/49, 63/32

72 EDO: 

82 EDO: 81/80, 36/35, 25/24, 27/25, 35/32, 54/49, 28/25, 81/70, 75/64, 25/21, 98/81, 128/105, 100/81, 63/50, 32/25, 35/27, 75/56, 48/35, 25/18, 36/25, 35/24, 112/75, 54/35, 25/16, 100/63, 81/50, 105/64, 81/49, 42/25, 128/75, 140/81, 25/14, 49/27, 64/35, 50/27, 48/25, 35/18, 160/81

84 EDO: 81/80, 49/48, 28/27, 49/45, 54/49, 81/70, 98/81, 60/49, 81/64, 35/27, 98/75, 49/36, 112/81, 81/56, 72/49, 75/49, 54/35, 128/81, 49/30, 81/49, 140/81, 49/27, 90/49, 27/14, 96/49, 160/81

91 EDO: 81/80, 64/63, 49/48, 16/15, 35/32, 75/64, 32/27, 128/105, 49/40, 81/64, 80/63, 32/25, 64/49, 21/16, 48/35, 45/32, 64/45, 35/24, 32/21, 49/32, 25/16, 63/40, 128/81, 80/49, 105/64, 27/16, 128/75, 64/35, 15/8, 96/49, 63/32, 160/81

94 EDO: 50/49, 25/24, 27/25, 28/25, 75/64, 25/21, 100/81, 63/50, 32/25, 98/75, 75/56, 25/18, 36/25, 112/75, 75/49, 25/16, 100/63, 81/50, 42/25, 128/75, 25/14, 50/27, 48/25, 49/25

113 EDO: 25/24, 35/32, 28/25, 75/64, 128/105, 32/25, 75/56, 48/35, 25/18, 45/32, 64/45, 36/25, 35/24, 112/75, 25/16, 105/64, 128/75, 25/14, 64/35, 48/25

125 EDO: 50/49, 49/45, 54/49, 28/25, 75/64, 98/81, 60/49, 56/45, 98/75, 75/56, 112/81, 81/56, 112/75, 75/49, 45/28, 49/30, 81/49, 128/75, 25/14, 49/27, 90/49, 49/25

144 EDO: 81/80, 64/63, 16/15, 35/32, 75/64, 32/27, 128/105, 56/45, 81/64, 32/25, 64/49, 75/56, 112/81, 45/32, 64/45, 81/56, 112/75, 49/32, 25/16, 128/81, 45/28, 105/64, 27/16, 128/75, 64/35, 15/8, 63/32, 160/81

166 EDO: 50/49, 25/24, 16/15, 15/14, 27/25, 49/45, 28/25, 75/64, 25/21, 128/105, 60/49, 56/45, 63/50, 32/25, 98/75, 75/56, 25/18, 45/32, 64/45, 36/25, 112/75, 75/49, 25/16, 100/63, 45/28, 49/30, 105/64, 42/25, 128/75, 25/14, 90/49, 50/27, 28/15, 15/8, 48/25, 49/25

197 EDO: 81/80, 64/63, 50/49, 28/27, 25/24, 16/15, 15/14, 49/45, 54/49, 28/25, 75/64, 32/27, 25/21, 98/81, 128/105, 60/49, 56/45, 81/64, 32/25, 98/75, 75/56, 112/81, 45/32, 64/45, 81/56, 112/75, 75/49, 25/16, 128/81, 45/28, 49/30, 105/64, 81/49, 42/25, 27/16, 128/75, 25/14, 49/27, 90/49, 28/15, 15/8, 48/25, 27/14, 49/25, 63/32, 160/81

--Godtone (talk) 21:57, 15 January 2025 (UTC)

Because the consistency argument may not be sufficiently convincing, here is optimal_edo_sequences (minimising the mean square cent error on the tonality diamond, with cent error deviations weighted by the square-root of the odd-limit of each interval, which is the most forgiving tuning fidelity that can be reasonable) for edos tempering out S15:

>>> [k for k in range(15,125,2) if len(fact_int(k))<=4]
[15, 21, 25, 27, 35, 45, 49, 63, 75, 81, 105]
>>> optimal_edo_sequence({1,3,5,7,9},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 31, 41, 53, 72, 125, 166]
>>> optimal_edo_sequence({1,3,5,7,9,15},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 22, 31, 41, 53, 72, 125, 166]
>>> optimal_edo_sequence({1,3,5,7,9,15,21},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 22, 29, 31, 41, 72, 113, 125, 166, 197]
>>> optimal_edo_sequence({1,3,5,7,9,15,21,25},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 31, 53, 72, 84, 156, 240]
>>> optimal_edo_sequence({1,3,5,7,9,15,21,25,35},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 22, 31, 53, 72, 84, 103, 156]
>>> optimal_edo_sequence({1,3,5,7,9,15,21,25,35,45},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 22, 31, 53, 72, 84, 125, 156, 281]
>>> optimal_edo_sequence({1,3,5,7,9,15,21,25,35,45,49},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 19, 22, 31, 72, 103, 175, 228] # 49 is bad in 53
>>> optimal_edo_sequence({1,3,5,7,9,15,21,25,35,45,49,63},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 22, 31, 41, 72, 156, 197] # 63 is not much better
>>> optimal_edo_sequence({1,3,5,7,9,15,21,25,35,45,49,63,75},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 22, 29, 31, 41, 72, 156, 197, 228] # 75 is okay in 53 so it starts to recover
>>> optimal_edo_sequence({1,3,5,7,9,15,21,25,35,45,49,63,75,81},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 31, 41, 53, 72, 113, 166] # 81 is very good in 53, so it recovers fully here
>>> optimal_edo_sequence({1,3,5,7,9,15,21,25,35,45,49,63,75,81,105},[edo for edo in range(1,312) if pval(S(15),ed(edo))==0])
[2, 9, 10, 12, 19, 22, 31, 41, 53, 72, 113, 125, 166]

Notice that we haven't put any constraints on over- or undertempering and 53edo still shows up everywhere except the 7-limited 49-, 63- and 75-odd-limit. 31 shows up everywhere simply by absence of good enough smaller competitors. 41edo takes a big enough hit from the overflat 25 that it doesn't recover until the 7-limited 63-odd-limit. By comparison, 125edo recovers faster from the hit from the flat 25. I also want to point out that 240edo is not only obviously way too many notes for marvel but also only appears a single time! I really doubt that 240edo is optimal in any meaningful sense. 197edo at least appears more frequently but still pretty rarely. By contrast, 156edo is apparently overlooked as a large edo marvel tuning, apppearing 5 times (7-limited odd-limits 25 thru 75 except for 49). 125edo and 166edo at least seem to agree with however you derived them being optimal. 84edo isn't so bad either because we know it satisfies the strict requirements, and it appears in the 7-limited 25- thru 45- odd-limits (and more generally, it appears in the optimal_edo_sequence for all full odd-limits 23 thru 51 and appears in the strict_optimal_edo_sequence (meaning identical except instead based on relative error instead of absolute, so that the list is a strict subset) for a lot of those too. --Godtone (talk) 22:30, 15 January 2025 (UTC)