コード例 #1
0
 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)
コード例 #2
0
ファイル: morse.py プロジェクト: carol8421/gosh
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()
コード例 #3
0
ファイル: morse.py プロジェクト: Greentwip/python27-uwp
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()
コード例 #4
0
#! /usr/bin/env python
コード例 #5
0
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()
コード例 #6
0
ファイル: morsegen.py プロジェクト: afkham/cwoip
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()
コード例 #7
0
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()