pvsbuffer

pvsbuffer — Crée et écrit dans un tampon circulaire pour signaux-f (signaux PV en flot).

Description

Cet opcode crée et écrit dans un tampon circulaire de longueur ilen (secondes), retournant un identifiant pour le tampon et un pointeur temporel qui contient la position courante d'écriture (également en secondes). On peut l'utiliser avec un ou plusieurs opcodes pvsbufread. L'écriture est circulaire, bouclant à la fin du tampon.

Syntaxe

ihandle, ktime  pvsbuffer fsig, ilen 

Initialisation

ihandle -- identifiant pour ce tampon particulier, qui doit être passer à un opcode de lecture.

ilen -- longueur du tampon en secondes.

fsig -- un flot pv en entrée

ktime -- la position temporelle courante d'écriture dans le tampon.

pvsbuffer stocke fsig dans un tampon qui peut être lu par pvsbufread en utilisant l'identifiant ihandle. Différents tampons auront différents identifiants ce qui permet à différents opcodes pvsbufread de les lire indépendamment. pvsbuffer retourne la date courante (ktime) dans le tampon circulaire dans lequel il vient juste d'écrire.

Exemples

Voici un exemple de l'utilisation de l'opcode pvsbuffer opcode. Il utilise le fichier pvsbufferr.csd.

Exemple 813. Exemple de l'opcode pvsbuffer.

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
; Audio out   Audio in
-odac    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o pvsbuffer.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

;; example written by joachim heintz 2009
; additions by Menno Knevel 2021

opcode FileToPvsBuf, iik, Siiiii
;;writes an audio file at the first k-cycle to a fft-buffer (via pvsbuffer)
Sfile, ifftsize, ioverlap, iwinsize, iwinshape, ilength xin
ktimek		timeinstk
if ktimek == 1 then
ilen		filelen	Sfile
kcycles	=		ilen * kr; number of k-cycles to write the fft-buffer
kcount		init		0
loop:
ain		soundin	Sfile
fftin		pvsanal	ain, ifftsize, ioverlap, iwinsize, iwinshape
ibufln      =   (ilen * ilength) + (ifftsize / sr)    
ibuf, ktim	pvsbuffer	fftin, ibufln

		loop_lt	kcount, 1, kcycles, loop
		xout		ibuf, ilen, ktim
endif
endop


instr 1
ifftsize	=	1024
ioverlap	=	ifftsize / 4
iwinsize	=	ifftsize
iwinshape	=	1; von-Hann window
ilength     =   p4
ibuffer, ilen, k0	FileToPvsBuf "fox.wav", ifftsize, ioverlap, iwinsize, iwinshape, ilength
ktmpnt		linseg	ilen, p3, 0; reads the buffer backwards in p3 seconds
fread 		pvsbufread  ktmpnt, ibuffer
aout		pvsynth	fread
outs    aout, aout
endin

</CsInstruments>
<CsScore>
i 1 0 5 .05 ; buffer a small portion
i 1 6 5 .5  ; half of total length
i 1 12 5  1 ; buffer total length
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

pvsbufread

Crédits

Auteur : Victor Lazzarini
Juillet 2007