El Sonido en LiNUX - COMO Jeff Tranter, jeff_tranter@mitel.com Traducido por Sergio Alonso Manzanedo sa.manzanedo@vll.ser­ vicom.es v1.14, 10 Junio 1996 Este documento describe el soporte de sonido para Linux. Enumera el hardware de sonido soportado, describe cómo configurar los drivers del núcleo y contesta a las preguntas más frecuentes. Intenta enseñar más rápido a los nuevos usuarios y reducir el gran tráfico en los grupos de noticias de Usenet. ______________________________________________________________________ Índice General: 1. Introducción. 1.1. Reconocimientos. 1.2. Nuevas versiones de este documento. 1.3. Sugerencias, críticas y comentarios. 1.4. Política de distribución. 2. Tecnología de la tarjeta de sonido. 3. Hardware soportado. 3.1. Tarjetas de sonido. 3.2. Drivers de sonido alternativos. 3.3. Altavoz del PC. 3.4. Puerto paralelo. 4. Instalación. 4.1. Instalar la tarjeta de sonido. 4.2. Configurar el núcleo. 4.3. Creando los ficheros de dispositivo. 4.4. Inicializando Linux y comprobando la instalación. 4.5. Resolución de problemas. 4.5.1. Punto 1: asegúrate de que realmente estás ejecutando el núcleo compilado. 4.5.2. Punto 2: asegúrate de que los drivers de sonido del núcleo están compilados en él. 4.5.3. Punto 3: ¿Detectó el núcleo tu tarjeta de sonido durante la inicialización? 4.5.4. Punto 4: ¿Puedes leer datos desde el dispositivo dsp ? 4.5.5. Punto 5: Cuando todo falla... :-( 5. Aplicaciones de soporte de sonido. 6. 6. FAQ. 6.1. ¿Cuáles son los ficheros de dispositivo de sonido? 6.2. ¿Cómo puedo reproducir una muestra de sonido? 6.3. ¿Cómo puedo grabar una muestra? 6.4. ¿Puedo tener más de una tarjeta de sonido? 6.5. Error: No such file or directory for sound devices 6.6. Error: No such device for sound devices 6.7. Error: No space left on device for sound devices 6.8. Error: device busy for sound devices 6.9. ¡Todavía tengo errores de dispositivo ocupado (device busy)! 6.10. Reproducción parcial de un fichero de sonido digitalizado. 6.11. Hay pausas cuando reproduzco ficheros MOD. 6.12. Tengo errores de compilación al compilar aplicaciones de sonido. 6.13. Tengo SEGV al ejecutar ficheros binarios que antes funcionaban. 6.14. ¿Qué errores conocidos o limitaciones hay en el driver de sonido? 6.15. ¿Qué significan todas las opciones de configuración del driver de sonido? 6.16. ¿Dónde están documentados los ioctls() del driver de sonido? 6.17. ¿Cúales son los recursos de la CPU necesarios para reproducir/grabar sin pausas? 6.18. Problemas con una PAS16 y un adaptador host Adaptec 1542 SCSI. 6.19. Problemas con el sintetizador FM de una SoundBlaster Pro 1. 6.20. ¿Es posible leer y escribir muestras simultáneamente? 6.21. Mi SB16 está puesta con un IRQ 2, pero la configuración no me deja usar este valor. 6.22. ¿Son soportadas la SoundBlaster AWE32 o la SoundBlaster16 ASP? 6.23. Si estoy en Linux y después inicio una sesión de DOS, tengo errores y/o las aplicaciones de sonido no funcionan correctamente. 6.24. Problemas ejecutando DOOM bajo Linux. 6.25. ¿Cómo puedo reducir el ruido recogido por mi tarjeta de sonido? 6.26. Puedo reproducir sonido, pero no puedo grabar. 6.27. Mi tarjeta de sonido "compatible" sólo funciona si primero la inicializo bajo MS-DOS. 6.28. Mi tarjeta de sonido "compatible" SoundBlaster 16-bit sólo funciona en el modo 8-bit bajo Linux 6.29. ¿Dónde puedo encontrar aplicaciones de sonido para Linux? 6.30. ¿Puede el driver de sonido ser compilado como módulo cargable? 6.31. ¿Puedo usar la tarjeta de sonido para sustituir el beep de la consola del sistema? 6.32. ¿Qué es VoxWare? 6.33. ¿Son soportadas las tarjetas de sonido Plug-and-Play? 6.34. Sox/Play/Vplay saca el mensaje "invalid block size 1024" 6.35. ¿Por qué el driver de sonido tiene su propio programa de configuración? 6.36. ¡Las opciones del mezclador son borradas cuando cargo el módulo del driver de sonido! 6.37. Solamente el root puede grabar sonido. 7. Referencias 8. Acerca de la traducción. 9. Anexo: El INSFLUG ______________________________________________________________________ 1. Introducción. Este es el documento Linux Sound HOWTO. Debe ser entendido como una guía de referencia rápida que cubre todo lo que necesitas saber para instalar y configurar el soporte de sonido bajo Linux. Se contestan las preguntas más frecuentes sobre el sonido en Linux, además de incluir referencias a otras fuentes de información sobre múltiples características relativas a la generación de sonido y música por ordenador. El alcance está limitado a los aspectos sobre las tarjetas de sonido relacionadas con Linux. Remítase a los otros documentos listados en la sección Referencias para información más general sobre tarjetas de sonido y generación de sonido y música por ordenador. 1.1. Reconocimientos. La mayor parte de esta información proviene de los ficheros README que vienen junto con el código fuente del driver de sonido, de Hannu Savolainen hannu@voxware.pp.fi. Doy las gracias a Hannu y toda esa gente que ha desarrollado los drivers de sonido del núcleo y todas las utilidades. Gracias al paquete Linuxdoc-SGML, este HOWTO está disponible en varios formatos, todos generados a partir de un mismo fichero fuente. 1.2. Nuevas versiones de este documento. Versiones nuevas de este documento serán enviadas periódicamente al grupo de noticias comp.os.linux.answers. También serán enviadas a varios ftp anónimos que archivan este tipo de información, incluyendo ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/. Versiones de hipertexto de éste y otros HOWTOs están disponibles en múltiples sites, incluyendo http://sunsite.unc.edu/mdw/mdw.html La mayoría de las distribuciones de Linux en formato CD-ROM incluyen los HOWTOs en el directorio /usr/doc/, aunque también los puedes comprar en formato impreso a muchos vendedores. Una traducción en francés de este documento está disponible en ftp://ftp.ibp.fr/pub2/linux/french/docs/HOWTO/. Una traducción en japonés de este documento está disponible en http://yebisu.ics.es.osaka-u.ac.jp/linux/. Una traducción en italiano de este documento está disponible en http://www.psico.unipd.it/ildp/docs/HOWTO/Sound-HOWTO.html. Si haces una traducción de este documento en otro lenguaje, comunícamelo y lo incluiré como una referencia en este apartado. 1.3. Sugerencias, críticas y comentarios. Confío que a tí, el usuario, este documento te sea de utilidad. Si tienes alguna sugerencia, corrección, o comentario, por favor envíamelos jeff_tranter@mitel.com, y trataré de incorporarlas en la próxima revisión. También estoy deseando contestar preguntas generales sobre tarjetas de sonido y Linux, tan bien como pueda. Antes de hacerlo, por favor lee toda la información de este HOWTO, y envíame información detallada sobre el problema. Si tú publicas este documento en un CD-ROM o impreso en papel, una copia complementaria será apreciada. Envíame un email para decirte mi dirección postal. Considera también hacer una donación al Linux Documentation Project para ayudar a soportar la libre documentación de Linux. Contacta con el coordinador de los HOWTO de Linux, Greg Hankins gregh@sunsite.unc.edu para más información. 1.4. Política de distribución. Copyright (C) 1996 Jeff Tranter. Este HOWTO es documentación libre; lo puedes redistribuir y/o modificar bajo los términos de la licencia pública general del GNU como publicó la Free Software Foundation. Este documento es distribuido con la esperanza de que será de utilidad, pero sin ninguna garantía. Puedes obtener una copia de la licencia pública general del GNU escribiendo a la Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 2. Tecnología de la tarjeta de sonido. Esta sección da unas nociones de tecnología de sonido en ordenador, para ayudarte a entender los conceptos usados más tarde en el documento. Debes consultar un libro de sonido digital o de proceso de señal digital para aprender más. El sonido es una propiedad analógica; puede tomar cualquier valor en un intervalo continuo. Los ordenadores son digitales; parece que trabajan con valores discretos. Las tarjetas de sonido usan un dispositivo conocido como convertidor analógico a digital (A/D o ADC) para convertir los voltajes correspondientes a las ondas de sonido analógico en valores digitales o numéricos los cuales pueden ser guardados en memoria. Similarmente un convertidor digital analógico (D/A o DAC) convierte valores numéricos en un voltaje analógico el cual puede ser reconducido a un altavoz, produciendo sonido. El proceso de conversión de analógico a digital, conocido como muestreo (sampling), introduce algunos errores. Dos factores son fundamentales en determinar con qué fidelidad la señal de muestra representa a la original. La frecuencia de muestreo (sampling rate) es el número de muestras hechas por unidad de tiempo (generalmente expresado en muestras por segundo o hertzios). Una frecuencia de muestreo baja genera una representación de menos calidad de la señal analógica. El tamaño de muestreo (sample size) es el rango de valores usados para representar cada muestra, generalmente expresado en bits. Cuanto mayor sea el tamaño de muestra de mayor calidad será la señal digital. Las tarjetas de sonido usan comúnmente muestras de 8 o de 16 bits y frecuencias de muestreo desde 4000 hasta 44000 muestras por segundo. Las muestras pueden estar contenidas en un canal (mono) o en dos (estéreo). La síntesis de FM es una técnica antigua para producir sonido. Se basa en combinar diferentes formas de onda (por ejemplo sinoidal, triangular, cuadrada). La síntesis de FM es más fácil de implementar en hardware que la conversión D/A, pero es más difícil de programar y menos flexible. Algunas tarjetas de sonido traen la síntesis de FM para conservar la compatibilidad con otras tarjetas y software anteriores. Generalmente se proporcionan varios generadores de sonido o voces. La síntesis de tabla de onda (WaveTable) combina la flexibilidad de la conversión D/A con la capacidad de múltiples canales de la síntesis de FM. Con este esquema las voces digitalizadas pueden ser cargadas en una memoria dedicada, y después reproducidas, combinadas, y modificadas con pocos recursos de la CPU. La mayoría de las tarjetas de sonido proporcionan la capacidad de mezclar, combinar señales de diferentes fuentes de entrada y controlar los niveles de ganancia. MIDI significa Musical Intrument Digital Interface (interfase digital para instrumentos musicales), y es el hardware estándar y el protocolo software que permite a los instrumentos musicales comunicarse con cualquier otro. Los eventos enviados a través de un bus MIDI también pueden ser guardados como ficheros MIDI para editarlos más tarde y reproducirlos. Algunas tarjetas de sonido traen un interfase MIDI. Las que todavía no pueden reproducir ficheros MIDI usan las capacidades de la placa de la tarjeta de sonido. Los ficheros MOD son un formato común para las canciones generadas por ordenador. Como información sobre las notas musicales a ser reproducidas los ficheros contienen muestras digitalizadas de los instrumentos (o voces). Los ficheros MOD son originarios de los ordenadores Amiga, pero pueden ser reproducidos en otros sistemas, incluyendo Linux, con el software adecuado. 3. Hardware soportado. Esta sección lista las tarjetas de sonido y los interfases que actualmente son soportados bajo Linux. Esta información está basada en los últimos núcleos de Linux. El driver de sonido tiene su propio número de versión. El último núcleo estable de Linux realizado hasta ahora era la versión 2.0, usando la versión 3.5.2-960330 del driver de sonido. El autor del driver de sonido, Hannu Savolainen, normalmente también realiza nuevas versiones beta del driver de sonido como parches del núcleo antes de que sean incluidas como parte de la distribución estándar del núcleo de Linux. Esta información sólo es válida para Linux en la plataforma Intel. Algo de información puede ser aplicable a otras arquitecturas de procesadores, pero yo no tengo experiencia o información de primera mano. 3.1. Tarjetas de sonido. Las siguientes tarjetas de sonido son soportadas por el driver de sonido del núcleo de Linux: · ATI Stereo F/X · AdLib · Ensoniq SoundScape (and compatibles made by Reveal and Spea) · Gravis Ultrasound · Gravis Ultrasound ACE · Gravis Ultrasound Max · Gravis Ultrasound with 16 bit sampling option · Logitech Sound Man 16 · Logitech SoundMan Games · Logitech SoundMan Wave · MAD16 Pro (OPTi 82C929) · Media Vision Jazz16 · MediaTriX AudioTriX Pro · Microsoft Windows Sound System (MSS/WSS) · Mozart (OAK OTI-601) · Orchid SW32 · Personal Sound System (PSS) · Pro Audio Spectrum 16 · Pro Audio Studio 16 · Pro Sonic 16 · Roland MPU-401 MIDI interface · Sound Blaster 1.0 · Sound Blaster 16 · Sound Blaster 16ASP · Sound Blaster 2.0 · Sound Blaster AWE32 · Sound Blaster Pro · TI TM4000M notebook · ThunderBoard · Turtle Beach Tropez · Yamaha FM synthesizers (OPL2, OPL3 and OPL4) · 6850 UART MIDI Interface Las siguientes tarjetas no son soportadas, bien porque son obsoletas, bien porque el fabricante no proporcionó la información de programación necesaria para escribir un driver: · Pro Audio Spectrum (original) · Pro Audio Spectrum+ · antiguas tarjetas (basadas en la Sierra Aria) fabricadas por Diamond Las tarjetas que usan el protocolo Plug and Play (enchufar y comenzar) no son actualmente soportadas, pero lo serán en el futuro. Otras tarjetas de sonido que son reclamadas de ser compatibles con alguna de las que sí que son soportadas deben funcionar si tienen hardware compatible (por ejemplo nivel de registro). Algunas tarjetas descritas como "100% compatibles con SoundBlaster" no son registradas como compatibles. Algunos consejos para obtener tarjetas compatibles que funcionen son dados más tarde en este documento. Si tienes una tarjeta que funciona y no está incluída en esta lista, házmelo saber y la añadiré a la misma. El núcleo de Linux soporta el puerto SCSI que viene en algunas tarjetas de sonido (por ejemplo en la ProAudioSpectrum 16) y el interfase de algunas unidades de CD-ROM (por ejemplo SoundBlaster Pro). Lea los documentos Linux SCSI HOWTO y CD-ROM HOWTO para más información. Un módulo del núcleo cargable para soportar puertos de juegos (joysticks), incluyendo los que vienen en algunas tarjetas de sonido, está también disponible. Notar que los drivers del núcleo, SCSI, CD-ROM y tarjeta de sonido son independientes unos de otros. Para obtener la última información del driver de la tarjeta de sonido, visita la página WWW de Savolainen listada en la sección de Referencias. 3.2. Drivers de sonido alternativos. Hay disponibles algunos drivers de sonido "no oficiales", no incluidos en la distribución estándar del núcleo de Linux, y usados en lugar del driver estándar de sonido. Markus Mummert (mum@mmk.e-technik.tu-muenchen.de) un paquete de drivers para las tarjetas Turtle Beach MultiSound (clásica), Tahiti y Monterey. La documentación afirma: "Está diseñado para la reproducción/grabación de alta calidad en disco duro sin perder sincronización alguna en un sistema ocupado. Otras características como la síntesis de ondas, MIDI y el procesador digital de señal no pueden ser usadas. Tampoco es posible la grabación y reproducción simultáneas. Actualmente reemplaza a VoxWare y ha sido probado en bastantes versiones de núcleos, desde la 1.0.9 hasta la 1.2.1. También se puede instalar en sistemas UN*X SysV386R3.2." Se puede encontrar en http://www.cs.colorado.edu/~mccreary/tbeach. Kim Burgaard (burgaard@daimi.aau.dk) ha escrito un driver de dispositivo y utilidades para el interfase MIDI de la Roland MPU-401. El acceso al mapa de software Linux da esta descripción: "Un driver de dispositivo para los interfases MIDI de la Roland MPU-401 (incluyendo Roland SCC-1 y RAP-10/ATW-10). Le acompaña una importante colección de utilidades, incluyendo un reproductor y grabador de ficheros estándar MIDI. Han sido hechos numerosos avances desde la versión 0.11a. entre otras cosas, el driver incorpora ahora la política de compartición de IRQ y cumple con el nuevo módulo interfase del núcleo. Funcionabilidad metrónoma, posibilidad de sincronización (por ejemplo gráficos por golpes de bases sin perder precisión), interfase avanzado de reproducción/grabación y mucho, mucho más." Se puede encontrar en ftp://sunsite.unc.edu/pub/Linux/kernel/sound/mpu-401-0.2.tar.gz 3.3. Altavoz del PC. Un driver alternativo de sonido está disponible y no requiere hardware adicional de sonido (usa el altavoz interno del PC). Es compatible con la mayoría del software del driver de la tarjeta de sonido, pero como era de esperar, ofrece una salida de mucha peor calidad y consume muchos recursos de la CPU. Los resultados pueden variar dependiendo de las características internas del altavoz. Para más información, lea la documentación que acompaña a su versión. La versión actual es la 0.9b y se puede encontrar en ftp://ftp.informatik.hu-berlin.de/pub/os/linux/hu-sound 3.4. Puerto paralelo. Otra opción es hacer un conversor digital->analógico usando el puerto paralelo de la impresora y algunos componentes adicionales. Éste genera una mejor calidad de sonido que el altavoz interno, pero consume todavía más recursos del sistema. El paquete del driver de sonido del PC menciona por encima el soporte de esto, e incluye las instrucciones para construir el hardware necesario. 4. Instalación. Configurar Linux para que soporte sonido implica los siguientes pasos: 1. Instalar la tarjeta de sonido. 2. Configurar y construir el núcleo para que soporte sonido. 3. Crear los ficheros de dispositivo. 4. Bootear el núcleo Linux y comprobar la instalación. La siguiente sección cubre cada uno de estos pasos en detalle. 4.1. Instalar la tarjeta de sonido. Sigue las instrucciones del fabricante para instalar el hardware o encárgaselo a tu vendedor. 4.2. Configurar el núcleo. Cuando inicialmente instalas Linux, estás usando el núcleo precompilado. estos núcleos generalmente no soportan sonido. Lo mejor es recompilar el núcleo con los drivers que necesites. También puedes queres recompilar el núcleo para actualizar hacia una nueva versión o para liberar recursos de memoria minimizando el tamaño del mismo. El Linux Kernel HOWTO Linux Kernel HOWTO puede ser consultado para más detalles en la construcción del núcleo. Sólo mencionaré los aspectos que son específicos a las tarjetas de sonido. Si nunca has configurado el núcleo para soporte de sonido, es una buena idea leer todos los ficheros Readme incluidos con los drivers de sonido del núcleo, particularmente aquellos que se refieren a tu tipo de tarjeta. Los siguientes ficheros de documentación se pueden encontrar en el directorio de sonido del núcleo, generalmente instalado en /usr/src/linux/drivers/sound: CHANGELOG - Descripción de los cambios en cada versión. COPYING - Restricciones de copia y copyright. Readme - Últimas y más importantes noticias. Readme.aedsp16 - Información sobre la tarjeta Audio Excel DSP 16. Readme.cards - Notas de configuración de tarjetas específicas. Readme.linux - Notas de instalación separada de drivers de sonido. Readme.modules - Cómo construir un driver como un módulo del núcleo cargable. Readme.v30 - Nuevas características de la versión 3.0 del driver de sonido. experimental.txt- Notas de características experimentales. Sigue el procedimiento usual de construcción del núcleo. Hay tres formas de ejecutar el proceso de configuración. Un interfase gráfico de usuario que se ejecuta bajo X11 puede ser llamado usando make xconfig. Un sistema basado en menús que sólo requiere un display de texto está disponible como make menuconfig. Yo asumiré que usas el proceso tradicional de configuración de línea de comando usando la llamada make config, aunque el proceso es similar en cada caso. También es posible construir el driver de sonido como un módulo cargable del núcleo. Yo recomiendo construir el driver dentro del núcleo. Una vez que está comprobado y que funciona tú puedes probar usando la opción de módulo del núcleo. Cuando ejecutes make config, activa el soporte de sonido contestado "y" a la pregunta Sound card support (CONFIG_SOUND) [M/n/y/?] Al final de las preguntas de configuración un programa de configuración de sonido será compilado, ejecutado y te preguntará qué opciones de sonido quieres. Ten cuidado cuando contestes a estas preguntas, ya que si contestas incorrectamente a alguna, repercutirá en preguntas posteriores. Por ejemplo, no contestes "yes" (sí) a la primera pregunta (PAS16) si realmente no tienes una PAS16. No actives más tarjetas de las que realmente tienes, ya que consumen memoria. Además algunos drivers (como el MPU401) pueden entrar en conflicto con el controlador SCSI e impedir la inicialización del núcleo. Aquí listo una pequeña descripción de cada una de las opciones del diálogo de configuración. Contesta "y" (sí) o "n" (no) en cada pregunta. La respuesta por defecto es mostrada en primer lugar y en mayúsculas, de tal forma que "Y/n/? significa "y" (sí) por defecto, y "N/y/? significa "n" (no). Para usar el valor por defecto basta con pulsar return, pero hay que recordar que el valor por defecto no significa que sea necesariamente correcto. Si introduces como respuesta una interrogación (?) saldrá un corto mensaje describiéndote esa opción de configuración. Notar que no todas las preguntas serán respondidas. El programa de configuración desactivará algunas preguntas dependiendo de las anteriores respuestas. Además él también elegirá algunas opciones automáticamente. Old configuration exists in /etc/soundconf. Use it Y/n/? Si previamente has compilado el núcleo para soporte de sonido entonces la configuración anterior se puede salvar. Si quieres usar el anterior set up contesta "y" (sí). Si estas intentando una configuración difer­ ente o has actualizado un núcleo nuevo, debes contestar "n" (no) e ir a través del proceso de configuración. ProAudioSpectrum 16 support Y/n/? Contesta "y" (sí) si tienes una Pro Audio Spectrum 16, Pro Audio Stu­ dio 16 o Logitech SoundMan 16. No contestes "y" (sí) si tienes otra tarjeta de Media Visión o Logitech desde que no son compatibles con PAS16. SoundBlaster support Y/n/? Contesta "y" (sí) sólamente si tienes una SoundBlaster original de Creative Labs o una clónica 100% compatible a nivel hardware como por ejemplo una Thunderboard o una SM Games. Si tu tarjeta estaba en la lista de tarjetas soportadas busca las instrucciones específicas en el fichero Readme.cards antes de contestar a la pregunta. Para una tarjeta desconocida debes contestar "y" (sí) si la tarjeta presume de ser compatible con SoundBlaster. Gravis Ultrasound support Y/n/? Contesta "y" (sí) si tienes una GUS o una GUS MAX. Contesta "n" (no) en caso contrario ya que el driver consume mucha memoria. MPU-401 support (NOT for SB16) Y/n/? Ten cuidado con esta pregunta. El interfase MPU401 es soportado por casi todas las tarjetas de sonido, aunque algunas tarjetas tienen su propio driver MPU401. Activar la opción MPU401 con esas tarjetas causará un conflicto. También el activar MPU401 en un sistema que realmente no tiene un MPU401 puede causar algún problema. Si tu tar­ jeta estaba en la lista de tarjetas soportadas busca las instrucciones específicas en el fichero Readme.cards. Lo mejor es contestar "y" (sí) si tienes una tarjeta con un interfase MPU401 MIDI. 6850 UART Midi support Y/n/? Lo mejor es contestar "n" (no) siempre. El interfase UART 6850 rara­ mente es usado. PSS (ECHO-ADI2111) support Y/n/? Contesta "y" (sí) si solamente tienes una Orchid SW32, Cardinal DSP16 o alguna otra tarjeta basada en el juego de chips PSS (AD1848 codec + ADSP-2115 DSP chips + Echo ESC614 ASIC chips). 16 bit sampling option of GUS (not GUS MAX) Y/n/? Contesta "y" (si) si tienes instalado una tarjeta hija de 16 bits en tu GUS. Contesta "n" (no) si tienes una GUS MAX. Activando esta opción desactivamos el soporte GUS MAX. GUS MAX support Y/n/? Contesta "y" (sí) si tienes una GUS MAX. Microsoft Sound System support Y/n/? Piensa otra vez cuidadosamente antes de contestar "y" (sí) a esta pre­ gunta. Lo mejor es contestar sí cuando tengas una tarjeta original Windows Sound System fabricada por Microsoft o una Aztech SG16 Pro (o una NX16 Pro). También puedes contestar "y" (sí) en el caso de que tu tarjeta no estuviera en la lista anterior. Para las tarjetas que tienen soporte VoxWare, consulta las instrucciones específicas en el fichero Readme.cards. Algunos driver tienen su propio soporte MSS y por lo tanto activar esta opción causará un conflicto. Ensoniq Soundscape support Y/n/? Contesta "y" (sí) si tienes una tarjeta basada en el juego de chips Ensoniq Soundscape. MediaTriX AudioTriX Pro support Y/n/? Contesta "y" (sí) si tienes una AudioTriX Pro. Support for MAD16 and/or Mozart based cards? Contesta "y" (sí) si tu tarjeta tiene un chip de interfase de audio Mozart (OAK OTI-601) o un MAX16 (OPTI 82C928 o 82C929). Estos chips son actualmente muy comunes por lo que es posible que algunas tarjetas "sin nombre" tengan alguno de ellos. Además el chip MAX16 es usado en algunas tarjetas fabricadas por fabricantes como Turtle Beach (Tropez), Reveal y Diamond. Support for Crystal CS4232 based (PnP) cards Y/n/? Contesta "y" (sí) si tu tarjeta está basada en el juego de chip Crys­ tal CS4232. Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers Contesta "y" (sí) si tienes algunas de estar tarjetas. SoundBlaster Pro support Y/n/? Activa esta opción si tu tarjeta es una SoundBlaster Pro o Sound­ Blaster 16. Activala también con cualquier clónico de la SoundBaster Pro. Contestar "n" (no) ahorra algo de memoria pero contestar "y" (sí) es la mejor opción. SoundBlaster 16 support Y/n/? Actívala si tienes una SoundBaster 16 (incluída la AWE32). Audio Excel DSP 16 initialization support Y/n/? Activa esta opción si tienes una tarjeta Audio Excel DSP 16. Mira el fichero readme.aedsp16 para más información. Después el programa de configuración hace algunas preguntas de servicios de alto nivel. La contestación recomendada es "y" (sí) para cada una de las preguntas. Contesta "n" (no) solamente si sabes que no vas a utilizar esa opción. /dev/dsp and /dev/audio support (usually required) Y/n/? Contesta "y" (sí). Si contestas "n" (no) desactivas los dispositivos de los conversores A/D D/A /dev/dsp y /dev/audio. MIDI interface support Y/n/? Si contestas "n" (no) desactivas los dispositivos /dev/midixx y el acceso a cualquier puerto MIDI usando /dev/sequencer y /dev/music. Esta opción también afecta a los dispositvos compatibles con el MPU401 y/o General MIDI. FM synthesizer (YM3812/OPL-3) support Y/n/? Contesta "y" (sí) aquí. /dev/sequencer support Y/n/? Contestar "n" (no) desactiva /dev/sequencer y /dev/music. Do you want support for the mixer of SG NX Pro ? Contesta "y" (sí) si tienes una tarjeta Sound Galaxy NX Pro y quieres soporte para sus funciones extras. Do you want support for the MV Jazz16 (ProSonic etc.) ? Contesta "y" (sí) si tienes una tarjeta MV Jazz16. Do you have a Logitech SoundMan Games Y/n/? Contesta "y" (sí) si tienes una tarjeta Logitech SoundMan Games. Después de las preguntas anteriores, el programa de configuración pregunta por la información específica de la tarjeta. Generalmente es ajustar la dirección I/O, IRQ y el DMA. Con algunas tarjetas el programa pregunta por los ficheros que van a ser usados durante la inicialización de la tarjeta. Son las tarjetas que tienen un chip o un microprocesador DSP el cual debe ser inicializado bajando un programa (microcódigo) a la tarjeta. En algunos casos este fichero es escrito a un fichero de cabecera .h por el programa de configuración y ya es incluido en el driver durante la compilación. Lee de nuevo la información concerniente a tu tarjeta en el fichero Readme.cards. Por último serás preguntado: The sound driver is now configured. Save copy of this configuration to /etc/soundconf [Y/n/?] Normalmente debes contestar "y" (sí) por si más tarde necesitas recom­ pilar el núcleo, y así ya tienes la opción de usar la misma configu­ ración del driver de sonido. Si estás actualizando un driver anterior de sonido, asegúrate de que los ficheros /usr/include/sys/soundcard.h y /usr/include/sys/ultrasound.h tienen enlaces simbólicos a los ficheros correspondientes en /usr/include/linux o que simplemente contiene las líneas #include y #include , respectivamente. Ahora estás preparado para compilar e instalar el nuevo núcleo. 4.3. Creando los ficheros de dispositivo. La primera vez que el driver de sonido del núcleo es configurado necesitas crear los ficheros del dispositivo del sonido. La forma más fácil de hacer esto es cortar el script que viene al final del fichero Readme.linux en el directorio /usr/src/linux/drivers/sound y ejercutarlo como root. Si tus entradas de dispositivo ya existen, debes asegurarte que son correctas. Si no lo son o si no estas seguro, ejecuta el anterior script y el reemplazará las entradas existentes por las correctas. Algunas distribuciones antiguas de Linux incorporaban scripts que creaban ficheros de dispositivo incorrectos. Debes tener el script /dev/MAKEDEV para crear los ficheros de dispositivo. Usando el script incluído con el driver de sonido del núcleo es lo mejor ya que siempre estará actualizado con los últimos dispositivos de sonido soportado. Después de ejecutar el script los ficheros de dispositivo de sonido deben parecerse a lo siguiente: lrwxrwxrwx 1 root 11 Aug 22 00:01 audio -> /dev/audio0 crw-rw-rw- 1 root 14, 4 Aug 22 00:01 audio0 crw-rw-rw- 1 root 14, 20 Aug 22 00:01 audio1 lrwxrwxrwx 1 root 9 Aug 22 00:01 dsp -> /dev/dsp0 crw-rw-rw- 1 root 14, 3 Aug 22 00:01 dsp0 crw-rw-rw- 1 root 14, 19 Aug 22 00:01 dsp1 crw-rw-rw- 1 root 14, 2 Aug 22 00:01 midi00 crw-rw-rw- 1 root 14, 18 Aug 22 00:01 midi01 crw-rw-rw- 1 root 14, 34 Aug 22 00:01 midi02 crw-rw-rw- 1 root 14, 50 Aug 22 00:01 midi03 crw-rw-rw- 1 root 14, 0 Aug 22 00:01 mixer crw-rw-rw- 1 root 14, 16 Aug 22 00:01 mixer1 crw-rw-rw- 1 root 14, 8 Aug 22 00:01 music crw-rw-rw- 1 root 14, 17 Aug 22 00:01 patmgr0 crw-rw-rw- 1 root 14, 33 Aug 22 00:01 patmgr1 crw-rw-rw- 1 root 14, 1 Aug 22 00:01 sequencer lrwxrwxrwx 1 root 10 Aug 22 00:01 sequencer2 -> /dev/music crw-rw-rw- 1 root 14, 6 Aug 22 00:01 sndstat Presta particular atención a los nombres de dispositivo y al mayor y menor número de dispositivo listado en la cuarta y quinta columnas. Si estas usando el driver del altavoz del PC, lee la documentación que lee con el paquete para determinar qué ficheros de dispositivo crear. Normalmente la configuración que usantes cuando construirte el núcleo será válida para el driver de la tarjeta de sonido. También es posible pasar parámetros al núcleo en la línea de comandos (por ejemplo desde LILO) para configurar el driver de sonido. Esto está definido en el fichero Readme.linux. Raras veces será necesario usarlo. La principal razón de esto es para que los desarrolladores de discos de arranque de linux puedan crear un núcleo que soporte varias tarjetas de sonido. 4.4. Inicializando Linux y comprobando la instalación. Ahora debes estar preparado para inicializar el núcleo y comprobar los drivers de sonido. Sigue el procedimiento habitual para instalar y reinicializar el nuevo núcleo (por supuesto ten a mano el anterior núcleo por si hay problemas) Durante la inicialización, comprueba un mensaje como el siguiente cuando emerja el texto (si las líneas aparecen muy rápido y no las puedes leer, utiliza el comando dmesg): snd2 at 0x220 irq 5 drq 1 snd1 at 0x388 irq 0 drq 0 Éste debe coincidir con el tipo de tu tarjeta de sonido y con los parámetros que ella tenga (si es que tiene alguno). El driver también puede visualizar mensajes de error y advertencias durante el inicio. Estate atento para ver alguno cuando inicies por primera vez después de haber configurado el driver de sonido. Lo siguiente que debes comprobar es el fichero de dispositivo /dev/sndstat. Si lees el estado del driver de sonido del fichero de dispositivo te proporcionará información adicional sobre si el driver de la tarjeta de sonido a sido inicializado correctamente. Un ejemplo de salida puede ser este: % cat /dev/sndstat Sound Driver:3.5.2-960330 (Tue 4 16:31:10 EDT 1996 root, Linux fizzbin 2.0.0 #1 Mon Jun 3 16:59:37 EDT 1996 i386) Kernel: Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386 Config options: a80002 Installed drivers: Type 1: OPL-2/OPL-3 FM Type 2: SoundBlaster Type 6: SoundBlaster 16bit Type 7: SB MPU Card config: SoundBlaster at 0x220 irq 5 drq 1,5 OPL-2/OPL-3 FM at 0x388 irq 0 drq 0 Audio devices: 0: SoundBlaster Pro 3.2 Synth devices: 0: Yamaha OPL-3 Midi devices: 0: SoundBlaster Timers: 0: System clock Mixers: 0: SoundBlaster Ahora debes estar preparado para reproducir un fichero de sonido. Coge un fichero de ejemplo y envíalo al dispositivo de sonido para comprobar la salida de sonido. Por ejemplo: % cat endoftheworld >/dev/dsp % cat crash.au >/dev/audio (Asegúrate de que no te olvidas el ">") Algunos ficheros de sonido se pueden obtener de: ftp://tsx-11.mit.edu Ahora puedes comprobar la grabación de sonido. Si tienes capacidad de entrada de sonido, puedes hacer un test rápido con el siguiente comando. # record 4 seconds of audio from microphone EDT% dd bs=8k count=4 < /dev/audio > sample.au 4+0 records in 4+0 records out # play back sound % cat sample.au > /dev/audio Obviamente para que esto funcione necesitas un micrófono conectado a la tarjeta de sonido. También necesitas un programa mezclador (mixer) para seleccionar al micrófono como dispositivo de entrada y ajustar el nivel de grabación. Si pasas el test, puedes pensar razonablemente que el hardware y el software D/A y A/D funciona. Si tienes problemas, mira la siguiente sección de este documento. 4.5. Resolución de problemas. Si todavía tienes problemas después de seguir las instrucciones del HOWTO, aquí hay algunas cosas que debes comprobar. Las comprobaciones están listadas en orden ascendente de complejidad. Si una comprobación falla, resuelve el problema antes de pasar al siguiente punto. 4.5.1. Punto 1: asegúrate de que realmente estás ejecutando el núcleo compilado. Puedes comprobar la fecha del núcleo para ver si estás ejecutando el que has compilado con el soporte de sonido. Puedes hacer esto con el comando uname % uname -a Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386 o bien visualizando el fichero /proc/version: % cat /proc/version Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996 Si la fecha no corresponde con la que era cuando compilaste el núcleo, entonces estas ejecutando el anterior núcleo. ¿Reinicializaste? Si usas el LILO, ¿lo reinstalaste? (ejecuta /etc/lilo/install). Si inicias desde disquete, ¿creaste un nuevo disco de inicio antes de iniciar la sesión?. 4.5.2. Punto 2: asegúrate de que los drivers de sonido del núcleo están compilados en él. Puedes ver qué drivers están compilados mirando el /proc/devices: % cat /proc/devices Character devices: 1 mem 4 tty 5 cua 6 lp 14 sound 15 Joystick Block devices: 2 fd 3 hd 25 sbpcd Lo que estamos buscando es el dispositivo 14, llamado sound. Si el dispositivo de sonido no es listado entonces algo se hizo mal en la configuración del núcleo o en su construcción. Comienza el proceso de instalación comenzando otra vez la configuración y construyendo el núcleo. 4.5.3. Punto 3: ¿Detectó el núcleo tu tarjeta de sonido durante la inicialización? Asegúrate de que la tarjeta de sonido fue detectada cuando inicializaste. Deberías haber visto un mensaje. Si el mensaje apareció fuera de pantalla, puedes revisarlo usando el comando dmesg % dmesg o % tail /var/adm/messages Si tu tarjeta de sonido no fue encontrada entonces algo está mal. Asegúrate de que está bien instalada. Si la tarjeta de sonido funciona bajo DOS entonces puedes asegurar de que no es debido al hardware por lo que seguramente el problema esté en la configuración del núcleo. Quizá configuraste tu tarjeta con un tipo equivocado o con parámetros equivocados, o quizás tu tarjeta no es compatible con los drivers de tarjeta de sonido del núcleo de Linux. Una posibilidad es que tu tarjeta sea una del tipo "compatible" que requiere inicialización por el driver del DOS. Intenta iniciar una sesión de DOS y cargar el driver suministrado por el vendedor de la tarjeta de sonido. Después inicia una sesión de linux pulsando control-alt-delete. Asegúrate de que la dirección I/O, el DMA y el IRQ para Linux son los mismos que los usados bajo DOS. Lee el fichero Readme.cards para configurar tu tipo de tarjeta. Si tú tarjeta de sonido no está listada en este documento, es posible que los drivers de Linux no la soporten. Como ayuda, comprueba las referencias listadas al final de este documento. 4.5.4. Punto 4: ¿Puedes leer datos desde el dispositivo dsp ? Intenta leer desde el dispositivo /dev/audio usando el comando dd listado anteriormente en este documento. El comando se debe ejecutar sin errores. Si esto no va bien, es posible que la causa sea el fichero del dispositivo. Asegúrate que los ficheros de dispositivo del directorio /dev tienen los números mayor y menor listados anteriormente. Comprueba que los permisos del fichero de dispositivo permiten lectura y escritura. Una posibilidad remota es que sea problema del hardware. Intenta comprobar el driver bajo DOS, si es posible, para determinar si ésta puede ser la causa. 4.5.5. Punto 5: Cuando todo falla... :-( Si todavía tienes problemas, te sugerimos que intentes las siguientes cosas: · Relee este documento cuidadosamente. · Lee las referencias listadas al final de este documento, especialmente las concernientes a los ficheros Readme del código fuente del núcleo. · Envía tu pregunta al grupo de noticias comp.os.linux o a cualquier otro. · Envía tu pregunta al canal de sonido (Sound) de la lista de correo de Linux. · Intenta usar el último núcleo Linux. · Contacta con el vendedor de tu ordenador. · Contacta con el fabricante de la tarjeta de sonido. · Escribe al autor del driver de sonido. · Escribe al autor del Sound HOWTO. · Ejecuta emacs y pulsa Esc-x doctor. 5. Aplicaciones de soporte de sonido. Aquí doy un ejemplo de tipos de aplicaciones que te gustaría tener si tienes una tarjeta de sonido bajo Linux. Comprueba el Mapa de Software de Linux (Linux Software Map), sites de archivos en Internet, y/o ficheros en tu CD-ROM de Linux para información mas actualizada. Como mínimo, a ti te gustaría obtener las siguientes aplicaciones de sonido: · Utilidad de conversión a formato de fichero de audio (por ejemplo Sox). · Utilidad de mezcla (por ejemplo aumix o xmix). · Reproductor/grabador de ficheros digitalizados (por ejemplo play o wavplay). · Reproductor de ficheros MOD (por ejemplo tracker). · Reproductor de ficheros MIDI (por ejemplo mp). También hay versiones de texto y versiones GUI de esas herramientas. También hay aplicaciones más esotéricas que quizás te gustaría probar (por ejemplo speech para reconocimiento y síntesis). 6. 6. FAQ. Esta sección contesta algunas de las preguntas que mas comúnmente han aparecido en los grupos de noticias Usenet y en las listas de correo. 6.1. ¿Cuáles son los ficheros de dispositivo de sonido? Éstos son los nombres de ficheros de dispositivo "estándar", aunque algunas distribuciones de Linux utilizan nombres ligeramente diferentes. /dev/audio normalmente un enlace a /dev/audio0 /dev/audio0 Dispositivo de audio compatible con las estaciones de trabajo Sun (solamente una implementación parcial, ya que no soporta el interfase ioctl) /dev/audio1 Segundo dispositivo de audio (si es soportado por la tarjeta) /dev/dsp Normalmente un enlace a /dev/dsp0 /dev/dsp0 Primer dispositivo de rastreo digital /dev/dsp1 Segundo dispositivo de rastreo digital /dev/mixer Mezclador de sonido /dev/mixer1 Segundo mezclador de sonido /dev/music Interfase del secuenciador de alto nivel /dev/patmgr0 Manager de parches /dev/patmgr1 Manager de parches /dev/sequencer Acceso a bajo nivel MIDI, FM, y GUS /dev/sequencer2 Normalmente un enlace a /dev/music /dev/midi00 Primer puerto "crudo" MIDI /dev/midi01 Segundo puerto "crudo" MIDI /dev/midi02 Tercer puerto "crudo" MIDI /dev/midi03 Cuarto puerto "crudo" MIDI /dev/sndstat Visualiza el estado del driver de sonido cuando es leído El driver del altavoz del PC incorpora los siguientes dispositivos: /dev/pcaudio equivalente a /dev/audio /dev/pcsp equivalente a /dev/dsp /dev/pcmixer equivalente a /dev/mixer 6.2. ¿Cómo puedo reproducir una muestra de sonido? Los ficheros de sonido de las estaciones de trabajo Sun (.au) pueden ser reproducidos enviándoles al dispositivo /dev/audio. Las muestras pueden ser enviadas al /dev/dsp. Es preferible usar un programa como por ejemplo play, el cual reconocerá la mayoría de los tipos de ficheros y pasará a la tarjeta de sonido la correcta frecuencia de muestreo, etc. 6.3. ¿Cómo puedo grabar una muestra? Leer /dev/audio o /dev/dsp devolverá un muestreo de datos que puede ser redireccionado a un fichero. Un programa como el vrec hará más fácil el controlar la frecuencia de muestreo, la duración, etc. También necesitas un programa muestrador para seleccionar el dispositivo de entrada adecuado. 6.4. ¿Puedo tener más de una tarjeta de sonido? Se soportan hasta dos tarjetas. Es posible instalar una Gravis UltraSound o una MPU-401 con una SoundBlaster, SoundBlaster Pro, SoundBlaster16 o ProAudioSpectrum16. No es posible tener una ProAudioSpectrum16 y SoundBlaster a la vez (la PAS16 tiene un emulador SB en ella). Tampoco es posible tener más de una tarjeta del mismo tipo a la vez (por ejemplo la combinación GUS + GUS no es posible. Puedes cambiar los parámetros de configuración de la tarjeta de sonido al inicializar usando las opciones de la línea de comandos desde el cargador de inicio como el LILO. Lee el fichero Readme.linux para más detalles. 6.5. Error: No such file or directory for sound devices Necesitas crear los ficheros de dispositivo del driver de sonido. Mira la sección sobre creación de ficheros de dispositivo. Si tienes que hacer los ficheros de dispositivo, asegúrate de que tienen los números de dispositivo mayor y menor correcto (algunas distribuciones antiguas en CD-ROM de Linux no crean los ficheros de dispositivo correctos durante la instalación). 6.6. Error: No such device for sound devices No has inicializado con un núcleo que contiene el driver de sonido o la dirección de I/O de la configuración no corresponde con tu hardware. Comprueba que estás ejecutando el nuevo núcleo compilado y verifica que las opciones introducidas en la configuración del driver de sonido corresponden con las opciones del hardware. 6.7. Error: No space left on device for sound devices Esto puede ocurrir si intentas grabar datos a /dev/audio o /dev/dsp sin haber creado los ficheros de dispositivo necesarios. El dispositivo de sonido ahora es un fichero normal y ocupa tu partición de disco. Necesitas ejecutar el script descrito en la sección sobre creación de ficheros de dispositivo de este documento. 6.8. Error: device busy for sound devices Solamente un proceso puede ser abierto en un dispositivo de sonido a la vez. A la mayoría nos gusta saber si otro proceso está usando el dispositivo en cuestión. Una forma de averiguar ésto es usar el comando fuser: % fuser -v /dev/dsp /dev/dsp: USER PID ACCESS COMMAND tranter 265 f.... tracker En el ejemplo de arriba, el comando fuser muestra que el proceso 265 tiene el dispositivo abierto. Esperar que el proceso se complete o matarlo permitirá que el dispositivo de sonido pueda ser accedido una vez más. 6.9. ¡Todavía tengo errores de dispositivo ocupado (device busy)! De acuerdo con Brian Gough, para las tarjetas SoundBlaster que usan el canal DMA 1 hay un conflicto en potencia con el driver de la cinta QIC-02, la cual también usa el DMA 1, causando los errores "device busy". Si estás usando FTAPE, debes tener este driver activado. De acuerdo con el FTAPE-HOWTO el driver QIC-02 no es esencial para el uso de FTAPE; solamente el driver QIC-117 es necesario. Reconfigurar el núcleo para usar el QIC-117 en vez del QIC-02 permite coexistir a FTAPE y al driver de sonido. (la siguiente explicación fue aportada por Harald Albrecht albrecht@igpm.rwth-aachen.de) Algunos soportes de tarjetas de sonido usan el canal DMA 0. El programa de configuración del driver de sonido permite esto, y el núcleo compila correctamente, pero el acceso al dispositivo de sonido nos devuelve un mensaje de error "device busy" (dispositivo ocupado). La razón es que el núcleo de Linux reserva el canal DMA 0 para el refresco de la DRAM. Esto no es del todo verdad para las placas modernas 386/486 las cuales usan su propia lógica de refresco. Lo puedes corregir cambiando esta línea en el fichero /usr/src/linux/kernel/dma.c: static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = { 1, 0, 0, 0, 1, 0, 0, 0 }; Reemplaza el primer 1 con un 0; esto activa el canal DMA 0. No hagas lo mismo con el canal DMA 4. El código debe parecerse a ésto: static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = { 0, 0, 0, 0, 1, 0, 0, 0 }; Recompila y reinicia con el nuevo núcleo. 6.10. Reproducción parcial de un fichero de sonido digitalizado. El síntoma generalmente es que una muestra de sonido se reproduce durante un segundo y después se para completamente o devuelve un mensaje de error como "missing IRQ" o "DMA timeout". La mayoría de las veces significa que tienes los parámetros del IRQ o del canal DMA incorrectos. Verifica que la configuración del núcleo corresponde con los puentes de la tarjeta de sonido y que no entran en conflicto con otro dispositivo. Otro síntoma es que la muestra de sonido se "repite". Esto es generalmente causado por un conflicto IRQ. 6.11. Hay pausas cuando reproduzco ficheros MOD. Reproducir ficheros MOD requiere gran capacidad de la CPU. Si tienes algunos procesos más ejecutándose en tu ordenador, el reproducir en tiempo real será muy lento. Tus opciones son: · Intenta reproducir con una menor frecuencia de muestreo o en modo mono. · Elimina otros procesos. · Compra un ordenador más rápido. · Compra una tarjeta de sonido más potente (por ejemplo, Gravis Ultrasound). Si tienes una tarjeta Gravis Ultrasound, debes usar uno de los reproductores de ficheros MOD escritos específicamente para la GUS (por ejemplo gmod). 6.12. Tengo errores de compilación al compilar aplicaciones de sonido. La versión 1.0c y el driver de sonido anterior usaban un esquema ioctl() diferente e incompatible. Obtén un código fuente más moderno o haz los cambios necesarios para adaptarlo al nuevo driver de sonido. Mira el fichero del driver de sonido Readme para más detalles. Asegúrate también de que has usado la última versión del soundcard.h y ultrasound.h cuando compiles la aplicación. Lee las instrucciones de instalación del principio de este texto. 6.13. Tengo SEGV al ejecutar ficheros binarios que antes funcionaban. Este es probablemente el mismo problema que el descrito en la anterior cuestión. 6.14. ¿Qué errores conocidos o limitaciones hay en el driver de sonido? Lee los ficheros Readme y CHANGELOG incluidos con el fuente del driver de sonido del núcleo. 6.15. ¿Qué significan todas las opciones de configuración del driver de sonido? Durante la configuración del driver de sonido, un programa de configuración es compilado y ejecutado. Este programa te hace algunas preguntas y después genera el fichero cabecera local.h que define la configuración de la tarjeta de sonido. El fichero de configuración define (o "undefine") lo siguientes símbolos: Símbolo Significado ====== =========== KERNEL_SOUNDCARD activa/desactiva el driver de sonido EXCLUDE_PAS soporte de ProAudioSpectrum EXCLUDE_SB soporte de SoundBlaster EXCLUDE_ADLIB soporte de AdLib EXCLUDE_GUS soporte de Gravis UltraSound EXCLUDE_MPU401 soporte del interfase MPU-401 MIDI EXCLUDE_UART6850 soporte de la UART 6850 MIDI EXCLUDE_PSS soporte de Professional Sound System EXCLUDE_GUS16 soporte de Gravis UltraSound EXCLUDE_GUSMAX soporte de Gravis UltraSound Max EXCLUDE_MSS soporte de Microsoft Sound System EXCLUDE_SBPRO soporte de SoundBlaster Pro EXCLUDE_SB16 soporte SoundBlaster 16 EXCLUDE_AUDIO soporte de voz digitaliza EXCLUDE_MIDI soporte de interfase MIDI EXCLUDE_YM3812 soporte de sintetizador FM (YM3812/OPL-3) EXCLUDE_SEQUENCER soporte del secuenciador MIDI EXCLUDE_PRO_MIDI soporte de SoundBlaster Pro MIDI EXCLUDE_CHIP_MIDI soporte de MIDI on CHIP SBC_BASE 0x220 dirección base de I/O de la SoundBlaster SBC_IRQ número de IRQ de la SoundBlaster SBC_DMA canal DMA de la SoundBlaster SB16_DMA canal DMA de la SoundBlaster 16 SB16_MIDI_BASE dirección base del puerto MIDI de la SoundBlaster 16 PAS_IRQ número de IRQ de la ProAudioSpectrum PAS_DMA canal DMS de la ProAudioSpectrum GUS_IRQ número IRQ de la Gravis UltraSound GUS_DMA canal DMA de la Gravis UltraSound DMA GUS_BASE dirección base de la Gravis UltraSound MPU_IRQ número IRQ del MPU-401 MPU_BASE dirección base del puerto del MPU-401 DSP_BUFFSIZE tamaño del buffer del DMA También se definen otras cosas, como por ejemplo nivel de revisión del driver de sonido y el día y la hora en que la configuración fue hecha. Hay otros parámetros que no son seleccionados por el programa de configuración. Si necesitas cambiarlos, edita el fichero sound_config.h. Para desactivar el driver de sonido, ejecuta make config y contesta no a la pregunta "Sound card support?". 6.16. ¿Dónde están documentados los ioctls() del driver de sonido? Están parcialmente documentados en la Hacker's Guide to VoxWare, actualmente disponible en formato borrador. La última versión es el borrador 2, y se puede encontrar en ftp://nic.funet.fi. Nota que es un directorio oculto y que no saldrá en el listado de directorios. Si tú "cd" al directorio y usas el "dir" del FTP, los ficheros estarán ahí. 6.17. ¿Cúales son los recursos de la CPU necesarios para repro­ ducir/grabar sin pausas? No hay una respuesta fácil para esta pregunta, ya que depende de: · Si estás usando muestreo PCM o síntesis FM. · Frecuencia de muestreo y tamaño de muestreo. · Qué aplicación estás usando para reproducir o grabar. · Hardware de la tarjeta de sonido. · Frecuencia de I/O del disco, velocidad del reloj de la CPU, tamaño del caché, etc. En general, las máquinas 386 deberían reproducir muestras o música sintetizada FM en una tarjeta de sonido de 8 bits sin problemas. Reproducir ficheros MOD, necesita muchos recursos de la CPU. Algunas medidas experimentales han mostrado que reproducir a 44kHz necesita más del 40% de la velocidad de un 486/50 y un 386/25 ha penas puede reproducir rápidamente más de 22kHz (con una tarjeta de 8 bits como la SoundBlaster). Una tarjeta como la Gravis UltraSound ejecuta más funciones en el hardware y requerirá menos recursos de la CPU. Todo esto supone que el ordenador no está ejecutando otras tareas intensivas en la CPU. Convertir ficheros de sonido y añadir efectos usando una utilidad como Sox es mucho más rápido si tienes un coprocesador matemático. El driver del núcleo por si mismo no hace cálculos en punto flotante. 6.18. Problemas con una PAS16 y un adaptador host Adaptec 1542 SCSI. (La siguiente explicación fue dada por seeker@indirect.com) Linux solamente reconoce el 1542 en la dirección 330 (por defecto) o en la 334 y la PAS solamente permite la emulación MPU-401 en la 330. Aunque desactives el MPU-401 bajo software, algo todavía entra en conflicto con el 1542 si él está con su dirección por defecto. Mover el 1542 a la dirección 334 hace feliz a todos. Además, tanto el 1542 como la PAS16 hacen DMA de 16 bits, por lo que si haces una muestra a 16 bits 44kHz y en estéreo y salvas el fichero a un dispositivo SCSI cuelgas el 1542, por lo que tienes un problema. El DMA traslapa y no hay suficiente tiempo para refrescar la RAM, por lo que obtienes el mensaje "PARITY ERROR-SYSTEM HALTED", sin ningún motivo que lo cause. Hay algo peor porque los vendedores de unidades de cinta QIC-117 recomiendan cambiar el bus en on/off las veces que el 1542 sea más largo de lo normal. Consigue el programa SCSISEL.EXE de la BBS de Adaptec o de cualquier otro lugar de Internet, y reduce el tiempo del bus en on o incrementa el tiempo del bus en off hasta que el problema se solucione. SCSISEL cambia los parámetros de la EEPROM, por lo que es más duradero que un parche en el driver del DOS desde una línea del CONFIG.SYS, y funcionará si inicias bien en Linux (en vez del parche en el DOS) El último problema: los viejos juegos de chip Symphony reducen drásticamente el tiempo de los ciclos de I/O para aumentar los accesos al bus. Ninguna de las tablas que yo he probado han ningún problema con el tiempo de reducción excepto la PAS16. La BBS de Media Vision tiene el fichero SYMPFIX.EXE el cual se supone que soluciona el problema añadiendo un bit de diagnóstico en el controlador del bus del Symphony, pero no da muchas garantías. Lo que tú necesitas es: · Dile al ditribuidor de la placa madre que reemplace el chip con el bus de la antigua versión. · Reemplaza la placa madre, o · compra otra tarjeta de sonido de marca diferente. Young Microsystems actualizará las placas que importan por 30$ (US); otros vendedores harán lo mismo si puedes probar quién hizo o importó la placa madre (buena suerte). El problema está en el chip del interfase del bus de ProAudio, que yo sepa. Nadie compra una tarjeta de 120$ y la conecta a un AT de 6MHz. La mayoría lo hará en un 386/486 a 25-40MHz, y seguramente podrá manipular al menos frecuencias de bus de 12MHz si los chips están bien diseñados. El primer problema depende del juego de chips usados en tu placa madre, de la velocidad del bus y de otros parámetros de la BIOS, y de la fase de la luna. El segundo problema depende del parámetro de la opción de refresco (oculto o sincronizado), de la frecuencia de DMA del 1542 y (posiblemente) de la frecuencia de I/O (entrada/salida) del bus. El tercero se puede determinar llamando a Media Vision y preguntándoles qué chip de Symphony es incompatible con su lento diseño. Atento: 3 de 4 técnicos con los que hablé tenían el cerebro dañado. Asistí atónito a todo lo que hablaron acerca del hardware de los demás, ya que ellos no parece que conozcan el suyo muy bien. 6.19. Problemas con el sintetizador FM de una SoundBlaster Pro 1. La nueva SoundBlaster Pro tiene un chip OPL-3, pero la antigua versión 1 usaba el OPL-2. El driver de sonido asume la presencia de un OPL-3. La versión 2.5 y posteriores del driver de sonido corrigen este problema. 6.20. ¿Es posible leer y escribir muestras simultáneamente? Debido a limitaciones del hardware, esto no es posible con la mayoría de las tarjetas de sonido. Algunas tarjetas nuevas lo soportan. Mira la sección de "modo bidireccional" en la Hacker's Guide To VoxWare para más información. 6.21. Mi SB16 está puesta con un IRQ 2, pero la configuración no me deja usar este valor. En los últimos 286, la interrupción IRQ 2 es asignada al segundo controlador de interrupciones. Es equivalente a IRQ 9. 6.22. ¿Son soportadas la SoundBlaster AWE32 o la SoundBlaster16 ASP? Estas tarjetas traen chips especiales (ASP y Emu) que soportan características adicionales como síntesis de onda de tabla, aunque Creative Labs no colabora aportando información sobre su programación. A menos que ellos cambien su política no puede haber soporte bajo Linux de este hardware especial. Las tarjetas son soportadas como tarjetas SoundBlaster 16 normales bajo Linux. La tarjeta Gravis Ultrasound tiene capacidades similares a la AW32, y es soportada bajo Linux. Las tarjetas basadas en otros DSPs como Dispositivos Analógicos ADSP-21xx serán soportados en el futuro. 6.23. Si estoy en Linux y después inicio una sesión de DOS, tengo errores y/o las aplicaciones de sonido no funcionan correctamente. Esto ocurre después de un reinicio suave hacia el DOS. Algunas veces el mensaje de error se refiere engañosamente a que está mal el fichero CONFIG.SYS. La mayoría de las tarjetas de sonido tienen programable por software los parámetros del IRQ y del DMA. Si tu usas parámetros diferentes entre el Linux y el MS-DOS/Windows, esto causará problemas. Algunas tarjetas de sonido no aceptan nuevos parámetros sin una completa inicialización (reset) (por ejemplo corta la corriente o pulsa el botón de reset). La solución más rápida para este problema es llevar a cabo un completo reinicio usando el botón de reset o cortando la energía después de un reinicio suave (por ejemplo ctrl-alt-del). La solución correcta es que usas los mismos parámetros IRQ y DMA con el MS-DOS y con el Linux (o no uses MS-DOS). 6.24. Problemas ejecutando DOOM bajo Linux. Para la correcta salida de sonido necesitas la versión 2.90 o posterior del driver de sonido. Tiene soporte para el "modo DOOM" en tiempo real. Las muestras de sonido son de 16 bits. Si tú tienes una tarjeta de sonido de 16 bits puedes hacer que el sonido funcione usando uno de los muchos programas disponibles en ftp://sunsite.unc.edu Si la ejecución del DOOM en tu sistema es pobre, desactiva el sonido (renombrando el fichero sndserver). Por defecto DOOM no soporta música (como en la versión del DOS). El programa musserver añadirá soporte para música al DOOM bajo Linux. Lo puedes encontrar en ftp://pandora.st.hmc.edu 6.25. ¿Cómo puedo reducir el ruido recogido por mi tarjeta de sonido? Usar cables con buen aislante y probar la tarjeta de sonido en diferentes slots te ayudará a reducir el ruido. Si la tarjeta de sonido tiene control de volumen puedes intentar diferentes posiciones (al máximo es probablemente lo mejor. Usar un programa mezclador te asegurará que las entradas no deseadas (por ejemplo el micrófono) están puestas a cero. Algunas tarjetas de sonido simplemente no están diseñadas con buen aislante y con toma de tierra y son propensas a generar ruido. 6.26. Puedo reproducir sonido, pero no puedo grabar. Si tu puedes reproducir sonido pero no puedes grabar, sigue estos pasos: · Usa un programa mezclador para elegir el dispositivo apropiado (como por ejemplo el micrófono). · Usa el mezclador para seleccionar la ganancia de entrada al máximo. · Si puedes, intenta probar la tarjeta de sonido grabando bajo MS-DOS para comprobar si es un problema de hardware. 6.27. Mi tarjeta de sonido "compatible" sólo funciona si primero la inicializo bajo MS-DOS. Algunos clónicos de tarjeta de sonido no son verdaderamente 100% compatibles. Algunas veces contienen circuitería extra como por ejemplo mezcladores. La puedes usar bajo Linux si primero la inicializas bajo MS-DOS y después haces un inicio suave de Linux (por ejemplo Ctrl-alt-del). Un usuario me informó el obtenía mejores resultados si él usaba LOADLIN en vez de LILO para inicializar Linux después de inicializar su tarjeta de sonido bajo MS-DOS (esto era con una tarjeta de sonido Diamond). La verdadera solución es obtener del fabricante cuáles son las diferencias y añadir soporte al driver de sonido. Esto ha sido hecho, por ejemplo, con la Sound Galaxy NX Pro. 6.28. Mi tarjeta de sonido "compatible" SoundBlaster 16-bit sólo fun­ ciona en el modo 8-bit bajo Linux Las tarjetas de sonido de 16 bits descritas como compatibles SoundBlaster realmente sólo son compatibles con la SoundBlaster Pro de 8 bits. Generalmente tienen un modo de 16 bits que no es compatible con la SoundBlaster 16 y tampoco es compatible con el driver de sonido del Linux. Si tú tarjeta está listada como compatible con el Microsoft Windows Sound System, puedes hacerla funcionar en el modo 16 bits si tienes activado el WSS en el driver de sonido del Linux. Probablemente tendrás que hacer también el truco de inicializarla bajo el DOS para que la tarjeta funcione. 6.29. ¿Dónde puedo encontrar aplicaciones de sonido para Linux? Estos son unos buenos sites para buscar aplicaciones específicas de sonido para Linux: · ftp://sunsite.unc.edu:/pub/Linux/kernel/sound/ · ftp://sunsite.unc.edu:/pub/Linux/apps/sound/ · ftp://tsx-11.mit.edu:/pub/linux/packages/sound/ · ftp://nic.funet.fi:/pub/OS/Linux/util/sound/ · ftp://nic.funet.fi:/pub/OS/Linux/xtra/snd-kit/ · ftp://nic.funet.fi:/pub/OS/Linux/ALPHA/sound/ 6.30. ¿Puede el driver de sonido ser compilado como módulo cargable? Con los últimos núcleos el driver de sonido es soportado como un módulo cargable. Mira los ficheros /usr/src/linux/drivers/sound/Readme.modules y /usr/src/linux/Documentation/modules.txt (o /usr/src/linux/README) para más detalles. 6.31. ¿Puedo usar la tarjeta de sonido para sustituir el beep de la consola del sistema? Intenta el programa oplbeep en ftp://sunsite.unc.edu Una variante es el programa beep en ftp://sunsite.unc.edu El paquete modutils tiene un programa de ejemplo y un parche del núcleo que soporta llamadas a programas externos para generar los sonidos del núcleo. Alternativamente, algunas tarjetas se pueden conectar al altavoz del PC por lo que todos los sonidos van a los altavoces de la tarjeta. 6.32. ¿Qué es VoxWare? Los drivers de sonido del núcleo soportan diferentes sistemas operativos basados en la arquitectura Intel y compatibles con Unix, y se pueden obtener como un paquete separado del núcleo del Linux. Hasta febrero del 96 el autor había llamado al software "VoxWare". Desafortunadamente este nombre ha sido registrado por VoxWare Incorporate, y no puede ser usado. El 29 de marzo de 1996 Hannu Savolainen anunció que el nuevo nombre era Unix Sound System (USS). El Unix Sound System (USS) va a ser un driver del sonido del núcleo disponible comercialmente para varios sistemas Unix, vendido por 4Front Technologies. Una versión libre, conocida como USS/Lite continuará siendo disponible con total libertad para los sistemas Linux. Para más información mira la página Web de 4Front Technologies. http://www.4front-tech.com 6.33. ¿Son soportadas las tarjetas de sonido Plug-and-Play? Linux todavía no soporta Plug-and-Play (enchufar y funcionar), pero se está trabajando en ello. De un tiempo para acá algunos usuarios han obtenido éxito quitando las opciones Plug-and-Play de su BIOS, o inicializando los dispositivos bajo Windows 95 antes de hacer un inicio suave de Linux. 6.34. Sox/Play/Vplay saca el mensaje "invalid block size 1024" Un cambio en el driver de sonido de la versión 1.3.67 rompía algunos programas de reproducción de sonido el cual (incorrectamente) chequeaba que el resultado del ioctl SNDCTL_DSP_GETBLKSIZE era mayor que 4096. Debes tener una versión más nueva del programa (si es posible) o arreglarlo tú mismo. Para el programa Sox ftp://sunsite.unc.edu el siguiente parche funciona: --- sbdsp.c.orig Thu Feb 22 22:46:00 1996 +++ sbdsp.c Thu Feb 22 22:51:18 1996 @@ -176,7 +176,7 @@ } ioctl (dspfd, SNDCTL_DSP_GETBLKSIZE, &abuf_size); - if (abuf_size < 4096 || abuf_size > 65536) { + if (abuf_size < 1) { if (abuf_size == -1) perror (dspname); else 6.35. ¿Por qué el driver de sonido tiene su propio programa de con­ figuración? El driver de sonido soporta diferentes parámetros de configuración. El programa de configuración incluído con el driver de sonido comprueba las dependencias entre los parámetros. Las herramientas usadas para configurar el núcleo no soportan este nivel de funcionabilidad. Los núcleos recientes 1.3.x opcionalmente permiten usar las herramientas de configuración del núcleo estándar con el driver de sonido. Lee las notas en el fichero CHANGELOG para el driver de sonido. Esto es todavía experimental y algunas opciones no pueden ser seleccionadas de esta forma. 6.36. ¡Las opciones del mezclador son borradas cuando cargo el módulo del driver de sonido! Puedes construir el driver de sonido como un módulo cargable y usar kerneld para cargarlo y descargarlo automáticamente. Esto puede presentar un problema: cuando el módulo de recargado los parámetros del mezclador vuelven a sus valores por defecto. Para algunas tarjetas de sonido esto puede ser muy ruidoso (por ejemplo la SB16) o muy silencioso. Markus Gutschke gutschk@uni-muenster.de encontró esta solución: usa una línea en tu fichero /etc/conf.modules como la que sigue: options sound dma_buffsize=65536 && /usr/bin/setmixer igain 0 ogain 0 vol 75 Esto hará que tú programa mezclador (en este caso setmixer) sea ejecu­ tado inmediatamente después de que tú driver de sonido es cargado. El parámetro dma_buffsize es sólo un valor arbitrario necesario porque el comando de opción requiere una opción en la línea de comando. Cambia la línea según como necesites corresponder tu programa mezclador y los parámetros de ganancia. Si tú has compilado el driver de sonido dentro de tu núcleo y queres seleccionar que el mezclador gane cuando inicias, tú puedes llamar a tú programa mezclador en un fichero de inicio del sistema como por ejemplo /etc/rc.d/rc.local 6.37. Solamente el root puede grabar sonido. Por defecto el script que hay en el fichero Readme.linux que crea los ficheros de dispositivo de sonido sólo permite que los dispositivos sean leídos por el root. Esto se hace para aumentar la seguridad. En un entorno de red, usuarios externos se pueden conectar de forma remota a un PC con Linux, y con tarjeta de sonido y micrófono, y te pueden escuchar a escondidas. Si a ti no te preocupa eso, puedes cambiar los permisos usados en el script. 7. Referencias Si tienes una tarjeta de sonido que soporte un CD-ROM o un interfase SCSI, el Linux SCSI HOWTO y el Linux CD-ROM HOWTO tienen información adicional que puede serte muy útil. Hannu Savolainen ha escrito una versión borrador de Hacker's Guide to VoxWare. La última versión es el borrador 2, y puede ser encontrado en ftp://nic.funet.fi. Las siguientes FAQs son posteadas regularmente al grupo de noticias de Usenet news.announce y también son archivadas en ftp://rtfm.mit.edu: · PCsoundcards/generic-faq (Generic PC Soundcard FAQ) · PCsoundcards/soundcard-faq (comp.sys.ibm.pc.soundcard FAQ) · PCsoundcards/gravis-ultrasound/faq (Gravis UltraSound FAQ) · audio-fmts/part1 (Descripciones de formatos de ficheros de audio) · audio-fmts/part2 (Descripciones de formatos de ficheros de audio) Las FAQs también aportan listas de correo para temas específicos y sites de archivos. Los siguientes grupos de noticias de Usenet tratan sobre temas de sonido y/o música: · alt.binaries.sounds.* (varios grupos para postear ficheros de sonido) · alt.binaries.multimedia (para postear ficheros Multimedia) · alt.sb.programmer (temas de programación de la Soundblaster) · comp.multimedia (temas Multimedia) · comp.music (teoría e investigación de música por computadora) · comp.sys.ibm.pc.soundcard.* (varios grupos IBM PC de tarjetas de sonido) Una página Web dedicada a la multimedia puede ser encontrada en http://viswiz.gmd.de. Creative Labs tiene su página Web en http://www.creaf.com/. MediaTrix tiene su página Web en http://www.mediatrix.com/. Las listas de correo de Linux tienen un número de "canales" dedicados a diferentes temas, incluído el sonido. Para saber cómo unirte, envía un mail con la palabra "help" como cuerpo del mensaje a majordomo@vger.rutgers.edu. (Nota: cuando escribía esto, estas listas de correo fueron sobrecargadas y se buscó un reemplazo) Como mencioné en varias anteriores ocasiones, el driver de sonido del núcleo incluye una serie de ficheros Readme que contienen información acerca del driver de la tarjeta de sonido. Generalmente se encuentran en el directorio /usr/src/linux/drivers/sound. Se puede contactar con el autor del driver de sonido del núcleo, Hannu Savolainen, en la dirección hannu@voxware.pp.fi. También tiene una página Web en http://personal.eunet.fi/pp/voxware. Esta página es el mejor sitio para enterarse de las últimas tarjetas de sonido soportadas, problemas y solución de errores. El Mapa de Software de Linux (Linux Software Map (LSM)) es una referencia de gran valor para localizar software de Linux. Buscar palabras en el LSM como por ejemplo sonido es una buena forma de identificar aplicaciones referentes a hardware de sonido. El LSM se puede encontrar en varios FTP anónimos, incluyendo ftp://sunsite.unc.edu/pub/Linux/docs/LSM.gz. El Linux Documentation Project ha producido varios libros de Linux, incluyendo Linux Installation and Getting Started (-- Disponible en castellano en http://www.infor.es/LuCAS--) . Están disponibles libremente en la mayoría de FTP anónimos de archivos de Linux, o también pueden ser comprados en formato impreso. Por último, una puntualización un poco sinvergüenza: Si quieres aprender un poco más sobre multimedia bajo Linux (especialmente programación de aplicaciones para tarjetas de sonido y CD-ROM), compra mi nuevo libro Multimedia on Linux publicado por O'Reilly and Associates (http://www.ora.com/). Estará disponible a partir de Septiembre de 1996. 8. Acerca de la traducción. Este documento ha sido traducido por Sergio Alonso Manzanedo sa.manzanedo@vll.servicom.es con la colaboración de Laura Febrero Arias en cuanto a lo de teclear todo este monstruito. ¡GRACIAS LAURA POR TECLEAR ESTO EN DOS TARDES! Espero que sirva de bastante a la comunidad Linux en castellano. Para cualquier aclaración, corrección, duda o cualquier otra cosa, no dudes en contactar conmigo. Apreciaré también cualquier puntualización sobre las faltas de ortografía y las posibles erratas (adjuntar en el subject el nombre Laura). Nada más. Saludos. ;-) 9. Anexo: El INSFLUG El INSFLUG forma parte del grupo internacional Linux Documentation Project, encargándose de las traducciones al castellano de los Howtos (Comos), así como la producción de documentos originales en aquellos casos en los que no existe análogo en inglés. En el INSFLUG se orienta preferentemente a la traducción de documentos breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs. :) ), etc. Diríjase a la sede del INSFLUG para más información al respecto. En la sede del INSFLUG encontrará siempre las últimas versiones de las traducciones: www.insflug.org. Asegúrese de comprobar cuál es la última versión disponible en el Insflug antes de bajar un documento de un servidor réplica. Se proporciona también una lista de los servidores réplica (mirror) del Insflug más cercanos a Vd., e información relativa a otros recursos en castellano. Francisco José Montilla, pacopepe@insflug.org.