Jump to content

Archived

This topic is now archived and is closed to further replies.

tuXXX

[Tuto][Initié] ALSA, gestion du son sous linux

Recommended Posts

:transpi:4) dmix

:oops:5) dmix+émulation oss

En utilisant un fichier de config avec les 2 recommendation (sections pdm.!default et pcm.dsp0) le systeme de sons de KDE et de quelques autres programmes se retrouvaient incapables d'utiliser ALSA : ils ne fonctionnaient plus qu'avec OSS, ce qui est dommage :|

J'ai supprime la section pcm.!default et j'ai garde seulement la section pcm.dsp0.

Tout marche bien, ALSA pour KDE et le sons "OSS emule" d'autres applications (java en particulier, en executant aoss javaws [...] ) :D

J'avais peut-etre juste mal compris les recommendations ?

Share this post


Link to post
Share on other sites

Salut !

Je poste sur ce topic pour avoir quelques informations au sujet de la gestion de plusieurs cartes sons :

Je souhaite, dans un avenir proche, réaliser un système audio permettant de diffuser LA MÊME source audio sur plusieurs kit d'enceintes.

Plus concrêtement, je souhaite pouvoir écouter une zik dans n'importe quelle pièce chez moi sans passer par du matériel (semi) professionnel coûteux et en n'installant que des enceintes dans les pièces concernées.

ALSA en est-il capable ?

Si non, quel OS/appli (windows ?) me permettrait de faire ça ?

Edit : je viens de trouver ça mais ça m'a l'air un peu complexe comme méthode...

Share this post


Link to post
Share on other sites

Le même son sur plusieurs cartes son sur le même ordinateur ou bien le même son sur plusieurs ordinateurs?

En tout pour le premier cas avec jack c'est assez simple à faire (pour une solution full-alsa je sais pas trop.

Share this post


Link to post
Share on other sites

Oui c'est bien pour le premier cas qui m'intéresse.

En gros, je veux disposer d'un ordinateur muni de plusieurs cartes son, qui soit capable de distribuer le son sur une, deux, trois voire encore plus de cartes en même temps.

Ainsi, je pourrais lancer une écoute dans plusieurs pièces différentes (l'idéal serait que je puisse choisir avant ET pendant la lecture sans avoir à rebooter le PC), et je pourrais ainsi me balader dans mon habitat en ayant la même qualité d'écoute quelle que soit la pièce où je me situe :chinois:

J'espère que je ne paraîs pas trop excentrique... mais cette idée me trote dans la tête depuis pas mal de temps !

Edit : je viens de trouver le nom générique de ce que je souhaite faire, ça s'appelle du multiroom.

Share this post


Link to post
Share on other sites

Mode "clone" entre 2 cartes son:

I : en alsa pur

1) configuration de alsa

Il faut créer un device qui contiendra toutes les cartes que l'on souhaite utiliser

ctl.mymulti { type hw; card 0; } # il faut mettre un mixer, on prend par exemple la carte 0
pcm.mymulti
{
type multi;
slaves.a.pcm "hw:0,0"; # première carte son, on aurait pu mettre autre chose que "a" comme identifiant
slaves.a.channels 2;
slaves.b.pcm "hw:1,0"; # deuxième carte son
slaves.b.channels 2;
bindings.0.slave a; bindings.0.channel 0;
bindings.1.slave a; bindings.1.channel 1;
bindings.2.slave b; bindings.2.channel 0;
bindings.3.slave b; bindings.3.channel 1;
}

Ajout d'un device de routage :

ctl.routemulti { type hw; card 0; }
pcm.routemulti
{
type route;
slave.pcm "mymulti";
ttable.0.0 1; ttable.1.1 1;
ttable.0.2 1; ttable.1.3 1;
}

(c'est une sorte de tableau avec d'un côté les entrées et de l'autre les sorties)

2) test du device routemulti

$ speaker-test -c4 -Droutemulti

(seuls les 2 premiers canaux sont mappés)

3) utilisation des logiciels utilisant alsa

Par exemple:

$ mplayer -ao alsa:device=routemulti monfichier

II : avec jack

1) configuration de alsa

comme en alsa pur

2) test du device mymulti

$ speaker-test -c4 -Dmymulti

3) lancement de jackd

$ jackd -d alsa -d mymulti -o 4 -P -m

"-d alsa" : utilisation du backend alsa

"-d mymulti" : utilisation du device mymulti pour le backend alsa

"-o 4" : 4 channels de sortie pour le backend alsa

"-P" : ports de playback pour le backend alsa

"-m" : ports de monitor pour le backend alsa

4) lancement de qjackctl

$ qjackctl

-> clic sur "Connect"

-> connexion de "monitor_1" avec "playback_3" et "monitor_2" avec "playback_4"

5) lancement d'une appli utilisant jack : exemple avec mplayer

$ mplayer -ao jack monfichier

Et ça donne un truc comme ça :

screenze3.th.png

5bis) lancement d'une appli utilisant alsa avec un device de type jack

Il faut rajouter ce device de type jack dans la configuration de alsa :

pcm.alsa2jack { type plug slave.pcm "alsa2jack_plugin" }
pcm.alsa2jack_plugin
{
type jack
playback_ports
{
	0 alsa_pcm:playback_1
	1 alsa_pcm:playback_2
}

Puis lancer une application qui utilise alsa en utilisant ce device.

Ce qui donne par exemple :

screen3ee7.th.png

notes:

  • Je n'ai pas réussi à faire un device de type multi comprenant une carte son 6 canaux.
  • Il faut que mplayer soit compilé avec le support jack pour pouvoir utiliser "-ao jack"
  • Il faut installer alsa-plugins avec le support jack pour pouvoir utiliser un device de type jack dans alsa
  • Pour le device alsa de type jackd, utiliser l'option de jackd "-p 4096" pour mettre une haute priorité peu aider à ne pas avoir d'arrêt de tout. Et il y avait quelques petites erreurs de temps en temps.
  • La méthode alsa pur est de loin la plus fiable, mais est moins flexible. Il est à noter que le plugin jack pour alsa n'est pour l'instant pas assez bien à mon avis.

Share this post


Link to post
Share on other sites

Hello,

Comment indiquer au """serveur de son""" que je voudrais sortir en numérique sur le CINCH ?

Ma carte son est celle integrée a ma carte mere et donc une AC97.

Share this post


Link to post
Share on other sites

Bien le bonsoir tout le monde,

Bon ça fait un petit moment que je galère pour configurer mon bazar ....

Alors voici ma config :

Carte son intégré Intel

Carte son SB Live 5.1

J'utilise la dernière ubuntu (feisty).

J'ai un Kit 5.1 connecté à ma SB.

Ce que je souhaite : Avoir du son sur mes 5 enceintes quand j'ecoute de la musique avec Amarok.

Voici mon asound.conf :

Je l'ai configuré à partir de http://alsa.opensrc.org/Playing_stereo_on_...tup_%28Howto%29

pcm.!default { type hw card "Live" }
ctl.!default { type hw card "Live" }
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
}

pcm.ch51dup {
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 0.5
ttable.1.4 0.5
ttable.0.5 0.5
ttable.1.5 0.5
}

Quand je fais un test avec

aplay -Dch51dup 2ch-stereo.wav

ça marche nikel ;)

Par contre quand je configure XMMS et ben la c'est le drame :ouioui: . Voici ce que je fais :

  1. Je vais dans les préférences
  2. Greffon de sortie Alsa
  3. Je vais dans configurer et je met ch51dup dans péripherique audio

Quand je lance un morceau, le son sort dans la carte Intel :transpi:

J'ai essayé pour amarok et c'est pareil..si quelqu'un a une idée .....

Je pense qu'en fait la sortie par défaut de surround51 est sur la mauvaise carte mais je ne trouve pas comment je peux définir ça.

Share this post


Link to post
Share on other sites

juste une question :

J'aimerai installer un kernel 2.4 (de kernel.org) sur ma debian Etch, est-ce que les kernels 2.4 ont intégré alsa depuis le temps, ou faut-t-il l'installer séparément ??

Share this post


Link to post
Share on other sites

Bonjour a tous, je suis en train de développer un projet pour lequel il est primordiale d'utiliser le microphone d'une webcam(logitech pro 4000)(/dev/dsp1) et flashplayer. Le probleme c'est que flashplayer utilise d'aprés ce que j'ai compris la carte 0 de alsa, donc j'ai éditer mon alsa base pour mettre le module son de la webcam en carte 0, le probleme c'est que maintenant je n'ai plus de son sur les haut parleurs(on pouvais s'en douter!!!!),donc pour continuer dans mes bidouillages je comptais recopier ce qui sort sur /dev/dsp sur /dev/dsp1.

Si mes bidouillages vous semble anormal et que vous connaisser une mailleurs solution dite le moi car ca fait une semaine que je bloque sur le probleme

mon alsa-base:

alias snd-card-1 snd-hda-intel
alias snd-card-0 snd-usb-audio

# autoloader aliases
alias sound-slot-0 /sbin/modprobe snd-card-0
alias sound-slot-1 /sbin/modprobe snd-card-1

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-ioctl32; :; }
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-pcm-oss; :; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --Qb snd-mixer-oss; :; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-seq-midi; /sbin/modprobe --quiet snd-seq-oss; :; }

# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-emu10k1-synth; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-seq; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe -Qb saa7134-alsa; :; }

# Load snd-seq for devices that don't have hardware midi;
# Ubuntu #26283, #43682, #56005; works around Ubuntu #34831 for
# non-Creative Labs PCI hardware
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-seq; }
# Prevent abnormal drivers from grabbing index 0
options snd-usb-audio index=0
options snd-snd-hda-intel index=1

# Ubuntu #62691, enable MPU for snd-cmipci
options snd-cmipci mpu_port=0x330 fm_port=0x388

Les interfaces utilisées par flash player aprés ma modification

sigma@sigmabox-2:~$ sudo lsof |grep /dev/snd
flashplay 13123 sigma mem CHR 116,4 13880 /dev/snd/pcmC0D0c
flashplay 13123 sigma 11u CHR 116,4 13880 /dev/snd/pcmC0D0c

Je ne suis pas le seul dans ce cas:

Hey guys,

I had the same problem here, and after thinking about it I'm pretty sure I know what the problem is. The flash plugin isn't generating a full list of microphones from all mixers, just the default one. That means a workaround is possible if you want to go through the trouble of reordering your sound devices.

For me, something like this worked:


/etc/modprobe.d/alsa-base:

Code:

# Manual ordering allows USB mic for flash plugin

options snd-usb-audio index=0

options snd_intel8x0 index=1

options saa7134-alsa index=2

# Prevent abnormal drivers from grabbing index 0

...

Basically I took snd-usb-audio out of the list of devices that can't grab /dev/dsp (i.e. the options by default only allow it to grab /dev/dsp1 or 2 or 3, etc.). I then forced the ordering of my sound cards:

/dev/dsp = USB (webcam)

/dev/dsp1 = internal sound card

/dev/dsp2 = video capture card

Now Flash correctly detects my microphone but doesn't play back audio for the same reason that the microphone didn't work in the first place... So in short, it looks like the flash plugin isn't smart enough to look beyond the first audio device yet (for either sound playback *OR* microphone). I do believe they know about this and are hoping to get it fixed. Guess we'll have to wait it out and see when that happens...

Aidez moi svp

Share this post


Link to post
Share on other sites

Tu peux configurer alsa pour qu'il utilise ta carte son hw:1 par défaut à l'aide du fichier /etc/asound.conf.

Share this post


Link to post
Share on other sites

Le problème, c'est plutôt qu'il faudrait créer une carte virtuel qui serait la carte par défaut, dont l'entrée serait redirigée depuis la webcam et dont la sortie serait la sortie de la vraie carte son. ça doit pouvoir se faire, mais faut y réfléchir. tuXXX ? :transpi:

Share this post


Link to post
Share on other sites
Le problème, c'est plutôt qu'il faudrait créer une carte virtuel qui serait la carte par défaut, dont l'entrée serait redirigée depuis la webcam et dont la sortie serait la sortie de la vraie carte son. ça doit pouvoir se faire, mais faut y réfléchir. tuXXX ? :transpi:

Voila c'est exactement ce que je cherche a faire mais comment????

Share this post


Link to post
Share on other sites
Le problème, c'est plutôt qu'il faudrait créer une carte virtuel qui serait la carte par défaut, dont l'entrée serait redirigée depuis la webcam et dont la sortie serait la sortie de la vraie carte son. ça doit pouvoir se faire, mais faut y réfléchir. tuXXX ? ;)

Ça avec alsa c'est facile, le problème c'est que flashplayer utilise oss à travers l'émulation de alsa, et du coup il ne passe pas par alsa.

Pour info :

pcm.hybrid {
type asym
playback.pcm "carte"
capture.pcm "micro"
}

Share this post


Link to post
Share on other sites
Hello Wolrd,

Juste un petiit correctif et un apport d'info :

Voici la liste des applis alsa-tools :

* alsactl

* amixer, alsamixer

* aplay/arecord

* aconnect, aseqnet

* envy24control

* hdsploader, hdspmixer

* vxloader

ex : aconnect n'est pas dans alsa-utils, mais dans alsa-tools => http://www.alsa-project.org/main/index.php...mentation#Tools

Pour moi, quand je parle de alsa-utils ou de alsa-tool, c'est ce qui est dans l'archive concernée (sous gentoo ça se décompresse et ça s'installe comme un tout donc c'est aussi ce qui s'installe).

J'ai vérifié avec les programmes installés et le contenu des sources, voici ce que contient alsa-utils :

* alsaconf

* alsactl

* alsamixer

* amidi

* amixer

* aplay (qui se compile également en arecord)

* seq (qui contient aconnect, aplaymidi+arecordmidi, aseqdump et aseqnet)

* iecset

* speaker-test

C'est plutôt la page dont tu parles qui n'est soit pas à jour, soit mélange (intentionellement ou non) "utils" et "tools"

Quid de kalsatools ?

Après, alsa peut se contrôler avec de nombreux logiciels, je ne sais pas si ça vaut le coup de tous les énumérer. C'est quelque chose d'intégré à KDE?

Share this post


Link to post
Share on other sites
:87) Utiliser plusieurs cartes son

ALSA permet d'utiliser simultanément plusieurs cartes son.

Il suffit de regarder les noms ou les numéros dans /proc/asound/cards et d'utiliser ensuite le programme avec ce nom ou ce numéro.

Par exmple moi j'ai ceci :

 $ cat /proc/asound/cards
0 [Live		   ]: EMU10K1 - SB Live [Unknown]
				 SB Live [Unknown] (rev.10, serial:0x100a1102) at 0xd000, irq 169
1 [AMD768		 ]: ICH - AMD AMD768
				 AMD AMD768 with ALC200,200P at 0xe400, irq 169

La carte numéro 0 s'appelle "Live", la carte numéro 1 s'appelle "AMD768"

Nous allons essayer de faire jouer un .wav avec aplay sur la carte numéro 1 (à savoir l'ALC200 compatible AC'97 de ma carte mère utilisant le module snd-intel8x0)

Soit nous utilisons le nom de la carte ("AMD768") :

 $ aplay -D hw:AMD768

Soit le numéro :

 $ aplay -D hw:1

Et même si on veut le numéro du sous-système de la carte :

 $ aplay -D hw:AMD768,0
$ aplay -D hw:1,0

Quelques programmes peuvent avoir une syntaxe différente, mais en général, c'est "[type]:[carte],[sous-système]"

(par exemple mplayer demande d'écrire les ":" en "=" et les "," en ".")

Pour configurer la carte son par défaut, il y a deux façons :

  • la carte support le hardware mixing
    Dans ce cas là, il suffit de mettre
    pcm.!default { type hw card "AMD768" }
    ctl.!default { type hw card "AMD768" }
    (avec la bonne carte)
  • Maintenant si la carte ne supporte pas le hardware mixing, il va falloir créer un dmix perso (voir plus haut "dmix manuel")
    (Vous devez un créer un pour chaque carte qui ne supporte pas le hardware mixing, avec un nom différent, évidemment)
    Ensuite, suffit de mettre ceci :
    pcm.!default { type plug slave.pcm "mixAMD768" }
    ctl.!default { type hw card "AMD768" }
    (ctl.!default représente le périphérique de contrôle par défaut et n'a donc pas besoin de dmix...)

bsr,

je suis dans ce cas et je n'arrive pas à comprendre pourquoi il n'y a pas la possibilité de configurer la carte son par défaut depuis alsamixer ou un des autres utilitaires ALSA ... enfin bref ..!

merci pour le tuto ...mais pourriez-vous expliciter davantage et me dire, par exemple, d'où viennent ces options et où trouver des renseignements à ce sujet (définir sa carte son par défaut) ...j'ai fait ce que vs aviez préconisé mais dans un fichier /etc/asound.state et pas asound.conf ... à quoi sert exactement pcm.!default ? et ctl.!default ?

merci de ces renseignements :transpi:

Share this post


Link to post
Share on other sites
:87) Utiliser plusieurs cartes son

ALSA permet d'utiliser simultanément plusieurs cartes son.

Il suffit de regarder les noms ou les numéros dans /proc/asound/cards et d'utiliser ensuite le programme avec ce nom ou ce numéro.

Par exmple moi j'ai ceci :

 $ cat /proc/asound/cards
0 [Live		   ]: EMU10K1 - SB Live [Unknown]
				 SB Live [Unknown] (rev.10, serial:0x100a1102) at 0xd000, irq 169
1 [AMD768		 ]: ICH - AMD AMD768
				 AMD AMD768 with ALC200,200P at 0xe400, irq 169

La carte numéro 0 s'appelle "Live", la carte numéro 1 s'appelle "AMD768"

Nous allons essayer de faire jouer un .wav avec aplay sur la carte numéro 1 (à savoir l'ALC200 compatible AC'97 de ma carte mère utilisant le module snd-intel8x0)

Soit nous utilisons le nom de la carte ("AMD768") :

 $ aplay -D hw:AMD768

Soit le numéro :

 $ aplay -D hw:1

Et même si on veut le numéro du sous-système de la carte :

 $ aplay -D hw:AMD768,0
$ aplay -D hw:1,0

Quelques programmes peuvent avoir une syntaxe différente, mais en général, c'est "[type]:[carte],[sous-système]"

(par exemple mplayer demande d'écrire les ":" en "=" et les "," en ".")

Pour configurer la carte son par défaut, il y a deux façons :

  • la carte support le hardware mixing
    Dans ce cas là, il suffit de mettre
    pcm.!default { type hw card "AMD768" }
    ctl.!default { type hw card "AMD768" }
    (avec la bonne carte)
  • Maintenant si la carte ne supporte pas le hardware mixing, il va falloir créer un dmix perso (voir plus haut "dmix manuel")
    (Vous devez un créer un pour chaque carte qui ne supporte pas le hardware mixing, avec un nom différent, évidemment)
    Ensuite, suffit de mettre ceci :
    pcm.!default { type plug slave.pcm "mixAMD768" }
    ctl.!default { type hw card "AMD768" }
    (ctl.!default représente le périphérique de contrôle par défaut et n'a donc pas besoin de dmix...)

bsr,

je suis dans ce cas et je n'arrive pas à comprendre pourquoi il n'y a pas la possibilité de configurer la carte son par défaut depuis alsamixer ou un des autres utilitaires ALSA ... enfin bref ..!

merci pour le tuto ...mais pourriez-vous expliciter davantage et me dire, par exemple, d'où viennent ces options et où trouver des renseignements à ce sujet (définir sa carte son par défaut) ...j'ai fait ce que vs aviez préconisé mais dans un fichier /etc/asound.state et pas asound.conf ... à quoi sert exactement pcm.!default ? et ctl.!default ?

merci de ces renseignements :transpi:

ai suivi un lien indiqué dans une autre réponse et discussion et g trouvé ...les explications demandées et une omission dans la modification deu fichier /etc/asound.state

merci au forum ..

Share this post


Link to post
Share on other sites

×
×
  • Create New...