# [alsa] Sonido estéreo repartido con bmp? (5.1 surround)

## Membris

Tengo una tarjeta integrada VIA VT1616i de 6 canales, y la puedo hacer funcionar perfectamente con los drivers alsa del kernel 2.6.11, pero sólo escucho todos los altavoces cuando reproduzco medios expresamente en 5.1 y AC3, cuando reproduzco MP3 normales nunca se oyen los traseros y me gustaría saber si hay alguna forma de repartir el sonido cuando se esté reproduciendo sonido estéreo, concretamente con beep-media-player, que es el reproductor que uso.

¿Alguien en el mismo caso?

----------

## Stolz

Hola Membris, te hemos echado de menos en la campus-party  :Smile: .

Para reproducir fuentes de menos de 5 canales (o los que sean) por los cinco altavoces tienes que definirte un dispositivo PCM de ALSA. Este dispositivo ha de ser del tipo route y se encargará de "duplicar" los dos canales de la musica para que se escuchen por el resto de altavoces.

Para definir tus propios dispositivos PCM los tienes que indicar en el archivo  ~/.asoundrc

Por ejemplo, un dispositivo que redireccion a los 5 altavoces seria

```
pcm.ch51dupXMMS {

        type route

        slave.pcm surround51

        slave.channels 6

        ttable.0.0 1

        ttable.1.1 1

        ttable.0.2 1

        ttable.1.3 1

        ttable.0.4 1

        ttable.1.4 1

        ttable.0.5 1

        ttable.1.5 1

}
```

Para más información consulta http://alsa.opensrc.org/index.php . Ahi se explica que son todos esos numeros.

Una vez creado, solo te falta indicar a BMP que lo use.  En XMMS hace de la siguiente forma (imagino que BMP tendra algo similar): Preferencias (Ctrl+P), elegir como plugin de salida 'ALSA plugin', dale al boton 'Configurar' y rellenar a mano el campo 'Dispositivo de audio'. No aparecera en la lista el que has definido asi es que pon a mano en dispositivo 'ch51dupXMMS'.

Por supuesto, este dispositivo lo podrás usar desde cualquier otro programa compatible con ALSA, tan solo deberas de configurarlo para que use ch51dupXMMS en lugar del predeterminado. Por ejemplo, Xine deja escoger que dispositivo usar para fuentes de1 y 2 canales respectivamente. Para las de un canal podrias usar uno que lo redireccione a los 5 altavoces y para las de solo dos canales, podrias usar el siguiente, que duplica los delanteros en los traseros:

```
pcm.ch40dup {

        type route

        slave.pcm surround40

        slave.channels 4

        ttable.0.0 1

        ttable.1.1 1

        ttable.0.2 1

        ttable.1.3 1

}

```

Espero haberte ayudado.

Saludozzzzzzzz

----------

## Membris

A vosotros también se os echa de menos, pero espero que sólo hasta la próxima MLP  :Smile: 

Desde luego que cada post que haces lo bordas, en serio, no me sorprende ver encima de tu nick esas letras verdes jeje.

Llevaba tiempo poniéndome a mirar este asunto pero siempre lo dejaba, bendita la hora que puse este post, pues me ha funcionado a la perfección con BMP sin ninguna dificultad, Mozart se ha encargado de demostrarlo y ahora voy a darle caña a Xine, que por cierto no me había fijado en que se podía usar un dispositivo distinto para mono y stereo, sumamente útil.

Sólo conocía alsa-project.org, me apunto la página que me has dicho por si aprendo alguna cosilla más.

Por cierto, sabes si se puede hacer para que al modificar el volumen del PCM, se modifiquen automáticamente otros controles diferentes? esto es, para subir el volumen de todos los satélites al mismo tiempo con sólo subir el pcm cómodamente desde mi gkrellm por ejemplo.

Muchas gracias, me has solucionado la vida  :Cool: 

----------

## Stolz

 *Membris wrote:*   

> Por cierto, sabes si se puede hacer para que al modificar el volumen del PCM, se modifiquen automáticamente otros controles diferentes? esto es, para subir el volumen de todos los satélites al mismo tiempo con sólo subir el pcm cómodamente desde mi gkrellm por ejemplo.

 

Hacerlo con gkrellm lo veo dificil. Yo antes lo hacia con un script para el mando a distancia usando Lirc: Al pulsar el boton de subir/bajar volumen del mando, realmente estaba asociado a  multiples acciones que bajaban/subian todos los niveles necesarios del mezclador.

Ahora he descubierto que algunos programas (por ejemplo XMMS o Xine) tienen en la seccion de audio una opcion que se llama "Control del volumen por software" o algo similar. Al marcarla, en vez de controlar el volumen a traves del mezclador de la tarjeta (hardware) cuando tocas el nivel de volumen se sube/baja el volumen de todos los canales por software, no solo los delanteros. Todo un descubrimiento  :Smile: . Concretamente, en Xine se llama "Método de control de mezclador de audio" y no recuerdo en el GUI como se activaba,pero si editas el archivo ~/.xine/config busca y modifica la siguiente linea:

```
# Método de control de mezclador de audio

# { Sound card  Software }, default: 0

gui.audio_mixer_method:Software
```

En XMMS se encuentra en 'Opciones->Preferencias->Plugin de Salida', estando elegido el plugin ALSA pulsa 'Configurar' y marca la opcion 'Usar control de volumen por software'.

Saludozzzzzz

----------

## chiru

Stolz, yo tengo un problemilla. He usado el plugin que posteas mas arriba en mi kubuntu y la cosa es que se oyen los frontales, el central y el subwoofer pero no los traseros. En cambio, hay una opcion en kde que me permite intercambiar los altavoces traseros por los delanteros y efectivamente los altavoces traseros suenan (pero obviamente los delanteros se callan).

La cosa es que no he sabido encontrar que hacen exactamente los ttable y me pregunto si los numeros pueden cambiar en funcion del hardware o de alguna configuracion del alsa.

Como lo ves?

----------

## Stolz

Hola chiru, bienvenido al foro.

Lo primero, agradecerte haber usado la opción de búsqueda, no es algo habitual entre los recién llegados al foro  :Smile: .

Lo siguiente, es saber si el sonido 5.1 (dispositivo surround51) te funciona. Como es lógico, hasta que no consigas que el 5.1 funcione no podrás crear un dispositivo esclavo partiendo de él. Para saber si el dispositivo surround51 funciona tienes los pasos explicados en http://alsa.opensrc.org/index.php?page=SurroundSound

Todas las tarjetas que he configurado siempre han tenido los altavoces numerados igual, pero supongo que es posible que la numeración varíe en los distintos tipos de hardware. En tu caso, con cambiar los ttable para que se dupliquen los que suenan creo que sería suficiente, pero antes de intentarlo, sigue leyendo  :Wink: 

Por suerte,  toda la documentación que en su día estaba repartida por la lista de correo de ALSA (de donde yo la saqué) ahora se encuentra disponible en la web de alsa. Lo que escribí en mi anterior post, ahora se encenta en http://alsa.opensrc.org/index.php?page=FAQ028 . Fíjate que en este enlace, proponen un nuevo método para duplicar los canales, bastante mas sencillo, usando el "route_policy duplicate" que es independiente de la numeración de los altavoces por lo que  es posible que te sirva  :Smile: . Pruebalo y comentas.

Saludozzzzzz

----------

## LinuxBlues

Stolz viendo todo lo que sabes sobre el tema ¿podría hacerte una pregunta?

A mí lo que no me queda claro es lo del ipc_key en la ayuda y en las páginas que comentas se dice que debe ser único, pero ¿por sección de .asoundrc/asound.conf? o ¿por dispositivo/tarjeta?

Gracias.

----------

## Stolz

Si realmente yo no se mucho. Por suerte siempre he tenido tarjetas con aceleración por hardware y todo me ha funcionado a la primera, por eso no me he visto forzado a investigar y por tanto no se mucho. De hecho, desconocía el uso de del ipc_key, pero viendo la descripción de la web de alsa, entiendo que debe ser único por dispositivo/tarjeta. Lo cual no cuadra con los ejemplos. En varios ejemplos aparecen distintos dispositivos con el mismo valor, o distintos valores con el mismo dispositivo. Tal vez sea debido a que ponen en un mismo archivo varios ejemplos y por eso se mezclan ambas situaciones. Creo que lo mejor sería preguntar en al lista de correo de alsa. De ahí obtuve yo la ayuda antes de tener una documentación tan organizada como ahora.

Saludozzzzzzz

----------

## chiru

Hola que tal!

 Ante todo que peazo de biblia estas hecho.   :Very Happy: 

 Te cuento. He probado el surround51 con el comando speaker-test (no sale en la pagina de alsa pero supongo que sirve). El programita de marras reproduce ruido por los canales que le dices y me he dado cuenta que:

          Cuando pruebo el surround 51, tengo que los frontales se oyen correctamente, peeeeeeeero los traseros izquierdo y derecho los confunde con el central y el soubwoofer respectivamente. he probado tambien el surround40 y se oyen los frontales pero no los traseros.

      Usease que supongo que sera que no se direccionan bien los canales(no?) La tarjeta es integrada en placa y lleva dos conectores extra (a parte del micro, entrada de linea y salida de altavoces), de manera que el driver de windows me decia que conectara los frontales a la salida normal y los traseros y centrales/subwoofer en las dos tomas extra.

Mirare en la lista de correo de alsa como dices a un apañero por aqui arriba a ver que encuentro.

Muuuuuuuuuuuchas gracias!

----------

