powershape

powershape — Distorsion non linéaire d'un signal par élévation à une puissance variable.

Description

L'opcode powershape élève un signal d'entrée à une puissance avec pré- et post-ajustage du signal afin que la sortie soit dans un intervalle prévisible. Il traite également les entrées négatives de manière symétrique aux entrées positives, calculant une fonction de transfert dynamique utile pour la distorsion non-linéaire.

Syntaxe

aout powershape ain, kShapeAmount [, ifullscale]

Initialisation

ifullscale -- paramètre facultatif spécifiant l'intervalle des valeurs d'entrée entre -ifullscale et ifullscale. Vaut 1.0 par défaut. Il faut donner à ce paramètre la valeur maximale attendue en entrée.

Exécution

ain -- le signal d'entrée à modeler.

aout -- le signal de sortie.

kShapeAmount -- l'importance de l'effet appliqué à l'entrée ; égal à la puissance à laquelle le signal d'entrée est élevé.

L'opcode powershape ressemble beaucoup aux générateurs unitaires pow lorsqu'il s'agit de calculer la "puissance" mathématique. Cependant, il introduit quelques particularités qui le rendent plus utile à la distorsion non-linéaire des signaux de taux-audio. Le paramètre kShapeAmount est l'exposant de la puissance à laquelle le signal d'entrée est élevé.

Pour éviter les discontinuités, l'opcode powershape traite toutes les valeurs en entrée comme des nombres positifs (en prenant leur valeur absolue), mais il conserve leur signe original dans le signal de sortie. Ceci permet un modelage lisse de tout signal alors que l'exposant varie sur n'importe quel intervalle. (powershape traite également de manière intelligente les discontinuités qui peuvent se produire lorsque l'exposant et l'entrée sont tous deux nuls (heureusement). Noter cependant que les exposants négatifs causeront généralement un dépassement par le signal de l'amplitude maximale fixée par le paramètre ifullscale et qu'ils devraient ainsi être évités).

L'autre adaptation concerne le paramètre ifullscale. Le signal d'entrée est divisé par ifullscale avant d'être élévé à la puissance kShapeAmount et il est ensuite multiplié par ifullscale avant d'être retourné. Cela normalise le signal d'entrée dans l'intervalle [-1,1], ce qui garantit que la sortie (avant la mise à l'échelle finale) sera aussi dans cet intervalle pour les valeurs de modelage positives, fournissant une fonction de transfert évoluant sans à coup tandis que la quantité de modelage varie. Les valeurs de kShapeAmount entre 0 et 1 rendent le signal plus "convexe" tandis que les valeurs supérieures à 1 le rendent plus "concave". Une valeur exacte de 1.0 ne produit aucun changement dans le signal d'entrée.

Voir aussi

pow, powoftwo

Exemples

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

Exemple 710. Exemple de l'opcode powershape.

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
-odac           -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o abs.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
instr 1
	imaxamp    =           10000
	kshapeamt  line        p5, p3, p6
	aosc       oscili      1.0, cpspch(p4), 1
	aout       powershape  aosc, kshapeamt
	adeclick   linseg      0.0, 0.01, 1.0, p3 - 0.06, 1.0, 0.05, 0.0
	
		     out         aout * adeclick * imaxamp
endin

</CsInstruments>
<CsScore>
f1 0 32768 10 1

i1 0 1    7.00  0.000001 0.8
i1 + 0.5  7.02  0.01   1.0
i1 + .    7.05  0.5    1.0
i1 + .    7.07  4.0    1.0
i1 + .    7.09  1.0    10.0
i1 + 2    7.06  1.0    25.0

e

</CsScore>
</CsoundSynthesizer>


Crédits

Auteur : Anthony Kozar
Janvier 2008

Nouveau dans la version 5.08 de Csound.