Muchos usuarios han escrito preguntando por qué no pueden lograr que Rosegarden haga algún sonido. Es la pregunta más común realizada en la lista de correo de usuarios de Rosegarden, y especialmente es un problema para aquellos que han migrado a Linux desde Windows recientemente. Antes de que inicimos Rosegarden por primera vez, quiero explicar qué es necesario para pavimentar el camino y tener una buena primer experiencia. Algunos de ustedes ya saben esto, y están invitados a saltar al próximo capítulo, donde la parte interesante comienza.
El tópico del sonido cubre dos áreas diferentes que pueden o no ser co-dependientes, dependiendo del hardware y software que tengas disponible. Por un lado, hay muchos requerimientos que tienen que ser alcanzados para reproducir MIDI con Rosegarden, y por el otro, es necesario conseguir que el server JACK esté levantado y corriendo de forma segura para hacer uso de las características de audio de Rosegarden. Un servidor JACK es también requerido para reproducir MIDI con plugins sintéticos (synth plugins), o para reproducir más de un sintetizador por software ALSA al mismo tiempo. Poner a Rosegarden a hacer cualquier sonido puede ser un asunto complicado pero, con suerte, yo te puedo ayudar a lidiar con cualquier conjunto de circunstancias por las cuales pasé antes que tú. Yo no puedo, sin embargo, cubrir cada detalle en cuanto a lograr que cualquier placa de sonido funcione con cualquier distribución. Me temo que tendré que dejar algunas preguntas sin resolver, para que éste capítulo no se convierta en sí mismo en un libro.
Aquí se encuentra, a modo de vistazo, un mapa de carretera mostrando todos los posibles caminos para producir sonido con Rosegarden. Es bastante difícil, lo sé, pero espero que te pueda ayudar a darte una idea:

MIDI bajo Linux es un asunto un poco complicado. El hardware disponible se divide en tres grandes categorías, cada una con su consideración especial. Hardware MIDI externo (External MIDI hardware), hardware interno soportado por ALSA, y hardware interno no soportado por ALSA. La última categoría se divide en: ALSA soft synths (sintetizadores ALSA por software) y synth plugins (plugins sintetizadores), que son similares pero ligeramente distintos.
Si no tienes ni idea sobre lo que hay dentro de tu PC, y no tienes ni idea sobre cómo configurar cualquiera de estas cosas, un buen lugar para comenzar es pegándole una mirada y ver cuán lejos ha llegado tu distribución en darte cosas gratis y libres. La mayoría de las distribuciones deberían cargar ALSA en lugar de OSS (el viejo sistema de sonido), y ellas deberían detectar y configurar una gran variedad de placas de sonido para ti automáticamente. KDE tiene un útil centro de información que puede mostrar información acerca de la configuración de sonido. Típicamente se encuentra en el menú KDE dentro de Sistema -> Centro de información, o puedes correrlo manualmente tipeando "kinfocenter" dentro de la ventana “Ejecutar Comando” (alt+ F2).
Aquí hay un ejemplo con explicaciones superpuestas en el screenshot:

Diferentes placas de sonido tendrán distintas características/capacidades. La mayoría de ellas, por ejemplo, no listarán nada en “dispositivos sintéticos” (synth devices).
Por lejos, el más complicado, y el modo más caro para reproducir MIDI bajo Linux es usar equipamiento MIDI real. Esto incluye teclados electrónicos, módulos de sonido, y quizás también guitarras MIDI. Un basto rango de equipamiento está disponible para este propósito, desde teclados muy baratos a elementos electrónicos de calidad profesional. El costo varía desde cientos a miles de dólares, y ese no sería el modo de conducirse a menos que te tomes muy seriamente el sistema MIDI.
Serías bastante afortunado de tener semejante equipamiento, y probablemente tendrías alguna idea sobre cómo hacerlo funcionar en tu PC. Si el equipamiento tiene la habilidad de producir sonido por sí mismo, como lo hacen algunos teclados MIDI, tú podrías querer usar esos parlantes para reproducir MIDI. Si tu equipamiento MIDI no tiene parlantes o si tú intentas grabar la salida de audio desde éste equipamiento, probablemente querrías conectar la salida de audio de tu teclado o módulo de sonido en una entrada de audio en tu placa de sonido. Ésto te permitirá dirigir todo hacia el mezclador de la placa de sonido. Hay muchas elecciones en cuanto a interfaces MIDI externas.
La ruta (forma) más simple y menos cara es el adaptador MIDI en puerto joystick. Se encuentra en muchas placas de sonido comunes, de bajo costo (low-end), cómo la Sound Blaster PCI 128 (snd-ens1371). Puede ser un poco difícil lograr conectar un cable “Y-cable” adecuado o una caja MIDI (MIDI box) al adaptador, y probablemente tendrás que conseguir uno online. Con el adaptador correcto en la mano, todo lo que queda es conectar tu equipamiento en la caja MIDI, o en el cable usando cables MIDI de 5-pin DIN standard, con el driver snd-ens1371, y esos para muchas placas de sonido similares, es solamente cuestión de asegurarse de que los módulos snd-seq-midi y snd-rawmidi estén cargados (usando el mecanismo particular que tu distribución provee para esa función).
USB está suplantando el modo tradicional en conexiones MIDI por cable, y muchos fabricantes están produciendo teclados que se conectan directo a tu PC usando cables USB standard. Hay también disponibles, dispositivos que proveen interfaces MIDI multi-puertos. Estas interfaces se conectan a tu PC usando un cable USB, y proveen muchos sockets (enchufes) MIDI tradicionales de 5-pin.
Evolution construye muchos modelos que son conocidos por alcanzar las especificaciones del MIDI USB, que son, por ende, compatibles con Linux. Chris Cannam, uno de los principales desarrolladores de Rosegarden, usa un teclado Evolution-2, y reporta que éste funciona usando el módulo snd-usb-audio, que debe ser probablemente cargado automáticamente por hotplug. Él imagina que la mayoría de los otros productos de otros fabricantes son similares.
Las interfaces Edriol UM-2 y mAudio MidiSport 2x2 son conocidas por trabajar bajo Linux. No tengo experiencias con estas cosas yo mismo, entonces, sólo puedo proveer información de segunda mano.
Pedro Lopez-Cabanillas, un desarrollador contribuyente de Rosegarden, reporta que hacer andar Edirol UM-2 es tan simple como conectar el cable USB y cargar el módulo snd-usb-audio, que debe ser probablemente cargado por hotplug.

Las Interfaces USB MIDI de Pedro Lopez-Cabanillas...
Pedro y Chris, ambos reportan que las interfaces mAudio MidiSport son más complicadas para hacerlas funcionar. Pedro reporta que “algunas de ellas requieren un programa firmware cargado dentro de la RAM del dispositivo antes de que puedas usarlo. Hay firmwares GPL (paquete ezusbmidi) para los dispositivos 1-port and 2-port (hasta Midisport2x2), ellos son proveidos como paquetes RPM para Red Hat por CCRMA, y para Mandrake por Thac. También hay paquetes listos para usar para AGNULA/Debian y Gentoo, o tú puedes retocar y compilar el firmware desde sus fuentes”. Chris reporta que los usuarios con los kernels de las series 2.6 pueden tener dificultades usando estos dispositivos. Pedro sugiere que le des un vistazo a la información disponible en zero config environment disponible en CCRMA si estás corriendo Red Hat o Fedora.
Para aquellos sin un hardware externo disponible, hay dos categorías restantes. Unas pocas placas de sonido tienen infraestructura MIDI construida internamente que ALSA pueda usar. El resto de la gente deberá usar algún tipo de sintetizador por software.
Éste es el próximo y más fácil camino para lograr que el MIDI funcione. Que yo sepa, ésta categoría solamente se aplica a esas placas de sonido basadas en un chipset Emu, como la serie Sound Blaster Live!/Audigy (snd-emu10k1), y la AWE 32/64 (snd-emu8000). Yo tengo una Sound Blaster Live! Value Edition y puedo reportar que es fácil hacerla funcionar, y suena razonablemente decente.
Primero tendrás que asegurarte de tener los módulos apropiados cargados en el kernel, y que estás usando los módulos ALSA, que tienen “snd” en el nombre. Si tu distribución tiene una linda utilidad para este propósito úsala. Yo no pude encontrar una utilidad gráfica de reporte de módulos que esté disponible universalmente. La única alternativa que puedo darte que está comprobada en cuanto a funcionar en todas las distribuciones supone meterse en la temida línea de comando para ingresar un comando como:
lsmod | grep snd
Yo tengo los siguientes módulos cargados para SB Live!:
snd-seq-oss snd-seq-midi snd-emu10k1-synth snd-emux-synth
snd-seq-midi-emul snd-seq-virmidi snd-seq-midi-event snd-seq
snd-emu10k1 snd-pcm-oss snd-mixer-oss snd-pcm snd-timer
snd-hwdep snd-util-mem snd-page-alloc snd-ac97-codec
snd-rawmidi snd-seq-device snd soundcore
Si no ves “snd” ciertamente tienes cargados los módulos (drivers) incorrectos (OSS, el viejo sistema de sonido), o no hay módulos (drivers) de sonido cargados de ningún tipo. Solucionar eso está más allá del marco de éste libro, siendo que hay tantas diferencias entre las distribuciones Linux. Me temo que deberás referirte a cualquier fuente de ayuda que tu distribución provea en tal caso.
Luego deberás chequear para asegurarte de que has subido los volúmenes de tu mezclador. Cubriré este complicado mezclador en detalle cuando hable acerca de manejar varias entradas y salidas con el propósito de grabar audio. Por el momento, debería ser suficiente asegurar que el canal “music” posea un volumen alto. Mi mezclador preferido es KAmix. Desafortunadamente no está disponible extensamente fuera de SuSE, y probablemente deberás compilarlo tú mismo (tuve que resolver bastantes problemas para compilarlo por mí mismo en Debian). No es el mezclador más bonito pero es el único que he encontrado que me permite controlar mi Sound Blaster Live! consistentemente y eficientemente para lograr los resultados que quiero.
Finalmente, necesitarás cargar un soundfont dentro de la placa. Estas placas usan soundfonts .sf2 que están ya disponibles. No estoy informado de un soundfont lo suficientemente libre para ser incluido con cualquier distribución Linux, entonces más que nada deberás obtener uno desde la web, o quizás desde el CD que viene con tu placa de sonido. He tenido buena suerte con soundfonts del sitio de Personal Copy, pero no doy ninguna garantía expresa o implícita a cerca de lo adecuado o la legalidad de sus soundfonts, o cualquier otros soundfonts que tú puedas obtener en la web para cualquier propósito particular.
Una vez que tú hayas obtenido un soundfont, necesitarás cargarlo en la placa. No hay actualmente ninguna interfaz de usuario amigable para manejar ésto. Estoy desarrollando una utilidad para éste propósito, pero no tengo tiempo para terminarla antes de publicar éste libro, entonces no haré referencia a ella. Por el momento, tus dos alternativas son correr la utilidad de línea de comando asfxload, o configurar Rosegarden para cargar un soundfont para tí en el inicio, vía Settings -> Configure Rosegarden -> Sequencer -> General

Esta es realmente la categoría “todo lo demás”. Incluye demasiadas placas de sonido como para listarlas; cada una con su propio set de módulos. Las Sound Blaster PCI y Ensoniq AudioPCI (ens-1370, ens-1371, ens-1373), y los integrados snd-intel8x0 y snd-vía82xx son probablemente las mas comunes, pero las placas de sonido que entran dentro de ésta categoría son una legión. El proceso para lograr que ellas reproduzcan MIDI es similar en todos los casos.
Primero necesitas asegurarte de que tienes la infraestructura MIDI ALSA cargando los siguientes módulos en adición a cualquier otro módulo que requieras para tu hardware en particular:
snd-seq-midi snd-seq-virmidi snd-seq-midi-event snd-seq
snd-timer snd-rawmidi snd soundcore
(La lista de arriba fue extrapolada del ejemplo previo, y contiene módulos que no se van a cargar actualmente con tu hardware particular. Si cargar uno o mas de los módulos listados falla, no te preocupes a cerca de eso a menos que posteriormente encuentres que tu subsistema MIDI no funciona.)
El modo menos complicado para lograr que una de éstas placas de sonido reproduzca MIDI es usar QSynth. Es simple usar un soft synth ALSA que toma los datos MIDI como entrada y usa el formato .sf2 para prodicir una salida de audio. En su más simple configuración puede usar ALSA para salida de audio, evadiéndo la necesidad de correr JACK. Si tú también necesitas o quieres correr JACK, éste puede conectar su salida a JACK. En su configuración, tú puedes también usar una variedad de otros sintetizadores por soft como Hydrogen y ZynAddSubFX, todos compartiendo la misma salida de audio. QSynth es el más útil para producción de música en general, y por eso mi foco está aquí.

La primer decisión que deberás tomar es usar ALSA o
JACK como salida. Esto supondrá iniciar y configurar JACK en
detalle en un momento. No importa qué opción elijas,
ambas son configuradas por medio del botón Setup. En
éste ejemplo estoy usando JACK. Toma especial nota de que yo
he ajustado el sample rate para ser igual al que estoy usando con
JACK, que es 48,000 Hz (por razones que voy a explicar directamente).
También nota que yo he chequeado [x] Auto Connect JACK
Outputs. Esto permite a Qsynth hacer su propia conexión
por defecto con JACK, que es muy conveniente.
Finalmente es necesario cargar al menos un soundfont. Estos son los mismos .sf2 soundfonts usados por las series de placas SB Live!, y son cargados vía diferentes solapas en la misma página de setup.

También es posible reproducir usando synth plugins. Hay un plugin FluidSynth-DSSI que provee esencialmente la misma funcionalidad que QSynth, excepto que está integrado directamente a Rosegarden. Lo describiré en detalle cuando hable acerca de asignar instrumentos a pistas, porque su configuración y uso es enteramente interna en Rosegarden. Por el momento es suficiente saber que existe, y que requiere un server JACK funcionando correctamente.
Para reproducir audio necesitarás correr JACK.
JACK es una abreviación de Jack Audio Connection Kit. JACK es un flexible servidor de audio que permite a sus aplicaciones clientes compartir el hardware de audio de un modo similar, y compartir un transporte en común. Provee mecanismos flexibles para dirigir entradas y salidas hacia y desde aplicaciones clientes usando un simulador de cable (jack-and-cable metaphor). Fue construido para los profesionales en audio que quieren obtener la mejor posible performance de su hardware, pero siendo profesional o no, es algo que deberás entender si quieres reproducir audio con Rosegarden.
Es teóricamente posible correr JACK y Rosegarden con un kernel ordinario, pero nunca obtendrás resultados aceptables, incluso en una máquina con altas especificaciones. Poder en el CPU y abundante RAM son insuficientes para garantizar la performance requerida, y tú, desafortunadamente, necesitas correr un kernel especializado. Afortunadamente, cosas como AGNULA lo hacen mucho más fácil de lo que solía ser. Ahora es posible hacer trabajo en audio de calidad en Linux sin haberse transformado en un experto haker del kernel. Tengo que admitir que estaba impresionado con esto cuando finalmente vine a probarlo por mí mismo. Si leíste algunas de las versiones de éste libro previas al release (Rosegarden-4 1.0), podrás recordar varias declamaciones que escribí a cerca del audio en Linux a lo largo del camino. Puedo ahora reportar que un feliz JACK puede ser tan simple como bajar algún kernel de AGNULA o CCRMA, instalarlo y reiniciar. Los caprichos particulares a cerca de instalar un kernel están fuera del marco de éste libro, pero yo estoy trabajando con éstos paquetes en mi PC Debian ( los usuarios de laptops pueden necesitar los módulos PCMCIA también):
alsa-modules-2.4.25-1-multimedia-686
kernel-image-2.4.25-1-multimedia-686
NOTA: El largo del camino puede variar si tu quieres usar un kernel de las nuevas series 2.6. Mientras escribo ésto ( 2.6.8 está actualmente en Debian unstable), no he escuchado todavía que nadie obtuviera buenos resultados trabajando con audio con los nuevos kernels. Alguna de las capacidades puestas en el kernel de AGNULA han sido incorporadas dentro del kernel 2.6, pero no todas ellas. Te recomiendo que te quedes con la serie 2.4 por ahora.
El modo más simple de controlar tu server JACK es usando qjackctl. Es una aplicación muy útil que provee un modo conveniente de iniciar y parar tu servidor JACK, para jugar con varios parámetros de configuración y encontrar la mejor combinación para tu hardware, y para manejar conexiones JACK entre aplicaciones.

Para cambiar la configuración de tu server JACK, usa el botón Setup. El proceso que sigue probablemente será tedioso y consumirá mucho tiempo, pero una vez que hayas descubierto los “números mágicos” para tu hardware, después de eso todo debería continuar funcionando. El kernel “parcheado” que has instalado le permite a JACK tener una prioridad más alta que lo normal, y ésto requiere privilegios de administrador (root). Deberías configurar JACK para iniciar usando “jackstart” así podrás correr Rosegarden y JACK como un usuario normal.

Las configuraciones que se muestran son las que funcionan mejor para mí Sound Blaster Live!, y tú probablemente tendrás que hacer algunos cambios aquí. Si tienes más de una placa de sonido quizás necesites cambiar el seteo “Interface”. Actualmente no tengo ninguna experiencia en esa situación, entonces estás por tí mismo para experimentar en ese caso.
Descubrir la mejor combinación es un proceso que consiste en jugar con “Frames/Period”, "Sample Rate" y "Periods/Buffer". Tu objetivo aquí es encontrar la más baja latencia posible, cómo se reporta en la esquina inferior derecha del diálogo. Mientras cambian las configuraciones, éste número te mostrará los resultados brindados por esa combinación. Tú querrás alto el sample rate y bajos frames/periods y periods/buffer.
Te sugiero que logres la mínima posible latencia, click en OK, luego inicia el servidor JACK con el botón Start en el diálogo principal. Si el server falla en iniciar, vuelve a éste diálogo y continúa trabajando, cambiando parámetro por parámetro hasta que encuentres una combinación que funcione. Muchas combinaciones de parámetros probablemente causarán que JACK falle inmediatamente. Deberías rápidamente obtener una idea a cerca del rango de posibles valores que puedes usar y que funcionen, y luego podrás lograr la combinación ideal desde allí. (Por ejemplo, no es posible iniciar JACK en mi hardware con un parámetro periods/buffer distinto de dos, entonces no hay nada que hacer salvo usar ese seteo y moverse hacia un parámetro diferente.)
Es muy importante evadir xruns. Si encuentras una combinación de parámetros de baja latencia que le permitan al servidor JACK iniciar, pero que producen un desbordamiento de xruns, estás apuntando demasiado alto. Xruns son reportados en el diálogo principal de QJackCtl. Idealmente deberías ver ésto:

Si, por otro lado, ves algo como ésto, tienes un problema por delante:

Nunca querrás ver ésto muy rojo. Verlo apenas un poco rojo es inaceptable, pero probablemente podrás continuar un poco mientras tus xruns sean pocos y espaciados. Xruns causan pérdida de audio; clicks, pops, distorsiones, efectos del tipo flanger. Si obtienes mas de dos o tres en el curso de un día, probablemente necesitas afinar JACK un poco y perder algo de performance para ganar calidad.
Rosegarden establecerá conexiones correctas automáticamente; así lo harán QSynth e Hydrogen, si los has configurado para hacer eso. ZynAddSubFX y quizás otras aplicaciones JACK, no harán ésto. Para ver y cambiar las conexiones has click en el botón Connections. Hacer y deshacer conexiones es un proceso que consiste en marcar uno o más ítems en el panel izquierdo y uno o más ítems en el derecho, y luego usar los botones Connect o Disconnect como se requiera.

NOTA: Puedes también usar QJackCtl para manejar conexiones ALSA MIDI. No recomiendo que hagas eso mientras estás corriendo Rosegarden. Rosegarden tiene su propio MIDI router, y no trabajará apropiadamente si cambias las conexiones MIDI externamente. De todos modos, si, por ejemplo, quieres reproducir con tu Sound Blaster Live! o QSynth con tu teclado MIDI sin correr Rosegarden, puedes usar las conexiones MIDI de QjackCtl para conectarlo.