diff --git a/test/001_highsnr_stdio_audio/test_multimode_tx.py b/test/001_highsnr_stdio_audio/test_multimode_tx.py index 61aa53aa..69da149a 100644 --- a/test/001_highsnr_stdio_audio/test_multimode_tx.py +++ b/test/001_highsnr_stdio_audio/test_multimode_tx.py @@ -20,24 +20,32 @@ parser = argparse.ArgumentParser(description='FreeDATA TEST') parser.add_argument('--bursts', dest="N_BURSTS", default=0, type=int) parser.add_argument('--framesperburst', dest="N_FRAMES_PER_BURST", default=0, type=int) parser.add_argument('--delay', dest="DELAY_BETWEEN_BURSTS", default=0, type=int) -parser.add_argument('--audiooutput', dest="AUDIO_OUTPUT", default=0, type=int) +parser.add_argument('--audiodev', dest="AUDIO_OUTPUT_DEVICE", default=-1, type=int, help="audio output device number to use") +parser.add_argument('--list', dest="LIST", action="store_true", help="list audio devices by number and exit") args = parser.parse_args() +if args.LIST: + p = pyaudio.PyAudio() + for dev in range(0,p.get_device_count()): + print("audiodev: ", dev, p.get_device_info_by_index(dev)["name"]) + quit() + N_BURSTS = args.N_BURSTS N_FRAMES_PER_BURST = args.N_FRAMES_PER_BURST DELAY_BETWEEN_BURSTS = args.DELAY_BETWEEN_BURSTS/1000 -AUDIO_OUTPUT_DEVICE = args.AUDIO_OUTPUT +AUDIO_OUTPUT_DEVICE = args.AUDIO_OUTPUT_DEVICE # AUDIO PARAMETERS AUDIO_FRAMES_PER_BUFFER = 2048 MODEM_SAMPLE_RATE = codec2.api.FREEDV_FS_8000 AUDIO_SAMPLE_RATE_TX = 48000 +assert (AUDIO_SAMPLE_RATE_TX % MODEM_SAMPLE_RATE) == 0 -if AUDIO_OUTPUT_DEVICE != 0: +if AUDIO_OUTPUT_DEVICE != -1: # pyaudio init p = pyaudio.PyAudio() stream_tx = p.open(format=pyaudio.paInt16, @@ -48,7 +56,7 @@ if AUDIO_OUTPUT_DEVICE != 0: output_device_index=AUDIO_OUTPUT_DEVICE, ) -modes = [14,10,12] +modes = [codec2.api.FREEDV_MODE_DATAC0, codec2.api.FREEDV_MODE_DATAC1, codec2.api.FREEDV_MODE_DATAC3] for m in modes: @@ -105,7 +113,7 @@ for m in modes: # check if we want to use an audio device or stdout - if AUDIO_OUTPUT_DEVICE != 0: + if AUDIO_OUTPUT_DEVICE != -1: # sample rate conversion from 8000Hz to 48000Hz audio = audioop.ratecv(txbuffer,2,1,MODEM_SAMPLE_RATE, AUDIO_SAMPLE_RATE_TX, None) diff --git a/test/codec2.py b/test/codec2.py index e51d25a9..a1777a9c 100644 --- a/test/codec2.py +++ b/test/codec2.py @@ -72,6 +72,9 @@ api.freedv_get_n_tx_modem_samples.restype = c_int api.FREEDV_FS_8000 = 8000 +api.FREEDV_MODE_DATAC1 = 10 +api.FREEDV_MODE_DATAC3 = 12 +api.FREEDV_MODE_DATAC0 = 14