Main menu:

Site search

Categories

septembre 2025
L M M J V S D
1234567
891011121314
15161718192021
22232425262728
2930  

Archive

Sonic-Visualiser – analyse audio

La version 1.2 de Sonic-Visualiser est sortie il y a quelques jours et c’est l’occasion de vous la présenter. C’est un des programmes les plus complets pour visualiser ou faire une analyse audio. Il est distribué sous license libre GNU.

sonic-visualiser waveform

Ses caractéristiques principales sont les suivantes:

  • accepte les formats wav, ogg et mp3
  • affichage de la forme d’onde
  • affichage de différents types de spectrogrammes
  • affichage du spectre
  • permet la superposition de plusieurs layers
  • permet l’annotation des layers

sonic-visualiser spectrogram

Je ne peux que vous encourager à lire la documentation de ce programme car ses possibilités sont assez étendues et difficiles à expliquer dans un court article. Il y a même des tutoriels pour vous aider à l’utilser.

Il utilise toute une série de librairies dont qt4 mais l’exécutable est construit de manière statique ce qui fait que vous n’avez pas besoin d’installer ces librairies. Elles sont comprises dans l’exécutable. L’inconvénient, c’est évidemment que cet exécutable est sensiblement plus gros. Quelques 24MB dans ce cas-ci.

Pour installer le programme dans Ubuntu, commencez par télécharger le fichier sonic-visualiser-1.2-i686-linux.tar.bz2. Ensuite, ouvrez un terminal et rendez-vous dans le dossier où vous avez téléchargé le fichier. Nous allons l’installer dans le répertoire /opt et créer un lien symbolique dans le répertoire /usr/local/bin:

$ sudo tar -C /opt -jxvf sonic-visualiser-1.2-i686-linux.tar.bz2
$ sudo ln -s /opt/sonic-visualiser-1.2-i686-linux/sonic-visualiser /usr/local/bin/sonic-visualiser

Vous pouvez maintenant le lancer en tapant dans votre console:

$ sonic-visualiser

Si vous voulez ajouter le programme dans votre menu Gnome Son et Vidéo, allez dans le menu Système/Préférences/Menu principal, cliquez à gauche sur Son et Vidéo puis à droite sur le bouton Nouvel élément. Remplissez les différents champs de la fenêtre Créer un lanceur qui s’affiche. La commande à rentrer est bien sûr sonic-visualiser. Voilà, Sonic-Visualiser est maintenant disponible dans votre menu Gnome.

C++ – Les littérales chaînes

Une littérale chaîne est une séquence de caractères encadrées de guillemets. On la déclare comme ceci:

const char *str = "ceci est un string literal";

Mais C++ accepte pour des raisons de compatibilité avec du code ancien qu’on laisse tomber le const:

char *str = "ceci est un string literal";

ceci est accepté mais désapprouvé (deprecated). La raison en est simple. Si vous écrivez:

char *str = "ceci est un string literal";

cela veut dire que str étant un pointeur vers un caractère non-constant, vous pouvez le modifier.

*str = 'C';

est tout à fait légal même s’il vous est interdit de modifier une chaîne littérale. Autrement dit, votre compilateur ne rouspètera pas mais lorsque vous exécuterez ce code vous pouvez très bien provoquer un Segmentation fault (core dumped) sous Linux ou un Access Violation sous Windows.

Gestion des menus

Si vous n’avez jamais été faire un tour dans la gestion des menus d’Ubuntu, faites-le, on y trouve des choses intéressantes.

editeur de configurationLancez le gestionnaire en cliquant dans le menu Système/Préférences sur Menu Principal. S’ouvre alors une fenêtre avec à gauche la liste des menus et à droite les applications contenues dans chaque menu. Vous pouvez librement ajouter, supprimer ou déplacer des menus et/ou des applications dans un menu. C’est très classique et il n’y a rien à dire de plus.

Par contre, ce qui est intéressant, c’est que manifestement, quand vous venez d’installer Ubuntu, toutes les applications ne sont pas reprises dans les menus. Il y a un certain nombre de cases à cocher devant certaines applications qui ne sont pas cochées. Par exemple, il peut être intéressant de cocher dans le menu Outil Système l’application Editeur de configuration. Il s’agit de l’application qui vous permet de configurer Gnome ainsi que les applications Gnome et que vous lanciez auparavent depuis une console en tapant:

$ gconf-editor

Il y a d’autres applications intéressantes à faire apparaître dans les menus et même peut-être certains doublons à supprimer. A vous de configurer vos menus à votre goût.

C++ – Cinq livres

Cinq livres parmi d’autres que je recommande chaudement. Ils sont tous en anglais sauf un. Il faut bien avouer que sur ce sujet, la majorité des livres intéressants sont en anglais.

Si vous êtes débutant complet, je vous conseille le livre de Andrew Koenig et Barbara Moe intitulé Accelarated C++. Un livre qui vous plonge tout de suite dans le C++ et qui n’essaie pas de faire un détours inutile par le C. Un très bon bouquin et probablement un des meilleurs pour commencer à programmer. Mais même si vous avez déjà des notions de programmation, n’hésitez pas à le lire, vous ne serez pas déçu.

En français, Le langage C++ de Bjarne Stroustrup, traduction de la version anglaise. Bjarne Stroustrup c’est bien sûr le père du C++. C’est tout le langage C++ dans un seul bouquin. Un peu technique et pas toujours facile à lire mais c’est une référence.

Maintenant que vous savez programmer, il est temps d’apprendre à bien programmer. Ces deux livres de Scott Meyers, Effective C++ et More Effective C++, vous donneront tout un ensemble de recommandations pour écrire un code de qualité. C’est très agréable à lire et on apprend des tas de choses. A lire et à relire régulièrement.

Et pour finir, il vous faut un livre sur la librairie standard C++. C’est à dire ce qui fait la richesse du C++. Un livre qui est à la fois très didactique, agréable à lire et qui peut aussi servir de référence, c’est le livre de Nicolai Josuttis The C++ Standard Library. Comme les livres de Scott Meyers et Bjarne Stroutstrup, c’est un livre à avoir en permanence à côté de son PC pour pouvoir s’y référer chaque fois que c’est nécessaire.

C++ – Redéfinition vs surcharge

La confusion entre ces deux termes existe plus en anglais (overriding vs overloading)qu’en français. Néanmoins il est intéressant de rappeler les différences entre ces deux termes et leurs particularités surtout lorsque cela concerne des fonctions membres et qu’en plus, la redéfinition ou la surcharge se fait dans une classe dérivée.
Dans les deux cas, il s’agit d’avoir plusieurs fonctions avec le même nom.
Prenons l’exemple d’une classe de base Base qui possède deux fonctions f() et g() dont l’une est virtuelle.

class Base
{
  public:
    void f();
    virtual void g();
};

Dérivons maintenant une classe de notre classe Base et créons dans cette classe dérivée une fonction qui a la même signature que nos fonctions dans la classe Base:

class Derived1 : public Base
{
  public:
    void f();            // Redéfinit Base::f()
    virtual void g();    // Redéfinit Base::g()
};

La même signature signifie que la fonction a le même nom et les mêmes paramètres que la fonction originale. C’est bien le cas ici. f() et g() ont bien le même nom et les mêmes paramètres (ou abscence de paramètre). Notez que pour avoir la même signature qu’une fonction virtuelle, la fonction doit aussi être virtuelle ce qui est bien le cas ici. La fonction hérite de la classe de base son caractère virtuel et donc, le virtual devant la fonction pourrait être omis. Cependant, c’est une bonne pratique que de le mettre ne fut-ce que pour des raisons de code bien documenté.

class Derived2 : public Base
{
  public:
    void f(int);         // surcharge de Base::f()
    virtual void g(int); // surcharge de Base::g()
};

Si comme dans notre classe Derived2, le nom est le même mais que la signature est différente, on parle de surcharge de fonction.
Attention: dans le cas de Derived2, les deux fonctions f() et g() non seulement surchargent les deux fonctions f() et g() de Base mais en plus elles les cachent. Ce qui veut dire que f() et g() de Base ne sont plus accessibles. Par exemple, vous ne pouvez plus écrire ceci:

Derived2 d2;
d2.f();                  // erreur Base::f() est cachée

L’erreur donnée par g++ est l’erreur: no matching function for call to Derived2::f()

Si vous tenez à pouvoir utiliser la fonction f() dans la classe de base malgré le fait que la surcharge de cette fonction cache la fonction f() dans Base, vous devez réécrire votre classe Derived2 de cette façon:

class Derived2 : public Base
{
  public:
    using Base::f;       // permet d'utiliser Base::f()
    void f(int);         // surcharge de Base::f()
    virtual void g(int); // surcharge de Base::g()
};

La clause using vous permet de l’utiliser en spécifiant au compilateur qu’il s’agit de la fonction présente dans la classe de base.

GPRename – Renommer des fichiers

GPRename est un programme qui permet de renommer des fichiers et des répertoires par lot. Il utilise Gtk et perl pour y arriver. C’est le programme idéal et indispensable même si son interface qui n’est pas en Gtk2 est un peu désuette.

Pour l’installer, il faut d’abord que gettext et perl soit installés sur votre PC.

$ sudo apt-get install gettext libgtk-perl

Ensuite téléchargeons la dernière version sur le site de GPRename.

$ wget http://downloads.sourceforge.net/gprename/gprename-2.5.tar.bz2

Décompressons le fichier et installons GPRename.

$ tar xvjf gprename-2.5.tar.bz2
$ cd gprename-2.5
$ sudo make install

Voilà, maintenant, il devrait apparaître dans votre menu Accessoires.

Si votre préférence va à KDE, jetez un coup d’oeil à KRename qui est l’équivalent de GPRename mais pour KDE. Néanmoins, je dois avouer qu’il possède certaines possibilités que n’a pas la version pour Gnome et qu’en plus étant écrit avec QT, il est bien plus ‘joli’.