URL: https://linuxfr.org/users/mzf/journaux/un-tap-tempo-en-ligne-de-commande Title: Un tap tempo en ligne de commande Authors: mzf Date: 2018年02月19日T09:56:47+01:00 License: CC By-SA Tags: taptempo et c++ Score: 39 Bonjour à tous, j'aimerai vous présenter mon dernier petit projet : [TapTempo](https://github.com/moleculext/taptempo). C'est un détecteur de tempo en ligne de commande. L'utilisateur frappe une touche en cadence régulière et le programme en déduit le tempo correspondant. Il est affiché en nombre de battements équivalent par minute (ou BPM en anglais). La plupart des logiciels audio-numériques ainsi que beaucoup de d'instruments électroniques ont cette fonctionnalité, mais ça me rebutait de lancer un gros logiciel ou de me déplacer vers mon synthé pour vérifier le tempo d'un morceau. Alors TapTempo est né ! Le scénario que je me suis fixé est de pourvoir simplement taper `taptempo` dans un terminal, de frapper une touche régulièrement (tout en écoutant un morceau de musique par exemple) et d'obtenir le tempo correspondant à chaque frappe : ```> taptempo Appuyer sur la touche entrée en cadence (q pour quitter). [Appuyer encore sur la touche entrée pour lancer le calcul du tempo...] Tempo : 62 bpm Tempo : 71 bpm Tempo : 76 bpm Tempo : 78 bpm Tempo : 80 bpm Tempo : 86 bpm Tempo : 87 bpm Tempo : 80 bpm q Au revoir ! ``` Le calcul s'effectue sur les 5 dernières frappes (ou moins si l'utilisateur n'a pas encore frappé 5 fois la touche entrée) pour limiter l'effet des micro-variations d'une frappe à l'autre. Le nombre de frappes enregistrés est remis à zéro au bout de 5 secondes sans interaction avec l'utilisateur. Ceci permet d'éviter que le premier affichage du tempo ne soit erroné dans le cas où le dernier intervalle de temps est très grand à cause de l'inactivité de l'utilisateur. Ces options peuvent être changées via les arguments du programme : ``` -h, --help affiche ce message d'aide -p, --precision changer le nombre de décimale du tempo à afficher la valeur par défaut est 0 décimales, le max est 5 décimales -r, --reset-time changer le temps en seconde de remise à zéro du calcul la valeur par défaut est 5 secondes -s, --sample-size changer le nombre d'échantillons nécessaires au calcul du tempo la valeur par défaut est 5 échantillons -v, --version afficher la version ``` Concernant le développement à proprement parler, c'est du C++ orienté objet, langage avec lequel je suis le plus à l'aise. Lors de mes recherches j'ai hésité à utiliser [ncurses](https://fr.wikipedia.org/wiki/Ncurses) mais ça m'a paru trop complexe pour ce que je souhaitais réaliser. J'utilise donc directement le terminal. Ceci a comme inconvénients d'afficher ce que l'utilisateur tape et de forcer l'utilisation de la touche entrée pour frapper le tempo. L'avantage c'est la simplicité, pas de dépendances, principe [KISS](https://fr.wikipedia.org/wiki/Principe_KISS). De plus j'en ai profité pour mettre en place des outils et des bonnes pratiques issues des logiciels libres: - licence GPL-3.0+ - génération du projet avec [CMake](https://cmake.org/) - traduction en français avec [gettext](https://www.gnu.org/software/gettext/), et potentiellement dans d'autres langues. - analyse des paramètres d'entrée avec [getopt](https://www.gnu.org/software/libc/manual/html_node/Getopt.html) - génération d'un paquet pour Debian, avec une page de manuel - génération d'un exécutable Windows via [MSYS2](http://www.msys2.org/) avec [mingw-bundledlls](https://github.com/mpreisler/mingw-bundledlls) pour inclure les dépendances J'anticipe le seul bémol actuel : le code est hébergé par [GitHub](https://github.com/moleculext/taptempo), qui n'est pas une forge libre. N'hésitez pas à [tester](https://github.com/moleculext/taptempo/releases) et à envoyer vos remarques !

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