M
xandl33 schrieb:
[...] oder, reicht es einfach die daten mittels read von dem entsprechenden /dev - device zu lesen?
Das geht natürlich auch. Es ist aber sinnvoll, vorher das Format (8/16 Bit, Mono/Stereo usw.) und die Samplingrate nach Wunsch einzustellen. Hier mal ein Beispielprogramm für die Aufnahme und Wiedergabe mit 22kHz 8Bit Mono:
/*
rec_play.c - Audio-Signal aufnehmen u. wiedergeben
*/
# include <stdio.h>
# include <unistd.h>
# include <fcntl.h>
# include <sys/ioctl.h>
# include <linux/soundcard.h>
# define NUM_SAMPLES 100000
unsigned char buffer[NUM_SAMPLES];
int main()
{
int fd, i, format=AFMT_U8;
long length;
char input[16];
fd = open("/dev/dsp", O_RDWR);
ioctl(fd, SNDCTL_DSP_SETFMT, &format);
i = 0;
ioctl(fd, SNDCTL_DSP_STEREO, &i);
i = 22050;
ioctl(fd, SNDCTL_DSP_SPEED, &i);
printf("Press <RETURN> to start recording. ");
fgets(input, 16, stdin);
length = read(fd, buffer, NUM_SAMPLES);
printf("Press <RETURN> to start playing. ");
fgets(input, 16, stdin);
write(fd, buffer, length);
close(fd);
return(0);
}