dam

dam — Un compresseur/expander dynamique.

Description

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.

Syntaxe

ares dam asig, kthreshold, icomp1, icomp2, irtime, iftime

Initialisation

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.

Exécution

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).

Exemples

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.

Crédits

Auteur : Marc Resibois
Belgique
1997

Nouveau dans la version 3.47

Exemples écrits par Kevin Conder.