selcal/scripts/selcald/alphabet.py

50 lines
1.4 KiB
Python

from __future__ import print_function
class Alphabet:
TONES = dict({'Alpha': 312.6,
'Bravo': 346.7,
'Charlie': 384.6,
'Delta': 426.6,
'Echo': 473.2,
'Foxtrot': 524.8,
'Golf': 582.1,
'Hotel': 645.7,
'Juliette': 716.1,
'Kilo': 794.3,
'Lima': 881.0,
'Mike': 977.2,
'Papa': 1083.9,
'Quebec': 1202.3,
'Romeo': 1333.5,
'Sierra': 1479.1, })
def frequency(self, name='Alpha'):
try:
return Alphabet.TONES[name]
except KeyError:
for tone in Alphabet.TONES:
if str(tone[0]).upper() == str(name).upper():
return Alphabet.TONES[tone]
return None
def tone(self, frequency=TONES['Alpha'], accuracy=0.02):
for tone in Alphabet.TONES:
if abs((frequency / Alphabet.TONES[tone]) - 1) <= accuracy:
return tone
return None
if __name__ == "__main__":
x = Alphabet()
print(x.frequency())
print(x.frequency('Sierra'))
print(x.frequency('Foobar'))
print(x.frequency('H'))
print(x.tone(312.6))
print(x.tone(1479.1))
print(x.tone(500.0))
print(x.tone(500.0, 0.05))
print(x.tone(714.7))