Програмирование звука (sound example)
Ключевые слова: sound , example , (найти похожие документы )
_ RU.UNIX.LINUX (2:5077/15.22) _________________________________ RU.UNIX.LINUX _
From : Andrew B. Sapozhnikov 2:5020/400 18 Jan 99 18:47:28
Subj : Програмирование звука
________________________________________________________________________________
From: "Andrew B. Sapozhnikov" <[email protected] >
Ivan Lebedev wrote:
> День добрый всем кто это видит!
> Посоветует ли Всемогущий Олл, где взять литературу,
> разъясняющую вопросы управлениея звуковой картой.
> Как вообще под эхотагом генерируют звуки.
> А то находил лишь библиотеки для игрушек и исходники от mpg123.
> хочется книжку! В /dev/dsp уже дудю, а частоту дескритизации не могу
> настроить.
> И дудит она на 8 бит, а mpg123 дудит ту да же на 16!
#include <stdio.h>
#include <fcntl.h>
#include <sys/soundcard.h>
#define DSPDEVICE "/dev/dsp"
int main() {
int dsp, rate, realr, stereo, reals, formats, format;
dsp = open(DSPDEVICE,O_WRONLY,0);
if(dsp==-1) {
perror("open: " DSPDEVICE);
exit(1);
}
realr=rate=11025;
if(ioctl(dsp,SOUND_PCM_WRITE_RATE,&realr)==-1) {
perror("ioctl(SOUND_PCM_WRITE_RATE): " DSPDEVICE);
exit(1);
}
printf("NOTICE: I asked rate %i, and %i was set.\n",rate,realr);
reals=stereo=1;
if(ioctl(dsp,SNDCTL_DSP_STEREO,&reals)==-1) {
perror("ioctl(SNDCTL_DSP_STEREO): " DSPDEVICE);
exit(1);
}
printf("NOTICE: I asked %s, and %s was set.\n",
stereo?"stereo":"mono",
reals?"stereo":"mono");
if(ioctl(dsp,SNDCTL_DSP_GETFMTS,&formats)==-1) {
perror("ioctl(SNDCTL_DSP_GETFMTS): " DSPDEVICE);
exit(1);
}
printf("NOTICE: Device support formats:\n%s%s%s%s%s%s%s%s%s%s",
(formats&AFMT_MU_LAW)?"\tU-LAW\n":"",
(formats&AFMT_A_LAW)?"\tA-LAW\n":"",
(formats&AFMT_IMA_ADPCM)?"\tIMA-ADPCM\n":"",
(formats&AFMT_U8)?"\tUnsigned-8\n":"",
(formats&AFMT_S16_LE)?"\tSigned-16 (little-endian)\n":"",
(formats&AFMT_S16_BE)?"\tSigned-16 (big-endian)\n":"",
(formats&AFMT_S8)?"\tSigned-8\n":"",
(formats&AFMT_U16_LE)?"\tUnsigned-16 (little-endian)\n":"",
(formats&AFMT_U16_BE)?"\tUnsigned-16 (big-endian)\n":"",
(formats&AFMT_MPEG)?"\tMPEG-2\n":"");
format=0;
if((formats&AFMT_S16_LE)!=0) {
format=AFMT_S16_LE;
if(ioctl(dsp,SNDCTL_DSP_SETFMT,&format)==-1) {
perror("ioctl(SNDCTL_DSP_SETFMT): " DSPDEVICE);
exit(1);
}
if(format==AFMT_S16_LE)
printf("NOTICE: Signed 16-bit little-endian "
"was set.\n");
else {
printf("STRANGE: Cannot set mode S16_LE :-(\n");
format=0;
}
}
if (!format && (formats&AFMT_U8)!=0) {
format=AFMT_U8;
if(ioctl(dsp,SNDCTL_DSP_SETFMT,&format)==-1) {
perror("ioctl(SNDCTL_DSP_SETFMT): " DSPDEVICE);
exit(1);
}
if(format==AFMT_U8)
printf("NOTICE: Unsigned 8-bit was set.\n");
else
printf("STRANGE: Cannot set mode U8 :-(\n");
}
close(dsp);
return 0;
}
--- ifmail v.2.14dev2
* Origin: ICB (2:5020/400@fidonet)
1 , DRAHM (? ), 20:12, 20/11/2006 [ответить ]
+ /–
Ага всем достоиным привет!Я сразу в суть
делаю прог. на ASM(MSDOS) в защещеном режиме надо заставить работать встроенный 2-, 6- или 8-канальный звуковой контроллер RealTek ALC850(звук).Нужно описания портов(I/O),внутрених регистров и команд.Хотябы как стаким или подобным устройством работать.А то я че то колом стал! Заранее всем кто поможет от души душевно.