Le Despiker est un petit plugin LADSPA. Il ne marche pas tout le temps. Il est même possible que la différence soit peu audible pour certains.

C'est normal. Le problème est complexe. Le besoin n'est pas moins courant : la récupération d'enregistrements où des saturations numériques ponctuelles brouillent l'écoute. Le Despiker fonctionne assez bien dans ces cas-là.

Il ne convient pas du tout à d'autres cas de distorsion. Un signal saturé sur une période plus longue que quelques dixièmes de seconde reste saturé et le filtrage opéré le dégrade encore de manière apparemment aléatoire. Quand c'est le micro qui sature au départ, les mouvements de la membrane provoquent des interférences sur une plage de fréquences beaucoup trop large et avec une amplitude trop faible pour qu'elles puissent être détectées et atténuées. Hormis ces cas de figure, en se restreignant à celui de la pure saturation numérique, ce plugin a son utilité. Et une autre, aussi, découverte par hasard, mais voyons d'abord son fonctionnement.

Le principe consiste à appliquer un filtre passe-bas uniquement sur les parties de l'onde qui dépassent une valeur donnée, celle-ci étant déterminée par la pifométrie la plus rigoureuse. Ce filtre repose sur une matrice de convolution à une dimension dont les coefficients ont été déterminés avec la même rigueur méthodologique que la valeur du seuil (à vrai dire, il existe des séries de valeurs optimales).

Quant à l'algorithme, il est constitué de trois étapes.

  1. À chaque fois que le signal passe par zéro, et donc qu'il change de signe, cette position dans le flux est stockée pour pouvoir y revenir par la suite.
  2. Quand l'intensité du signal dépasse le seuil, un indicateur est mis à 1.
  3. Dès que le signal repasse par zéro, et si l'indicateur est positionné, il est réécrit depuis le point de repère précédent, en y appliquant la matrice de convolution qui a tendance à gommer les détails et donc les hautes fréquences.

Les plateaux créés par une saturation numérique verront leurs angles arrondis et pourront même disparaître s'ils sont étroits. Petite démonstration en images pour un cas un peu extrême :

Avant (extrait)

Après (extrait)

Et pour un signal moins saturé :

Signal d'origine, non traité

Signal traité par Despiker

J'ai découvert accidentellement une autre utilité à cet algorithme. Sur une piste « propre », c'est-à-dire sans saturation, mais où figurent aléatoirement des pics n'ayant rien à voir avec la dynamique de la musique, on ne peut pas normaliser à 0 dB de manière efficace. Les pics doivent être fastidieusement retouchés à la main pour arriver à un niveau global décent. Ce programme les gomme automatiquement et sans toucher au reste. L'effet est insensible quand des pics isolés sont traités. On peut ensuite amplifier la piste à environ 1 dB de plus par rapport au niveau d'origine.

Ce comportement fait tout de suite penser à celui d'un compresseur/limiteur. Et c'en est un, finalement, bien que primitif et d'une utilité très limitée. Il est toujours possible de relancer le cycle plugin + amplification mais au risque d'impacter de plus nombreuses parties d'ondes et donc de rendre le traitement audible.



Ce qui peut être intéressant, à condition d'appliquer le même principe d'une manière un peu différente dans un autre contexte. C'est tout l'objet de Satana (Saturation Analogique), qui dérive du Despiker. Le signal y est traité indépendamment d'un quelconque seuil, mais sur chaque point du signal proportionnellement à l'amplitude de ce point. Un signal faible est laissé quasiment tel quel alors que les échantillons proches de la saturation passent entièrement par le filtre passe-bas.

L'évolution du mix entre le signal brut et le signal traité peut être linéaire ou suivre une fonction quelconque du moment que f(0)=0 et f(1)=1 ; par exemple, j'aime bien sin(x*π/2) en ce moment.

Le résultat, qui dépend des coefficients de convolution et de la fonction d'application du filtre, ressemble de loin à une saturation analogique. Je voudrais arriver à celle d'une bande de magnétophone dont les VU-mètres sont calés dans le rouge. Idéalement, la fonction choisie devrait représenter le comportement de la bande quand on la pousse dans ses retranchements. Il est malheureusement très difficile, voire impossible, de trouver des exemples pertinents de l'évolution du spectre d'un signal au fur et à mesure qu'il sature une bande magnétique et il faudrait donc mettre en place un banc d'essai avec un Revox (quand j'aurai moins la flemme). Pour l'instant, il donne un son plutôt proche d'un ampli aux lampes rincées.

Bah. Satana fonctionne assez bien pour mes besoins, même s'il est ralenti par cette fonction d'application du filtre.

Satana peut aussi servir à récupérer une saturation numérique (un étage asymétrique pour les harmoniques paires suivi d'un symétrique pour les impaires) en la transformant en distorsion simili-analogique, dans les cas où on veut, pas forcément le son d'origine, mais un son, au sens de « un son particulier ». Le filtre passe-bas contrôlé par les 2e et 3e paramètres du plugin remplace celui du Despiker en plus progressif.

Je m'en sers surtout comme compresseur. L'altération du son, réelle et audible, n'est pas désagréable quand on cherche plus l'efficacité que la haute-fidélité, sans l'effet de « pompage » des compresseurs habituels quand ils sont poussés à bloc.

Reprenons le deuxième exemple de traitement par Despiker, cette fois en appliquant Satana avec comme paramètres

  • Compression = 1 (une seule itération de la compression)
  • Sélectivité = 2.2 (pas mal de points seront traités)
  • Efficacité = 25 (nombre maximum de coefficients, donc très filtré)
  • Volume = 1 (inchangé... mais le volume perçu sera plus élevé).


Signal d'origine, non traité

Signal traité par Satana (C=1, S=2.2, E=25, V=1)

Si on pousse le premier paramètre, qui contrôle le nombre de fois que l'on applique la fonction de compression, la distorsion devient extrêmement perceptible au point de devenir un effet en soi. Le résultat n'est pas désagréable sur une guitare mais c'est tout ; la plupart des pédales d'overdrive de base sont bien meilleures. Il serait possible de l'améliorer en ajoutant un autre étage de saturation asymétrique et surtout en travaillant l'équalisation avant l'effet, mais ce n'est pas le but de la manœuvre.

Les deux plugins tournent sous Linux, sans problème avec Audacity ou Mplayer. En revanche, avec Ardour, une friture bizarre apparaît, peut-être due aux denormals, peut-être due à la nature « temps réel » de cette application. Cela dit, Mplayer traite le flux audio un peu de la même manière qu'Ardour sans que les symptômes apparaissent, et le plugin débarrassé de tout le code de traitement provoque le même phénomène dans Ardour.

Un binaire de Satana existe pour MacOS X mais reste expérimental pour l'instant faute de disposer d'une plate-forme de compilation stable. Quant à Windows, rien n'est prévu hormis quelques #includes. Une bonne âme pourra toujours forker le repo Github et tripoter le Makefile... Avis aux amateurs.