def __init__(self, viewer, reload=None): viewer.send_flowing_data("(Listen to the audio!)\n") import audiodev self.device = p = audiodev.AudioDev() p.setoutrate(8000) p.setsampwidth(0) # Special: U-LAW p.setnchannels(1)
def main(): import getopt, string try: opts, args = getopt.getopt(sys.argv[1:], 'o:p:') except getopt.error: sys.stderr.write('Usage ' + sys.argv[0] + ' [ -o outfile ] [ args ] ...\n') sys.exit(1) dev = None for o, a in opts: if o == '-o': import aifc dev = aifc.open(a, 'w') dev.setframerate(44100) dev.setsampwidth(2) dev.setnchannels(1) if o == '-p': mkwave(string.atoi(a)) if not dev: import audiodev dev = audiodev.AudioDev() dev.setoutrate(44100) dev.setsampwidth(2) dev.setnchannels(1) dev.close = dev.stop dev.writeframesraw = dev.writeframes if args: line = string.join(args) else: line = sys.stdin.readline() while line: mline = morse(line) play(mline, dev) if hasattr(dev, 'wait'): dev.wait() if not args: line = sys.stdin.readline() else: line = '' dev.close()
def main(): import getopt try: opts, args = getopt.getopt(sys.argv[1:], 'o:p:') except getopt.error: sys.stderr.write('Usage ' + sys.argv[0] + ' [ -o outfile ] [ -p octave ] [ words ] ...\n') sys.exit(1) dev = None wave = defaultwave for o, a in opts: if o == '-o': import aifc dev = aifc.open(a, 'w') dev.setframerate(44100) dev.setsampwidth(2) dev.setnchannels(1) if o == '-p': wave = mkwave(int(a)) if not dev: import audiodev dev = audiodev.AudioDev() dev.setoutrate(44100) dev.setsampwidth(2) dev.setnchannels(1) dev.close = dev.stop dev.writeframesraw = dev.writeframes if args: source = [' '.join(args)] else: source = iter(sys.stdin.readline, '') for line in source: mline = morse(line) play(mline, dev, wave) if hasattr(dev, 'wait'): dev.wait() dev.close()
#! /usr/bin/env python
def main(): import getopt global verbose try: opts, args = getopt.getopt(sys.argv[1:], 'm:t:o:f:s:w:a:l:v') except getopt.error: sys.stderr.write( 'Usage ' + sys.argv[0] + ' [-m mode] [-t textfile] [-o wavefile] [-f morse_freq_hz] [-s sample_rate] [-w words_per_minute] [-a amplitude (0-32767)] [-l letter spacing % (100+)] [-v verbose] [ words ] ...\n' ) sys.exit(1) mode = DEF_MODE_LETTERS text_file = "" dev = None morse_freq_hz = DEF_MORSE_FREQ sample_rate = DEF_SAMPLE_RATE amplitude = DEF_AMPLITUDE words_per_min = DEF_WORDS_PER_MIN letter_spacing = DEF_LETTER_SPACING verbose = False # Check cmd line options for o, a in opts: if o == '-m': mode = a if o == '-t': text_file = a if o == '-o': # Wav file little endian import wave as filewave dev = filewave.open(a, 'w') if o == '-f': morse_freq_hz = float(a) if o == '-s': sample_rate = int(a) if o == '-w': words_per_min = int(a) if o == '-a': amplitude = int(a) if o == '-l': letter_spacing = int(a) if o == '-v': verbose = True if verbose: print("Mode =", mode) print("File =", dev) print("morse_freq_hz =", morse_freq_hz) print("sample_rate =", sample_rate) print("amplitude =", amplitude) print("words_per_min =", words_per_min) print("letter_spacing =", letter_spacing) txt = "" if mode != "": if mode == DEF_MODE_LETTERS: for x in range(30): txt += "".join( [random.choice(string.letters).upper() for i in xrange(5)]) + " " elif mode == DEF_MODE_DIGITS: for x in range(30): txt += "".join( [random.choice(string.digits) for i in xrange(5)]) + " " elif mode == DEF_MODE_MIXED: for x in range(30): txt += "".join( [random.choice(string.letters).upper() for i in xrange(5)]) + " " txt += "".join( [random.choice(string.digits) for i in xrange(5)]) + " " else: print("Invalid mode: " + mode) exit(1) if text_file != "": text_file = open(text_file, "w") text_file.write(txt) text_file.close() # If no device specified, try open audio device (on Linux, won't work on Mac/Win?) if not dev: import audiodev dev = audiodev.AudioDev() dev.setoutrate(sample_rate) dev.setsampwidth(2) dev.setnchannels(1) dev.close = dev.stop dev.writeframesraw = dev.writeframes # Get the words to be converted either from command line or stdin if args: source = [' '.join(args)] else: source = txt # source = iter(sys.stdin.readline, '') # Set file/dev sample rate & parameters dev.setparams((1, 2, sample_rate, 0, 'NONE', 'not compressed')) # Calculate speed of morse based on WPM (Dot Time = 1200 / WPM) dot_msecs = 1200 / words_per_min # Time in msecs a dot should take (25 wpm = 48 msecs) dot_samples = int(float(dot_msecs) / 1000 * sample_rate) dah_samples = 3 * dot_samples if verbose: print("dot_msecs =", dot_msecs) print("dot_samples =", dot_samples) print("dah_samples =", dah_samples) # CD - add space in front (time for squelch to open?) of 0.5s pause(dev, sample_rate / 2) # Play out morse for line in source: mline, vmline = morse(line) if verbose: print(vmline) play(mline, dev, morse_freq_hz, amplitude, sample_rate, dot_samples, dah_samples, letter_spacing) if hasattr(dev, 'wait'): dev.wait() dev.close()
def main(): import getopt global verbose try: opts, args = getopt.getopt(sys.argv[1:], 'o:f:s:w:a:l:v') except getopt.error: sys.stderr.write( 'Usage ' + sys.argv[0] + ' [-o outfile] [-f morse_freq_hz] [-s sample_rate] [-w words_per_minute] [-a amplitude (0-32767)] [-l letter spacing % (100+)] [-v verbose] [ words ] ...\n' ) sys.exit(1) dev = None morse_freq_hz = DEF_MORSE_FREQ sample_rate = DEF_SAMPLE_RATE amplitude = DEF_AMPLITUDE words_per_min = DEF_WORDS_PER_MIN letter_spacing = DEF_LETTER_SPACING verbose = False # Check cmd line options for o, a in opts: if o == '-o': # Wav file little endian import wave as filewave dev = filewave.open(a, 'w') if o == '-f': morse_freq_hz = float(a) if o == '-s': sample_rate = int(a) if o == '-w': words_per_min = int(a) if o == '-a': amplitude = int(a) if o == '-l': letter_spacing = int(a) if o == '-v': verbose = True if verbose: print "File =", dev print "morse_freq_hz =", morse_freq_hz print "sample_rate =", sample_rate print "amplitude =", amplitude print "words_per_min =", words_per_min print "letter_spacing =", letter_spacing # If no device specified, try open audio device (on Linux, won't work on Mac/Win?) if not dev: import audiodev dev = audiodev.AudioDev() dev.setoutrate(sample_rate) dev.setsampwidth(2) dev.setnchannels(1) dev.close = dev.stop dev.writeframesraw = dev.writeframes # Get the words to be converted either from command line or stdin if args: source = [' '.join(args)] else: source = iter(sys.stdin.readline, '') # Set file/dev sample rate & parameters dev.setparams((1, 2, sample_rate, 0, 'NONE', 'not compressed')) # Calculate speed of morse based on WPM (Dot Time = 1200 / WPM) dot_msecs = 1200 / words_per_min # Time in msecs a dot should take (25 wpm = 48 msecs) dot_samples = int(float(dot_msecs) / 1000 * sample_rate) dah_samples = 3 * dot_samples if verbose: print "dot_msecs =", dot_msecs print "dot_samples =", dot_samples print "dah_samples =", dah_samples # CD - add space in front (time for squelch to open?) of 0.5s pause(dev, sample_rate / 2) # Play out morse for line in source: mline, vmline = morse(line) if verbose: print vmline play(mline, dev, morse_freq_hz, amplitude, sample_rate, dot_samples, dah_samples, letter_spacing) if hasattr(dev, 'wait'): dev.wait() dev.close()
import audiodev import aifc sound = aifc.open("samples/sample.aiff", "r") player = audiodev.AudioDev() player.setoutrate(sound.getframerate()) player.setsampwidth(sound.getsampwidth()) player.setnchannels(sound.getnchannels()) bytes_per_frame = sound.getsampwidth() * sound.getnchannels() bytes_per_second = sound.getframerate() * bytes_per_frame while 1: data = sound.readframes(bytes_per_second) if not data: break player.writeframes(data) player.wait()