Godtone (talk | contribs)
→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
Godtone (talk | contribs)
→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>