Jump to content

Compression


cylens

Recommended Posts

Préambule

Ce sujet a pour but de décrire le fonctionnement d'un compresseur, d'expliquer l'influence de chaque paramètre sur le son produit et de décrire quelques techniques plus avancées de compression (sidechain, compression stéréo, compression m/s, compression multibande, compression parallèle).

N'étant pas du tout un spécialiste en électronique ni en matériel analogique, je présente ici une implémentation logicielle (réalisée avec MaxMSP, je file les patches à qui veut). Je suis preneur pour toute correction ou précision qui pourrait s'appliquer à ce que je présente.

Avant toute chose, quelques précisions de terminologie: on parle de la compression comme traitement de dynamique et on précise parfois "compression de dynamique" pour éviter la confusion avec la compression de données.

La dynamique est la plage d'intensités (des plus faibles aux plus fortes) correspondant à un signal audio. Le rôle du compresseur va être de réduire cette plage d'intensités.

L'échelle des intensités sera exprimée en décibels: dB et ici, vu qu'on s'intéressera surtout à des signaux audionumériques, on exprimera les amplitudes en dBFS, 0 dBFS étant le maximum d'amplitude d'un signal audionumérique, ainsi, les amplitudes sont généralement exprimées en nombres négatifs.

Fonctionnement d'un compresseur

Pour résumer le principe de fonctionnement d'un compresseur brièvement, on peut dire la chose suivante: le compresseur analyse le signal entrant et se déclenche lorsque l'amplitude du signal dépasse un certain seuil et agit en réduisant la dynamique du signal au-dessus de ce seuil.

Je vais maintenant décrire étape par étape le fonctionnement du compresseur, avec quelques figures pour illustrer.

1. Création d'un signal d'enveloppe:

La première étape est la création d'un signal correspondant à l'enveloppe du signal. Il est important de comprendre que ce signal ne correspond pas à quelque chose d'audible, c'est juste un signal "utilitaire" qui sert au fonctionnement du compresseur.

Le signal à traiter est moyenné et exprimé en valeurs RMS (Root Mean Square): on prend toutes les valeurs contenues dans n millisecondes (n varie en fonction du comportement que l'on souhaite obtenir pour le compresseur, on le fixe par exemple ici à 5 millisecondes) et on calcule la racine carrée de la somme des carrés de ces valeurs. Le signal obtenu est une courbe de valeurs positives qui donne une bonne représentation de l'évolution globale de l'amplitude du signal. Le choix d'un n plus petit fera que le signal rendra plus compte des petits détails d'évolution d'amplitude.

<img src=http://sickhead.free.fr/onlybass/comp/original.jpg[/img]

signal original (batterie)

<img src=http://sickhead.free.fr/onlybass/comp/rms.jpg[/img]

signal d'enveloppe (n=5 millisecondes)

2. Comparaison du signal d'enveloppe avec un seuil de compression:

Ici intervient le premier paramètre réglable: le seuil de compression (ou threshold). Il est exprimé en dB. On compare donc l'amplitude du signal d'enveloppe avec ce seuil et on s'intéresse à "ce qui dépasse". On a ici réglé le seuil à -16 dBFS

<img src=http://sickhead.free.fr/onlybass/comp/over-abs.jpg[/img]

signal d'enveloppe au dessus du seuil

<img src=http://sickhead.free.fr/onlybass/comp/over-rel.jpg[/img]

même chose, mais on recentre le signal sur 0

3. Création d'un signal de contrôle d'amplitude, paramètre de taux de compression

C'est ici que le compresseur rentre en action, le signal que nous avons obtenu précédemment va être modifié afin de devenir un signal de contrôle d'amplitude. Plus l'amplitude du signal va dépasser le seuil de compression, plus le gain va être réduit. En gros (et je dis pas ça pour moi), ce signal de contrôle d'amplitude est un peu l'opposé du signal précédent).

Un paramètre va régir l'importance de l'action du compresseur: le taux de compression ou ratio. Exprimé comme un rapport, il rend compte de l'atténuation du signal au-dessus du seuil de compression: un taux de compression de 3/1 signifie qu'un écart de dynamique de 3 dB au-dessus du seuil sera réduit à 1 dB.

Les cas limites sont (pour la compression) un taux de 1/1: le compresseur n'agit pas et +∞/1 (infini): "rien ne dépasse", ce qui dépasse du seuil est réduit à la valeur du seuil.

Le signal de contrôle d'amplitude sera, par la suite, multiplié avec le signal original. Ainsi, lorsqu'il vaut 1 (le maximum, sur les illustrations), cela signifie que le compresseur n'agit pas. Lorsqu'il est inférieur à 1, le compresseur agit et opère une réduction de gain.

Pour les illustrations suivantes, le taux de compression a été réglé à 3/1

<img src=http://sickhead.free.fr/onlybass/comp/amp-raw.jpg[/img]

signal de contrôle d'amplitude

4. Lissage du signal de contrôle d'amplitude, paramètres de temps d'attaque et de relâchement (attack et release):

Afin d'avoir un résultat sonore plus subtil, le signal précédent est lissé à l'aide de 2 paramètres:

le temps d'attaque (en millisecondes) est le temps que met le compresseur pour se "mettre en route" à partir du moment où le seuil de compression est dépassé

le temps de relâchement (en millisecondes) est le temps que met le compresseur avant de ne plus agir à partir du moment où le signal d'enveloppe repasse sous le seuil.

Pour l'illustration suivante, le temps d'attaque a été réglé à 3 millisecondes, le temps de relâchement, à 100 millisecondes

<img src=http://sickhead.free.fr/onlybass/comp/amp-smooth.jpg[/img]

signal de contrôle d'amplitude lissé

5. Application du signal de contrôle d'amplitude

Il ne reste plus qu'à multiplier le signal original par le signal de contrôle d'amplitude.

Il est important de noter que le volume sonore perçu est réduit, après compression. On trouve en général un paramètre "output gain" ou "makeup gain" afin de pallier ce phénomène.

<img src=http://sickhead.free.fr/onlybass/comp/comped.jpg[/img]

signal compressé

fin de la première partie. pour la suite, on étudiera l'influence de chaque paramètre et, le plus important, ça se fera soundclips à l'appui.

Edited by cylens
Link to comment
Share on other sites

Un sujet stratégique ! Bonne initiative (tu m'as coupé l'herbe sous le pied, mais tant mieux : A toi le boulot !).

Au besoin, je suis prêt à contribuer à la fin pour donner quelques ficelles issues de mes expériences dominicales avec ces bestioles que j'adore (les compresseurs).

Link to comment
Share on other sites

"Le moins yen a le mieux c'est." Hiroito, Zero point.

"Point de cache misère compresser ne sera" Eric Leone, Clint &Clint

"Compresser au doigt, c'est vachement plus efficace." Tante Odile.

Edited by gromulator
Link to comment
Share on other sites

Pour résumer le principe de fonctionnement d'un compresseur brièvement, on peut dire la chose suivante: le compresseur analyse le signal entrant et se déclenche lorsque l'amplitude du signal dépasse un certain seuil et agit en réduisant la dynamique du signal au-dessus de ce seuil.

....

Le signal à traiter est moyenné et exprimé en valeurs RMS (Root Mean Square): on prend toutes les valeurs contenues dans n millisecondes (n varie en fonction du comportement que l'on souhaite obtenir pour le compresseur, on le fixe par exemple ici à 5 millisecondes) et on calcule la racine carrée de la somme des carrés de ces valeurs. Le signal obtenu est une courbe de valeurs positives qui donne une bonne représentation de l'évolution globale de l'amplitude du signal.

Ce sont les deux modes de fonctionnement de la side-chain : peak et RMS mais ce n'est pas dédié à la même utilisation :

  • en peak, on vise plutôt la fonction limiter ou compression d'instrument solo, le compresseur déclenchant dès que les crêtes du signal dépassent un certain seuil

  • en RMS, c'est davantage utilisé en compression de sous-groupe (drums + bass par exemple) car on ne travaille plus sur un niveau de signal mais sur sa "puissance", c'est à dire son contenu spectral et des niveaux de chaque fréquence, c'est le niveau mais aussi la "richesse" en basses/mediums/aigues du signal qui vont décider de la compression (après une transformation log); en RMS le compresseur travaille d'une manière très proche de celle de l'oreille humaine.

Il y a des compresseurs qui travaillent conjointement avec ces deux modes, mais ce n'est pas courant.

Link to comment
Share on other sites

tout à fait. cependant, en audionumérique, la différence se réduit à peu de choses: en réglant le temps de moyenne à 0, on fonctionne en peak. Donc pour du logiciel, pas de différence topologique. pour un usage limiter, je descends à 0.25 millisecondes, ce qui correspond à une moyenne sur une 10aine d'échantillons en 44.1 kHz et je ne vois pas de souci. pour une utilisation plus macroscopique comme compresseur de bus, je passe à plusieurs 10aines de millisecondes. encore qu'on peut gérer ça avec l'attack et le release.

à ce sujet, je suppose qu'en analogique, y a un "temps d'intégration" minimum, quand même, non? tu aurais un ordre de grandeur?

ah oui, y a un truc que j'ai pas addressé encore, c'est la détection en feedback. si quelqu'un veut s'en charger, ça sera avec plaisir.

Link to comment
Share on other sites

Le temps d'intégration minimum dépend directement de la fréquence du signal à compresser.

Le calcul de l'enveloppe s'effectuant via un redressement/filtrage, il faut avoir une constante de temps relativement grande devant la fréquence la plus basse du signal, par exemple pour un si grave à 30 Hz, on devrait taper dans les 100mS (3 périodes à 33mS) au minumum, sinon on risque d'avoir de la distorsion d'ordre 2 en raison de l'ondulation résiduelle due au redressement du si grave qui viendrait moduler la tension continue de commande du VCA.

Il faut faire un compromis entre vitesse de détection et distorsion, il n'y a pas de solution parfaite.

Link to comment
Share on other sites

gromu: Vu les exemples du sujet, va falloir que tu m'expliques comment tu compresses la grosse caisse au doigt... ca doit faire mal non ? :)

Cylens, snikpout: donc rms à 0 => peak, vous me confirmez ? Et pour basse et instru percusif on a tendance à faire ca au peak ? J'ai du mal à voir l'interet du RMS sur des instruments à attaque tres rapide et forte.

Link to comment
Share on other sites

c'est vraiment pour ça que j'ai fait le sujet, il y a tellement de questions...

par exemple, une grosse caisse, ben tu vas justement chercher à pas compresser les transitoires d'attaque, à ne pas toucher à l'attaque, donc tu vas régler le temps d'attaque de manière à ce que le compresseur la laisse passer.

pour gérer les transitoires d'attaque, on prend un limiter, qui, si le principe général est le même, n'a pas du tout le même comportement et ne sonne pas du tout pareil. d'ailleurs a priori, on demande au limiter d'être transparent. pour moi, la compression ne doit pas être transparente, il faut qu'il y ait un intérêt sonore à l'utiliser.

mais pour te répondre: ça dépend du compresseur :D chaque compresseur est unique, faut voir comment il réagit. et à part dans certaines versions logicielles, on n'a pas accès à la taille de calcul de la valeur RMS. le coup de 0.25 millisecondes pour du peak, je l'ai chopé dans un code de compresseur (le plugin Major Tom de Stillwell).

pour la manière dont je fais mes calculs, la valeur RMS est la racine de la somme des carrés des valeurs comprises dans l'intervalle de temps (exprimé en échantillons). si je règle ce temps à un échantillon, j'ai la racine du carré de la valeur de cet échantillon. soit sa valeur absolue.

Link to comment
Share on other sites

alors ça, c'est marrant, parce que ce genre de distorsion est bien connu, pour la basse notamment, pour y remédier, on agit plutôt sur le temps de release.

En effet il faut aussi que le temps de release soit faible devant la période du signal à traiter, sinon on va avoir une ondulation en sortie de side-chain, due à la décharge/recharge du condensateur de redressement au rythme de la fondamentale.

De toute façon il est extrèmement difficile d'avoir un circuit de side-chain efficace et performant qui reste musical et transparent dans une majorité de situations, chant, drums, basse, gratte ... etc.

Je compresse ma Basse avec un Black Finger... Mais ça sonne mieux, quelqu'un peut m'expliquer pourquoi ? .

C'est simple:

"Compresser au doigt, c'est vachement plus efficace." Tante Odile.

Link to comment
Share on other sites

De toute façon il est extrèmement difficile d'avoir un circuit de side-chain efficace et performant qui reste musical et transparent dans une majorité de situations, chant, drums, basse, gratte ... etc.

yep, c'est pour ça que je me suis intéressé à quelques méthodes un peu plus avancées, filtrage du side-chain, compression M/S pour la stéréo, et surtout compressions parallèle et multi-bande que je trouve intéressantes pour élargir la palette d'un compresseur. encore une fois, faut que je regarde du côté de la détection en feedback...

Link to comment
Share on other sites

pour p-a:

ben on y viendra :D

mais en gros, pour un compresseur stéréo, le sidechain (le signal d'enveloppe) est réalisé à partir de la somme des 2 canaux L+R. ensuite, le compresseur agit séparément sur les canaux L et R. cela peut poser des problèmes de stabilité d'image stéréo, car le compresseur compresse plus les composantes centrales que latérales. certains compresseurs (mon TFPro, notamment) fonctionnent en compressant non pas les canaux L et R, mais les canaux somme (L+R) et différence (L-R) avant de dématricer le tout en stéréo. le plus, c'est qu'en général, tu as accès à une balance mid/side en sortie pour régler la largeur d'image stéréo.

Edited by cylens
Link to comment
Share on other sites

cylens: donc pour toi si on veut égaliser l'attaque de la grosse caisse on a plus tendance à utiliser un limiteur qu'un compresseur ?

pour moi, oui, mais un compresseur avec un temps d'attaque très court, release court et ratio élevé marche aussi pour controler les pics. j'ai eu l'occasion de voir un compresseur GML qui avait 3 circuits de compression différents, dont un pour les pics, justement (incompréhensible, ce truc...)

Edited by cylens
Link to comment
Share on other sites

Je compresse ma Basse avec un Black Finger...sans vraiment savoir pourquoi au juste :blush:

Mais ça sonne mieux, quelqu'un peut m'expliquer pourquoi ? (question con, j'en conviens, désolé :blush: ).

Un compresseur DEVRAIT se régler sans indication graduée, uniquement au son. Il faut entrainer ses feuilles !

Quand ça sonne bien, c'est que tu as eu raison de régler comme ça !

Après, il y a un tas de réglages académiques.

Suffit de regarder un peu une onde, d'observer pendant combien de temps elle monte (attaque), combien de temps elle reste efficace avant de retomber (release).

Un temps d'attaque trop court va donner du sec, alors que si on laisse bien monter la pente initiale, on prend tout le jus.

Le réglage de seuil (threshold) détermine quelle énergie on veut traiter.

Le réglage de ratio détermine avec quelle force on veut appuyer sur le signal. Ne pas oublier de compenser avec le makeup gain.

Le temps attaque (à ne pas confondre avec l'attaque au sens de l'exécution musicale du terme) donne le moment ou cette action va intervenir.

Le temps de relache dicte au compresseur combien de temps il va tenir le couvercle, c'est à dire au bout de combien de temps sous compression cette retombée (relache) va intervenir.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...