Source code for tomita.legacy.mkfreq

##########################################################################
# Compute and print piano key frequency table
##########################################################################

from __future__ import division

pitchhz, keynum = {}, {}

keys_s = ("a", "a#", "b", "c", "c#", "d", "d#", "e", "f", "f#", "g", "g#")
keys_f = ("a", "bb", "b", "c", "db", "d", "eb", "e", "f", "gb", "g", "ab")
keys_e = ("a", "bb", "cb", "b#", "db", "d", "eb", "fb", "e#", "gb", "g", "ab")


[docs]def getfreq(pr=False): if pr: print("Piano key frequencies (for equal temperament):") print("Key number\tScientific name\tFrequency (Hz)") for k in range(88): freq = 27.5 * 2.0 ** (k / 12.0) oct = (k + 9) // 12 note = "%s%u" % (keys_s[k % 12], oct) if pr: print("%10u\t%15s\t%14.2f" % (k + 1, note.upper(), freq)) pitchhz[note] = freq keynum[note] = k note = "%s%u" % (keys_f[k % 12], oct) pitchhz[note] = freq keynum[note] = k note = "%s%u" % (keys_e[k % 12], oct) pitchhz[note] = freq keynum[note] = k return pitchhz, keynum
# construct filnames for Salamander piano samples sampfn = {} facs = 1, 2 ** (1 / 12), 2 ** (2 / 12) nam = "A", "C", "D#", "F#"
[docs]def getfn(layer): for k in range(88): oct = (k + 9) // 12 sampfn[k] = "%s%uv%u.wav" % (nam[(k // 3) % 4], oct, layer), facs[k % 3] return sampfn
# x = getfn() # for a in x: # print(a, x[a]) if __name__ == "__main__": pass