Main menu:

Site search

Categories

juin 2009
L M M J V S D
1234567
891011121314
15161718192021
22232425262728
2930  

Archive

Les différents sytèmes audio sous Linux

Sous Linux, il existe toute une série de systèmes dédiés au son et il est parfois très difficile de s’y retrouver. Voyons ici brièvement et rapidement les principaux.

Gstreamer

Gstreamer est un framework multimedia. C’est à dire un ensemble de composants permettant de lire, enregister, faire du streaming et de l’édition audio et video. Ce framework est multi-plateforme. Il devient un standard pour les applications audio/vidéo sous Linux surtout grâce à Gnome au départ. Grâce à une architecture de plugins, il est aisé d’ajouter à Gstreamer de nouvelles fonctionnalités. Gstreamer supporte comme backends aussi bien Alsa qu’OSS ou PulseAudio. Il est donc bien adapté pour la création d’applications. Par exemple: Banshee, Amarok, Jokosher, RythmBox, Totem, Elisa, Sound Juicer etc… sont tous basés sur Gstreamer.

Jack

Jack est un serveur de sons permettant l’interconnexion d’applications audio professionnelles avec des périphériques audio et/ou MIDI ou d’autres applications professionnelles. C’est un système temps réel caractérisé par une faible latence. Il supporte Alsa et OSS comme backends mais pas PulseAudio (à ma connaissance!).

Alsa

Advanced Linux Sound Architecture
Implémenté directement comme composant du noyau, c’est lui qui fournit l’interfaçage avec les périphériques audio (cartes sons) et MIDI. Il a été créé pour remplacer OSS qui était devenu obsolète. Pour servir de base à la création d’applications, Alsa dispose d’une API au niveau utilisateur qui est plus facile a utiliser que celle au niveau noyau. Il est aussi compatible avec OSS ce qui veut dire que les applications nécessitant OSS fonctionnent avec Alsa.

PulseAudio

PulseAudio est un serveur de son. Il peut router des sons provenant de plusieurs sources, processus ou périphériques de capture et les envoyer vers d’autres processus, cartes sons ou son propre système de streaming. PulseAudio se sert d’Alsa (on dit qu’il se place on top of Alsa) comme source et aussi d’Alsa pour envoyer les données après traitement vers la carte son. PulseAudio est surtout utilisé dans les applications réseau. Il permet aussi la connexion à un serveur Jack.

Oss

Open Sound System
C’est le système le plus ancien, apparu avant Alsa et que ce dernier remplace. PulseAudio par exemple ne peut fonctionner avec OSS. On en dira pas plus. Beaucoup de choses manquent à OSS et c’est ce qui a nécessité l’écriture d’un système plus complet.

En résumé: Alsa, PulseAudio et OSS peuvent être considérés comme des backends, c’est à dire l’interface bas niveau qui gère le son au niveau des périphériques, PulseAudio étant une sur-couche d’Alsa. On peut se servir de l’API d’Alsa ou de PulseAudio pour écrire des applications mais il est plus intéressant d’utiliser un framework du genre de Gstreamer pour le faire. Gstreamer gérant les codecs de façon transparente par exemple. Si vous voulez créer une application professionnelle qui nécessite de travailler en temps réel, tournez-vous vers Jack.

Comments

Comment from Terii
Time: 22 novembre 2009, 21 h 16 min

Bonjour Michel,
je trouve ton site très sympa et je me dis que tu es peut-être la personne à qui je pourrais poser la question qui me tourmente depuis longtemps ! En fait je suis sous Ubuntu Jaunty en multiseat ; pour cela j’ai 2 cartes son mais le problème est que je n’arrive pas à attribuer chaque carte son à chaque utilisateur connecté. Je pense qu’il faut jongler entre PulseAudio et Alsa mais cela reste quand même un peu flou.
Voilà si tu veux de plus amples renseignements ou tout simplement prendre contact avec moi n’hésite pas à m’écrire.
Alors salut et peut-être à bientôt.
Terii