pvsftr

pvsftr — Lit les données d'amplitude et/ou de fréquence depuis des tables de fonction.

Description

Lit les données d'amplitude et/ou de fréquence depuis des tables de fonction.

Syntaxe

pvsftr fsrc, ifna [, ifnf]

Initialisation

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.

Exécution

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.

Exemples

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

Exemple 724. 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 = 10
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>
i 1 0 4
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

pvsftw

Crédits

Auteur : Richard Dobson
Août 2001

Nouveau dans la version 4.13