Bienvenue sur Think-Underground.com

Logiciels libres, photographie, musique, énigmes, humour et coups de cœur

Mot-clé - Tutoriels

Fil des billets - Fil des commentaires

mardi 15 novembre 2011

Audacity : découper les chansons de l’enregistrement d’une répétition

J’adore les logiciels libres. Audacity est un incontournable du traitement audio quel que soit le système (Windows, Mac et Linux).

Hier j’ai enregistré deux heures de répétition avec l’un de mes groupes en utilisant l’excellent Zoom H2 Handy Recorder. De retour à la maison, je voulais découper l’enregistrement en plusieurs pistes audio, et si possible en un clin d’œil.

Audacity s’est montré particulièrement efficace. Voici un petit guide :

  • D’abord, après l’ouverture du fichier, vous pouvez découper les silences (detatch at silences) depuis le menu Edit. Si votre groupe est resté calme entre les différentes chansons, ça vous rendra le repérage des chansons plus facile.
  • Ajoutez ensuite une piste de libellés (label track) pour identifier chaque chanson. Les libellés seront utilisés dans les noms de fichiers de pistes, donc donnez leur des noms appropriés.
  • Vous devriez maintenant avoir quelque chose comme ça :

Piste de libellés (label track) dans Audacity

  • À partir du menu d’effets (Effects), ajoutez des fondus de sortie (fade out) à la fin de vos chansons si vous le désirez, et peut-être une légère compression pour aplatir la dynamique de votre enregistrement. La compression excelle sur un enregistrement live sur lequel la batterie est souvent très agressive.
  • L'export multiple sous AudacityUtilisez enfin la fonction d’export multiple et le tour est joué ! Vous obtiendrez autant de fichiers que de labels créés.

Hier j’ai donc découpé deux heures d’enregistrement en 12 fichiers en un peu moins d’une demi-heure. J’ai consacré la plupart du temps à écouter des fragments de l’enregistrement, sans aucune perte de temps liée à Audacity. Un outil excellent, donc, pour ce type d’utilisation !

lundi 12 septembre 2011

Explain Extended : les bases de données n'auront plus de secrets pour vous

Si vous connaissez déjà relativement bien le langage SQL, vous savez probablement que EXPLAIN sert à détailler les étapes de l'exécution d'une requête par le serveur (execution plan).

Le site Explain Extended pousse le concept un peu plus loin. Il prend des problématiques classiques en SQL, les résout, puis optimise la trace d'exécution pour rendre la requête le plus rapide possible. Il utilise toutes les possibilités et contourne les limitations de plusieurs SGBD : MySQL, SQL Server, Oracle, PostgreSQL

Personnellement j'y ai appris pas mal de choses. Par exemple alors que je cherchais à calculer le score moyen de joueurs sur leurs 10 dernières parties (ou moins s'ils n'avaient pas encore fait 10 parties), j'y ai appris l'utilité (et par là même l'existence) de la fonction COALESCE.
Plus récemment sa réflexion sur l'utilisation de UNPIVOT m'a permis de comprendre qu'il ne fallait pas toujours rechigner à utiliser certaines fonctions peu populaire et ayant une mauvaise image lorsqu'elles sont adaptées à un besoin.

Une lecture que je recommande à tout amateur ou prétendu expert en bases de données.

̂

Sinon, pour les curieux, ou ceux qui veulent optimiser mon bouzin (qui tourne déjà en mois d'une milliseconde sur ma petite base) :

SELECT 
   `joueurs_id`, 
   `joueurs_nom`, 
   `joueurs_prenom`, 
   `moyenne_instantanee`, 
   `nb_parties` 
 FROM joueurs 
 INNER JOIN ( 
   /* Calcul de la moyenne instantanée du joueur */ 
   SELECT 
     stats.`stats_joueurs_id`, 
     SUM(`stats_score_apres` - `stats_score_avant`)/COUNT(`stats_date_partie`)
          AS moyenne_instantanee, 
     COUNT(`stats_date_partie`) AS nb_parties 
   FROM stats 
   INNER JOIN ( 
     /* Calcul de la date de la plus vieille des 10 dernières parties (ou moins) */ 
     SELECT 
       `stats_joueurs_id`, 
       COALESCE(( 
         SELECT `stats_id` 
         FROM `stats` 
         WHERE `stats_joueurs_id` = v_parties.`stats_joueurs_id` 
         ORDER BY `stats_id` DESC 
         LIMIT 9,1 
       ), 0) AS stats_id_vieille_partie 
     FROM ( 
       /* Sélection des parties d'un joueur */ 
       SELECT 
         `stats_joueurs_id`, 
         `stats_date_partie` 
       FROM stats 
       GROUP BY 
         `stats_joueurs_id`, 
         `stats_date_partie` 
     ) AS v_parties 
     GROUP BY `stats_joueurs_id` 
   ) AS v_dates 
   ON stats.`stats_joueurs_id` = v_dates.`stats_joueurs_id` 
   AND stats.`stats_id` >= v_dates.`stats_id_vieille_partie` 
   GROUP BY stats.`stats_joueurs_id` 
   ORDER BY stats.`stats_joueurs_id` 
 ) AS v_moyennes 
 ON v_moyennes.`stats_joueurs_id` = joueurs.`joueurs_id`

mardi 15 septembre 2009

HTML/XHTML : les listes de définitions

dl, dt, ddSi dès qu'on vous parle de Dédé vous imaginez tout de suite une balise de code en HTML, alors cet article ne vous servira peut-être à rien, mais pour les autres, je vous recommande fortement la lecture de l'article « Les listes de définition : mal utilisées ou mal comprises ? » sur le site développez.com.

Les exemples fournis sont variés, relativement bien expliqués, et directement réutilisables. Le seul regret peut-être est l'utilisation parfois très sémantique des classes (float-left, first, …) que je ne cautionne pas particulièrement, mais qui reste raisonnable.

Une lecture intéressante donc…

dimanche 18 janvier 2009

Matrox Triplehead2Go et le multi-bureau sous Linux

C'est quoi ?

Étant un joueur assez mordu de simulations automobiles, j'ai fait l'acquisition il y a quelques mois d'un Matrox TripleHead2Go, un petit boîtier qui permet d'utiliser 3 écrans en sortie de son PC[1].

L'intérêt ?

  • Le champ de vision qui est beaucoup plus large dans les jeux (qui supportent le TH2Go). En effet, les trois écrans étant reconnus comme un énorme écran 3840x1024, dans un jeu de voiture, je passe, grâce à ce boîtier, d'une vue intérieur limitée au pare-brise avant, à une vue me permettant de voir les rétroviseurs, les angles morts, ... Dans les autres jeux (FPS, RPG, ...) l'ajout d'un écran de chaque côté participe énormément au côté immersif ! Bref, c'est vraiment plus agréable comme le montre cette image (venant du site SurroundGaming) !

Live For Speed avec le TripheHead2Go

  • Un autre intérêt est de pouvoir utiliser un bureau sur 3 écrans ce qui apporte un réel confort pour ceux qui aiment avoir plein de fenêtres ouvertes. C'est sur cet aspect que je vais me pencher dans ce billet.

Et sous Linux ?

Si le Matrox TH2Go est destiné aux utilisateurs sous Windows, il est quand même utilisable sous Linux. Après tout, ce n'est si plus ni moins qu'un "gros écran" vis-à-vis du système.

Sous ma Debian, en démarrant avec le TripleHead2Go, j'ai eu le bonheur de réaliser que l'affichage s'était automatiquement adapté. Par contre, petit souci (réglé par l'outil PowerDesk SE sous Windows) : quand je maximise une fenêtre, elle se maximise sur les trois écrans :S Je vous laisse imaginer à quel point il n'est pas agréable de devoir tourner la tête pour voir l'ensemble d'une fenêtre, mais surtout, l'intérêt d'avoir 3 écrans est alors limité. Je préférerais que mon Linux considère chaque écran comme un bureau séparé ! Et bien c'est possible.

Chouette, comment on fait ?

J'ai trouvé une solution permettant d'identifier chaque écran comme un bureau distinct, utilisant Compiz-Fusion qui est installé sur de plus en plus de Linux par défaut. (Vous savez, c'est une des méthodes qui permet d'obtenir des applications disposées autour d'un cube). Installer Compiz-Fusion dépasse largement le cadre de cet article, et d'ailleurs il s'agit souvent juste de cliquer sur une case "Activer les effets graphiques 3D'' ou d'installer le paquet compiz. Une fois installé, vous devriez avoir quelque part un écran de configuration (compizconfig-settings-manager) qui ressemble à ça :
Compiz Fusion : gestionnaire de configuration

Les options qui nous intéressent sont dans les Options Générales.

  • dans l'onglet Desktop Size : mettez tout à 1 (sauf si vous voulez en plus des 3 bureaux physiques garder des bureaux virtuels).
  • dans l'onglet Display Settings il va falloir déterminer la taille et la position de vos 3 écrans :

Compiz Fusion : gestionnaire de configuration, définition des sorties
Mes écrans étant tous les trois en 1280x1024, les trois entrées que je vais créer vont commencer par 1280x1024. La suite indique le positionnement relatif des différents écrans (sur l'axe des x et des y). Chacun a la même hauteur mais est décalé de 1280 pixels par rapport au précédent, d'où les 3 sorties que j'ai définies :

1280x1024+0+0
1280x1024+1280+0
1280x1024+2560[2]+0

Mise à jour le 03/08/2009 : il semblerait qu'il faille aussi décocher la case Detect Outputs. Je pense qu'à défaut ignore les paramètres ci-dessus.

Au final ?

Et bien au final ça marche très bien. Les applications s'agrandissent dans leurs écrans respectifs, peuvent être rapidement déplacées d'un écran vers l'autre, ... Bref, un véritable confort d'utilisation. Reste à trouver, ou à se fabriquer, un joli fond d'écran et c'est le bonheur.

Voici une utilisation typique du bureau : Une utilisation typique de trois écrans

Et mon fond d'écran, compilation de trois fonds que j'aime bien, qui vous permet d'apprécier la taille finale du bureau : Mon fond d'écran

Oui mais ?

Tout n'est malheureusement pas rose :

  • J'ai noté quelques soucis de taille de police. Je ne sais pas vraiment d'où ça vient, mais certains textes sont très gros, probablement en cherchant à l'adapter "bêtement" à la résolution de l'écran.
  • L'outil de Matrox sous Windows permet de prédéfinir plusieurs résolutions, de décaler les affichages pour contrer l'effet optique introduit par les bordure des écrans, de maximiser une fenêtre en plein écran si besoin, ... Je ne sais pas si il existe d'équivalent sous Linux.

En conclusion, si vous en avez un ou que vous songez à en acheter un, votre TripheHead2Go sera utilisable sous Linux, mais si vous vous contentez actuellement de un ou deux écrans et que vous ne jouez pas, l'investissement n'en vaut probablement pas la peine.

Notes

[1] En effet la majorité des cartes graphiques n'ont que 2 sorties et sont donc limitées à 2 écrans

[2] 2560 = 1280x2

vendredi 9 mai 2008

La correction orthographique sous Vim

Avant Vim 7.0, corriger les fautes d'orthographe d'un texte demandait de passer le buffer dans un programme externe comme aspell ou bien d'installer des scripts. Désormais, depuis la version 7.0, si vous voulez que Vim vous signale les fautes d'orthographe, et vous suggère d'autres mots pour vous aider à corriger vos erreurs, voici la démarche à suivre :

  • pour activer ou désactiver la correction orthographique utilisez :
:set spell

et

:set nospell
  • pour choisir la langue dans laquelle vous voulez effectuer la correction orthographique, utilisez l'affreuse commande
:setlocal spell spelllang=fr

que je vous recommande de la mettre dans votre .vimrc ou, si vous utilisez couramment plusieurs langues, associez leur des touches de raccourci.

  • enfin la commande précédente suppose que vous ayez un dictionnaire français (ou autre) à votre disposition. Si vim râle en disant
Alerte: Liste de mots "fr.utf-8.spl" ou "fr.ascii.spl" introuvable

générez alors une liste de mots à partir d'un dictionnaire, par exemple ceux d'ispell. Sous Linux vous les trouverez dans /usr/share/dict :

:mkspell /tmp/fr /usr/share/dict/french

puis en root déplacez ce fichier dans

/usr/share/vim/vimcurrent/spell

Les commandes utilisables ensuite sur les mots mal orthographiés (soulignés en rouge ou affichés sur un fond rouge selon votre configuration) sont :

  • En mode commande :
z= - pour proposer un liste de mots 
]s - pour aller au prochain mot mal orthographié
[s - pour aller au précédent mot mal orthographié
  • En mode insertion, à la fin d'un mot mal orthographié
Ctrl+x s - pour proposer une liste de mots

Il existe bien sûr une infinité d'autres commandes (enregistrer un mot comme bien orthographié, annuler une correction, ...) je vous recommande de passer par

:help spell

si vous voulez tout savoir :)

Voilà, plus de souci de fautes d'orthographe pour vous qui utilisez mutt et vim pour écrire vos courriels :D

dimanche 13 avril 2008

Créer un dépôt SVN avec accès SVN+SSH

Le but de cet article est d'expliquer comment je mets en place un dépôt Subversion pour partager les sources d'un projet entre plusieurs utilisateurs sur un serveur privé.

J'aime créer un groupe du nom de mon projet dans lequel je mettrai toutes les personnes qui auront accès à ce projet :

addgroup mon_projet
adduser utilisateur1 mon_projet
adduser utilisateur2 mon_projet

Je crée ensuite un dépôt SVN dans le répertoire du projet (Je regroupe tous les dépôts SVN dans un même répertoire : /home/svn) :

cd /home/svn
svnadmin create mon_projet

Je modifie ensuite les droits sur le répertoire. En particulier, je le rends modifiable par le groupe mon_projet :

chown -R :mon_projet mon_projet
chmod -R g+w mon_projet
chmod g+s mon_projet/db

Ensuite, comme recommandé dans la documentation de ''Subversion'', je crée un fichier /usr/local/bin/svnserve :

#!/bin/bash
umask 002
/usr/bin/svnserve -r /home/svn/ "$@"

Si vous voulez empêcher complètement l'accès au sources aux personnes ne faisant pas partie du groupe mon_projet vous pouvez mettre umask 007.

Et voilà, les utilisateurs du groupe mon_projet peuvent dès à présent utiliser Subversion en svn+ssh:// sur mon serveur :

svn mkdir svn+ssh://mon_serveur/mon_projet/trunk
svn checkout svn+ssh://mon_serveur/mon_projet/trunk
...

Il est possible de faire mieux niveau sécurité, en particulier si votre serveur est public où que vous n'êtes pas convaincu des bonnes intentions de tous vos utilisateurs (qui se retrouvent avec quasiment tous les droits sur le dépôt)... mais c'est un début.

- page 1 de 6