Aller au contenu principal

Tavrisu (enfin) disponible sur GitHub !

Le point d’exclamation pourrait signifier la joie de finir un projet et d’en livrer enfin une version stable, surtout après un si long moment de silence. Mais ici non.

Je dois cependant d’abord m’expliquer sur ce moment de silence radio. Plus de nouvelles depuis mi-janvier… Tout d’abord j’ai eu d’autres projets prioritaires. Ensuite, j’ai réfléchi. Tavrisu est né parce que je cherchais un projet à réaliser en C++ avec Qt, technologies qui m’étaient totalement nouvelles. L’objectif premier de Tavrisu était donc d’abord que je prenne en main ces deux technologies. Par Tavrisu, cet objectif est plutôt atteint. Il n’y avait pas de réel besoin, de manque urgent à combler. J’avais tout de même de l’espoir pour Tavrisu, je trouvais mon idée bonne et sans doute que si une communauté s’était créée autour du projet, il aurait pu devenir populaire. Cependant entre-temps, je me suis renseigné sur des technologies plus orientées web: JavaScript, NodeJS, AngularJS. Et quand je vois les possibilités de ces technologies, je me dis que j’ai raté le coche et que Tavrisu aurait du être codé avec ces technologies pour concevoir des applications clients: le développement aurait bien plus dans l’ère du temps, l’interface de l’utilisateur bien plus sympathique (HTML5-CSS3 lié au JavaScript offrent de telles possibilités !), et la compatibilité entre système d’exploitation n’aurait fait aucun problème (contrairement à maintenant…). Ça, quelques bugs récurrents totalement incompréhensibles, strictement aucun retour par rapport à la bêta m’ont un peu démotivé. Et puis le besoin n’est plus tellement là: envie d’écouter un peu de musique ? Glissé-déposé dans VLC et c’est parti…

Tout ceci pour dire que le développement de Tavrisu s’arrête ici, pour moi en tout cas. C’est l’une des raisons pour lesquelles je publie tout de même le code sur GitHub: si ce projet intéresse vraiment quelqu’un, il est libre de le reprendre (la licence GPL le permet !). Ensuite dans un but pédagogique: comprendre comment le programme est construit, comment il fonctionne… De plus, certaines classes sont intéressantes: QlibVLC (qui a même un repo à lui tout seul !), QSqliteCom (qui souffre de quelques problèmes de lenteur), ButtonImage

Je tiens tout de même à m’excuser d’avoir promis un tel projet et pour finir de ne pas réussir à dépasser la première bêta… Dans tous les cas, vous pouvez faire bon usage du code que je vous offre !

 

 

 

QlibVLC disponible sur GitHub

Quelques mois sans nouvelles qui prouvent que le développement de Tavrisu est un peu mis de côté… Je vous rassure, il n’en est pas pour autant abandonné !

Tavrisu, à l’heure est actuelle, est stable. J’ai travaillé un peu sur le gros point noir de Tavrisu: la lenteur de la communication avec la base de données. Tavrisu utilise pour l’instant le module QSql de Qt pour communiquer avec la base de données SQLite. J’ai donc fait des tests de performances entre QSql et l’API « native » de SQLite. J’ai constaté un léger gain de performances en utilisant directement SQLite. Je n’ai pas les chiffres sous les yeux, mais si ça intéresse quelqu’un, faites-le moi savoir.

Ceci implique donc de recoder toute la classe QSqliteCom qui me permet de communiquer avec la base de données. Un petit peu de travail en perspective… Je me suis donc arrêté là. Sachez juste que lorsque cette classe sera recodée, je la mettrai sous licence libre. Vous pourrez donc la réutiliser dans vos projets !

Aujourd’hui je vous présente une autre classe que j’ai développée pour Tavrisu: QlibVLC. Cette classe gère tout ce qui est audio dans Tavrisu. C’est en réalité une sorte de petit wrapper en C++ de libVLC (le noyau du lecteur VLC), à utiliser avec Qt.

Le code source de cette classe est disponible sur mon GitHub: https://github.com/philippemilink/QlibVLC. Le code est sous licence LGPL. N’hésitez pas à y regarder, au mieux, à contribuer. Les deux fichiers vraiment intéressants sont QlibVLC.cpp et QlibVLC.h. Les autres fichiers constituent un projet Qt d’exemple pour illustrer le fonctionnement de QlibVLC.

Attention ! Le code source de QlibVLC est celui utilisé dans Tavrisu. J’ai d’abord développé QlibVLC uniquement pour Tavrisu, je ne pensais pas d’abord le publier séparément. Il manque donc quelques fonctions essentielles, comme obtenir le titre de la musique, pouvoir changer le volume, arrêter la musique… J’essayerai de combler ces manques aussi rapidement que possible.

A propos de Tavrisu, je pense publier le code source d’ici peu. Je vous tiendrai informé !

Lancement de la première bêta !

Je sais… Dans mes articles précédents, comme date de sortie de cette fameuse première bêta, je vous parlais de août/septembre… Pour finir, ce sera maintenant, fin octobre.

La version bêta présente le fruit de plus de 6 mois de travail, pour produire 5 655 lignes de code.

Problèmes connus

Certains problèmes sont encore présents:

– la communication avec la base de données est lente. Je le sais, il faut que j’y travaille. Si je trouve une solution, je pense que ce sera beaucoup de travail, car ça voudrait dire recoder une classe complète…

– on peut lancer deux instances de Tavrisu

– Tavrisu n’a pas encore de logo

– lors de la lecture d’une musique, Tavrisu met progressivement toute la musique en mémoire vive, ce qui augmente la consommation de mémoire vive de Tavrisu (chez moi, à la fin d’une musique de 3 min, Tavrisu utilise environ 160 000 Ko de mémoire vive)

D’autres bugs existent certainement, merci de me les rapporter, par commentaire dans cet article.

Téléchargement

Je vous laisser télécharger, installer, et découvrir cette première version de Tavrisu: Téléchargement

/!\ Cette version est une bêta: des bugs peuvent encore subsister et, bien que le risque soit quasi-nul, je ne garantis aucun problème rencontré avec votre ordinateur en rapport avec Tavrisu.

N’hésitez pas à laisser vos impressions, vos suggestions en commentaire !

Le système de mise à jour progresse !

Dernier élément réalisé: le système de mise à jour. On y accède par le menu Aide. Voici à quoi il ressemble:

0.1b1 - Updater

(ne faîtes pas attention au contenu, ce ne sont que des tests !)

Une fois cliqué sur le bouton Télécharger, une boîte de dialogue s’ouvre pour demander où télécharger la mise à jour. Cette mise à jour est en réalité l’installateur classique que l’on pourra télécharger directement via le site web. Quand le téléchargement est terminé, on a la possibilité de sauvegarder sa base de données, car l’installation de la mise à jour efface toutes les données de Tavrisu.

A partir de là, il me reste à faire une vérification sur la mise à jour téléchargée (pour être sûr que le fichier n’a pas de problème) et proposer de chercher les mises à jour à chaque démarrage de Tavrisu (avec possibilité de le désactiver).

Maintenant, on s’approche vraiment de la sortie de la version bêta. Je suis juste en train de réfléchir à un logo…

Analyse du dossier Musique terminée !

Comme je vous le disais dans l’article précédent, je me suis attaqué à la constitution de la bibliothèque audio en analysant un dossier Musique sélectionné par l’utilisateur.

Analyse du dossier de musiques

Après avoir sélectionné le dossier que l’on souhaite analyser, Tavrisu remplit sa base de données avec les artistes, les albums et toutes les musiques trouvées:0.1b1 - InitSelectFolder

Une fois cette étape terminée, apparaît l’écran pour remplir (facultativement) les informations sur les artistes et éventuellement les supprimer (en rouge):0.1b1 - InitDBArtist

L’étape suivante est la même, mais concerne les albums:0.1b1 - InitDBAlbum

Après avoir cliqué sur le bouton Suivant, c’est terminé: on peut profiter de sa musique !

Affichage par défaut terminé, également.

Justement afin de profiter au mieux de sa musique, j’ai ajusté la largeur des colonnes, qui s’ajuste automatiquement en fonction de la largeur de la fenêtre de Tavrisu. Voici donc à quoi ressemble l’interface de Tavrisu:0.1b1 - Plugin Default

Plein de choses mineures

– Tavrisu affiche un message d’erreur si l’ouverture du programme a rencontré un problème

– Le fichier de la base de données est supprimé s’il y a un problème pendant sa création

– Dans la fenêtre pour ajouter un nouvel album, un bouton pour éditer le titre d’une chanson a fait son apparition (ce qui évite de double-cliquer)

– Lors de la suppression d’une piste, d’un artiste, d’un album, le nom/titre s’affiche dans la fenêtre de confirmation

– Avant de lancer la lecture, Tavrisu vérifie si le fichier existe, sinon, il affiche une petite croix et passe au suivant

– On peut maintenant lancer la lecture même si rien n’est sélectionné (ce qui avant provoquait un immonde crash du logiciel)

La première bêta approche !

Je me lance dans ce pas dans la réalisation d’un système de mise à jour (téléchargement de l’installateur et proposition de faire une sauvegarde).

Une fois fait, je pense que la première bêta pourra s’ouvrir au public.

Un grand problème auquel je suis confronté est l’optimisation de la base de données, qui peut se montrer parfois lente pour certaines modifications…

 

Fonctionnalités non musicales, mais nécessaires…

Voici un petit bout de temps que je n’ai pas posté sur ce blog. Ne vous inquiétez pas, je n’ai pas mis en pause Tavrisu ! Au contraire, le travail continue et à un très bon rythme !

Premièrement, un bug assez coriace m’a pris pas mal de temps dans la lecture des fichiers audio et l’enchainement automatique des musiques. Rassurez-vous ce problème est réglé, j’en suis venu à bout.

Je suis en train de retravailler la première utilisation de Tavrisu: maintenant après avoir terminé l’assistant à qui on a indiqué où on voulait placer la base de données, l’espace, où apparaît normalement l’interface (avec le player, la liste des musiques…), nous donne trois choix: restaurer une sauvegarde faite avant, analyser notre dossier Musique pour constituer automatiquement la base de données, ou ne rien faire, tout de suite utiliser Tavrisu:0.1b1 - InitializeDatabaseSelectAction

Actuellement, je viens de finir la partie Restauration d’une sauvegarde: vous indiquez votre fichier de sauvegarde et Tavrisu restaure votre base de données:0.1b1 - InitializeDatabaseImportXML

Pour avoir une sauvegarde, j’ai également développé un module pour exporter sa base de données Tavrisu, accessible via le menu Fichier, il demande simplement dans quel dossier faire la sauvegarde, qui en réalité un bête fichier XML:0.1b1 - ExportXML

Dans les jours qui viennent, je vais m’attaquer à la deuxième possibilité: analyser le dossier Musique, ce sera aussi un gros morceau !

Une fois cette partie terminée, je mettrai en place un updater (je ne sais pas encore vraiment sous quelle forme…) et… la première bêta se présentera !

Pour info, le code vient de dépasser les 3 600 lignes !

Je présenterai dans un billet prochain tous les modules développés pour Tavrisu, distribués également sous licence libre. 😉

Y a du son !

Depuis le dernier article, j’ai bien travaillé: on peut modifier un artiste, un album et un fichier audio.

J’ai commencé à implémenter l’audio: la durée d’une musique se sauvegarde dans la base de données, on peut lire un fichier audio en double-cliquant dessus. Pour l’instant, le temps passé, le temps total et le slider sont actualisés.

Voici la première capture d’écran du logiciel en entier:

0.1b1 - Lecture musiqueL’apparence du tableau de musique est encore à améliorer, comme vous l’aurez remarqué. 😉

Suppressions et quelques chiffres

On peut maintenant supprimer un fichier audio, un album, un artiste et on peut presque complétement modifier un artiste.

Rien que pour le plaisir, j’ai fait quelques statistiques:

Le programme en lui-même:

11 headers: 508 lignes

10 fichiers sources: 1269 lignes

6 interfaces réalisées avec Qt Creator

Au total: 1777 lignes

Le plugin de l’interface par défaut:

2 headers: 91 lignes

2 fichiers sources: 255 lignes

1 interface réalisée avec Qt Creator

Au total: 346 lignes (le plugin réutilise des fichiers du programme cœur)

Avancement

Depuis les dernières captures d’écran que je vous ai montré, j’ai bien progressé dans le développement de Tavrisu.

Le plus gros morceau pour l’instant a été le développement de l’interface par défaut. En effet, les musiques de la base de données s’affichent bien dans une liste, triées par artiste, ensuite par album et par numéro de piste. Seul quelques réglages d’apparence restent à faire. Au niveau du player, qui pour cette interface se situe à gauche de la liste de musique, le titre, l’album, l’artiste et l’image de l’album s’affichent quand on double-clique sur une musique. Actuellement, je développe la partie modification/suppression d’une musique/album/artiste.

On peut maintenant insérer une musique « indépendante »: on renseigne le titre, facultativement l’artiste.

J’ai enfin choisi la bibliothèque audio que je vais utiliser: libVLC. Vous l’aurez compris, c’est la bibliothèque développée et utilisée par VLC. J’avais d’abord prévu le module multimédia de Qt, mais il me pose des problèmes. Je me suis ensuite penché sur GStreamer, qui en réalité est assez difficile à prendre en main. J’ai pour finir trouvé libVLC. J’ai fini quelques essais ce matin, je l’implémenterai à Tavrisu sous peu (ça aussi, ce sera un gros morceau !).

Après quelques discussions, je vais ajouter à Tavrisu un module qui composera la base de données en analysant votre dossier de musique (vous aurez fourni à Tavrisu l’emplacement). Ce module établira une liste de vos artistes/albums/pistes et vous demandera si vous souhaitez les ajouter ou non à Tavrisu. Naturellement, tout sera modifiable par la suite.

Ensuite une fois que Tavrisu sera à peu près fonctionnel, il faudra que je concocte un système de mise à jour. A partir de ce moment, je pense que les versions bêta pointeront le bout de leur nez…

Enfin, le plus gros de tous les travaux, sera la réalisation d’une multitude d’interfaces. J’en ferai quelques unes et je laisserai à la communauté la possibilité d’en développer aussi de son côté. C’est quelque part un principe de Tavrisu: chacun pourra faire son interface.

 

Vous pouvez suivre le développement de Tavrisu sur le Site du Zéro et sur zProjets. N’hésitez pas à vous exprimer !