Your program wouldn't be in the kernel itself, it would poke one value into the kernel, and let the kernel do the volume adjustment, like voladj does now, but essentially providing the upper and lower bound instead of the limited lookahead of the current voladj.

On the other hand a reread of http://www.unixgods.org/~tilo/ID3/docs/id3v2.4.0-frames.html#RVA2 suggests I'm wrong anyway.