Les Jedis d'Expaceo : Song.Net
04/01/2016
jb.raulin

Les Jedis d’Expaceo de décembre traitaient de la gestion de la musique avec la création d’un logiciel nommé Song.Net.

Song.Net est un lecteur musical réalisé en 3 heures qui tire parti de la classe MediaPlayer du framework .NET. Cette dernière permet la manipulation haut niveau de fichiers média.

Elle existe depuis la version 3.0 et fait partie de la couche WPF, dans la bibliothèque PresentationCore.dll.

Elle permet de lire des fichiers très simplement :

  • Pour ouvrir, il suffit d’utiliser Open(Uri uriSource)
  • Pour Jouer, Play()
  • Pour arrêter, Stop()
  • Pour mettre en pause, Pause()
  • Pour obtenir la durée totale du média : NaturalDuration
  • Pour obtenir ou définir le volume :  Volume                                      
  • Pour obtenir ou définir la position de la lecture dans le média : Position
  • Lorsque la lecture du fichier est terminée : MediaEnded
  • Lorsque la lecture a rencontré une erreur sur le fichier : MediaFailed

Les méthodes sont gérées de manière asynchrone, ce qui évite que les médias soient bloqués par le code appelant.

De plus, TagLib a été utilisé pour récupérer facilement les métadonnées des fichiers musicaux.

Tagib est une bibliothèque sous licence LGPL qui permet de lire ou de modifier les informations des fichiers musicaux. Elle fonctionne avec une multitude de formats et son utilisation est simple : il suffit d’utiliser TagLib.File.Create(string path) pour créer une instance d’un objet TagLib.File.

Les propriétés de cet objet contiennent des informations telles que Duration, FirstAlbumArtist, Album, ou Title.

 

La couche de présentation a été réalisée en WPF.

 

Il devient ainsi facile de créer un logiciel de type Winamp. Il a fallu 1 heure pour que le logiciel soit fonctionnel, 1 heure pour le design, 1 heure pour le logo (vous l’aurez remarqué, je ne suis pas designer).

 

Il y a quelques ajouts fonctionnels à Song.Net comme le shuffle ou le mode DJ avec deux lecteurs et un cross fader.

 

MediaPlayer étant une classe de gestion musicale de couche haute, elle est simple à utiliser mais a cependant ses limites. Si l’on voulait agir sur des éléments pointus tels que la fréquence du son, une bibliothèque de plus bas niveau serait davantage appropriée.

 

Pour en savoir plus sur la classe MediaPlayer : https://msdn.microsoft.com/en-us/library/system.windows.media.mediaplayer%28v=vs.110%29.aspx

Vous pouvez récupérer TagLib via Nuget ici : https://www.nuget.org/packages/taglib/

Vous pouvez télécharger les sources ici.