[LUG.ro] server del sonido
Horacio Castellini
lugro@lugro.org.ar
Mon, 4 Nov 2002 09:52:29 -0300 (ART)
--- Nico Rubiolo <nicorubiolo@arnet.com.ar> escribió:
> esto es lo q pasa cuando hago LSMOD
>
> bash-2.05a# lsmod
> Module Size Used by Not tainted
> audio 38400 0 (unused)
> usbcore 48000 0 [audio]
> soundcore 3236 0 (autoclean)
> [audio]
> pcmcia_core 40896 0
^^^^^^^^^^^^^Tenés una portatil?
> ide-scsi 7456 0
> 8139too 13792 1
> mii 1008 0 [8139too]
> bash-2.05a#
>
>
>
> si bien el modulo audio dice unused yo le he hecho
> modprobe audio pero no pasa nada (no se siesta bien)
> tambien fui al rc.modules y descomente unos del
> sound blaster q habia (eran los mas parecidos en
> compatibilidad)
>
> alguna idea?
Aca te faltan módulos compatibles con la soundblaster,
debería tener algo así
sb 9152 0 (unused)
sb_lib 40416 0 [sb]
uart401 7936 0 [sb_lib]
sound 72012 0 [sb_lib uart401]
soundcore 6692 4 [sb_lib sound]
Podés probar con el siguiente programa que pone a
prueba la targeta de sonido. Entonces con eso deja de
aparecer "unused" el módulo sb del soundblaster... en
mi caso.
-------------------------------------------------
#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;
}
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;
}
-------------------------------------------------
Ahora podés usar Yahoo! Messenger desde tu celular. Aprendé cómo hacerlo en Yahoo! Móvil: http://ar.mobile.yahoo.com/sms.html