🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #12864

tarjeta de sonido en full-duplex

#12864
From: Alberto Hernando
Date: Tue, 08 May 2001 20:38
105 lines
3205 bytes
Hola.

Intento programar para procesar sonido en tiempo real y full duplex. Tengo 
este esbozo de c�digo, que s�lo pretende repetir por el altavoz lo que 
entra por el micro, sin ning�n procesado. Pero no me funciona. He le�do las 
indicaciones de OSS, pero no consigo lo que quiero. Mis nivel de 
programaci�n es bastante b�sico. Alguien me puede decir lo que falla?

        Gracias

#include <stdio.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <sys/soundcard.h>
#include <fcntl.h>


#define veces 100
#define buffer_size 1024

int dsp;
int enable_bits;
FILE *datos;
unsigned char valor[buffer_size];
int i,j,s;


char leer_dsp(int fs)
{

        dsp=open("/dev/dsp",O_RDWR,0);
        ioctl (dsp,SNDCTL_DSP_SETDUPLEX,0);
        /*printf ("dsp=%i\n",dsp);*/
        ioctl (dsp, SNDCTL_DSP_SAMPLESIZE, 8);
        ioctl (dsp, SNDCTL_DSP_CHANNELS, 1);
        ioctl (dsp, SNDCTL_DSP_SPEED, &fs);
        /*ioctl (dsp, SNDCTL_DSP_RESET, 0);*/

        read(dsp,valor,buffer_size);
        /*printf ("valor=%i\n",valor);*/
        /*printf("leo \n");*/

        close(dsp);


}

void escribir_dsp(int fs)
{

/* repito lo que acabo de grabar */
        dsp=open("/dev/dsp",O_RDWR,0);
        ioctl(dsp,SNDCTL_DSP_SETDUPLEX,0);
        /*printf ("dsp=%i\n",dsp);*/
        ioctl (dsp, SNDCTL_DSP_SAMPLESIZE, 8);
        ioctl (dsp, SNDCTL_DSP_CHANNELS, 1);
        ioctl (dsp, SNDCTL_DSP_SPEED, &fs);

        /*bloqueo la salida*/
        enable_bits= ~PCM_ENABLE_OUTPUT;
        ioctl(dsp, SNDCTL_DSP_SETTRIGGER, &enable_bits);

        /*escribo en el buffer de salida, pero no debe sonar*/
        printf("escribo bloqueado \n");
        write(dsp,valor,buffer_size);

        /*ahora permito que suene*/
        enable_bits= PCM_ENABLE_OUTPUT;
        ioctl(dsp,SNDCTL_DSP_SETTRIGGER,&enable_bits);
        printf ("desbloqueo y suena\n\n\n\n");

        close(dsp);

}

int main()
{

int fs=8000;

i=0;
s=1;

/*while (i<veces)*/
while (1)

{
        /*full duplex*/

        /* captura de datos */

        leer_dsp(fs);

        /* procesado */



        /* repito lo que acabo de grabar */

        escribir_dsp(fs);

}

        return 0;
}
Technical Details
Message-ID: <dfl9d9.in.ln@127.0.0.1>
Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!newsfeed.comtenidos.com!newsfeeder.wanadoo.es!127.0.0.1!nobody

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,47b3d91b5e09de63,start
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2001-05-08 11:51:05 PST
Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!newsfeed.comtenidos.com!newsfeeder.wanadoo.es!127.0.0.1!nobody
From: Alberto Hernando <alb.ertoQUITA@ESTOwanadoo.es>
Newsgroups: es.comp.os.linux.programacion
Subject: tarjeta de sonido en full-duplex
Date: Tue, 8 May 2001 20:38:05 +0000
Organization: Wanadoo
Lines: 107
Message-ID: <dfl9d9.in.ln@127.0.0.1>
NNTP-Posting-Host: 62-36-157-112.dialup.uni2.es
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit
X-Trace: m2wpersoisp01.wanadoo.es 989347270 28747 62.36.157.112 (8 May 2001 18:41:10 GMT)
X-Complaints-To: usenet@wanadoo.es
NNTP-Posting-Date: Tue, 8 May 2001 18:41:10 +0000 (UTC)
User-Agent: KNode/0.4