coin coin

Vous voulez écouter de la musique classique en travaillant mais c’est difficile parce que le volume sonore change tout le temps (ben oui, en musique on aime les forte et les piano...) ? Pour ma part j’ai choisi la compression sonore. Bien qu’on pourrait objecter que l’effet est parfois désagréable lors d’une écoute recueillie, il n’est pas très gênant dans la vie courante...

compression sonore

ALSA est le système de son de la plupart des linux modernes. Il permet de définir, en plus de la carte son matérielle, des pseudo-périphériques audio qui traitent le signal sonore. J’utilise de tels périphériques pour amplifier les sections faibles et atténuer les sections trop sonores de la musique que j’écoute.

Le début de la solution réside dans le fichier .asoundrc qui, s’il est présent dans le dossier personnel ($HOME), est lu par ALSA pour ajouter des périphériques.

Les plugins LADSPA apporte la fin de la solution. On peut les installer avec son gestionnaire de paquetages habituel (yast dans opensuse, où il y a un paquetage ladspa-swh-plugins très utile).

Une fois les paquetages instalés, on peut placer cet exemple de .asoundrc dans son dossier personnel et tester...

Les “pcm.quelquechose” décrivent des unités de traitement du son, “general digital audio processing”. Il y en a de deux types: ladspa et plug.

Les premiers mentionnent les plugins ladspa (sc1,butthigh_iir, hpf) avec leurs réglages. J'en ai créé qui compresse la dynamique sonore, et d'autres qui filtrent les fréquences graves (pour écouter radio-vatican sans déranger mes voisins.) Le plugin butthigh_iir donne le meilleur filtrage mais pour le moment il semble abîmé. Le pcm.aigureal combine un filtrage des aigus et un compresseur de dynamique. Les pcm de type plug appellent les pcm de type ladspa pour leur faire traiter le son et envoyer cela sur la carte son (pcm default)

kde4 utilise phonon comme couche entre les applications et alsa. Pour que les pcm apparaissent dans phonon il faut les nommer d'une façon spéciale (voir le pcm.dyncompH) C'est seulement depuis la version 4.3.1 que phonon gère bien les pcm de type ladspa

Voici mon $HOME/.asoundrc
---------------------------------------------------------------

pcm.compressorLow {
  type ladspa
#  slave.pcm "plughw:0,0";
  slave.pcm default;
  path "/usr/lib/ladspa";
  plugins [
    {
    label sc1
    input {
#        "Attack time (ms)" input, control, 2 to 400, default 101,5
#        "Release time (ms)" input, control, 2 to 800, default 401
#        "Threshold level (dB)" input, control, -30 to 0, default 0
#        "Ratio (1:n)" input, control, 1 to 10, default 1
#        "Knee radius (dB)" input, control, 1 to 10, default 3,25
#        "Makeup gain (dB)" input, control, 0 to 24, default 0
#        "Input" input, audio
#        "Output" output, audio
    controls [50 401 -30 5 10 10]
           }
    }
  ]
}


pcm.compressorHigh {
  type ladspa
#  slave.pcm "plughw:0,0";
  slave.pcm default;
  path "/usr/lib/ladspa";
  plugins [
    {
    label sc1
    input {
#        "Attack time (ms)" input, control, 2 to 400, default 101,5
#        "Release time (ms)" input, control, 2 to 800, default 401
#        "Threshold level (dB)" input, control, -30 to 0, default 0
#        "Ratio (1:n)" input, control, 1 to 10, default 1
#        "Knee radius (dB)" input, control, 1 to 10, default 3,25
#        "Makeup gain (dB)" input, control, 0 to 24, default 0
#        "Input" input, audio
#        "Output" output, audio
    controls [5 401 -30 10 10 16]
           }
    }
  ]
}

pcm.aigu {
  type ladspa
#  slave.pcm "plughw:0,0";
  slave.pcm default;
  path "/usr/lib/ladspa";
  plugins [
    {
    label butthigh_iir
       input {
             controls [500]
             }
    }
  ]
}

pcm.aigureal {
  type ladspa
#  pour realplayer
  slave.pcm default;
  path "/usr/lib/ladspa";
  plugins [
    {
    label hpf
       input {
             controls [1000]
             }
    }{
    label sc1
    input {
             controls [5 401 -30 10 10 16]
           }
     }
  ]
}


pcm.dyncompL {
    type plug
    slave.pcm "compressorLow";
}

pcm.dyncompH {
    type plug
    slave.pcm "compressorHigh";
# suit un bloc pour que le périphérique apparaissent dans la liste de phonon
    hint {
      show on
      description "Compressionb"
      }
}

pcm.sltaigu {
    type plug
    slave.pcm "aigu";
}

pcm.aigurealplay {
    type plug
    slave.pcm "aigureal";
}

Il reste ensuite à configurer les lecteurs audio pour diriger le son vers ces nouveaux périphériques. Realplayer et la plupart des autres lecteurs (vlc, etc.) permettent, dans les «préférences», de modifier le périphérique de sortie sonore, comme on le voit sur la capture d’écran ci-dessous :

Il suffit d'indiquer le pcm voulu (ici, aigurealplay).

kde4 et phonon fonctionnent un peu différemment. Dans la «configuration du système» on peut, par l'onglet multimédia, accéder à l’onglet suivant :

Il indique le périphérique compressionb puisque celui-ci a été défini dans une instruction hint du pcm dyncompH. En déplaçant ce périphérique en haut de la liste je suis sûr qu’il est utilisé de préférence pour une sortie audio émanant de kde4 et des applications utilisant phonon (amarok, etc.)

Enfin, pour la lecture en ligne de commande, il faut utiliser l’utilitaire aplay (paquetage alsa-utils), avec l'option -D ; par exemple
aplay -Dsltaigu Bach-oratorio-de-Noel-5.wav