URL: https://linuxfr.org/news/modeste-contribution-a-audacity-sur-l-affichage-des-temps Title: Modeste contribution à Audacity sur l'affichage des temps Authors: Xavier Faure Nils Ratusznik, Benoît Sibaud, ZeroHeure et Nÿco Date: 2014年11月17日T09:12:33+01:00 License: CC By-SA Tags: audacity, c++ et fork Score: 29 Audacity est un logiciel (GPLv2/C,C++/wxWidget) dédié ["à la manipulation de données audio numériques."](http://fr.wikipedia.org/wiki/Audacity). Son développement est encore actif (dernière version : [septembre 2013](http://fr.wikipedia.org/wiki/Audacity)) et utilise [SVN](https://code.google.com/p/audacity/source/browse/audacity-src/trunk). Cette dépêche est consacrée à un retour d'expérience sur un point précis : modifier la manière dont Audacity affiche le temps de début et de fin d'un fragment audio. ---- [Audacity](http://audacity.sourceforge.net/) ---- # A. le problème de départ Audacity permet de choisir le mode d'affichage du temps : par exemple, "seconds" ou encore "hh:mm:ss". Le mode le plus précis et le plus générique est sans doute "hh:mm:ss + milliseconds", dont voici un exemple : ![Affichage du temps dans Audacity](http://94.23.197.37/linuxfr/links_to_images_used_in_my_articles/before.png) Ces renseignements apparaissent en bas de la fenêtre principale : on voit ici que la sélection commence à 3 minutes et 291 millisecondes et s'achève à 5 secondes 155 millisecondes. Le problème qui se pose est le suivant : certains ont comme moi besoin de lire rapidement le temps exprimé en millisecondes. Dans l'exemple ci-dessus, 00:00:03.291 est facile à convertir en 3291 millisecondes. Mais en général, il est bien plus difficile de convertir des nombres plus élevés. Ainsi, 00:57:03.291 vaut par exemple 3 423 291 millisecondes. Comment obtenir ce résultat ? # B. les solutions ## B.1. première solution : regarder ailleurs Bien sûr il existe sans doute d'autres logiciels mieux adaptés à mes besoins ([peut-être comme celui-ci](//linuxfr.org/news/joker-un-logiciel-pour-doubler-des-films-sous-licence-gpl)) mais je voulais me faire plaisir en modifiant Audacity pour obtenir l'affichage désiré. ## B.2. deuxième solution : faire appel aux membres de la communauté du libre Il se trouve que [quelqu'un a eu la même idée que moi](http://audacity.238276.n2.nabble.com/Bug-128-RFE-Add-millisecond-selection-format-td238910.html). Comme le montre le lien, il n'y a pas eu de vraie discussion : à cette époque, l'équipe d'Audacity semblait avoir une opinion très ferme de ce qu'elle voulait et surtout de ce qu'elle ne voulait pas ! ## B.3. troisième solution : modifier Audacity Je profite de cette dépêche pour reconstituer certaines étapes. ### B.3.a. code source [Le code est disponible sur le dépôt SVN d'Audacity](http://audacity.sourceforge.net/community/developers) Pour le récupérer : `svn checkout http://audacity.googlecode.com/svn/audacity-src/trunk/ audacity` ### B.3.b. compilation Attention, grâce au [forum dédié à la compilation du projet](http://forum.audacityteam.org/viewtopic.php?f=19&t=82134) j'ai appris que sur mon système (Archlinux) un simple `./configure` ne suffisait pas, il faut y ajouter l'option `--disable-dynamic-loading`. De même, l'installation de `wxwidget` est obligatoire (comme annoncé par la documentation) mais la bibliothèque `webkitgtk2` est également requise. ... puis `$./configure --disable-dynamic-loading` et `$make` ### B.3.c. lecture du code Le fichier qui nous intéresse est `src/widgets/NumericTextCtrl.cpp`; il définit le contenu de `const BuiltinFormatString TimeConverterFormats[]` et contient donc (j'enlève les commentaires et une partie du code) : ```cpp const BuiltinFormatString TimeConverterFormats[] = { { _("seconds"), _("01000,01000 seconds") }, { _("hh:mm:ss + milliseconds"), _("0100 h 060 m 060.01000 s") }, [...] } ``` Comme la lecture du fichier l'indique, le contenu de chaînes comme "01000,01000 seconds" est analysé : le nombre est affiché suivant le format ainsi décrit. ### B.3.d. modification du code Mon premier mouvement a été de modifier directement le mode "seconds" pour qu'il affiche en plus les millisecondes. J'écris donc : ```cpp const BuiltinFormatString TimeConverterFormats[] = { { _("seconds"), _("01000,01000.01000 seconds") }, ``` ... je recompile, et j'obtiens le résultat attendu : ![Affichage du temps après](http://94.23.197.37/linuxfr/links_to_images_used_in_my_articles/after.png) # C. et maintenant, que faire ? J'aimerais partager mon très modeste travail avec la communauté du libre. ## C.1. problèmes à prévoir du côté d'Audacity J'aimerais proposer un diff à l'équipe d'Audacity car la solution que je propose paraît adaptée à mes besoins. Cependant, elle souffre d'un gros inconvénient : elle contredit le nom du mode d'affichage ("seconds") : changer l'un sans changer l'autre me semble impossible pour des questions de cohérence. L'autre solution serait de proposer un autre mode d'affichage nommé "seconds + milliseconds". Mais je crains, [vu la réponse que j'évoquais précédemment](http://audacity.238276.n2.nabble.com/Bug-128-RFE-Add-millisecond-selection-format-td238910.html), que cette demande ne soit refusée comme étant une proposition inutile. ## C.2. problèmes liés à un fork Forker Audacity et entretenir une branche personnelle ne me plaît qu'à moitié car je n'ai pas envie de devoir gérer la récupération régulière des mises à jours de ce projet. # D. conclusion Alors, que me reste-t-il à tenter ? Si certains voient ce que je puis faire de mon travail, je suis preneur !

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