Hi,

I have and instrument that is always on that reads 2 function tables of audio into 2 PVS buffers, basically a stereo signal. I then have another instrument that reads from these PVS buffers and synthesises the data back into audio using a pvssynth. What I need to be able to do is have different instances of this instrument reading from the stereo PVS buffers at different offsets at the same time, is this possible? Or do I have to make separate PVS buffers for each instance?
I have an example of what I mean here, you would think 20 instances of the PVSReader instrument would be louder.

-- 
Edward Costello


<CsoundSynthesizer>

<CsOptions>

-d

</CsOptions>

<CsInstruments>

sr = 44100

ksmps = 256

nchnls = 2

0dbfs=1


#define ChannelOneTable #100#

#define ChannelTwoTable #101#

#define WarpPath #200#


;; based off FileToPvsBuf example written by joachim heintz 2009


opcode TableToPvsBuf, ikk, iiiii


i_Table, i_FFTSize, i_Overlap, i_WindowSize, i_WindowShape xin

k_TimeInKCycles timeinstk

if k_TimeInKCycles == 1 then

i_Length = ftlen(i_Table) / sr

k_Cycles = i_Length * kr

k_Count init 0

loop:

f_FFTIn pvstanal 1, 1, 1, i_Table, 1, 0, 0

i_Buffer, k_TimePointer pvsbuffer f_FFTIn, i_Length + (i_FFTSize / sr)

loop_lt k_Count, 1, k_Cycles, loop

xout i_Buffer, k_Count, k_TimePointer

endif

endop


gi_FFTSize init 1024

gk_TimePointer init 0


instr 1, PVSBuffer



gi_Overlap = gi_FFTSize / 4

i_WindowSize = gi_FFTSize

i_WindowShape = 1; von-Hann window

gi_PVSBufferOneL, gk_HopCount, k0 TableToPvsBuf $ChannelOneTable, gi_FFTSize, gi_Overlap, i_WindowSize, i_WindowShape

gi_PVSBufferOneR, gk_HopCount, k0 TableToPvsBuf $ChannelTwoTable, gi_FFTSize, gi_Overlap, i_WindowSize, i_WindowShape

k_On init 0

k_PVSReaderInstances = p4


if k_On == 0 then

k_Count = 0

until k_Count == k_PVSReaderInstances do

event "i", "PVSReader", 0, -1, gk_HopCount, k_Count + 200

k_Count = k_Count + 1

od

k_On = 1

endif

gi_TimeInSeconds = ftlen($ChannelOneTable) / sr;

i_PhasorCPS = 1/gi_TimeInSeconds

gk_PhasorIndex phasor i_PhasorCPS


endin


instr 2, PVSReader


i_HopCount = p4

i_TimeTableNumber = p5

gi_TimeTable ftgen i_TimeTableNumber, 0, -i_HopCount, -7, 0, i_HopCount, gi_TimeInSeconds


gk_TimePointer table gk_PhasorIndex , i_TimeTableNumber, 1


f_ChannelOne pvsbufread gk_TimePointer, gi_PVSBufferOneL

f_ChannelTwo pvsbufread gk_TimePointer, gi_PVSBufferOneR


a_ChannelOne pvsynth f_ChannelOne

a_ChannelTwo pvsynth f_ChannelTwo

outs a_ChannelOne, a_ChannelTwo

endin




</CsInstruments>

<CsScore>

f100 0 0 1 "/Users/eddyc/Dropbox/SoftwareProjects/Audio-Mosaicing/Audio-Mosaicing/input.wav" 0 0 1

f101 0 0 1 "/Users/eddyc/Dropbox/SoftwareProjects/Audio-Mosaicing/Audio-Mosaicing/input.wav" 0 0 2


i 1 0 -1 20

e3600

</CsScore>

</CsoundSynthesizer>