# [audio] lire plusieurs sons simultanément

## olivierweb

Je cherche à entendre les sons systèmes alors que xmms ou mpg123 lit.

J'ai en effet un service lancé au début pour lire ma musique.

Ça a pour conséquence que es sons systèmes sont "mis en attente". KDE désactive ainsi les sons systèmes.

Comment faire pour qu'ils se superposent à ma lecture de wav, ogg, ... ?

J'ai bien essayé un mpg123 -a /dev/mixer, mais ça ne marche pas.

----------

## yaubi

En principe, les pilotes courants pour les cartes-son courantes (grand-public) ne gèrent qu'un seul accès à la fois au périphérique. L'accès en question consiste à envoyer à la carte, de manière régulière et fréquence, un buffer représentant le son brut tel qu'il doit être reproduit (modulé). En principe la carte n'effectue aucune opération sur ce son, si ce n'est varier le volume général.

Pour produire plusieurs sons simultanément et, de surcroit, provenant de sources différentes (mplayer et les sons de KDE pour reprendre ton cas), il faut les multiplexer (les mélanger) avant de fournir le résultat à la carte. C'est le rôle d'un serveur de son : esound (enlightenment, gnome, etc) ou arts (KDE). Tous les "générateurs de son" doivent alors envoyer leur produit au serveur au lieu de la carte directement. J'insite sur le "tous" : le serveur occupant l'accès exclusif à la carte, aucun autre processus ne pourra y accéder à sa place ; il faut obligatoirement passer par le serveur.

Dans le cas de gnome, il faut cocher "activer le serveur de son au démarrage" dans les propriétés sonores. Dans KDE, je ne me rappelle plus de l'intitulé, mais le principe est le même (il s'agit dans ce cas de Arts).  Lorsqu'on utilise un autre gestionnaire de bureau ou pas de gestionnaire du tout on peut lancer esound automatique à l'init par exemple.

Rectification : 

Je viens de tester sur plusieurs machines. En fait certains drivers multiplexent directement les sources sans qu'il soit nécessaire d'utiliser un programme tier pour cela, d'autres non.

Question :

Esound (Arts aussi ?) devrait aussi accépter des sources depuis le réseau. Autrement dit, un programme peut rediriger sa sortie sonore sur le serveur d'une autre machine, un peu comme pour le déport d'affichage. Malheureusement, je n'ai jamais réussi à le mettre en oeuvre. Si quelqu'un à une expérience à faire partager  :Smile: 

----------

## DuF

Je précise aussi que certaines cartes sons font ça matérialement (si je ne dis pas de bêtises) comme les SBlive, j'ai une SBlive avec driver OSS et les sons sont multiplexés sans souci mais j'ai esound qui tourne, donc je suppose que c'est lui qui s'occupe de ça  :Smile: 

En tout cas si qqn peut préciser si le fait d'utiliser esound multiplexe forcément les sons de manière logiciel, ou est-ce que les spécifités matérielles de la carte son sont utilisées ?

----------

## yaubi

 *DuF wrote:*   

> Je précise aussi que certaines cartes sons font ça matérialement (si je ne dis pas de bêtises) comme les SBlive, j'ai une SBlive avec driver OSS et les sons sont multiplexés sans souci mais j'ai esound qui tourne, donc je suppose que c'est lui qui s'occupe de ça 
> 
> En tout cas si qqn peut préciser si le fait d'utiliser esound multiplexe forcément les sons de manière logiciel, ou est-ce que les spécifités matérielles de la carte son sont utilisées ?

 

J'ai fait quelques recherches à ce sujet. Voici un petit topo :

Effectivement certaines cartes sons peuvent mixer plusieurs pistes simultanément, voire gérer plusieurs fréquences d'échantillonage, ce matériellement. En soit, le mixage n'est pas bien compliqué : il s'agit simplement d'une addition suivi d'une compression (au sens sonore du terme) pour éviter de saturer. Pour utiliser ces fonctionnalités matérielles, il faut bien sûr que le driver le permette (drivers ALSA, certains drivers OSS). Cela dit, la majorité des cartes grand-public ne supportent qu'une seule piste à une fréquence d'échantillonnage fixe. C'est d'autant plus vrai pour les circuits intégrés aux cartes-mère. 

En toute logique, il ne devrait pas incomber au kernel (aux drivers) de gérer ces tâches. D'où l'utilité d'un serveur de son : mixer, échantillonner mais aussi moduler, appliquer des effets, gérer les droits d'accès, proposer une interface par le réseau, etc. Dans ce cas, tout est logiciel ; les fonctionnalités matérielles, si elles existent, ne sont pas utilisées. Dans le monde des serveur de son, il existe bien sûr eSound et Arts (le plus avancé des deux, semble-t-il) mais aussi JACK et Gstream (plus complets, plus complexes, plus compliqués aussi).

Je me rappelle d'une discusion concernant le futur d'ALSA (désormais intégré au noyau 2.6). ALSA est un ensemble de drivers (partie kernel) sumontés d'une API commune pour y accéder (un peu à la DirectSound). Les dévelopeurs parlaient d'ajouter à la bibliothèque de fonctions (alsalib) un mini serveur de son qui serait soit logiciel, soit matériel, selon les possibilités de la carte. Ce serait évidemment la solution idéale. Pour ce qui est des fonctionnalité plus avancée (effets, réseau), il n'y a par contre pas d'autre choix que d'utiliser un démon à part.

----------

## yaubi

 *yaubi wrote:*   

> Question :
> 
> Esound (Arts aussi ?) devrait aussi accépter des sources depuis le réseau. Autrement dit, un programme peut rediriger sa sortie sonore sur le serveur d'une autre machine, un peu comme pour le déport d'affichage. Malheureusement, je n'ai jamais réussi à le mettre en oeuvre. Si quelqu'un à une expérience à faire partager 

 

Ah ben si en fait, c'est très facile ! je ne vois plus la difficulté  :Smile: 

Donc, pour déporter le son d'un ordinateur (client) à un autre (serveur) :

Installer eSound sur le server

```
USE="+tcpd" emerge esound
```

Lancer eSound (le fichier /etc/conf.d/esound convient par défaut)

```
/etc/init.d/esound start
```

Sur le client, fixer la variable d'environnement ESPEAKER avec l'adresse IP (ou le nom d'hôte) du serveur

```
export ESPEAKER=192.168.0.10
```

Choisir un player supportant eSound (dit aussi esd)

```
mplayer -ao esd maMusique.ogg
```

Ecoutez, enfoncés dans votre canapé, une bierre à la main  :Smile: 

----------

## olivierweb

C'est de plus en plus intéressant tout ça.

Cependant, à chaque lecture de message je me pose des questions.

est-ce mpg123 et ogg123 peuvent utiliser esound, arts ou autre serveur/mixeur ?

Peut-on utiliser esound ou arts dans gnome, kde, enlightenment, ... en mode console, sans se loguer, ... sans soucis ?

quel est le serveur de sons le plus pratique, le plus "universellement" utilisable ?

Hier j'ai mis en place ALSA (merci au guide Gentoo en français), alors que jusqu'à présent j'utilisais OSS.

J'ai une Guillemot Muse sur ma carte mère MSI K7T qui intègre une carte son AC97. J'ai essayé, sans succès, de faire gérer les deux par ALSA.

Entre OSS et ALSA, je n'ai pas trouvé de mieux, de moins bien. Le son est toujours émis.

Je sens que je vais passer une soirée très portée son.

----------

## binny

qd tu es sous kde, tu peux utiliser artsdsp et faire par exemple artsdsp play un_wav.wav et écouter un mp3 avec arstdsp xmms, ainsi, tous les sons seront redirigés vers arts et tu pourras avoir plusieurs sons en meme temps  :Smile: 

----------

## olivierweb

il y a aussi qquechose d'abordé dans le même sujet en ce moment dans le forum multimédia

https://forums.gentoo.org/viewtopic.php?t=51260

et en plus, ça parle du snd-cmipci, ce que j'utilse ;o)

mince pas le temps de le lire de suite, faut que je parte au boulot...

----------

## yoyo

 *olivierweb wrote:*   

> Peut-on utiliser esound ou arts dans gnome, kde, enlightenment, ... en mode console, sans se loguer, ... sans soucis ?

 

Par défaut, arts est utilisé par KDE, esound par enlightenment (ce sont leurs serveurs propres). Mais rien ne s'oppose à utiliser esound dans KDE.

Personnellement, j'utilise esound comme plugin de sortie dans xmms sous fluxbox, mais j'ai le choix entre arts, oss et alsa qui fonctionnent très bien ...

Pour lancer dans une console un pgm avec un serveur de son, il faut (de mémoire) les lancer sur la même ligne. Par exemple "artdsp monpgm &" pour arts ou "esddsp monpgm &" pour esound.

 *olivierweb wrote:*   

> quel est le serveur de sons le plus pratique, le plus "universellement" utilisable ?

 

AMHA, celui qui a la doc la plus claire  :Laughing:  .

Je suis encore un pauv' n00b sur la question, donc je m'abstiendrai de répondre ...

Par contre, si qqu'un a réussi à faire fonctionner le message d'avertissement de mail de mozilla, je suis preneur.

 *olivierweb wrote:*   

> Hier j'ai mis en place ALSA (merci au guide Gentoo en français), alors que jusqu'à présent j'utilisais OSS.
> 
> J'ai une Guillemot Muse sur ma carte mère MSI K7T qui intègre une carte son AC97. J'ai essayé, sans succès, de faire gérer les deux par ALSA.

 

Il me semble qu'il est possible de définir 2 cartes sons dans "/etc/modules.d/alsa". Et dans xmms, lorsque tu choisis comme plugin de sortie alsa ou oss, tu peux choisir l'"audio device".

Enfin, je ne vois pas trop l'intérêt d'avoir deux cartes sons ...

 *olivierweb wrote:*   

> Entre OSS et ALSA, je n'ai pas trouvé de mieux, de moins bien. Le son est toujours émis.

 

En fait, OSS est appelé à disparaître au profit d'ALSA : dans le noyau 2.6.0-test1, les drivers OSS sont marqués (DEPRECATED) en gros dans le menuconfig.

----------

## yaubi

<Hors Sujet>

 *olivierweb wrote:*   

> mince pas le temps de le lire de suite, faut que je parte au boulot...

 

partir au boulot à 12h30 ... il y en a qui ont la vie belle  :Smile: 

</Hors Sujet>

----------

## yaubi

 *yoyo wrote:*   

>  *olivierweb wrote:*   Entre OSS et ALSA, je n'ai pas trouvé de mieux, de moins bien. Le son est toujours émis. 
> 
> En fait, OSS est appelé à disparaître au profit d'ALSA : dans le noyau 2.6.0-test1, les drivers OSS sont marqués (DEPRECATED) en gros dans le menuconfig.

 

En ce qui me concerne, le pilote ALSA pour ma carte son fonctionnent _moins_ bien que sa version OSS. Avec Alsa, j'ai des espèce de cliquetis au début à la fin de la lecture, c'est très désagréable. Apparemment je ne suis pas le seul, mais bon s'il faut passer à Alsa, on passera à Alsa ... un jour  :Wink: 

----------

## Doudou

 *DuF wrote:*   

> Je précise aussi que certaines cartes sons font ça matérialement (si je ne dis pas de bêtises) comme les SBlive, j'ai une SBlive avec driver OSS et les sons sont multiplexés sans souci mais j'ai esound qui tourne, donc je suppose que c'est lui qui s'occupe de ça 
> 
> 

 

pas de esound pour ma part, support OSS dans le kernel+driver emu10k1 (spécifique a SB Live et Audigy) et la gestion de plusieur source fonctionne bien.

----------

