🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Adquision de audio

#14824
From: Manuel López Moreno
Date: Tue, 19 Sep 2000 00:00
77 lines
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-mail
References: <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