dam — Un compresseur/expander dynamique.
Cet opcode modifie dynamiquement une valeur de gain appliquée à l'entrée ain en comparant son niveau de puissance à un seuil de niveau donné. Le signal est compressé ou élargi de différents facteurs selon qu'il est au-dessus ou en-dessous du seuil.
icomp1 -- rapport de compression pour la zone supérieure.
icomp2 -- rapport de compression pour la zone inférieure
irtime -- montée du gain en secondes. Durée au-delà de laquelle le facteur de gain peut augmenter d'une unité.
iftime -- chute du gain en secondes. Durée au-delà de laquelle le facteur de gain peut diminuer d'une unité. of one unit.
asig -- signal d'entrée à modifier
kthreshold -- niveau du signal d'entrée qui agit comme seuil. Il peut changer au taux-k (par exemple pour le ducking)
Note sur les taux de compression : un taux de compression de un laisse le son inchangé. Avec un rapport inférieur à un, le signal sera compressé (réduction de son volume) tandis qu'avec un rapport supérieur à un, le signal sera élargi (augmentation de son volume).
Les résultats de l'opcode dam pouvant être subtils, je recommande de les regarder dans un éditeur de sons graphique comme audacity. audacity existe pour Linux, Windows, et MacOS et on peut le télécharger à http://audacity.sourceforge.net.
Voici un exemple de l'opcode dam. Il utilise les fichiers dam.csd et beats.wav.
Exemple 202. Un exemple de l'opcode dam compressant un signal audio.
Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;RT audio out ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o dam.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ;normal audio asig diskin2 "beats.wav", 1, 0, 1 outs asig, asig endin instr 2 ; compressed audio kthreshold = 0.2 icomp1 = 0.8 icomp2 = 0.2 irtime = 0.01 iftime = 0.5 asig diskin2 "beats.wav", 1, 0, 1 asig dam asig, kthreshold, icomp1, icomp2, irtime, iftime outs asig, asig endin </CsInstruments> <CsScore> i 1 0 2 i 2 2.5 8.5 e </CsScore> </CsoundSynthesizer>
Cet exemple compresse le fichier audio « beats.wav ». On y entend
un schéma de batterie répété deux fois. La deuxième fois, le son est moins
fort (compressé) que la première fois.
Voici un autre exemple de l'opcode dam. Il utilise les fichiers dam_expanded.csd et beats.wav.
Exemple 203. Un exemple de l'opcode dam élargissant un signal audio.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;RT audio out ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o dam_expanded.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 asig diskin2 "beats.wav", 1, 0, 1 outs asig, asig endin instr 2 ;expanded audio kthreshold = .5 icomp1 = 2 icomp2 = 3 irtime = 0.01 iftime = 0.1 asig diskin2 "beats.wav", 1, 0, 1 asig dam asig, kthreshold, icomp1, icomp2, irtime, iftime outs asig*.2, asig*.2 ;adjust volume of expanded beat endin </CsInstruments> <CsScore> i 1 0 2 i 2 2.5 6.5 e </CsScore> </CsoundSynthesizer>
Cet exemple élargit le fichier audio « beats.wav ». On y entend
un motif de batterie répété deux fois. La deuxième fois, le son est plus fort
(élargi) que la première fois. Pour éviter une distorsion le volume du signal
a été diminué.