pvsftr — Lit les données d'amplitude et/ou de fréquence depuis des tables de fonction.
ifna -- Une table d'une taille d'au moins inbins qui contient les données d'amplitude. Ignorée si ifna = 0.
ifnf (facultatif) -- Une table d'une taille d'au moins inbins qui contient les données de fréquence. Ignorée si ifnf = 0.
fsrc -- une source au format PVOC-EX.
Permet d'échanger le contenu de fsrc avec des tables de fonction pour un traitement particulier. Sauf si le recouvrement de trame est égal à ksmps (ce qui ne sera généralement pas le cas), les données de trame ne sont pas mises à jour à chaque période de contrôle. Il ne faut traiter les données contenues dans ifna, ifnf que lorsque kflag vaut 1. Pour ne traiter que les données de fréquence, mettre ifna à zéro.
Comme les tables de fonction ne servent qu'à stocker des données venant de fsrc, il n'y a aucun avantage à les définir dans la partition et elles seront généralement créées dans l'instrument avec ftgen.
En exportant disons les données d'amplitude d'un fsig et en les important dans un autre, on peut effectuer une synthèse croisée basique (comme dans pvscross), avec l'option de modifier les données au passage en utilisant les opcodes de manipulation de table.
Noter que le format des données dans le fsig source n'est pas écrit dans les tables. Nous avons ainsi un moyen de transférer les données d'amplitude et de fréquence entre des fsigs de format différent. Utilisés de cette manière, ces opcodes deviennent potentiellement pathologiques et l'on peut escompter qu'ils donneront des résultats inattendus. Dans ce cas, la resynthèse avec pvsadsyn sera presque certainement requise.
Pour faire une copie directe d'un fsig à un autre de même format, on peut utiliser la syntaxe d'affectation conventionnelle :
fsig1 = fsig2
Il n'est pas nécessaire d'utiliser des tables de fonction dans ce cas.
Voici un exemple de l'opcode pvsftr. Il utilise le fichier pvsftr.csd.
Exemple 833. Exemple de l'opcode pvsftr.
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 pvsftr.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 gifil ftgen 0, 0, 0, -1, "fox.wav", 0, 0, 1 instr 1 ifftsize = 1024 ;fft size ioverlap = 256 ;overlap knewamp = 0 ;new value for amplitudes ;create fsig stream from function table fsrc pvstanal 1, 1, 1, gifil, 0, 0, 0, ifftsize, ioverlap, 0 ifn ftgen 0, 0, ifftsize/2, 2, 0 ;create empty function table kflag pvsftw fsrc,ifn ;export amps to table ;overwrite the first 10 bins each time the table has been filled new if kflag == 1 then kndx = 0 kmaxbin = p4 loop: tablew knewamp, kndx, ifn loop_le kndx, 1, kmaxbin, loop endif pvsftr fsrc,ifn ;read modified data back to fsrc aout pvsynth fsrc ;and resynth outs aout, aout endin </CsInstruments> <CsScore> ; maxbins i 1 0 4 10 i 1 4 4 100 e </CsScore> </CsoundSynthesizer>