pvsfilter — Multiplie les amplitude d'un flot pvoc par celles d'un second flot pvoc, avec mise à l'échelle dynamique.
Multiplie les amplitude d'un flot pvoc par celles d'un second flot pvoc, avec mise à l'échelle dynamique.
fsig -- flot pv de sortie
fsigin -- flot pv d'entrée
fsigfil -- flot pvoc filtrant
kdepth -- contrôle l'importance du filtrage de fsigin par fsigfil.
igain -- modification de l'amplitude (facultatif, 1 par défaut).
Ici les amplitudes du flot pvoc en entrée sont modifées par le flot filtrant sans changer les fréquences. Comme d'habitude, les deux signaux doivent avoir le même format.
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. |
Exemple 827. Exemples
kfreq expon 500, p3, 4000 ; 3-octave sweep kdepth linseg 1, p3/2, 0.5, p3/2, 1 ; varying filter depth asig in ; input afil oscili 1, kfreq, 1 ; filter t-domain signal fim pvsanal asig,1024,256,1024,0 ; pvoc analysis fil pvsanal afil,1024,256,1024,0 fou pvsfilter fim, fil, kdepth ; filter signal aout pvsynth fou ; pvoc synthesis
Dans l'exemple ci-dessus la courbe du filtre dépendra de l'enveloppe spectrale de afil ; dans le cas d'une simple sinusoïde, il sera équivalent à un filtre passe-bande à bande étroite.
Voici un exemple de l'opcode pvsfilter. Il utilise le fichier pvsfilter.csd.
Exemple 828. Exemple de l'opcode pvsfilter.
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 pvsfilter.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ;; example written by joachim heintz 2009 giSine ftgen 0, 0, 4096, 10, 1 giBell ftgen 0, 0, 4096, 9, .56, 1, 0, .57, .67, 0, .92, 1.8, 0, .93, 1.8, 0, 1.19, 2.67, 0, 1.7, 1.67, 0, 2, 1.46, 0, 2.74, 1.33, 0, 3, 1.33, 0, 3.76, 1, 0, 4.07, 1.33, 0; bell-like (after Risset) instr 1 ipermut = p4 ; 1 = change order of soundfiles ifftsize = 1024 ioverlap = ifftsize / 4 iwinsize = ifftsize iwinshape = 1 ; von-Hann window Sfile1 = "fox.wav" ain1 soundin Sfile1 kfreq randomi 200, 300, 3 ain2 oscili .2, kfreq, giBell ;ain2 oscili .2, kfreq, giSine; try also this fftin1 pvsanal ain1, ifftsize, ioverlap, iwinsize, iwinshape; fft-analysis of file 1 fftin2 pvsanal ain2, ifftsize, ioverlap, iwinsize, iwinshape; fft-analysis of file 2 if ipermut == 1 then fcross pvsfilter fftin2, fftin1, 1 else fcross pvsfilter fftin1, fftin2, 1 endif aout pvsynth fcross outs aout * 30, aout * 30 endin </CsInstruments> <CsScore> i 1 0 2.757 0; frequencies from fox.wav, amplitudes multiplied by amplitudes of giBell i 1 3 2.757 1; frequencies from giBell, amplitudes multiplied by amplitudes of fox.wav e </CsScore> </CsoundSynthesizer>