diff options
Diffstat (limited to 'Mac/Demo/sound/morselib.py')
-rw-r--r-- | Mac/Demo/sound/morselib.py | 316 |
1 files changed, 158 insertions, 158 deletions
diff --git a/Mac/Demo/sound/morselib.py b/Mac/Demo/sound/morselib.py index 6f8eed6..98e2590 100644 --- a/Mac/Demo/sound/morselib.py +++ b/Mac/Demo/sound/morselib.py @@ -10,179 +10,179 @@ DOT = 30 DAH = 80 morsetab = { - 'a': '.-', - 'b': '-...', - 'c': '-.-.', - 'd': '-..', - 'e': '.', - 'f': '..-.', - 'g': '--.', - 'h': '....', - 'i': '..', - 'j': '.---', - 'k': '-.-', - 'l': '.-..', - 'm': '--', - 'n': '-.', - 'o': '---', - 'p': '.--.', - 'q': '--.-', - 'r': '.-.', - 's': '...', - 't': '-', - 'u': '..-', - 'v': '...-', - 'w': '.--', - 'x': '-..-', - 'y': '-.--', - 'z': '--..', - '0': '-----', - '1': '.----', - '2': '..---', - '3': '...--', - '4': '....-', - '5': '.....', - '6': '-....', - '7': '--...', - '8': '---..', - '9': '----.', - ',': '--..--', - '.': '.-.-.-', - '?': '..--..', - ';': '-.-.-.', - ':': '---...', - "'": '.----.', - '-': '-....-', - '/': '-..-.', - '(': '-.--.-', - ')': '-.--.-', # XXX same as code for '(' ??? - '_': '..--.-', - ' ': ' ' + 'a': '.-', + 'b': '-...', + 'c': '-.-.', + 'd': '-..', + 'e': '.', + 'f': '..-.', + 'g': '--.', + 'h': '....', + 'i': '..', + 'j': '.---', + 'k': '-.-', + 'l': '.-..', + 'm': '--', + 'n': '-.', + 'o': '---', + 'p': '.--.', + 'q': '--.-', + 'r': '.-.', + 's': '...', + 't': '-', + 'u': '..-', + 'v': '...-', + 'w': '.--', + 'x': '-..-', + 'y': '-.--', + 'z': '--..', + '0': '-----', + '1': '.----', + '2': '..---', + '3': '...--', + '4': '....-', + '5': '.....', + '6': '-....', + '7': '--...', + '8': '---..', + '9': '----.', + ',': '--..--', + '.': '.-.-.-', + '?': '..--..', + ';': '-.-.-.', + ':': '---...', + "'": '.----.', + '-': '-....-', + '/': '-..-.', + '(': '-.--.-', + ')': '-.--.-', # XXX same as code for '(' ??? + '_': '..--.-', + ' ': ' ' } def morsecode(s): - from string import lower - m = '' - for c in s: - c = lower(c) - if morsetab.has_key(c): - c = morsetab[c] + ' ' - else: - c = '? ' - m = m + c - return m + from string import lower + m = '' + for c in s: + c = lower(c) + if morsetab.has_key(c): + c = morsetab[c] + ' ' + else: + c = '? ' + m = m + c + return m class BaseMorse: - "base class for morse transmissions" - - def __init__(self): - "constructor" - self.dots = DOT - self.dahs = DAH - - def noise(self, duration): - "beep for given duration" - pass - - def pause(self, duration): - "pause for given duration" - pass - - def dot(self): - "short beep" - self.noise(self.dots) - - def dah(self): - "long beep" - self.noise(self.dahs) - - def pdot(self): - "pause as long as a dot" - self.pause(self.dots) - - def pdah(self): - "pause as long as a dah" - self.pause(self.dahs) - - def sendmorse(self, s): - for c in s: - if c == '.': self.dot() - elif c == '-': self.dah() - else: self.pdah() - self.pdot() - - def sendascii(self, s): - self.sendmorse(morsecode(s)) - - def send(self, s): - self.sendascii(s) + "base class for morse transmissions" + + def __init__(self): + "constructor" + self.dots = DOT + self.dahs = DAH + + def noise(self, duration): + "beep for given duration" + pass + + def pause(self, duration): + "pause for given duration" + pass + + def dot(self): + "short beep" + self.noise(self.dots) + + def dah(self): + "long beep" + self.noise(self.dahs) + + def pdot(self): + "pause as long as a dot" + self.pause(self.dots) + + def pdah(self): + "pause as long as a dah" + self.pause(self.dahs) + + def sendmorse(self, s): + for c in s: + if c == '.': self.dot() + elif c == '-': self.dah() + else: self.pdah() + self.pdot() + + def sendascii(self, s): + self.sendmorse(morsecode(s)) + + def send(self, s): + self.sendascii(s) import Audio_mac class MyAudio(Audio_mac.Play_Audio_mac): - def _callback(self, *args): - if hasattr(self, 'usercallback'): self.usercallback() - apply(Audio_mac.Play_Audio_mac._callback, (self,) + args) + def _callback(self, *args): + if hasattr(self, 'usercallback'): self.usercallback() + apply(Audio_mac.Play_Audio_mac._callback, (self,) + args) class MacMorse(BaseMorse): - "Mac specific class to play Morse code" - - def __init__(self): - BaseMorse.__init__(self) - self.dev = MyAudio() - self.dev.setoutrate(FRAMERATE) - self.dev.setsampwidth(SAMPWIDTH) - self.dev.setnchannels(1) - self.dev.usercallback = self.usercallback - sinewave = '' - n = int(FRAMERATE / BASEFREQ) - octave = OCTAVE - from math import sin, pi - for i in range(n): - val = int(sin(2 * pi * i * octave / n) * 0x7fff) - sample = chr((val >> 8) & 255) + chr(val & 255) - sinewave = sinewave + sample[:SAMPWIDTH] - self.sinewave = sinewave - self.silence = '\0' * (n*SAMPWIDTH) - self.morsequeue = '' - - def __del__(self): - self.close() - - def close(self): - self.dev = None - - def pause(self, duration): - self.dev.writeframes(self.silence * duration) - - def noise(self, duration): - self.dev.writeframes(self.sinewave * duration) - - def sendmorse(self, s): - self.morsequeue = self.morsequeue + s - self.dev.usercallback() - self.dev.usercallback() - self.dev.usercallback() - - def usercallback(self): - if self.morsequeue: - c, self.morsequeue = self.morsequeue[0], self.morsequeue[1:] - if c == '.': self.dot() - elif c == '-': self.dah() - else: self.pdah() - self.pdot() + "Mac specific class to play Morse code" + + def __init__(self): + BaseMorse.__init__(self) + self.dev = MyAudio() + self.dev.setoutrate(FRAMERATE) + self.dev.setsampwidth(SAMPWIDTH) + self.dev.setnchannels(1) + self.dev.usercallback = self.usercallback + sinewave = '' + n = int(FRAMERATE / BASEFREQ) + octave = OCTAVE + from math import sin, pi + for i in range(n): + val = int(sin(2 * pi * i * octave / n) * 0x7fff) + sample = chr((val >> 8) & 255) + chr(val & 255) + sinewave = sinewave + sample[:SAMPWIDTH] + self.sinewave = sinewave + self.silence = '\0' * (n*SAMPWIDTH) + self.morsequeue = '' + + def __del__(self): + self.close() + + def close(self): + self.dev = None + + def pause(self, duration): + self.dev.writeframes(self.silence * duration) + + def noise(self, duration): + self.dev.writeframes(self.sinewave * duration) + + def sendmorse(self, s): + self.morsequeue = self.morsequeue + s + self.dev.usercallback() + self.dev.usercallback() + self.dev.usercallback() + + def usercallback(self): + if self.morsequeue: + c, self.morsequeue = self.morsequeue[0], self.morsequeue[1:] + if c == '.': self.dot() + elif c == '-': self.dah() + else: self.pdah() + self.pdot() def test(): - m = MacMorse() - while 1: - try: - line = raw_input('Morse line: ') - except (EOFError, KeyboardInterrupt): - break - m.send(line) - while m.morsequeue: pass + m = MacMorse() + while 1: + try: + line = raw_input('Morse line: ') + except (EOFError, KeyboardInterrupt): + break + m.send(line) + while m.morsequeue: pass test() |