Hola H. M. a vos que te gusta experimentar con sonido, prob� este programa
de efecto especi�l. Interesante no!
-------------------------------------------------------------------------
/*
* Sonido.c
* Para experimentar con sonido
* OSS/FREE
*/
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/soundcard.h>
#include<sys/ioctl.h>
#include<unistd.h>
#include<fcntl.h>
#include<errno.h>
#include<stdlib.h>
#define VELOZ 22050
/* Variable globales */
int manipulador=-1;
/*---------------------------*/
void ExitProc(void)
{
if(manipulador!=-1) close(manipulador);
}
int main(){
int i;
int setting=0x0003000C; /* 3 fragmentos de 4kb */
int canales=1; /* 0=mono 1=estereo */
int formato=AFMT_U8;
int rate=VELOZ;
unsigned char *data;
unsigned char *ptr;
unsigned char v=128;
if((manipulador=open("/dev/dsp",O_WRONLY))==-1){
perror("no abrir dsp");
return 1;
}
/* int atexit(void(*)(void)) manipulador de final de programa */
if(atexit(ExitProc)==-1){
ExitProc();
return 1;
}
if(ioctl(manipulador,SNDCTL_DSP_SETFRAGMENT,&setting)==-1){
perror("ioctl set");
return errno;
}
if(ioctl(manipulador,SNDCTL_DSP_STEREO,&canales)==-1){
perror("ioctl canales");
return errno;
}
if(ioctl(manipulador,SNDCTL_DSP_SETFMT,&formato)==-1){
perror("ioctl formato");
return errno;
}
if(ioctl(manipulador,SNDCTL_DSP_SPEED,&rate)==-1){
perror("ioctl rate(velocidad)");
return errno;
}
/* generaci�n de sonido */
data=(unsigned char*)malloc(VELOZ*2*2L);
ptr=data;
for(i=0;i<VELOZ;i++){
*ptr++=v++; /* diente de sierra canal izquierdo */
*ptr++=128; /* Silencio Canal derecho */
}
for(i=VELOZ;i<2*VELOZ;i++){
*ptr++=128;/* silencio derecho */
*ptr++=v++;/* diente de sierra canal derecho */
}
write(manipulador,data,VELOZ*4L);
if(ioctl(manipulador,SNDCTL_DSP_SYNC,&rate)==-1){
perror("ioctl sync");
return errno;
}
return 0;
}
-------------------------------------------------------------------------
Dr. Horacio Castellini, Dpto de F'isica, Facultad de Ingenier'ia,
Ciencias Exactas y Agrimensura, Pellegrini 250, 2000 Rosario
Argentina, Usuario Linux Registrado #53602
Correo-e:[EMAIL PROTECTED] ICQ: 52244442