pvsftw

pvsftw — Ecrit les données d'amplitude et/ou de fréquence dans des tables de fonction.

Description

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

Syntaxe

kflag pvsftw 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

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.

Exemples

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>


Voir aussi

pvsftr

Crédits

Auteur : Richard Dobson
Août 2001

Nouveau dans la version 4.13