I've written an application that might be of use. It's a.o. designed to synchronize Linux/Alsa volume levels with that of e.g. amplifiers using different interfaces (serial/tcp/i2c) and vice versa in configurable command structures. It reads out Alsa volume levels in a linear fashion but can convert it to a log scale. If necessary different curves can easily be added. While I only added the log functionality quite recently, it does seem to work well (although I don't use the log functionality myself). This method works well for any application that can send audio and mixer data to different interfaces (e.g. MPD, Shairport, uPMPD). You're welcome to give it a try, see if it works for your purpose, give comments and/or suggestions, and report any bugs you may encounter.
https://github.com/therealmuffin/synchronator