Thanks for the pointers!
I do have other DSP settings (amp, auto-amp, replay-gain, log volume) that I want to keep, not just the EQ settings.
My DSP string is: FF0001002800010000008EE398409A999940398E4340FDFF7FBF673E69BF3333B3BF9CDF0240CDCCAC40F549FF40000200100000000000000000000000000000008041
If I try to line things up with what you provided, there is an additional FF00 on the front, I have 0100 instead of 0001, and the 2800 and 01000000 match.
If I understand correctly, wouldn't a 32 bit float be 4 bytes, not 8? Which would be 8 hex characters (4 pairs)? If so, 9 bands would be a block of 72 characters, I think?
Do the EQ settings come next after the 01000000 (the next 72 characters), or are they further out (I have another 114 characters, 134 total) in my DSP string.
If you have any further info on how everything is packed into that string, or at least where the 72 characters of EQ settings are at, that would be great. Again, I can read C/C++, Java, whatever, so a code snippet that packs the string would be fine, I can figure it out.
Many Thanks!
The equalizer settings are indeed stored in the XMPLAY.INI "DSP" entry. The problem is that also includes the settings of the reverb and any active DSP plugins. Still, if you just want to set the EQ gains and don't care about any other DSP settings, then it may be simple enough. Try setting the "DSP" entry to "0001280001000000" followed by the 9 band gains, which are 32-bit floating-point numbers in hex form (so 8 bytes per band). If you're interested in details: "0001" is the EQ id, "2800" (40) is the size of the settings, "01000000" (1) is the on/off switch.