NeuralAmpModelerPlugin

Plugin for Neural Amp Modeler
Log | Files | Refs | Submodules | README | LICENSE

commit 3c05ec173654b39d12b716cc4dfcbb0d791c18d0
parent 3dba2cd32e7c1bf6068a2231e4eaf2d79ee567b8
Author: Steven Atkinson <steven@atkinson.mn>
Date:   Sat,  6 Apr 2024 00:19:27 -0500

[ENHANCEMENT,BREAKING] Serialize plugin version (#458)

* Put version in serialized state

* Add header to serialized state
Diffstat:
MNeuralAmpModeler/NeuralAmpModeler.cpp | 20+++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp @@ -391,6 +391,12 @@ void NeuralAmpModeler::OnIdle() bool NeuralAmpModeler::SerializeState(IByteChunk& chunk) const { + // If this isn't here when unserializing, then we know we're dealing with something before v0.8.0. + WDL_String header("###NeuralAmpModeler###"); // Don't change this! + chunk.PutStr(header.Get()); + // Plugin version, so we can load legacy serialized states in the future! + WDL_String version(PLUG_VERSION_STR); + chunk.PutStr(version.Get()); // Model directory (don't serialize the model itself; we'll just load it again // when we unserialize) chunk.PutStr(mNAMPath.Get()); @@ -400,7 +406,19 @@ bool NeuralAmpModeler::SerializeState(IByteChunk& chunk) const int NeuralAmpModeler::UnserializeState(const IByteChunk& chunk, int startPos) { - WDL_String dir; + WDL_String header; + startPos = chunk.GetStr(header, startPos); + // TODO: Handle legacy plugin serialized states. + //if strncmp (header.Get(), "###NeuralAmpModeler###") + //{ + // return UnserializeStateLegacy(header, startPos); // (We'll assume 0.7.9). + //} + WDL_String version; + startPos = chunk.GetStr(version, startPos); + // Version-specific loading here if needed. + // ... + + // Current version loading: startPos = chunk.GetStr(mNAMPath, startPos); startPos = chunk.GetStr(mIRPath, startPos); int retcode = UnserializeParams(chunk, startPos);