Article View: es.comp.os.linux.programacion
Article #17949Re: Grabar/Reproducir Sonido en Linux (C).
From: Manuel López Moreno
Date: Wed, 13 Oct 1999 00:00
Date: Wed, 13 Oct 1999 00:00
74 lines
2672 bytes
2672 bytes
NoP / Compiler wrote: > > Sobre todo este mensaje va dirigido a *puntero_loco, aunque si > alguien sabe del tema, y responde, mejor que mejor... El caso > es que quiero saber grabar y reproducir sonido en Linux. S� que > se hace usando ioctl, pero no tengo NPI de como se elige la > frecuencia de muestreo, 8/16 bits, mono/stereo, etc... > > �alguien me echa una mano? Remito un esquema de c�mo me mont� un programilla para reproducir/grabar sonido. 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 Los 44 bytes de la cabecera del wav sonar�n a un peque��iiiiiiiiiiisimo ruido :) P.D. M�rate el c�digo de wavplay. Suerte.
Technical Details
Message-ID:
<3804AB7F.6F2AA29F@mx2.redestb.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<380323E8.859EF57A@iname.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,42e4d2388b647d2f X-Google-Attributes: gidf86c8,public From: Manuel López Moreno <luname@mx2.redestb.es> Subject: Re: Grabar/Reproducir Sonido en Linux (C). Date: 1999/10/13 Message-ID: <3804AB7F.6F2AA29F@mx2.redestb.es> X-Deja-AN: 536289326 Content-Transfer-Encoding: 8bit References: <380323E8.859EF57A@iname.com> X-Accept-Language: es, ca, en Content-Type: text/plain; charset=iso-8859-1 Organization: Iddeo - Retevisi�n Mime-Version: 1.0 Newsgroups: es.comp.os.linux.programacion