pvsftw — Ecrit les données d'amplitude et/ou de fréquence dans 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.
kflag -- Un indicateur qui prend la valeur 1 lorsque de nouvelles données sont disponibles, 0 sinon.
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 pvsftw. Il utilise le fichier pvsftw.csd.
Exemple 834. Exemple de l'opcode pvsftw.
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 pvsftw.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; analyze sound file, creating a PVOC-EX file ires1 system_i 1,{{ pvanal fox.wav fox.pvx }} ; default settings instr 1 inbins = 512 ifn ftgen 0,0,inbins,10,1 ; make ftable fsrc pvsdiskin "fox.pvx", 1, 1 ; read PVOCEX file kflag pvsftw fsrc,ifn ; export amps to table, kamp init 0 if kflag==0 kgoto contin ; only proc when frame is ready tablew kamp,1,ifn ; kill lowest bins, for obvious effect tablew kamp,2,ifn tablew kamp,3,ifn tablew kamp,4,ifn ; read modified data back to fsrc pvsftr fsrc,ifn contin: ; and resynth aout pvsynth fsrc outs aout, aout endin </CsInstruments> <CsScore> i 1 0 5.5 e </CsScore> </CsoundSynthesizer>