Well, last night was the first time I've driven anywhere with my new kernel. I was listening to random tracks for about an hour, and in general I'm pretty happy with the result. I think I'm going to change the way it handles silence, though, because you get some objectionable effects every so often (it's running with no lookahead). At the moment it just maintains the previous multiplier level when it is silent. I think I'll make it so it gradually reduces the multiplier during silence.

The other thing I want to do is make it look further ahead. I've been having a look in empeg_audio.c and it seems the best way to force it in would be to have a separate desired multiplier setting for each audio_buf, and then just before setting up the DMA stuff, scale the current desired multiplier to the minimum of all the desired multipliers, and then call voladj_scale. The only problem I foresee with this is that it might take too long to do the scaling. It doesn't sound like the sort of thing you want to be doing in an interrupt handler.

Richard.