void test_pvs_opcodes(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=null"); int err = csoundCompileOrc(csound, orc5); CU_ASSERT(err == CSOUND_SUCCESS); err = csoundStart(csound); PVSDATEXT pvs_data, pvs_data2; memset(&pvs_data,0,sizeof(PVSDATEXT)); memset(&pvs_data2,0,sizeof(PVSDATEXT)); pvs_data.N = 16; pvs_data.winsize = 32; err = csoundSetPvsChannel(csound, &pvs_data, "1"); err = csoundGetPvsChannel(csound, &pvs_data2, "1"); CU_ASSERT_EQUAL(pvs_data.N, pvs_data2.N); MYFLT pFields[] = {1.0, 0.0, 1.0}; err = csoundScoreEvent(csound, 'i', pFields, 3); err = csoundPerformKsmps(csound); CU_ASSERT_EQUAL(32.0, csoundGetControlChannel(csound, "winsize", NULL)); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
int main(int argc, char **argv) { CSOUND *csound; char *fname = NULL; int k, result; PVSDATEXT dataout, datain; /* initialise PVSATEXT data */ datain.N = 1024; datain.format = 0; datain.overlap = 256; datain.winsize = 1024; datain.frame = (float *) calloc(sizeof(float),(datain.N+2)); dataout.N = 1024; dataout.format = 0; dataout.overlap = 256; dataout.winsize = 1024; dataout.frame = (float *) calloc(sizeof(float),(dataout.N+2)); /* Create Csound. */ csound = csoundCreate(NULL); /* One complete performance cycle. */ result = csoundCompile(csound, argc, argv); while (!result){ /* copy data from pvs out to pvs in bus */ for(k=0; k < 1026; k++) datain.frame[k] = dataout.frame[k]; datain.framecount = dataout.framecount; /* send in the pvs in bus data */ csoundSetPvsChannel(csound, &datain, "0"); /* one ksmps pass */ result = csoundPerformKsmps(csound); /* receive the pvs out bus data */ csoundGetPvsChannel(csound, &dataout, "0"); } /* delete Csound instance */ csoundDestroy(csound); free(datain.frame); free(dataout.frame); return (result >= 0 ? 0 : result); }