# # Morse Code Generator (using .wav files) for Windows # # Copyright (c) 2008 Charles O'Neill # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. import winsound import time DIT, DAH = 0,1 code = { 'a': (DIT, DAH), 'b': (DAH, DIT, DIT, DIT), 'c': (DAH, DIT, DAH, DIT), 'd': (DAH, DIT, DIT), 'e': (DIT,), 'f': (DIT, DIT, DAH, DIT), 'g': (DAH, DAH, DIT), 'h': (DIT, DIT, DIT, DIT), 'i': (DIT, DIT), 'j': (DIT, DAH, DAH, DAH), 'k': (DAH, DIT, DAH), 'l': (DIT, DAH, DIT, DIT), 'm': (DAH, DAH), 'n': (DAH, DIT), 'o': (DAH, DAH, DAH), 'p': (DIT, DAH, DAH, DIT), 'q': (DAH, DAH, DIT, DAH), 'r': (DIT, DAH, DIT), 's': (DIT, DIT, DIT), 't': (DAH,), 'u': (DIT, DIT, DAH), 'v': (DIT, DIT, DIT, DAH), 'w': (DIT, DAH, DAH), 'x': (DAH, DIT, DIT, DAH), 'y': (DAH, DIT, DAH, DAH), 'z': (DAH, DAH, DIT, DIT), '0': (DAH, DAH, DAH, DAH, DAH), '1': (DIT, DAH, DAH, DAH, DAH), '2': (DIT, DIT, DAH, DAH, DAH), '3': (DIT, DIT, DIT, DAH, DAH), '4': (DIT, DIT, DIT, DIT, DAH), '5': (DIT, DIT, DIT, DIT, DIT), '6': (DAH, DIT, DIT, DIT, DIT), '7': (DAH, DAH, DIT, DIT, DIT), '8': (DAH, DAH, DAH, DIT, DIT), '9': (DAH, DAH, DAH, DAH, DIT), '.': (DIT, DAH, DIT, DAH, DIT, DAH), ',': (DAH, DAH, DIT, DIT, DAH, DAH), '?': (DIT, DIT, DAH, DAH, DIT, DIT), '!': (DIT, DIT, DAH, DAH, DIT), ':': (DAH, DAH, DAH, DIT, DIT, DIT) } def sendString(string): # Convert to all lowercase string = string.lower() # Decompose string to letters for i in string: sendLetter(i) interWordSpace() def sendLetter(letter): cipher = code.get(letter) if cipher: for keytap in cipher: interLetterSpace() if keytap == DIT: # dit dit() else: # dah dah() def dit(): winsound.PlaySound("dit.wav", winsound.SND_FILENAME) def dah(): winsound.PlaySound("dah.wav", winsound.SND_FILENAME) def interLetterSpace(): time.sleep(0.01) def interWordSpace(): time.sleep(0.6) # Example if __name__ == "__main__": sendString("abcdefghijklmnopqrstuvwxyz0123456789.,?!:") sendString("CQ CQ DE Charles 73")