M
Wie versprochen, hier der Quelltext für ein kleines Programm, das die kompletten Settings (Bulk-Dump) eines Yamaha-Keyboards per MIDI einliest - geschrieben für eine "SoundBlaster 16 Pro". (Das Device heißt übrigens /dev/midi, eventuell ist das aber auch nur ein Link auf /dev/sequencer - oder umgekehrt.)
/*
get_bulk_dump.c
Keyboard-Settings (Bulk Dump) einlesen
*/
# include <stdio.h>
int main(int argc, char *argv[])
{
int c, i;
FILE *in_stream, *out_stream;
if (argc == 1)
out_stream = stdout;
else
if ((argc == 2) && (strcmp(argv[1], "-h") != 0))
{
if ((out_stream=fopen(argv[1], "wb")) == NULL)
{
fprintf(stderr, "\n%s: Can't open output file '%s'.\n\n", argv[0], argv[1]);
return(5);
}
}
else
{
printf("Usage: %s [output-file]\n", argv[0]);
return(1);
}
if ((in_stream=fopen("/dev/midi", "rb")) == NULL)
{
fprintf(stderr, "\n%s: Can't open device '/dev/midi'.\n\n", argv[0]);
return(6);
}
i = 0;
fprintf(stderr, "\nPlease start bulk dump now!\n");
while((c=fgetc(in_stream)) != 0xf0);
fprintf(stderr, "Reading data...\n");
do
{
fputc(c, out_stream);
i++;
}
while((c=fgetc(in_stream)) != 0xf7);
fputc(c, out_stream);
fprintf(stderr, "%d bytes read.\n", i+1);
return(0);
}
Vielleicht hilft Dir das ja weiter.