new opcodes

New opcodes in CVS

ihandle, ktime    pvsbuffer       fsig, ilen
fsig                      pvsbufread   ktime, khandle[, ilo, ihi]

This pair of opcodes make up a circular buffer read/write pair
for streaming PV signals.

The first  sets up and writes to a circular buffer of length ilen (secs),
giving a handle for the buffer and a time pointer, which holds the
current write position (also in seconds).

The second opcode reads from the circular buffer specified by
khandle at a time position determined by ktime (secs). It can
read the whole set of PV bins or a subset defined by the
freq interval  (ilo, iho).

With these opcodes it is possible to, among other things:
1) time-stretch/compress a fsig stream, by reading it at
different rates
2) delay a fsig or portions of it.
3) ‘brassage’ two or more fsigs by switching buffers, since
the reading handles are k-rate. Note that, when using k-rate
handles, it is important to initialise the k-rate variable to a
given handle (so that the fsig initialisation can take place)
and it is only possible to switch handles between compatible
fsig buffers (with the same fftsize and overlap), eg.

fsig1   pvsanal   asig1,1024,256,1024,1
fsig2   pvsanal   asig2,1024,256,1024,1

ibuf1,kt1   pvsbuffer   fsig1, 10  ; 10-sec buf with fsig1
ibuf2,kt2   pvsbuffer  fsig2, 7      ; 7-sec buf with fsig2

khan init ibuf1    ; initialise handle to buf1

if  ktrig  > 0 then   ; switch buffers according to trigger
khan = ibuf2
else
khan = ibuf1
endif

fsb  pvsbufread  kt1, khan   ; read buffer

Now in CVS (should be there in the next release);
man page coming soon.

Victor

Leave a Comment.

This site uses Akismet to reduce spam. Learn how your comment data is processed.