# XMMS2

XMMS2 (X-plateform Music Multiplexing System 2) est un lecteur audio libre XMMS bien qu'il soit recodé à partir de zéro.
Peter Alm, parmi les premiers auteurs de XMMS, était responsable du développement initial de XMMS2 (fin 2002 jusqu'à début 2003), mais depuis il a donné la responsabilité du projet à Tobias Rundström et à Anders Gustafsson.

## Concept

XMMS2 suit les principaux concepts de XMMS, par exemple, un Environnement graphique personnalisable, une gestion des listes de lecture, des plugins, et ajoute des fonctionnalités qui sont apparues dans les lecteurs multimédias en 2001-2002, à savoir : un lecteur basé sur un modèle client serveur, et une gestion des bibliothèques multimédia.

### Contrôle de la lecture

Fonctionnalités communes à tous les lecteurs : lecture, pause, suivant, précédent, etc.

### Listes de lectures

Très classique également, XMMS2 supporte la gestion des listes de lecture : plusieurs fichiers ou flux peuvent être mis à la suite. La lecture de ses flux peut être séquentielle, aléatoire, ou répétitive.

### Extensions

XMMS2 possède une architecture modulaire ce qui rend possible le développement de plugins, laissant la responsabilité de certaines fonctions à des modules situés dans des bibliothèques dynamiques. XMMS supporte plusieurs types de plugins :
* Plugins d'entrée, pour le décodage des fichiers musicaux et de leur format (par exemple : OGG ou MP3) ;
* Plugins de sortie, pour manipuler les sorties sonores (par exemple ALSA et OSS, sous Linux) ;
* Plugins qui ajoutent des effets à la musique avant qu'elle soit jouée ;
* Plugins qui permettent de visualiser graphiquement la musique jouée ;
* Plugins généraux qui apportent des fonctionnalités diverses comme par exemple le contrôle du lecteur par un joystick ;
* Plugins qui assurent la réception de flux distants ;
* Plugins qui gèrent les listes de lecture.

### Interface graphique configurable

La plupart des lecteurs multimédia actuels permettent à l'utilisateur de modifier la charte graphique de leur interface, en utilisant des thèmes. Cela permet d'améliorer l'apparence du logiciel.

### Bibliothèque multimédia

Une des fonctionnalités majeures qui sont apparues dans les lecteurs récents est la gestion de bibliothèque multimédia (par exemple dans Winamp ou dans Amarok). Cela permet au logiciel de se souvenir de l'emplacement des médias de l'utilisateur. L'implémentation varie en fonction des lecteurs mais la plupart utilisent des bases de données. XMMS2 utilise SQLite pour ce traitement.

### Modèle client/serveur

Concept plutôt rare dans les lecteurs actuels, son implémentation la plus populaire est MPD. Il consiste en la création d'un serveur qui se charge d'ouvrir et de lire les flux audios tandis que les clients s'occupent de la partie interface utilisateur. L'avantage le plus évident d'un tel concept est la modularité.

## Conception

Au départ, XMMS2 n'était censé qu'être une bibliothèque assurant le décodage et la lecture de flux audios. XMMS2 aurait alors laissé la partie interface à d'autres logiciels. Ce concept a été généralisé en modèle client/serveur. Les principaux avantages sont :
* Cela permet plusieurs clients de contrôler une même instance de XMMS2 (démon)
* Une multitude de clients est possible.
* Les développeurs de clients n'ont plus à se préoccuper de la lecture de flux, ils peuvent donc se concentrer sur l'interface.
* L'utilisation de sockets TCP permet de contrôler XMMS2 à distance.
De plus, la bibliothèque multimédia est très bien intégrée avec la liste de lecture : chaque fichier ou flux ajouté à la liste de lecture est automatiquement mis en cache dans la bibliothèque, ses métadonnées sont sauvegardées dans la bibliothèque. En plus des métadonnées, la bibliothèque permet de charger et de sauvegarder rapidement des listes de lectures, permettant l'accès rapide à toute la collection de l'utilisateur.

## XMMS2 et d'autres projets

Le nom « XMMS2 » fut choisi par Peter Alm et Tobias Rundström lorsqu'ils lancèrent le projet. Cependant d'autres projets utilisaient déjà ce nom avant que la première version de XMMS2 ne sorte :
* Un autre projet, nommé XMMS2, par Mohammed Sameer était décrit comme un port GTK2 du très connu XMMS. Le projet n'a pas été continué et a été supprimé de savannah.nongnu.org.
* Un port GTK2 plus connu de XMMS est le Beep Media Player qui est quelquefois évoqué (à tort) comme XMMS2.