pvsmooth — Lisse les fonctions temporelles d'amplitude et de fréquence d'un flot pv en utilisant des filtres passe-bas RII du premier ordre en parallèle avec une fréquence de coupure variable.
Lisse les fonctions temporelles d'amplitude et de fréquence d'un flot pv en utilisant un filtre passe-bas RII du premier ordre avec une fréquence de coupure variable. Cet opcode utilise le même filtre que l'opcode tone, mais il agit séparément sur les fonctions temporelles d'amplitude et de fréquence qui constituent le flot pv. La fréquence de coupure est un paramètre au taux de contrôle, mais à la différence de tone et de tonek, elle n'est pas spécifiée en Hz, mais en fractions du 1/2 taux de trame (actuellement le taux d'échantillonnage du flot pv), ce qui est plus facile à comprendre. Cela signifie que la fréquence de coupure la plus haute vaut 1 et que la plus basse vaut 0 ; plus la fréquence de coupure est basse et plus les fonctions sont lisses ce qui donne un effet plus prononcé.
Ce sont des filtres appliqués à des signaux de contrôle si bien que l'effet est fondamentalement un floutage de l'évolution spectrale. Les effets produits ressemblent plus ou moins à ceux de pvsblur, mais avec deux différences importantes : 1. le lissage des amplitudes et celui des fréquences utilisent des ensembles séparés de filtres ; 2. le coût de calcul n'est n'est pas plus élevé si l'on désire plus de "floutage" (lissage).
fsig -- flot pv de sortie
fsigin -- flot pv d'entrée
kacf -- valeur de la fréquence de coupure pour le filtrage de la fonction d'amplitude, entre 0 et 1 en fractions du 1/2 taux de trame.
kfcf -- valeur de la fréquence de coupure pour le filtrage de la fonction de fréquence, entre 0 et 1 en fractions du 1/2 taux de trame.
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. |
Voici un exemple de l'opcode pvsmooth. Il utilise le fichier pvsmooth.csd.
Exemple 848. Exemple de l'opcode pvsmooth.
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 realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o pvsmooth.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 kacf = p4 kfcf = p5 asig soundin "fox.wav" fsig pvsanal asig, 1024, 256, 1024, 1 ; analyse it ftps pvsmooth fsig, kacf, kfcf atps pvsynth ftps ; synthesise it outs atps*3, atps*3 endin </CsInstruments> <CsScore> ; amp freq i 1 0 3 0.01 0.01 ;smooth amplitude and frequency with cutoff frequency of filter at 1% of 1/2 frame-rate (ca 0.86 Hz) i 1 + 3 1 0.01 ;no smoothing on amplitude, but frequency with cf at 1% of 1/2 frame-rate (ca 0.86 Hz) i 1 + 10 .001 1 ;smooth amplitude with cf at 0.1% of 1/2 frame-rate (ca 0.086 Hz) ;and no smoothing of frequency e </CsScore> </CsoundSynthesizer>
La formule du calcul de la fréquence de coupure du filtre étant : (taux de trame) / (taille du saut) = (nouveaux départs de trame par seconde) (en Hz), on en déduit le pourcentage du demi taux de trame. Par exemple, pour la première note de l'exemple, le taux de trame est 44100 / 256 = 172,265625 Hz (= 172 nouveaux départs de trame par seconde). La moitié du taux de trame vaux 86 Hz, et un pour cent de ce taux vaut 0.86 Hz.