URL: https://linuxfr.org/users/jihele/journaux/tuner-un-accordeur-de-guitare-en-python-gtk Title: Tuner, un accordeur de guitare en python / GTK Authors: jihele Date: 2012年03月13日T19:19:13+01:00 Tags: python, gtk3, musique, mao et guitar Score: 18 Il y a quelques mois, j'ai décidé d'apprendre le python. Je me suis aussi lancé dans pyGTK. J'avais déjà essayé GTK en C, mais j'avais eu des difficultés. J'y retournerais peut-être un jour, mais plutôt en C++. En guise d'exercice, j'ai choisi de développer un petit accordeur. Faute d'inspiration, je l'ai appelé Tuner. C'est une application très simple : une fenêtre avec des boutons qui déclenchent un son à la fréquence choisie. Au fil du développement, ça s'est étoffé et c'est un peu devenu une usine à gaz : ![Titre de l'image](http://devs.jolimont.fr/tuner/screenshot.png) Tuner est distribué sous licence [beer-ware](http://people.freebsd.org/~phk/) sur la [page web du projet] (http://devs.jolimont.fr/tuner/). Fonctionnalités =============== - Le clavier (le jeu de touches) est complètement configurable, donc dans la pratique, on doit pouvoir s'en servir avec tous les instruments (avec une précision au demi-ton seulement). On peut ajouter/retirer des touches. On peut choisir de décaler d'un demi-ton ou d'une octave une note, ou bien l'ensemble des notes (on obtient donc un [Drop C](http://en.wikipedia.org/wiki/Drop_c) en 4 clics). La durée des notes est paramétrable. Il n'y a pas (encore) de possibilité de sauvegarde de la configuration. On peut jouer les notes une par une ou toutes à la suite. - Les notations française (Do Ré Mi) et anglaise (A B C) sont gérées. (Ceci ne rentre pas dans le cadre de l'internationalisation / localisation, comme la langue ou les séparateurs de décimales, par exemple.) - Le son est émis via le buzzer interne ou la carte son. Dans le deuxième cas, on peut choisir entre une sinusoïde et un son de guitare assez sympa. Pour cela, j'ai utilisé [beep](http://johnath.com/beep/) et [sox](http://sox.sourceforge.net/). Ce serait mieux d'utiliser un outil doté de _bindings_ python, de façon à pouvoir stopper le son sans devoir tuer le process enfant à coup de SIGINT. Ça sera peut-être fait un jour, mais j'aime bien l'idée de pouvoir sortir par le buzzer quand on a pas d'enceintes grâce à beep. J'hésite entre plusieurs _backends_ avec chacun leurs avantages/inconvénients en matière de portabilité, complétude, obsolescence, intégration. Dans le désordre : ossaudiodev, pygame, PortAudio, Gstreamer. - Ça fonctionne en boucle ouverte : ça ne dit pas à l'utilisateur si son instrument est bien accordé, ça émet le son, c'est tout. Pour un vrai accordeur, il faut aller voir du côté de [gxTuner](http://sourceforge.net/projects/guitarix/files/gxtuner/) ou [Lingot](http://www.nongnu.org/lingot/). - Seules les langues anglais et français sont disponibles. (L'archive contient le fichier .pot avec les chaînes de caractères à traduire...) PyGObject ========= Sur la page de [pyGTK](http://pygtk.org/), il est suggéré d'utiliser [PyGObject](https://live.gnome.org/PyGObject) pour les nouvelles applications. Dans la pratique, cela signifie GTK+ 3. C'est donc ce que j'ai fait. Ça n'a pas été simple : la documentation reste lacunaire. Ça devrait s'arranger, l'introspection aidant, mais les tutoriels ne se feront pas tout seuls... Du fait de l'utilisation de GTK+ 3, Tuner dépend de python-gi (c'est le nom du paquet debian) qui n'est pas disponible avant Wheezy. Je ne sais pas ce qu'il en est des autres distributions. À la réflexion, le passage à PyGObject / GTK+ 3 était peut-être prématuré...

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