At present I have a plug-in with a ValueTree holding my plug-in state (parameter values, etc). In getStateInformation() I save my plug-in state as follows
ScopedPointer<XmlElement> xml(myValueTree.createXml()); copyXmlToBinary (*xml, destData);
I then retrieve the ValueTree in setStateInformation() as follows:
ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); ValueTree newTree = ValueTree::fromXml(*xmlState);
This works fine. However, I also have an audio buffer (which here, I will refer to as 'x') which I would like to save with the plug-in state. In theory, in getStateInformation() I could call:
destData.append(x, sizeof(x) * lengthOfArray);
to add my array to the MemoryBlock.
But how would i then retrieve this? Does the getXmlFromBinary() function allow me to get the Xml if the memory block isn't entirely Xml? If not, how can I work out what the offset of the xml data is so that I can retrieve my array data?
My final question - to which the answer is "it depends on the host" but I will seek some wisdom here anyway - does anyone know if there is a size limit on the MemoryBlock stored by the host (e.g. Live, Logic...)? I would like to store small (< 10 second audio files) but I need to know if I put an upper limit on this based on anyone's experience.
Thanks in advance for any help!