URL: https://linuxfr.org/news/sortie-du-lecteur-audio-miam-player-0-8-0 Title: Sortie du lecteur audio Miam-Player 0.8.0 Authors: MBach Xavier Teyssier, palm123, Benoît Sibaud, Nÿco, bubar🦥 et Pierre Jarillon Date: 2016年02月22日T00:24:11+01:00 License: CC By-SA Tags: miam-player, lecteur_musique, ffmpeg, winamp, audio et qt5 Score: 38 Depuis la sortie du lecteur audio Miam-Player 0.7.3 en août dernier, les choses ont continué à évoluer. Les plus gros changements dans cette première version de la branche 0.8 concernent l'ajout d'une nouvelle vue pour la présentation de sa musique. Étant utilisateur de [Foobar2000](https://fr.wikipedia.org/wiki/Foobar2000) (NdM: [graticiel/_freeware_](http://www.foobar2000.org/license)) depuis longtemps sous Windows (et anciennement de Winamp), il me manquait cette fonctionnalité importante pour pouvoir profiter pleinement de mon logiciel (NdM: libre sous GPLv3). Au passage, la gestion des couleurs personnalisés a également été repensée, bien qu'il reste encore un peu de travail. Toute la musique est présentée sous la forme d'une liste unique. Quand cette liste possède le focus (par un clic de souris), les raccourcis claviers de A à Z sont assignés automatiquement afin de naviguer rapidement dans sa collection. Les raccourcis par défaut 'W', 'X', 'C' (précédent, rechercher en arrière, stop, etc. jusqu'à 'N') pour naviguer au clavier sont temporairement désactivés. ---- [Site officiel](http://www.miam-player.org) [Version 0.8.0 sous GitHub](https://github.com/MBach/Miam-Player/releases/tag/v0.8.0) [AcoustID](https://acoustid.org/) ---- ![Nouvelle vue](http://miam-player.org/images/gallery/blog/overview_miamplayer_0.8.0.png) Nouveau module audio ==================== Autre changement d'importance, le remplacement du module de décodage audio. En effet, j'ai décidé pour les raisons suivantes de supprimer _libVLC_ et de passer à _libQtAV_ qui utilise [FFMpeg](http://ffmpeg.org/). Auparavant, pour pouvoir brancher simplement _libVLC_, j'avais ajouté le wrapper _libVlcQt_. Pour comprendre un peu mieux de quoi il en retourne, il faut savoir que _VLC_ et _FFMpeg_ utilisent _libAvCodec_. Je suis donc passé de la chaîne 1. _libAvCodec → libVLC → libVlcQt → Miam-Player_ à 2. _libAvCodec → libQtAV → Miam-Player_. Le gain n'est pas sensible sous Windows mais perceptibles dans mes machines virtuelles sous Linux ou OSX. Ces modifications ont aussi été motivées par la réalisation d'une extension spécifique : le support d'[AcoustID](https://acoustid.org/) et de Chromaprint. Parenthèse sur AcoustID ----------------------- _AcoustID_ est un projet open-source initié par [Lukáš Lalinský](https://oxygene.sk/) qui cherche à créer une base de données libre d'empreintes audio pour pouvoir retrouver automatiquement les métadonnées d'une piste. Le principe fait penser grossièrement à l'application _Shazam_ mais des différences de taille existent. Ce n'est pas une méthode d'analyse temps-réel d'un canal audio. Là, il faut posséder le fichier complet pour comparer son empreinte avec celles qui sont stockées dans une base de données. L'algorithme est capable toutefois de générer une empreinte similaire pour des fichiers encodés en FLAC ou en MP3. N'ayant pas réussi à faire fonctionner _AcoustID_ avec VLC (pas d'API dans libVLC), j'ai testé d'incorporer les dépendances dans mon extension (-lavcodec -lavdevice ...) et cela a fonctionné directement. Cela m'a amené à réfléchir sur l'opportunité de migrer le cœur du décodage vers FFMpeg. QtAV s'appuyant sur FFMpeg, cela m'a paru jouable. L'idée d'une extension comme AcoustID serait de pouvoir sélectionner un dossier sur le disque dur (ou des éléments déjà taggués) pour rechercher et remplacer facilement leur métadonnées. Troisième chantier : l'amélioration des performances générales. =============================================================== Foobar2000 est en quelques sorte mon modèle sur ce point-là. La consommation de mémoire est incroyablement basse, et la vitesse de lancement bluffante. Je sais que la lutte va être difficile car le framework Qt est assez lourd mais malgré tout très bien optimisé. J'ai du repenser la gestion des fenêtres de dialogue et des vues dans son ensemble. Le changement de paradigme _Instanciation de tous les objets dès le départ_ vers _Initialisation paresseuse_ ne s'est pas fait sans mal. De larges portions de code permettant de charger les préférences ont du être réécrites. Finalement, cela m'a forcé à faire table rase du passé et à mieux séparer la logique contenant le chargement desdits paramètres avec la présentation et la modification de ces paramètres dans les options. Ces premiers résultats sont très encourageants pour la suite car le temps de démarrage est instantané pour une bibliothèque comportant un millier de fichiers, et passe à une petite seconde pour plus de 13000 fichiers indexés dans la base [SQLite](https://www.sqlite.org/). L'empreinte mémoire a diminuée d'une trentaine de pourcents, pour descendre à environ 40 Mo de RAM occupée lors de la lecture d'un fichier. Cela peut paraitre élevé mais il y a quand même la création de plus de 13000 lignes dans le modèle (l'IHM n'affichant que ce qui est nécessaire). Autres améliorations ==================== - Modification du mode de lecture aléatoire d'une playlist en [mode tirage sans remise](https://fr.wikipedia.org/wiki/Tirage_%28math%C3%A9matiques%29) ; - Ajout d'une traduction en chinois, par l'auteur de QtAV, [Wang-Bin](https://github.com/wang-bin/QtAV) ; - Prise en charge des touches multimédias pour contrôler le lecteur. Sur le clavier Logitech diNovo Edge en ma possession, Fn + F8 envoie la commande "Piste suivante". Il reste cependant à faire marcher ces raccourcis en mode global, c'est à dire même lorsque le focus n'est pas sur Miam-Player (cela fonctionne presque : il faut étrangement activer une première fois un raccourci avec le focus sur l'application) ; - Ajout du fournisseur de pochettes d'Amazon ; - Diverses corrections sur le gestionnaire de listes de lecture (plus son passage en mode chargement tardif) ; - Et son lot de corrections d'anomalies. Évolutions futures ================== La réalisation de la vue unique m'a fait cogiter sur la direction à prendre pour la suite. Possédant un smartphone sous Android, l'idée de réaliser un portage me traverse régulièrement l'esprit. Malheureusement, le manque de temps et la base de code devenant de plus en plus conséquente, la quantité de travail à effectuer pour avoir un rendu propre et adapté à une navigation tactile me semble très élevée. J'ai commencé à regarder les IHM en [QML](http://doc.qt.io/qt-5/qtqml-index.html) pour avoir une meilleure vision sur ce qu'il est possible de réaliser. Pourquoi le QML pourriez-vous vous demander ? QML intègre nativement beaucoup de choses concernant le tactile, la rotation d'écran, la mise à l'échelle (et autres _pixel-perfect_). L'idée que je m'en fais, c'est qu'en recodant les interfaces graphiques en QML, il serait alors possible d'avoir une application universelle, qui s'adapte à tous les supports. Une première expérimentation a été menée sur le plugin qui cherche les pochettes manquantes, mais mes premiers retours sont assez mitigés. Déjà la consommation mémoire grimpe en flèche, et la réactivité diminue (le redimensionnement de la fenêtre est beaucoup plus lent). Après je n'ai peut-être pas utilisé QML de la bonne façon, en passant par une instance de [QQuickView](http://doc.qt.io/qt-5/qquickview.html). Pour l'instant, réaliser une bonne application Bureau reste la priorité, donc je vais continuer sur les QWidget. D'autres idées sont dans les cartons. ------------------------------------- L'extension _Deezer_ est en suspens en attendant Qt 5.6. La prochaine version du _framework_ supprimera le module Qt Webkit, qui est remplacé par [Qt WebEngine](https://wiki.qt.io/QtWebEngine) (ce dernier est basé sur Chromium). Pour pouvoir écouter de la musique en streaming via Deezer, Flash Player doit être installé. L'intégration de Flash signifie de plus qu'une partie du logiciel est dépendant de code non libre. Le site Internet de Deezer étant malgré tout assez bien fait, il me semble compliqué de transposer efficacement les fonctionnalité majeures dans Miam-Player. Pour terminer, charger Chromium alourdit considérablement l'application (via les dépendances à ajouter), dégrade les performances au démarrage, en plus de porter la consommation de RAM à plus de 150 Mo sans rien faire. Personnalisation simplifiée --------------------------- Dans les options, l'ajout d'une _ComboBox_ proposant à minima deux options : une pour un thème clair, une pour un thème sombre me semble simple à mettre en œuvre. Cela pourrait apporter un petit plus pour améliorer l'expérience utilisateur, en facilitant la personnalisation. Concernant la vue unique : ajouter le passage en mode "épinglé" de l'artiste, de l'album et de la pochette lors du défilement vertical. Petit plus cosmétique, pouvoir modifier automatiquement la pochette lors de la lecture d'une piste, si chaque piste possède sa propre pochette (oui ça existe, par exemple l'album [Halo 27 - The Slip](http://www.nin.wiki/The_Slip#Downloads) de Nine Inch Nails). On pourrait également autoriser le glisser-déposer d'une image si jamais l'album entier n'en possède pas. En tout cas la prochaine version sera une version corrective car il reste encore beaucoup trop de tags _FIXME_ et _XXX_ dans le code. Je vais également me documenter sur [CMake](https://cmake.org/) ou sur [QBS](http://doc.qt.io/qbs/) car j'éprouve des difficultés pour rendre le code compilable et distribuable à la fois sous Windows et Linux ; OS X j'ai un peu laissé tomber.... Un Russe ayant pour pseudo [Ilya87](https://github.com/Ilya87) est très actif sur GitHub, que ce soit au niveau de la traduction ou pour remonter des bugs ou pour compiler sous Arch Linux ! Mais le script ultime n'a pas encore été incorporé dans le dépôt Git. Le plus simple (pour moi) reste de compiler à la main.

AltStyle によって変換されたページ (->オリジナル) /