Article View: es.comp.os.linux.programacion
Article #14824Re: Adquision de audio
From: Manuel López Moreno
Date: Tue, 19 Sep 2000 00:00
Date: Tue, 19 Sep 2000 00:00
77 lines
3058 bytes
3058 bytes
Tal d�a Tue, 19 Sep 2000 18:48:22 +0100, Jose Felix Hernandez <gcii03@fais.upm.es> nos relat�: > �Que libreria puedo utilizar para poder adquirir sonido desde una > aplicacion a traves del microfono? (a ser posible en C/C++) Lee este mensaje, a ver si te sirve: ================================================================= Message-ID: <3804AB7F.6F2AA29F@mx2.redestb.es> From: Manuel L�pez Moreno <luname@mx2.redestb.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: Grabar/Reproducir Sonido en Linux (C). Date: Wed, 13 Oct 1999 17:55:43 +0200 Es un c�digo bastante escueto. No hay control de errores ni refinamientos, s�lo el esquema m�nimo. #include <linux/soundcard.h> int fd; int frec, bits, canales; int n; char buffer[1024]; 1) Se abre el archivo/dispositivo de audio digital. Para reproducir, modo escritura; Para grabar, modo lectura. Aqu� figura como lectura/escritura. fd = open( "/dev/dsp", O_RDWR, 0 ); 2) Se configuran los par�metros frecuencia/bits/canales del dispositivo de audio digital. //--- Calidad CD frec = 44100; bits = 16; canales = 2; //--- Me suena :) que el orden de configuraci�n es importante :? ioctl( fd, SOUND_PCM_WRITE_CHANNELS, &canales ); ioctl( fd, SOUND_PCM_WRITE_BITS, &bits ); ioctl( fd, SOUND_PCM_WRITE_RATE, &frec); 3) El bucle principal de lectura/escritura. Para reproducir: // Lee desde la entrada est�ndar y lo escribe (reproduce) // en el dispositivo de audio. while ((n = read( 0, buffer, sizeof buffer )) > 0) write( fd, buffer, n ); Para grabar: // Lee (graba) desde el dispositivo de audio y lo escribe // en la salida est�ndar. while ((n = read( fd, buffer, sizeof buffer )) > 0) write( 1, buffer, n ); 4) Cerrar archivos y liberar memoria (para el buffer, si se hace con malloc). close( fd ); Una vez compilado (y depurados todos los errores :), se puede probar la reproducci�n de un wav (44100 Hz, 16 bits, est�reo) con: $ ./ejemplo < archivo_44100_16_2.wav ================================================================= -- Manuel L�pez Moreno O---m <http://www.linuxfan.com/~luname/pgp-key.asc> Visita: Web de ecol.* <http://www.linux-es.com/es.comp.os.linux.*/>
Technical Details
Message-ID:
<slrn8sfdab.1j9.luname@mantium.luname.net>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<39C7A6E6.C1D4F0EA@fais.upm.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,3b29efbf74d8499f X-Google-Attributes: gidf86c8,public From: luname@linuxfan.com (Manuel López Moreno) Subject: Re: Adquision de audio Date: 2000/09/19 Message-ID: <slrn8sfdab.1j9.luname@mantium.luname.net> X-Deja-AN: 671803987 Content-Transfer-Encoding: 8bit References: <39C7A6E6.C1D4F0EA@fais.upm.es> Content-Type: text/plain; charset=iso-8859-1 X-Complaints-To: abuse@wanadoo.es X-Trace: m2newsread.uni2.es 969402124 62.36.152.204 (Wed, 20 Sep 2000 00:22:04 MET DST) Organization: Servidor Usenet News de Uni2/Wanadoo Mime-Version: 1.0 User-Agent: slrn/0.9.6.2 (Linux) NNTP-Posting-Date: Wed, 20 Sep 2000 00:22:04 MET DST Newsgroups: es.comp.os.linux.programacion