#!/usr/bin/python3 # ==================================================================== # morse code sound on windows 10 # ==================================================================== # for more info: www.geeksforgeeks.org/play-sound-in-python/ # -------------------------------------------------------------------- # because of a problem with windows 10 and playground, # install an older version of playsound # pip3 uninstall playsound # pip3 install playsound==1.2.2 ## ------------------------------------------------------------------- # also install pydub # pip3 install pydub # ==================================================================== sos = '... --- ...' import os import sys from time import sleep from pydub import AudioSegment from playsound import playsound # ---- windows dit = os.path.dirname(__file__) + '.\morse_dit.wav' dah = os.path.dirname(__file__) + '.\morse_dah.wav' gap = os.path.dirname(__file__) + '.\morse_gap.wav' ##dit = '.\morse_dit.wav' ##dah = '.\morse_dah.wav' ##gap = '.\morse_gap.wav' # ---- linux/unix # #dit = os.path.dirname(__file__) + '/morse_dit.wav' #dah = os.path.dirname(__file__) + '/morse_dah.wav' #gap = os.path.dirname(__file__) + '/morse_gap.wav' #dit = './morse_dit.wav' #dah = './morse_dah.wav' #gap = './morse_gap.wav' # -------------------------------------------------------------------- # play dit/dah sounds # -------------------------------------------------------------------- def ditdah(s): for c in s: if c == '.': playsound(dit) #sleep(0.001) elif c == '-': playsound(dah) #sleep(0.001) elif c == ' ': playsound(gap) #sleep(0.001) else: sleep(0.01) # -------------------------------------------------------------------- # concatinate dit/dah wav files # -------------------------------------------------------------------- def sound_wav(s): sounds = None for c in s: if c == '.': aseg = AudioSegment.from_wav(dit) elif c == '-': aseg = AudioSegment.from_wav(dah) elif c == ' ': aseg = AudioSegment.from_wav(gap) else: continue if sounds is None: sounds = aseg else: sounds += aseg return sounds # -------------------------------------------------------------------- # ---- main # -------------------------------------------------------------------- sounds = sound_wav(sos) sounds.export('.\sounds.wav', format='wav') playsound('.\sounds.wav') # ---- another way #ditdah(sos)