Micro Music Player (mmp), le lecteur musical minimaliste, sort en version 3.0

37
6
fév.
2017
Son

Micro Music Player (mmp) est disponible dans une nouvelle version : 3.0.

Copie d'écran: Interface minimale de mmp-3.0.

Il s’agit d’un lecteur musical minimaliste écrit en C++ dans un style C-Like(licence GPL v3). Un petit lecteur musical, joli, pratique et petit mais costaud, détaillé dans la suite de la dépêche.

Sommaire

Présentation de Micro Music Player version 3.0

Copie d’écran : interface principale de mmp-3.0

Dépendances de Micro Music Player version 3.0

mmp-3.0 utilise la bibliothèque libvlc comme moteur audio, dont vous pourrez trouver des fichiers précompilés pour Mac OS dans l’index de www.open-source-projects.net.

Concernant Windows, vous pourrez trouver divers binaires précompilés sur https://nightlies.videolan.org/build/ ou sinon utilisez le pacman de MSYS2.

Sinon, pour GNU/Linux, libvlc est disponible dans la plupart des dépôts des distributions et GTK+-3.0 pour construire l’IHM.

Enfin, la bibliothèque gtk-mac-integration est requise pour les systèmes Mac OS.

Fonctionnalités

Micro Music Player (mmp) est un petit lecteur de musique minimal avec comme fonctionnalités :

  • jouer une sélection de fichiers ;
  • jouer le contenu d’un dossier : sélecteur de dossier non disponible sous Windows ;
  • Play (jouer), Stop (arrêter), Pause ;
  • Next (suivant), Previous (précédent) ;
  • Repeat All (répéter la liste de lecture) Repeat One (répéter la chanson) et Shuffle (mode lecture aléatoire) ;
  • contrôle du volume ;
  • barre de progression de lecture actionnable ;
  • affichage du temps écoulé à côté de la durée totale de la chanson ;
  • affichage du nom de la chanson en cours de lecture ;
  • contrôle du volume et raccourcis clavier magiques ;
  • affichage de notifications à chaque début de chanson : uniquement sous GNU/Linux ;
  • Enable/Reset des associations de fichiers, afin d’utiliser Micro Music Player comme lecteur musical par défaut : uniquement vraiment utile que sous GNU/Linux.

Apparence de l’interface

Concernant l’apparence de l’interface de Micro Music Player les choix suivants s’offrent à vous :

  • interface minimale : mode sans afficher une image de couverture : petit avec le minimum requis ; Copie d’écran : Interface minimale de mmp-3.0.
  • le choix entre deux jeux d’icônes :
    • le jeu d’icônes Oxygen : * icônes colorées et jolies*,
    • le jeu d’icônes HighContrast : * icônes noires et blanches* (moins jolies mais plus explicites) ;
  • le choix entre deux variantes de thème : light et dark (si disponible) : vous pourrez choisir entre une apparence de l’interface claire ou sombre, comme vous préférerez ;
  • le choix entre trois tailles d’interface : petite, moyenne ou grande ; ce choix ne dépend pas de votre résolution d’écran, mais uniquement de l’espace que vous désirez accorder à l’interface.

Note : Vous pourrez par exemple choisir la grande taille et le mode d’affichage d’interface minimale : optimal pour l’espace comprenant tout ce dont vous avez besoin pour écouter votre musique.

Fonctionnement

Micro Music Player peut jouer le contenu d’un dossier ou d’une sélection de fichiers compatible avec le programme. Il vous suffit de sélectionner un dossier ou les chansons, que vous désirez écouter, grâce aux composantes correspondantes du menu, ou à passer le dossier ou les chansons en ligne de commande.

Après sélection du dossier ou des chansons, les chansons sont lexicographiquement ordonnées (comme présenté par votre système d’exploitation) pour composer votre liste de lecture (playlist) que vous pourrez d’ailleurs afficher et activer en cliquant sur la chanson à jouer. La chanson actuellement jouée est marquée d’une petite icône. Une image de couverture est recherchée d’abord dans les métadonnées, puis dans le contenu du dossier. Selon certains paramètres comme les extensions gérées par mmp-3.0, le nom du fichier image (afin de privilégier la face avant de la couverture) et la taille de l’image (pour la qualité de l’affichage). Si aucune image n’est trouvée, mmp-3.0 affiche son image par défaut.

Ensuite, le dossier dans lequel vous avez choisi de lire est automatiquement ajouté aux dossiers récents. Ce qui vous permettra de relancer assez vite d’anciens dossiers écoutés récemment et, sous Windows, de lire un dossier à la place d’une rapide sélection de chansons dans un dossier. D’ailleurs, si vous utilisez Windows, je vous recommande grandement d’utiliser les modificateurs Ctrl et Majuscule dans le sélecteur de fichiers afin de pouvoir sélectionner plusieurs chansons à la fois.

Vos préférences de votre lecteur musical

Micro Music Player peut être configuré a souhait à l’aide les composantes du petit menu de mmp-3.0. Ce qui va changer le comportement et l’apparence de Micro Music Player pendant la session courante, immédiatement. Aucun changement ne sera enregistré dans vos préférences. Ce qui vous permettra d’essayer les différentes possibilités.

Retrouvez votre configuration préférée à chaque lancement de mmp

Afin que vous puissiez retrouver vos préférences à chaque lancement de Micro Music Player, il vous suffit d’ouvrir la fenêtre de configuration du programme, dont la configuration sera égale à celle que vous avez actuellement. Vous pourrez la changer à souhait. Chaque changement sera immédiatement effectif. Puis, vous pourrez rendre vos préférences permanentes (que vous retrouverez à chaque lancement de mmp-3.0) en appuyant sur le bouton Apply (Appliquer).

Fenêtre de configuration et spécificités de chaque système d’exploitation

La fenêtre de configuration de Micro Music Player a été divisée en deux ou trois parties selon le système d’exploitation (la troisième partie n’étant pas accessible, car inutile sous Windows) et ressemble nouvellement à cela :

  • fenêtre de configuration de mmp, partie 1 :
    Copie d’écran: fenêtre de configuration de mmp-3.0, partie 1.

  • fenêtre de configuration de mmp, partie 2 :
    Copie d’écran: fenêtre de configuration de mmp-3.0, partie 2.

  • fenêtre de configuration de mmp, partie 3 :
    Copie d’écran : fenêtre de configuration de mmp-3.0, partie 3

Note : Cette partie de la fenêtre de configuration est inutile sous Windows, car les fonctionnalités ne sont pas disponibles sous ce système d’exploitation et, sous Mac Sierra, elle est disponible mais pas grandement utile au vu de mes essais.

Ce que Micro Music Player ne fait pas

mmp-3.0 ne vous fournit pas (ne vous embête pas avec) les fonctionnalités suivantes :

  • l’indexation de votre dossier musical ;
  • la connexion à une base de données ou le téléchargement pour la gestion des images de couverture.

Uniquement votre dossier musical local et votre lecteur de musique minimaliste : Micro Music Player reste donc aussi simple que possible, sans connexion Internet requise, ni d’indexation de votre dossier musical, soit dit au passage souvent mal faite par les programmes pratiquant l’indexation de vos données. Micro Music Player a été conçu pour simplement écouter votre musique préférée en toute quiétude.

Notes de l’auteur

J’ai implémenté ce programme selon mes critères personnels sans penser à le distribuer au départ, mais finalement j’ai décidé de le publier parce qu’il est facile et simple dans le concept comme dans le code C++. Au point que vous pouvez l’utiliser ou le modifier librement selon les termes de la licence GPL v3.

Note : Le code de Micro Music Player a grandement été chamboulé dans le but de n’avoir qu’une seule version des sources, la détection du système d’exploitation hôte est permise grâce aux macros de GTK+ 3.0.

Formats de fichiers pris en charge

Formats de fichiers musicaux

Formats de fichiers musicaux les plus communs :

  • FLAC (Free Lossless Audio Codec) ;
  • OGG (Ogg Vorbis) ;
  • MP3 (MPEG-1 Audio Layer III ou MPEG-2 Audio Layer III) ;
  • AAC (Advanced Audio Coding). ;
  • AC3 (Dolby Digital) ;
  • wave (WAVEform audio file format) ;
  • WMA (Windows Media Audio) ;
  • MIDI (Musical Instrument Digital Interface) ;
  • ape (Monkey’s Audio) ;
  • mov (QuickTime).

Liste des extensions de fichiers correspondant aux formats de fichiers musicaux pris en charge :

.3ga, .669, .a52, .aac, .ac3, .adt, .adts, .aif, .aifc, .aiff, .amb , .amr, .aob, .ape, .au, .awb, .caf, .dts,.flac, .it, .kar, .m4a, .m4b, .m4p, .m5p, .mid, .mka, .mlp, .mod, .mpa, .mp1, .mp2, .mp3, .mpc, .mpga, .mus, .oga, .ogg, .oma, .opus, .qcp, .ra, .rmi, .s3m, .sid, .spx, .tak, .thd, .tta, .voc, .vqf, .w64, .wav, .wma, .wv, .xa et .xm.

Ils n’ont pas tous été testés, mais sont pris en charge par libvlc.

Formats de fichiers d’images de couverture pris en charge

Les formats d’images pris en charge sont ceux de la bibliothèque gdk-pixbuf, dont les plus connus sont :

  • JPEG (Joint Photographic Experts Group) ;
  • TIFF (Tagged Image File Format) ;
  • PNG (Portable Network Graphics) ;
  • BMP (bitmap image file).

Liste des extensions de fichiers correspondant aux formats de fichiers image pris en charge :

.gdkp, .bmp, .pnm, .pbm, .pgm, .ppm, .wmf, .apm, .gif, .tiff, .tif, .ani, .icns, .png, .svg, .svgz, .svg.gz, .tga, .targa, .jpeg, .jpe, .jpg, .xpm, .xbm, .qtif, .qif, .ico et .cur.

Les nouveautés de la version 3.0

Le code a été remanié de manière à être compatible tel quel avec les trois systèmes d’exploitation testés : Windows, Mac OS et GNU/Linux.

Nouvelle fonctionnalités

  • fonction Repeat One ;
  • mode interface minimale ;
  • enregistrement des dossiers récents ;
  • choix de la variante du thème de l’interface.

Changements

  • reformatage de l’affichage de la chanson actuelle :
  [Song #/Total Songs] - Author - Title
  • déplacement du temps écoulé textuellement à côté du temps total dans l’interface ;
  • changement complet du menu et beaucoup d’ajouts de raccourcis clavier ;
  • changement de la fenêtre de configuration du programme ;
  • utilisation d’une GtkApplication à la place de la paire : gtk_init(…) + gtk_main(…) ; et tout ce que cela implique et permet ;
  • changement des boutons Repeat et Shuffle ;
  • correction du bogue de la fenêtre d’affichage de la liste de lecture ;
  • la paire N° de chanson / Total a été ajoutée dans le champ d’affichage de la chanson courante.

Installer mmp-3.0

Windows

Un fichier *.exe auto‐extractible est à votre disposition pour installer mmp-3.0 sur votre système.

Mac

Par le biais des Autotools vous pourrez construire mmp-3.0. Parce que je ne suis pas assez aguerri, sous Mac OS, pour vous fournir un fichier *.dmg ou *.pkg installable directement dans votre dossier Applications. J’ai bien peiné dans ce but, mais étant un nouvel utilisateur de Mac, j’ai malheureusement constaté qu’il n’existe pas de solution facile pour empaqueter un tel fichier.

GNU/Linux

Micro Music Player est disponible en fichier *.deb ou *.rpm, tous les deux de type noarch, car l’installation se fait en compilant les sources sur le système hôte. D’ailleurs les sources sont systématiquement copiées dans /usr/local/share/MicroMusicPlayer/source avec un Makefile, afin de hacker et de tester le résultat à volonté… Afin de voir les différentes fonctionnalités du Makefile, tapez simplement dans le dossier /usr/local/share/MicroMusicPlayer/ :

$ make help

Construire mmp-3.0 d’après les sources (tarball et GitHub)

Le système de construction basé sur les Autotools a été testé sur diverses plates‐formes :

  • Windows, avec MSYS2, en passant CXX=x86_64-w64-mingw32-g++ au script ./configure ;
  • Mac OS Sierra, qui nécessite en supplément la bibliothèque gtk-mac-integration (disponible grâce à brew ou jhbuild) ;
  • GNU/Linux.

Les Autotools sont utilisés pour le compiler et l’installer. Ce sera donc aussi simple qu’un ./configure + make + make install :

  • vérification et configuration des dépendances :
$ ./configure
  • compilation :
$ make
  • et enfin installation :
$ sudo make install

Pour lancer Micro Music Player en ligne de commande, vous pouvez aussi utiliser le lien symbolique :

$ mmp [dir|file(s)]path

Écoutez vos chansons préférées avec Micro Music Player (mmp) !

Aller plus loin

  • # Bonne tête, sauf le code source

    Posté par  (site web personnel) . Évalué à 5.

    Ok ton lecteur a une bonne interface, ça donne envie de le tester. Par contre ton style de codage est assez difficile à suivre ; pourquoi tant de sauts de lignes ?

    • [^] # Re: Bonne tête, sauf le code source

      Posté par  (site web personnel) . Évalué à 4.

      J’osais pas trop lancer le sujet, parce que ça fait méchant. Mais maintenant que c’est fait :

      Pourquoi “using namespace std;” dans un fichier .h, inclus partout ?
      Pourquoi inclure tout (vector, algorithms, random…), dans tous les fichiers, au lieu de juste ce qui est utilisé dans le fichier .cpp ?
      Pourquoi tout est déclaré extern ?

      • [^] # Re: Bonne tête, sauf le code source

        Posté par  . Évalué à 4.

        Peut-être que l'auteur est simplement autodidacte et a appris le C++ en tâtonnant ; il dit que le projet était uniquement pour lui à la base et qu'il a finalement décidé de le publier.

        • [^] # Re: Bonne tête, sauf le code source

          Posté par  (site web personnel) . Évalué à 2.

          Oui, en vérité c’était pas vraiment des « pourquoi tu fais comme ça ? » que j’aurais dû écrire, mais « tu ne devrais pas faire comme ça ».

          • [^] # Re: Bonne tête, sauf le code source

            Posté par  (site web personnel) . Évalué à 1.

            Alors pourquoi car je fait toujours comme cela,

            Un fichier:

            • includes.h

            • defines.h

            • global_vars.h

            • global_vars.c

            Et les déclaration extern signifie dans le cas:

            1. d'une variable qu'elle est globale une fois le linkage fait.

            2. d'une fonction qu'elle est accessible partout ou l'on inclus le header (.h) correspondant.


            Sinon cela ne change rien car il existe des inclusion guards

            #ifndef MMP_HH
            #define MMP_HH
            
            // ...
            
            #endif

            Dans tous les fichiers d'en tête afin d'éviter d'inclure 2 fois le même.


            Je ne vois vraiment pas ce qu'il y a de mal a mon code qui excusez du peu est compatible avec

            • GNU/Linux (Don't forget the GNU).

            • Windows

            • MacOS.

            Moyennant un ou deux changements dans le Makefile.

            Sauf la mauvaise habitude d'avant: using namespace std ;

            Malgré vos remarque et le mixage C && C++, je pense que le code est correctement écrit.

            Merci pour vos réponses.

            Si cela peu améliorer ma manière de faire venant du C.

            • [^] # Re: Bonne tête, sauf le code source

              Posté par  (site web personnel) . Évalué à 1.

              D'ailleurs en y repensant,

              ce n'est pas du C++ classique mais C++/C-Like.

              Ce n'est pas comme si l'on définissait des classes avec les en-têtes nécessaire a chacune.


              Et même j'ai fait l'expérience d'inclure individuellement les en-têtes standard dans les en-têtes des fichiers

              et

              faire un gros fichier includes.h:

              cela ne change rien, si je me fis a la taille de l'exécutable finale: du -h -s a.out ou ls -l a.out.

              Vos commentaires sur le code sont la bienvenue, merci.

              • [^] # Re: Bonne tête, sauf le code source

                Posté par  . Évalué à 2.

                cela ne change rien

                Si ça change beaucoup, le code est moins bien organisé, donc plus difficile à comprendre, donc moins maintenable sur le long terme, et donc contiendra potentiellement plus de bugs.

                En C c'est une bonne pratique d'écrire du code semi orienté objets. Avec un constructeur qui alloue avec malloc une struct et retourne la variable "self". On passe alors cette variable self en argument au reste des fonctions de cette classe. Plus un destructeur pour libérer la mémoire.

                Les variables globales/extern sont à éviter si possible. Avec des variables globales, modifier du code à un endroit peut demander de faire des modifications à plein d'autres endroits. Tandis qu'en POO, une classe fournit une interface publique, et cache les détails d'implémentation.

                Bref, je ne vais pas m'étendre en long et en large sur le sujet, j'ai commencé à écrire un guide pour écrire des applications en GLib/GTK+ en C, et une des sections explique comment (et pourquoi) écrire du code orienté objets en C.

                Si tu regardes le code d'une application comme gedit, le code est orienté objets, basé sur GObject.

                • [^] # Re: Bonne tête, sauf le code source

                  Posté par  (site web personnel) . Évalué à 1.

                  Salut sébastien,

                  Linuxtaor == author of it-edit.

                  J'ai mis ton blog sur https://people.gnome.org comme marque page et j'ai télécharger le *.PDF,

                  Bon choix de format, j'aime pas le format *.epub mais bon.


                  Les variables globales sont a éviter mais si l'on divise son code en plusieurs fichier sources et il est bien difficile de toujours passer en référence un pointeur (Dès fois il faut passer par une structure globale a un fichiers si l'on désire passer plusieurs variables) selon la sémantique des fichiers.

                  Les variables globale ne sont pas le diable je pense qu'ils existent pour une bonne raison.

                  En faire le moins possible est le mieux que je puisse faire.

                  Malgré que ce programme en contiennent pas mal, c'est a cause de son histoire: je me répète ce fût mon premier programme en C++ parallèlement a Edip.

                  Donc en version 3.0 après 4 versions, j'en ai eliminés et sérieusement améliorer le code mixture C/C++ et rendus le code compatible Mac, Windows, Linux grâce au préprocesseur.

                  Si ça change beaucoup, le code est moins bien organisé, donc plus difficile à comprendre, donc moins maintenable sur le long terme, et donc contiendra potentiellement plus de bugs.

                  • Concernant un relativement gros fichier includes.h je ne pense pas.

                  • Concernant un gros fichiers defines.h a voir, cela me dérange pas.

                  • Concernant un gros fichiers globals_vars.h et .c tu a sûrement raison.

                  Car l'on peut très bien référencé les variables externes en les déclarant comme externe là ou l'on en a besoin.

                  Bref cela est un problème d'organisation.

                  Donc personnel pour moi.


                  it-edit-3.0 contiendra les même sortes de fichiers, mais sera beaucoup mieux que les version précédentes.

                  Je me suis mis en tête après après lu l'ouvrage d'un Unknow head nommer Jonas Skeppstedt (auteur d'un compilateur open-source c99-c11, nommé lmpcc, agréer ISO ce que gcc n'est pas):

                  Writing Efficient C Code: A Thorough Introduction

                  A écrire du code pour le compilateur mais je balance entre

                  • l'organisation du code

                  • La présentation au lecteurs.

                  • Et écrire pour le compilateur.

                  Je te recommande chaudement ce livre: nullement besoin de connaître le Java, plutôt savoir un minimum comment fonctionne un ordinateur et l'assembleur malgré la syntaxe power utilisé dans le bouquin.

                  Merci Sébastien.

                  Merci a tous le monde pour vos réponses.

                  PS: A part une analyse approfondie du code machine connais tu un autre indicateur que la taille de l'exécutable de la qualité du code, comme le rapprochement dans l'utilisation de certaines variables afin d'optimiser l'accès au cache (cache hit !) ?

  • # Paquet *.deb

    Posté par  . Évalué à 1. Dernière modification le 07 février 2017 à 08:14.

    Je l'ai d'abord installé avec gdebi qui a ajouté les dépendance, puis m'a renvoyé une erreur comme quoi mmc était déjà installé… comme ce n'était pas le cas, j'ai retenté avec un dpkg -i … mais j'obtiens le résultat suivant (Mint 18.1 amd64) :

    > Préparation du dépaquetage de ./mmp-3.0-noarch.deb ...
    make unupdate-desktop
    if `test -x " /usr/bin/update-desktop-database"` ; then  /usr/bin/update-desktop-database -q ; elif `test -x " /usr/bin/xdg-desktop-menu"  ; then  /usr/bin/xdg-desktop-menu forceupdate --mode system ; fi
    /bin/bash: -c: ligne 0: caractère de fin de fichier (EOF) prématuré lors de la recherche du « ` » correspondant
    /bin/bash: -c: ligne 1: erreur de syntaxe : fin de fichier prématurée
    Makefile:664 : la recette pour la cible « unupdate-desktop » a échouée
    make[1]: [unupdate-desktop] Erreur 1 (ignorée)
    /bin/rm -f "/usr/local/bin/MicroMusicPlayer"
    /bin/rm -f "/usr/local/share/info/MicroMusicPlayer.info"
    /bin/rm -f "/usr/local/share/info/mmp.info"
    /bin/rm -f "/usr/local/share/man/man1/MicroMusicPlayer.1"
    /bin/rm -f "/usr/local/share/man/man1/mmp.1"
    /bin/rm -f "/usr/share/applications/mmp.mrcyberfighter.desktop"
    /bin/rm -R -f /usr/local/share/MicroMusicPlayer
    Dépaquetage de mmp (3.0) sur (3.0) ...
    Paramétrage de mmp (3.0) ...
    make -B CPPFLAGS=-D'PREFIX=\"/usr/local\"'
    g++  -Wall -pedantic -Wno-deprecated -Wno-deprecated-declarations   -DPREFIX=\"/usr/local\" `pkg-config --cflags gtk+-3.0` `pkg-config --cflags libvlc` -g -O2 -std=c++11        -c source/main.cpp -o source/main.o `pkg-config --libs gtk+-3.0` `pkg-config --libs libvlc`
    /bin/bash: g++ : commande introuvable
    Makefile:313 : la recette pour la cible « source/main.o » a échouée
    make[1]: *** [source/main.o] Erreur 127
    Makefile:681 : la recette pour la cible « install » a échouée
    make: [install] Erreur 2 (ignorée)
    /usr/bin/install -c ./bin/MicroMusicPlayer "/usr/local/bin"
    /usr/bin/install: impossible d'évaluer './bin/MicroMusicPlayer': Aucun fichier ou dossier de ce type
    Makefile:681 : la recette pour la cible « install » a échouée
    make: [install] Erreur 1 (ignorée)
    if `test ! -L  "/usr/local/bin/mmp"` ; then  /bin/ln -s "/usr/local/bin/MicroMusicPlayer" "/usr/local/bin/mmp" ; fi
    if `test ! -d /home/marc/.local/share` ; then  /bin/mkdir -p /home/marc/.local/share ; if `test ! -f /home/marc/.local/share/recently-used.xbel` ; then touch /home/marc/.local/share/recently-used.xbel ; fi ; fi
    /bin/chmod -R a+rx "/usr/local/share/MicroMusicPlayer"
    if `test ! -d "/usr/local/share/MicroMusicPlayer/Configuration"` ; then  /bin/mkdir -p "/usr/local/share/MicroMusicPlayer/Configuration" ; fi
    /bin/chmod -R a+rwx "/usr/local/share/MicroMusicPlayer/Configuration"
    /bin/mkdir -p "/usr/local/share/MicroMusicPlayer/bin"
    /bin/chmod -R a+rwx "/usr/local/share/MicroMusicPlayer/source"
    /bin/chmod -R a+rwx "/usr/local/share/MicroMusicPlayer/bin"
    make desktop
    desktop file generated at: /usr/share/applications/mmp.mrcyberfighter.desktop
    make update-desktop
    if `test ! -d "/usr/share/applications"` ; then  /bin/mkdir -p "/usr/share/applications" ; fi
    if `test -x " /usr/bin/desktop-file-install"` ; then  /usr/bin/desktop-file-install --rebuild-mime-info-cache "/usr/share/applications/mmp.mrcyberfighter.desktop" ;  /usr/bin/update-desktop-database -q ; elif `test -x " /usr/bin/xdg-desktop-menu"` ; then  /usr/bin/xdg-desktop-menu  install --noupdate --novendor --mode system "/usr/share/applications/mmp.mrcyberfighter.desktop" ;  /usr/bin/xdg-desktop-menu forceupdate --mode system ; fi
    make install-info
    if `test ! -d "/usr/local/share/info"` ; then  /bin/mkdir -p "/usr/local/share/info" ; fi
    /usr/bin/install -c ./texi/MicroMusicPlayer.info "/usr/local/share/info"
    /usr/bin/install -c ./texi/mmp.info "/usr/local/share/info"
    if `test -x install-info` ; then install-info --info-dir="/usr/local/share/info" "/usr/local/share/info/MicroMusicPlayer.info" ; fi
    if `test -x install-info` ; then install-info --info-dir="/usr/local/share/info" "/usr/local/share/info/mmp.info" ; fi
    make install-man
    if `test ! -d "/usr/local/share/man/man1"` ; then  /bin/mkdir -p "/usr/local/share/man/man1" ; fi
    /usr/bin/install -c ./man/MicroMusicPlayer.1 "/usr/local/share/man/man1"
    /usr/bin/install -c ./man/mmp.1 "/usr/local/share/man/man1"
    make clean
    /bin/rm -f ./source/main.o ./source/global_vars.o ./source/dialogs.o ./source/folder_parsing.o ./source/generate_menu.o ./source/gui_configuration.o ./source/music_hooks.o ./source/playing_controls_callback.o ./source/shuffle.o ./source/view_playlist.o ./source/other_callbacks.o ./source/Resizer.o
    /bin/rm -f ./bin/MicroMusicPlayer
    /bin/rm -f ./source/main.o ./source/global_vars.o ./source/dialogs.o ./source/folder_parsing.o ./source/generate_menu.o ./source/gui_configuration.o ./source/music_hooks.o ./source/playing_controls_callback.o ./source/shuffle.o ./source/view_playlist.o ./source/other_callbacks.o ./source/Resizer.o
    /bin/rm -f ./bin/MicroMusicPlayer

    Comme je ne suis pas programmeur, je suis un peu largué là… ça dit fin de fichier prématurée. Il y a une erreur dans l'archive, ou c'est l'un de mes outils de compilation qui n'est pas compatible?

    • [^] # Re: Paquet *.deb

      Posté par  . Évalué à 4.

      /bin/bash: g++ : commande introuvable

      Il te manque le compilateur c++ ?

      • [^] # Re: Paquet *.deb

        Posté par  . Évalué à 1.

        Effectivement, ça va beaucoup mieux après un apt install g++… désolé, je m'attendais bêtement à ce que tout soit dans les dépendances…

        • [^] # Re: Paquet *.deb

          Posté par  . Évalué à 0.

          D'un autre coté, pourquoi « g++ » plutôt que «c++ » ?

          • [^] # Re: Paquet *.deb

            Posté par  . Évalué à 1.

            Pas sûr de comprendre la question, g++ est le nom du compilateur et c++ est le nom du langage.

            • [^] # Re: Paquet *.deb

              Posté par  . Évalué à 6.

              g++ est le nom du compilateur et c++ est le nom du langage

              c++ (langage:C++) et cc (langage:C) sont des liens vers le compilateur livré avec le système en général.

              :~$ c++ -v
              Using built-in specs.
              COLLECT_GCC=c++
              COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
              Target: x86_64-linux-gnu
              ...
              Thread model: posix
              gcc version 4.9.2 (Debian 4.9.2-10)

              ou

              :~>c++ -v
              FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
              Target: x86_64-unknown-freebsd10.3
              Thread model: posix
              Selected GCC installation:
              • [^] # Re: Paquet *.deb

                Posté par  . Évalué à 3.

                Tiens je n'avais jamais remarqué.

                • [^] # Re: Paquet *.deb

                  Posté par  (site web personnel, Mastodon) . Évalué à 2.

                  Ceci dit, il vaut mieux, si tu utilises make, de considérer les variables génériques :

                  $(CC) $(CXX) $(LD) $(MAKE) $(RM)
                  
                  • [^] # Re: Paquet *.deb

                    Posté par  (site web personnel) . Évalué à 2. Dernière modification le 10 février 2017 à 09:22.

                    En faîtes,

                    j'utilise la variable,

                    ifeq ($(OS), UNIX)
                    COMPILER = $(CXX)
                    else ifeq ($(OS), WIN32)
                    COMPILER = x86_64-w64-mingw32-g++
                    endif

                    peu importe le compilateur: clang, g++, etc..

                    Donc j'ai fait l'erreur dans le paquetage *.deb de ne pas avoir mis gcc (GNU Compiler Collection) comme dépendance,

                    je pensait que sauf version serveur tous les système disposait d'un compilateur C++.

                    Désolé, j'y penserai la prochaine fois.

                    Cette manière de faire a ces avantages et inconvénients:

                    • Pas de problèmes d'architecture cible.

                    • le compilateur est détecter par make.

                    • Pas de code de retour d'erreur qui pourrait corrompre votre gestionnaire de paquetages.

                    • Et vous avez la sortie si quelque chose ne va pas.

                    Et des inconvénients comme l'interprétation de la ligne avec l'erreur EOF entre système, dont l'issue aurai pus être plus grave en conséquence du shell lancer par make.

                    • [^] # Re: Paquet *.deb

                      Posté par  . Évalué à 2.

                      En faîtes,

                      'gaffe à la chute.

                      j'utilise la variable,

                      ifeq ($(OS), UNIX)
                      COMPILER = $(CXX)

                      C'est curieux, parce que le retour donné au départ de ce fil utilisait bel et bien g++ et non c++.
                      Manifestement $(C++) est routé vers g++ dans ce cas.
                      Mais bon, je ne suis pas un expert en paquets .deb.

                      je pensait que sauf version serveur tous les système disposait d'un compilateur C++.

                      Itou, et il ne s'agit pas toujours de g++; j'ai par exemple un système où c++ est lié à g++7
                      Ce que provoquerait la même erreur, de fait.

                      • [^] # Re: Paquet *.deb

                        Posté par  (site web personnel) . Évalué à 1. Dernière modification le 12 février 2017 à 15:51.

                        $(CXX) pointe vers le compilateur par défaut de toute façon.

                        Donc: c++.

                        ls -l /usr/bin/c++
                        lrwxrwxrwx 1 root root 21 mai    7  2016 /usr/bin/c++ -> /etc/alternatives/c++

                        Vous pouvez modifier le lien symbolique s'il vous chante si avez d'autres préférences.

  • # Version portable, stp

    Posté par  . Évalué à 3.

    Hello,

    Merci pour ton logiciel, je vais le tester aujourd'hui au boulot.
    Je pense que tu devrais faire une version "portable" pour Windows. Qu'est ce donc? Une version prévue pour s'installer sur une clé USB, et qui stocke toute sa configuration et les DLL dont il a besoin en local, donc sans rien laisser dans windows (pas de DLL, rien en base de registre).

    C'est par exemple ce qu'on trouve sur portableapps.com ou sur framakey

    Ton logiciel pourrait avantageusement remplacer CoolPlayer+ sur portableapps.

  • # Pas de son

    Posté par  . Évalué à 1.

    Salut,

    Installé, ouvert, testé… mais pas de son ! et je ne vois pas où régler cela…

    Un conseil ?

    Merci !

  • # réponse a tous le monde.

    Posté par  (site web personnel) . Évalué à 6.

    Merci pour vos commentaires,

    Ça fait plaisir, merci, je vais essayer de répondre a tous le monde,…

    Apparemment beaucoup de phénomène bizarre reportées:

    Ok ton lecteur a une bonne interface, ça donne envie de le tester. Par contre ton style de codage est assez difficile à suivre ; pourquoi tant de sauts de lignes ?

    C'est mon style et beaucoup de saut ligne pour la clarté, style bizarre je l'admet concernant la friture C/C++, mais c'est parce que je vient du C et que c'était, lors de la sortie de la version 1.0 mon premier programme en C++.

    Je me suis donc tenus a ce style, mais je ne recommencerai pas un tel mélange.

    Si vous voulez voir mon style c++ pur -std=c++11, regardez plutôt battle-rage (un jeu de combat en duel) ou plus ancien Edip (Easy Digital Imaging Processing).

    Mais cela ne fait que presque 2 ou 3 ans que je pratique le C++ en plus du C.


    Comme je ne suis pas programmeur, je suis un peu largué là… ça dit fin de fichier prématurée. Il y a une erreur dans l'archive, ou c'est l'un de mes outils de compilation qui n'est pas compatible?

    Effectivement, d'après le traceback que tu montre (chose bien d'ailleurs) je constate que la Makefile (Script de compilation et d'installation) ne trouve pas g++ le compilateur C++.

    Et sinon concernant l'erreur:

    if `test -x " /usr/bin/update-desktop-database"` ; then  /usr/bin/update-desktop-database -q ; elif `test -x " /usr/bin/xdg-desktop-menu"  ; then  /usr/bin/xdg-desktop-menu forceupdate --mode system ; fi
    /bin/bash: -c: ligne 0: caractère de fin de fichier (EOF) prématuré lors de la recherche du « ` » correspondant
    /bin/bash: -c: ligne 1: erreur de syntaxe : fin de fichier prématurée

    Apparement il y une erreur dans le Makefile, si des personnes ont le même problème qu'il le disent !

    Je pourrai le régler.

    Car j'installe mes programmes en compilant les sources sur le "target host", mais je configure make afin qu'il ne renvois pas d'erreur en cas d'erreur ce qui pourrai causer des problèmes de cassage aisément réparable de ton gestionnaire de paquetage, dans le cas contraire, si l'installation d'un paquetage renvoyai une erreur.

    Sinon apparemment Mint a confondus mmc avec mmp ou est ce une faute de frappe de ta part.

    Dans ce cas il existe déjà un programme nommer mmp sur Mint.

    Après il se peut pour la réinstallation que j'ai commise l'erreur suivante dans le paquetage *.deb:

    replace >= mmp-2.1.
    

    Donc supérieur a…

    Donc je te conseille d'abords de vérifier si mmp existe sur ton système en tapant la commande:

    which mmp

    Si cela renvoie rien: pas de mmp a l'horizon.

    Mais normalement j'ai prévue une conditionnelle afin de pas faire le lien symbolique si un programme nommer mmp existe déjà sur le target host.

    Car l'exécutable sur Linux l'exécutable s'appelle MicroMusicPlayer…???

    Cela fait pas mal de bizarreries.

    Essaye:

    $ sudo dpkg -r mmp
    $ sudo dpkg -i mmp-3.0.deb

    Je pense que tu devrais faire une version "portable" pour Windows. Qu'est ce donc? Une version prévue pour s'installer sur une clé USB, et qui stocke toute sa configuration et les DLL dont il a besoin en local, donc sans rien laisser dans windows (pas de DLL, rien en base de registre).

    Je ne pige rien a Windows, désolé.

    J'ai voulus faire pas mal de choses comme mettre mmp-3.0 dans le menu contextuel, ou le mettre comme lecteur par défaut.

    Mais cela se fait avec la winapi et du coup je ne suis nullement formée a faire un:

    "serveur COMM" ? Pour ces effets, comme l'on m'a conseiller de faire.

    Désolé mais si Windows ne lance pas les exécutable graphiques de la même manière que l'on lance un programme dans un terminal, je ne peut rien y faire.

    D'ailleurs, j'ai remarquer en faisant la version Windows, que une clef de registre HK./bla/bla/mmp.exe "%1" était enregistrer…

    Cela correspond en Linux a mmp %f donc un seule fichier et pour les dossier ont peut se brosser sous Windows a moins de bien connaître Windows et son api et sûrement le registre.

    Mais tu peut te lancer les sources sont ouvertes, si tu est partant.


    Installé, ouvert, testé… mais pas de son ! et je ne vois pas où régler cela…

    Je ne sais quoi dire sinon de regarder ta configuration système, afin de vérifier si Alsa ne s'est pas dé-configurer.
    Cela arrive parfois ?

    Merci pour vos réponses votre serviteur.

  • # Problème son

    Posté par  . Évalué à 1.

    Merci pour la réponse.
    Alsa bien connecté. D'ailleurs Audacious fonctionne parfaitement avec.

    • [^] # Re: Problème son

      Posté par  (site web personnel) . Évalué à 1. Dernière modification le 08 février 2017 à 07:17.

      Essaye d'installer les paquetages suivant si tu n'a pas installer d'après le mmp-3.0.deb:

      • vlc-nox (les codecs pour tous les média).

      • vlc-data

      Sur mon système il n'y plus que un seule paquetage libvlc,

      avant il y en avait 2: libvlc et libvlccore.

      Sinon regarde:

      vlc -plugin-*

      Désolé pour toi que cela ne fonctionne pas.

      Audacious est bien aussi pour écouter de la musique avec son système d'onglets.

  • # alternative bourrine en CLI

    Posté par  . Évalué à 2.

    un peu hors sujet mais j'utilise un raccourcis bash:

    shufmusic () 
    { 
        cd ~/Music;
        find . -type f -print0 | shuf -z | xargs -0 -n 1 ffplay -hide_banner -autoexit -nodisp
    }
    

    Ça utilise la bibliothèque ffmpeg.

    Pour lancer la playlist : un nouveau terminal et shufmusic
    Pour afficher les info (artiste, titre, etc.) : c'est affiché dans la console
    Pour faire suivant : killall ffplay dans une autre fenêtre
    Pour faire pause : CTRL+Z
    Pour faire resume : fg
    Pour faire précédent : tu oublis.
    Pour faire stop : CTRL+C

    J'avais prévenu, c'est bourrin.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.