User:Xenwolf/Python: Difference between revisions
Created page with "... just snippets ... <syntaxhighlight lang="python"> import math # formatted output integrated, default (5) is for step size def interval_size(steps, division, equave, digi..." |
→Generate EDO exposés: retailored function |
||
| (3 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
... just snippets ... | ... just snippets ... | ||
__TOC__ | |||
== Calculate ED step size == | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
import math | import math | ||
# formatted | # formatted size string | ||
def | def ed_interval_size(steps, division=12, equiv=2, digits=0): | ||
return | return f'{math.log(equiv, 2)/division*steps * 1200:.{digits}f}' | ||
# some examples | |||
print('1\\271 EDT --- ', ed_interval_size(1, 271, 3, 5)) | |||
print('1\\100 EDF --- ', ed_interval_size(1, 100, 3/2, 5)) | |||
print('1\\171 EDO --- ', ed_interval_size(1, 171, 2, 5)) | |||
</syntaxhighlight> | |||
The equivalence intervals are: | |||
* [[EDO]]: <code>equiv = 2</code> (octave) | |||
* [[EDF]]: <code>equiv = 3/2</code> (fifth) | |||
* [[EDT]]: <code>equiv = 3</code> (tritave) | |||
Output of above script: | |||
<pre> | |||
1\271 EDT --- 7.01828 | |||
1\100 EDF --- 7.01955 | |||
1\171 EDO --- 7.01754 | |||
</pre> | |||
== Generate EDO exposés == | |||
The following script creates most of the parameters for EDO info boxes, it can also be used as a module: | |||
<syntaxhighlight lang="python"> | |||
import math | |||
# step size in cents | |||
def ed_interval_size(steps, division=12, equiv=2): | |||
return math.log(equiv, 2)/division * steps * 1200 | |||
# format (most of) of XenWiki info box | |||
def edo_info(n): | |||
a = ed_interval_size(1, n, 2) | |||
p5s = round(n*math.log(3/2, 2)) | |||
p5c = round(p5s*1200/n) | |||
p5 = f'{p5s}\{n} ({p5c}¢)' | |||
M2s = (2*p5s) % n | |||
M2c = round(M2s*1200/n) | |||
M2 = f'{M2s}\{n} ({M2c}¢)' | |||
m2s = 3*n - 5*p5s | |||
m2c = round(m2s*1200/n) | |||
m2 = f'{m2s}\{n} ({m2c}¢)' | |||
A1s = M2s - m2s | |||
A1c = round(A1s*1200/n) | |||
A1 = f'{A1s}\{n} ({A1c}¢)' | |||
print(f'{n} EDO ') | |||
print(f'| Step size = {a:.5f}¢') | |||
print(f'| Fifth = {p5}') | |||
print(f'| Major 2nd = {M2}') | |||
print(f'| Minor 2nd = {m2}') | |||
print(f'| Augmented 1sn = {A1}') | |||
print() | |||
if __name__ == "__main__": | |||
# some EDO examples | |||
for n in range(1, 100): | |||
ed_expose(n) | |||
</syntaxhighlight> | </syntaxhighlight> | ||