Godtone
Joined 17 December 2020
→Isomorphic keyboard code for launchpads with programmer mode: fix argument options for manually specifying MIDI I/O names for Launchpad X for making backwards-compatible |
→My Python 3 code: add et_badness and optimal_edo_sequence |
||
| Line 1,289: | Line 1,289: | ||
map_iv(A,x)==gA*i%A[0] and map_iv(B,x)==gB*i%B[0] and cond(x,cent_err(x)) | map_iv(A,x)==gA*i%A[0] and map_iv(B,x)==gB*i%B[0] and cond(x,cent_err(x)) | ||
])) | ])) | ||
patent_vals = dict() | |||
def et_badness(ivs,v,badness=lambda rel_err,x,et2: rel_err,combine=lambda badnesses: sum(badnesses),et2=0): | |||
global patent_vals | |||
if type(v)==int: | |||
if v in patent_vals: | |||
v = patent_vals[v] | |||
else: | |||
v = val(lim(255),ed(v)) | |||
patent_vals[v[0]] = v | |||
num_args = badness.__code__.co_argcount | |||
badness4args = lambda rel_err,x,et2: 0 | |||
if num_args==1: | |||
badness4args = lambda rel_err,x,et2: badness(rel_err) | |||
elif num_args==2: | |||
badness4args = lambda rel_err,x,et2: badness(rel_err,x) | |||
elif num_args==3: | |||
badness4args = lambda rel_err,x,et2: badness(rel_err,x,et2) | |||
if not et2: | |||
et2 = 1/v[0] | |||
if type(ivs)==int: | |||
ivs = [(p,1) for p in lim(ivs)] | |||
elif type(ivs)==list: | |||
ivs = odd_lim(1,[],ivs) | |||
return combine([ badness(abs( map_iv(v,x) - steps(x,et2) ), x, et2) for x in ivs ]) | |||
def optimal_edo_sequence(edo_badness,up_to=311): | |||
best_edo = edo_badness(1) | |||
best_edos = [] | |||
for edo in range(2,up_to+1): | |||
current = edo_badness(edo) | |||
if current < best_edo: | |||
best_edo = current | |||
best_edos.append(edo) | |||
return best_edos | |||
</syntaxhighlight> | </syntaxhighlight> | ||