pvstencil

pvstencil — Transforme un flot pvoc selon une table de fonction de masquage.

Description

Transforme un flot pvoc selon une table de fonction de masquage ; si l'amplitude du flot pvoc tombe sous la valeur de la fonction pour un canal pvoc spécifique, un gain est appliqué à ce canal.

Les amplitudes du flot pvoc sont comparées à une table de masquage ; si elles tombent sous les valeurs de la table, elles sont pondérées par kgain. Avant l'opération, les valeurs de la table sont pondérées par klevel, qui peut être utilisé comme contrôle de l'importance du masquage.

Les tables doivent avoir une taille d'au moins fftsize/2 ; pour la plupart des GENS il est important d'utiliser un point de garde (taille en puissance-de-deux plus un), cependant ceci n'est pas nécessaire avec GEN43.

Un des usages typiques de pvstencil est la réduction de bruit. Une empreinte de bruit peut être analysée avec pvanal en un fichier PVOC-EX et chargée dans une table avec GEN43. On peut ensuite utiliser celle-ci comme table de masquage pour pvstencil et l'importance de la réduction est contrôlée par kgain. Si l'on ignore la post-normalisation, les amplitudes moyennes de l'empreinte de bruit originale sont conservées. Cela fournit un bon point de départ pour une réduction de bruit réussie (si bien que klevel peut généralement être proche de 1).

D'autres effets de transformation sont possibles, tels que le filtrage et le "masquage inverse".

Syntaxe

fsig pvstencil fsigin, kgain, klevel, iftable

Exécution

fsig -- flot pv de sortie

fsigin -- flot pv d'entrée

kgain -- gain du "pochoir"

klevel -- niveau de la fonction de masquage (pondère la ftable avant le "pochoir").

iftable -- table de la fonction de masquage

[Avertissement] Avertissement

Il est dangereux d'utiliser la même variable-f à la fois comme entrée et comme sortie des opcodes pvs. Ceci peut produire un comportement indéfini de certains de ces opcodes. Utilisez une variable différente à gauche et à droite de l'opcode.

Exemples

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

Exemple 839. Exemple de l'opcode pvstencil.

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     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if real audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o pvstencil.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr     = 44100
ksmps  = 32
nchnls = 2
0dbfs  = 1

; By Stefano Cucchi - 2021

instr 1

fsource pvsdiskin "fox.pvx", 1, 0.2
kgain1  randomh p4, p5, p6
fstencil1  pvstencil fsource, kgain1, 1, 1
aout1   pvsynth   fstencil1
kgain2  randomh p7, p8, p9
fstencil2  pvstencil fsource, kgain2, 1, 1
aout2   pvsynth   fstencil2
        outs  aout1*0.2, aout2*0.2
endin

</CsInstruments>
<CsScore>
f1 0 513 -7 0 128 0.01 256 0 128 0.9
i1 0 10 4 70 4.2 12 95 3.8
e
</CsScore>
</CsoundSynthesizer>


Crédits

Auteur : Victor Lazzarini
Novembre 2004

Nouveau greffon dans la version 5

Novembre 2004.