Clemens Ladisch <clemens@ladisch.de>:

- This adds an option to amidi not to ignore active sensing bytes.
This commit is contained in:
Takashi Iwai 2004-01-19 18:39:12 +00:00
parent 2ac2af4dfb
commit e24a1cb4f9
2 changed files with 21 additions and 6 deletions

View file

@ -1,4 +1,4 @@
.TH AMIDI 1 "27 Oct 2003"
.TH AMIDI 1 "18 Jan 2004"
.SH NAME
amidi \- read from and write to ALSA RawMIDI ports
@ -81,7 +81,9 @@ this will
create a Standard MIDI (.mid) file.
.B amidi
will filter out any Active Sensing bytes (FEh).
will filter out any Active Sensing bytes (FEh), unless the
.I -a
option has been given.
.TP
.I -S, --send-hex="..."
@ -90,7 +92,9 @@ Sends the bytes specified as hexadecimal numbers to the MIDI port.
.TP
.I -d, --dump
Prints data received from the MIDI port as hexadecimal bytes.
Active Sensing bytes (FEh) will not be shown.
Active Sensing bytes (FEh) will not be shown, unless the
.I -a
option has been given.
This option is useful for debugging.
@ -103,6 +107,11 @@ If this option has not been given, you must press Ctrl+C (or kill
.B amidi\fR)
to stop receiving data.
.TP
.I -a, --active-sensing
Does not ignore Active Sensing bytes (FEh) when saving or printing
received MIDI commands.
.SH EXAMPLES
.SS

View file

@ -76,7 +76,8 @@ static void usage(void)
"-S, --send-hex=\"...\" send hexadecimal bytes\n"
"-d, --dump print received data as hexadecimal bytes\n"
"-t, --timeout=seconds exits when no data has been received\n"
" for the specified duration\n");
" for the specified duration\n"
"-a, --active-sensing don't ignore active sensing bytes\n");
}
static void version(void)
@ -371,7 +372,7 @@ static void sig_handler(int dummy)
int main(int argc, char *argv[])
{
static char short_options[] = "hVlLp:s:r:S:dt:";
static char short_options[] = "hVlLp:s:r:S:dt:a";
static struct option long_options[] = {
{"help", 0, NULL, 'h'},
{"version", 0, NULL, 'V'},
@ -383,9 +384,11 @@ int main(int argc, char *argv[])
{"send-hex", 1, NULL, 'S'},
{"dump", 0, NULL, 'd'},
{"timeout", 1, NULL, 't'},
{"active-sensing", 0, NULL, 'a'},
{ }
};
int c, err, ok = 0;
int ignore_active_sensing = 1;
while ((c = getopt_long(argc, argv, short_options,
long_options, NULL)) != -1) {
@ -420,6 +423,9 @@ int main(int argc, char *argv[])
case 't':
timeout = atoi(optarg);
break;
case 'a':
ignore_active_sensing = 0;
break;
default:
error("Try `amidi --help' for more information.");
return 1;
@ -528,7 +534,7 @@ int main(int argc, char *argv[])
}
length = 0;
for (i = 0; i < err; ++i)
if (buf[i] != 0xfe) /* drop any active sensing bytes */
if (!ignore_active_sensing || buf[i] != 0xfe)
buf[length++] = buf[i];
if (length == 0)
continue;