setChunk() problems

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

I use getChunk()/setChunk() to save my parameter values. Apparently, setChunk() sends wrong values to my programs.
Here is my code:

Code: Select all

VstInt32 myPlugin::getChunk(void** data, bool isPreset)
{
   if (!data) return 0;
   if (isPreset)
   {
      *data = &programs[curProgram];
      return sizeof (myProgram);
   }
   else
   {
      *data = &programs;
      return (sizeof(myProgram) * numPrograms) ;
   }
}


VstInt32 myPlugin::setChunk(void* data, VstInt32 byteSize, bool isPreset) 
{
   if (!data) return 0;
   if (isPreset)
   {
     ....         // not isPreset
   }
   
   else
   {
      if (byteSize == (sizeof(myProgram) * numPrograms))
      {
         memcpy((void*)programs, data, byteSize);   // here I get the wrong values
	    setProgram(curProgram);
      }
      
	  else
        return 0;

      return 1;
   }
}

Post

I think I found the cause of problem. In getChunk():

Code: Select all

 *data = &programs;
should be:

Code: Select all

 *data = programs;
because programs is declared like:

Code: Select all

myProgram *programs;

Post Reply

Return to “DSP and Plugin Development”