distort

distort — Distorsion non-linéaire d'un signal audio avec écrêtage optionnel.

Description

Distorsion non-linéaire d'un signal audio avec écrêtage optionnel.

Syntaxe

ar distort asig, kdist, ifn[, ihp, istor]

Initialisation

ifn -- numéro de table d'une fonction de distortion non-linéaire avec point de garde. La fonction peut avoir n'importe quelle forme, mais elle doit traverser 0, milieu de la table, avec une pente positive. Il n'est pas nécessaire d'avoir une table de grande taille car la lecture se fait avec interpolation.

ihp -- (facultatif) point à mi-puissancez (en Hz) du filtre passe-bas interne. La valeur par défaut est 10.

istor -- (facultatif) état initial de la mémoire interne (voir reson. La valeur par défaut est 0.

Exécution

asig -- Signal audio à traiter

kdist -- Taux de distortion (habituellement entre 0 et 1)

Cette unité déforme un signal entrant au moyen d'une fonction de distortion non-linéaire ifn et un indice de distortion kdist. Le signal d'entrée est d'abord compressé en prenant sa valeur efficace puis passé par une fonction de distorsion non-linéaire qui peut modifier sa forme et son spectre. Finalement il est remis à l'échelle la plus proche de sa puissance originale.

Le taux de distorsion dépend de la nature de la fonction déformante et de la valeur de kdist, qui est généralement compris entre 0 et 1. On souhaite que pour les faibles valeurs de kdist la fonction déformante laisse le signal quasi inchangé. Ceci sera le cas si, au point médian de la table, la fonction déformante est presque linéaire et traverse 0 avec une pente positive. Une fonction segment de droite entre -1 et +1 satisfait à ces exigences ; une sigmoïde (sinusoïde entre 270 et 90 degrés) également. Lorsque kdist augmente, le signal compressé est dilaté pour rencontrer plus de parties de la fonction déformante, et si celle-ci devient non-linéaire, le signal est de plus en plus tordu lors de son parcours pour obtenir une distorsion.

Lorsque kdist devient suffisamment grand, le parcours va éventuellement atteindre les limites de la table. La table n'est pas lue de manière cyclique, mais se « bloque » sur les points extrêmes lorsque le signal entrant les dépasse ; cela introduit de l'écrêtage, une forme supplémentaire de distorsion du signal. Le point où l'écrêtage commence dépend de la complexité (différence entre la valeur efficace et le pic) du signal entrant. Pour une sinusoïde pure, l'écrêtage ne commence que si kdist dépasse 0.7 ; pour une entrée plus complexe, l'écrêtage peut commencer avec kdist à 0.5 ou beaucoup moins. kdist peut dépasser le point d'écrêtage de n'importe quelle quantité et peut être supérieur à 1.

La fonction déformante peut être rendue arbitrairement complexe pour plus d'effets. Elle doit généralement être continue bien que ce ne soit pas nécessaire. Elle doit aussi être régulière près du point médiant et répartie à peu près également entre les valeurs positives et les valeurs négatives sur l'ensemble, sinon un décalage dû à une composante continue excessive peut apparaitre. On peut expérimenter avec des fonctions plus agressives selon les besoins. Une pente généralement positive permet de mélanger le signal transformé à la source sans annulation de phase.

distort est utile comme processeur d'effets et est habituellement combiné avec de la réverbération et du chorus sur les bus d'effets. Cependant, on peut également l'utiliser comme effet dans un instrument unique.

Exemples

Voici un exemple de l'opcode distort. Il utilise le fichier distort.csd.

Exemple 189. Exemple de l'opcode distort.

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 distort.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr     = 44100
ksmps  = 32
nchnls = 2
0dbfs  = 1

gifn	ftgen	0,0, 257, 9, .5,1,270	; define a sigmoid, or better 
;gifn	ftgen	0,0, 257, 9, .5,1,270,1.5,.33,90,2.5,.2,270,3.5,.143,90,4.5,.111,270

instr 1

kdist	line	0, p3, 2		; and over 10 seconds
asig	poscil	0.3, 440, 1
aout	distort	asig, kdist, gifn	; gradually increase the distortion
	outs	aout, aout

endin
</CsInstruments>
<CsScore>
f 1 0 16384 10 1
i 1 0 10
e

</CsScore>
</CsoundSynthesizer>


Crédits

Ecrit par Barry L. Vercoe pour Extended Csound et incorporé dans Csound5.