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 108. 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 ; Audio out Audio in No messages ;-odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o dam.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1, uncompressed signal. instr 1 ; Use the "beats.wav" audio file. asig soundin "beats.wav" out asig endin ; Instrument #2, compressed signal. instr 2 ; Use the "beats.wav" audio file. asig soundin "beats.wav" ; Compress the audio signal. kthreshold = 25000 icomp1 = 0.5 icomp2 = 0.763 irtime = 0.1 iftime = 0.1 a1 dam asig, kthreshold, icomp1, icomp2, irtime, iftime out a1 endin ; Instrument #3, compressed signal. instr 3 ; Use the "beats.wav" audio file. asig soundin "beats.wav" ; Compress the audio signal. kthreshold line 25000, p3, 4410000 icomp1 = 0.5 icomp2 = 0.763 irtime = 0.1 iftime = 0.1 a1 dam asig, kthreshold, icomp1, icomp2, irtime, iftime out a1 endin </CsInstruments> <CsScore> ; Play Instrument #1 for 2 seconds. i 1 0 2 ; Play Instrument #2 for 2 seconds. i 2 2 2 ; Play Instrument #3 for 2 seconds. i 3 4 2 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 mary.wav.
Exemple 109. Un exemple de l'opcode dam élargissant un signal audio.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in No messages -odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o dam_expanded.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1, normal audio signal. instr 1 ; Use the "mary.wav" audio file. asig soundin "mary.wav" out asig endin ; Instrument #2, expanded audio signal. instr 2 ; Use the "mary.wav" audio file. asig soundin "mary.wav" ; Expand the audio signal. kthreshold init 7500 icomp1 = 2.25 icomp2 = 2.25 irtime = 0.1 iftime = 0.6 a1 dam asig, kthreshold, icomp1, icomp2, irtime, iftime out a1 endin </CsInstruments> <CsScore> ; Play Instrument #1. i 1 0.0 3.5 ; Play Instrument #2. i 2 3.5 3.5 e </CsScore> </CsoundSynthesizer>
Cet exemple élargit le fichier audio « mary.wav ». On y entend
une mélodie répétée deux fois. La deuxième fois, le son est plus fort
(élargi) que la première fois.