getStateInformation & parameters as binary data?

Hello,

The Juce Demo plugin use xml stuff for storing/retreiving parameters,but I’m trying to storing/retreive parameters as 32b floats straight in the binary data from getStateInformation().

I need this because I plan to update one of my old plugin with a Juce version, and want to keep recall of the parameters…

What’s the best way for doing so ?

I see that AU lab store the setting of my old plugins as hexadecimal representation of float. In a manner that 1.0 is represented by 3F800000.

As far juce, I understand that the xml stuff convert the float value to a string, that is variable size because of UTF-8, then write an hex representation of the string ?

So I’ve tried to write a float value of my parameter (gain) straight into the binary memory :

destData.copyFrom (&gain, 0, 4);

Now it allow me to get a fixed size + hexadecimal representation of my float, BUT it’s stored in little-endian way so that 1.0 make 0000803F.

At this point I’m guessing, should I just start trying to swap the byte order (but swapByteOrder is for int only, not float ?), or am I going totally in a wrong direction ?

Any helping advice would be very appreciated.

Thanks,

Salvator

Bump.

Is there a JUCE function to convert 4 memory bytes into a float, like this tool: Floating Point to Hex Converter

Read the code for juce::InputStream which you can construct from the data given to you in getState (technically you would construct a MemoryInputStream).

The Input stream lets you read the data any way way you like, using methods like readFloat(), readFloatBigEndian(), etc.

Awesome! Works like a charm. Thanks a lot for the help!