minimodem: --alsa selects ALSA at runtime
./configure now enables --with-pulseaudio and --with-alsa by default; either can be disabled. minimodem --alsa: uses ALSA at runtime instead of the default PulseAudio.
This commit is contained in:
parent
445156dfa0
commit
4b926d58bb
4
README
4
README
|
@ -1,10 +1,10 @@
|
||||||
minimodem - software audio Bell-type or RTTY FSK modem
|
minimodem - software audio Bell-type or RTTY FSK modem
|
||||||
Copyright (C) 2011 Kamal Mostafa <kamal@whence.com>
|
Copyright (C) 2011-2012 Kamal Mostafa <kamal@whence.com>
|
||||||
|
|
||||||
Minimodem is a command-line program which generates (or decodes) audio
|
Minimodem is a command-line program which generates (or decodes) audio
|
||||||
modem tones at any specified baud rate, emulating an old Bell-type or
|
modem tones at any specified baud rate, emulating an old Bell-type or
|
||||||
radio-teletype FSK modem. The tones can be played to (or recorded from)
|
radio-teletype FSK modem. The tones can be played to (or recorded from)
|
||||||
the PulseAudio system or to an audio file.
|
the system audio (PulseAudio or ALSA) or to an audio file.
|
||||||
|
|
||||||
Minimodem can be used to transfer data between nearby computers using an
|
Minimodem can be used to transfer data between nearby computers using an
|
||||||
audio cable (or just via sound waves), or between remote computers using
|
audio cable (or just via sound waves), or between remote computers using
|
||||||
|
|
|
@ -3299,13 +3299,12 @@ if test "${with_alsa+set}" = set; then :
|
||||||
withval=$with_alsa;
|
withval=$with_alsa;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$with_alsa" != "xyes"; then :
|
if test "x$with_alsa" == "xno"; then :
|
||||||
# then
|
# then
|
||||||
use_alsa=0
|
use_alsa=0
|
||||||
else
|
else
|
||||||
# else
|
# else
|
||||||
use_alsa=1
|
use_alsa=1
|
||||||
with_pulseaudio=no # For now, ALSA precludes pulseaudio
|
|
||||||
deps_packages+=" alsa"
|
deps_packages+=" alsa"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -36,12 +36,11 @@ deps_packages+=" fftw3f"
|
||||||
# ALSA
|
# ALSA
|
||||||
AC_ARG_WITH([alsa],
|
AC_ARG_WITH([alsa],
|
||||||
AS_HELP_STRING([--without-alsa], [build without ALSA support]))
|
AS_HELP_STRING([--without-alsa], [build without ALSA support]))
|
||||||
AS_IF([test "x$with_alsa" != "xyes"],
|
AS_IF([test "x$with_alsa" == "xno"],
|
||||||
# then
|
# then
|
||||||
use_alsa=0,
|
use_alsa=0,
|
||||||
# else
|
# else
|
||||||
use_alsa=1
|
use_alsa=1
|
||||||
with_pulseaudio=no # For now, ALSA precludes pulseaudio
|
|
||||||
deps_packages+=" alsa")
|
deps_packages+=" alsa")
|
||||||
AC_DEFINE_UNQUOTED(USE_ALSA, $use_alsa,
|
AC_DEFINE_UNQUOTED(USE_ALSA, $use_alsa,
|
||||||
[Define to 1 to enable ALSA support])
|
[Define to 1 to enable ALSA support])
|
||||||
|
|
|
@ -30,7 +30,7 @@ minimodem \- software audio Bell-type or RTTY FSK modem
|
||||||
is a command-line program which generates (or decodes) audio
|
is a command-line program which generates (or decodes) audio
|
||||||
modem tones at any specified baud rate, emulating an old Bell-type or
|
modem tones at any specified baud rate, emulating an old Bell-type or
|
||||||
radio-teletype FSK modem. The tones can be played to (or recorded from)
|
radio-teletype FSK modem. The tones can be played to (or recorded from)
|
||||||
the PulseAudio system or to an audio file.
|
the system audio (PulseAudio or ALSA) or to an audio file.
|
||||||
.PP
|
.PP
|
||||||
.B minimodem
|
.B minimodem
|
||||||
can be used to transfer data between nearby computers using an audio
|
can be used to transfer data between nearby computers using an audio
|
||||||
|
@ -71,6 +71,10 @@ encode or decode an audio file (extension sets audio format)
|
||||||
.B \-q, \-\-quiet
|
.B \-q, \-\-quiet
|
||||||
Do not report CARRIER / NOCARRIER or signal analysis metrics.
|
Do not report CARRIER / NOCARRIER or signal analysis metrics.
|
||||||
.TP
|
.TP
|
||||||
|
.B \-A, \-\-alsa
|
||||||
|
Use ALSA as the audio output system instead of the default
|
||||||
|
PulseAudio (depending on build configuration options).
|
||||||
|
.TP
|
||||||
.B \-V, \-\-version
|
.B \-V, \-\-version
|
||||||
print program version
|
print program version
|
||||||
.SH {baudmode}
|
.SH {baudmode}
|
||||||
|
|
|
@ -255,6 +255,7 @@ usage()
|
||||||
" -T, --txstopbits {m.n}\n"
|
" -T, --txstopbits {m.n}\n"
|
||||||
" -q, --quiet\n"
|
" -q, --quiet\n"
|
||||||
" -V, --version\n"
|
" -V, --version\n"
|
||||||
|
" -A, --alsa\n"
|
||||||
" {baudmode}\n"
|
" {baudmode}\n"
|
||||||
" 1200 : Bell202 1200 bps --ascii\n"
|
" 1200 : Bell202 1200 bps --ascii\n"
|
||||||
" 300 : Bell103 300 bps --ascii\n"
|
" 300 : Bell103 300 bps --ascii\n"
|
||||||
|
@ -283,6 +284,20 @@ main( int argc, char*argv[] )
|
||||||
float carrier_autodetect_threshold = 0.0;
|
float carrier_autodetect_threshold = 0.0;
|
||||||
float bfsk_confidence_threshold = 0.6;
|
float bfsk_confidence_threshold = 0.6;
|
||||||
|
|
||||||
|
simpleaudio * (*simpleaudio_open_system_audio)() = NULL;
|
||||||
|
|
||||||
|
/* configure the default system audio mechanism */
|
||||||
|
#if USE_PULSEAUDIO
|
||||||
|
simpleaudio_open_system_audio = simpleaudio_open_stream_pulseaudio;
|
||||||
|
#elif USE_ALSA
|
||||||
|
simpleaudio_open_system_audio = simpleaudio_open_stream_alsa;
|
||||||
|
#else
|
||||||
|
# define _MINIMODEM_NO_SYSTEM_AUDIO
|
||||||
|
# if !USE_SNDFILE
|
||||||
|
# error At least one of {USE_PULSEAUDIO,USE_ALSA,USE_SNDFILE} must be enabled!
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
program_name = strrchr(argv[0], '/');
|
program_name = strrchr(argv[0], '/');
|
||||||
if ( program_name )
|
if ( program_name )
|
||||||
program_name++;
|
program_name++;
|
||||||
|
@ -311,9 +326,10 @@ main( int argc, char*argv[] )
|
||||||
{ "space", 1, 0, 'S' },
|
{ "space", 1, 0, 'S' },
|
||||||
{ "txstopbits", 1, 0, 'T' },
|
{ "txstopbits", 1, 0, 'T' },
|
||||||
{ "quiet", 0, 0, 'q' },
|
{ "quiet", 0, 0, 'q' },
|
||||||
|
{ "alsa", 0, 0, 'A' },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
c = getopt_long(argc, argv, "Vtrc:a85f:b:M:S:T:q",
|
c = getopt_long(argc, argv, "Vtrc:a85f:b:M:S:T:qA",
|
||||||
long_options, &option_index);
|
long_options, &option_index);
|
||||||
if ( c == -1 )
|
if ( c == -1 )
|
||||||
break;
|
break;
|
||||||
|
@ -365,6 +381,14 @@ main( int argc, char*argv[] )
|
||||||
case 'q':
|
case 'q':
|
||||||
quiet_mode = 1;
|
quiet_mode = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'A':
|
||||||
|
#if USE_ALSA
|
||||||
|
simpleaudio_open_system_audio = simpleaudio_open_stream_alsa;
|
||||||
|
#else
|
||||||
|
fprintf(stderr, "E: This build of minimodem was configured without alsa support.\n");
|
||||||
|
exit(1);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
|
@ -372,26 +396,13 @@ main( int argc, char*argv[] )
|
||||||
if ( TX_mode == -1 )
|
if ( TX_mode == -1 )
|
||||||
TX_mode = 0;
|
TX_mode = 0;
|
||||||
|
|
||||||
#if !(USE_PULSEAUDIO || USE_ALSA || USE_SNDFILE)
|
|
||||||
#error At least one of {USE_PULSEAUDIO,USE_ALSA,USE_SNDFILE} must be enabled!
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (USE_PULSEAUDIO && USE_ALSA)
|
|
||||||
#error For now, only one of {USE_PULSEAUDIO,USE_ALSA} can be enabled (FIXME)!
|
|
||||||
#endif
|
|
||||||
#if USE_PULSEAUDIO
|
|
||||||
#define simpleaudio_open_system_audio simpleaudio_open_stream_pulseaudio
|
|
||||||
#elif USE_ALSA
|
|
||||||
#define simpleaudio_open_system_audio simpleaudio_open_stream_alsa
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( filename ) {
|
if ( filename ) {
|
||||||
#if !USE_SNDFILE
|
#if !USE_SNDFILE
|
||||||
fprintf(stderr, "E: This build of minimodem was configured without sndfile,\nE: so the --file flag is not supported.\n");
|
fprintf(stderr, "E: This build of minimodem was configured without sndfile,\nE: so the --file flag is not supported.\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
#ifndef simpleaudio_open_system_audio
|
#ifdef _MINIMODEM_NO_SYSTEM_AUDIO
|
||||||
fprintf(stderr, "E: this build of minimodem was configured without system audio support,\nE: so only the --file mode is supported.\n");
|
fprintf(stderr, "E: this build of minimodem was configured without system audio support,\nE: so only the --file mode is supported.\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
#endif
|
#endif
|
||||||
|
@ -507,11 +518,9 @@ main( int argc, char*argv[] )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef simpleaudio_open_system_audio
|
|
||||||
if ( ! sa_out )
|
if ( ! sa_out )
|
||||||
sa_out = simpleaudio_open_system_audio(SA_STREAM_PLAYBACK,
|
sa_out = simpleaudio_open_system_audio(SA_STREAM_PLAYBACK,
|
||||||
program_name, "output audio");
|
program_name, "output audio");
|
||||||
#endif
|
|
||||||
if ( ! sa_out )
|
if ( ! sa_out )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -537,11 +546,10 @@ main( int argc, char*argv[] )
|
||||||
if ( ! sa )
|
if ( ! sa )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#ifdef simpleaudio_open_system_audio
|
|
||||||
if ( ! sa )
|
if ( ! sa )
|
||||||
sa = simpleaudio_open_system_audio(SA_STREAM_RECORD,
|
sa = simpleaudio_open_system_audio(SA_STREAM_RECORD,
|
||||||
program_name, "input audio");
|
program_name, "input audio");
|
||||||
#endif
|
|
||||||
if ( !sa )
|
if ( !sa )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue