[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