OK. There's a few questions that have been asked that I shall try and address.

- Does the volume adjustment destroy cresc/dims?

No, but it will usually (almost always) make them less pronounced. It attempts to preserve volume relationships. In a steady state, if a > b, then voladj(a) > voladj(b). So, you should still get all your dynamics, just reduced in contrast. But, it is a gradual thing, so if there is a cresc faster than about 3db/second, you will get a cresc then dim effect. In practice, these are fairly rare.

- How come I still have to twiddle my volume knob?

Not all CDs are normalised. But in my experience very few of them have the largest sample less than 6db below the maximum possible sample. With the current volume adjustment this pretty much translates to a 2db drop from the loudest track you can play. That's not much, and I notice that many of my tracks no longer need manual adjustment, but see below.

But, there's this headroom multiplier I put in there (it's 0.75 at the moment). It's supposed to make clipping happen less often, but one of the side-effects is that only the stuff that is already really loud can be loud after the volume adjustment. It's a little bit complicated, but I'll try and explain.

outval = multiplier( inval ) * inval
multiplier( inval ) = max( 1, headroom * desired_output( inval ) / inval )

The max(1,...) is there because there is no point in having the multiplier less than 1. In that case we're just throwing away information. But the max() also means that the linearity (or logularity??) is broken when the desired_output(inval) / inval > 1 / headroom.

How can we fix it? Well, we can try using headroom = 1. Then this effect will disappear, and you will have much less need to adjust the volume for tracks from different CDs, but you are more likely to get objectionable, rapid volume changes as the routine avoids clipping. How much more likely? I don't know. Try it and see! You can use the command line version to experiment.

I think the next version I make I'll try having headroom = 1.

The other solution is to normalise all your CDs before encoding them, which I recommend (but I don't do, yet).

- How do I know if it's working?

Most of the time I can't tell either. But, if you have tunes with a really soft passage in the middle (that you usually don't hear) you might notice that it now is audible. Another time is when there is interesting stuff happening at the end of a fadeout, that is much louder than normal. If you have recordings with long periods of silence, but a high level of background noise (enough to trip the silence thresholds) (usually older recordings) then you will notice the hiss being brought up in the silence, and it dropping away again when the music starts.

Basically, if you can't tell it's there, that's what's intended.

- Can I turn it on and off, or adjust the parameters?

No. I would like this as much as you would and when we get an API for this kind of thing (it's in the works, I'm told) we'll have some user interface for it in the player. It probably wouldn't be that hard to activate / deactivate it based on home / car in the current form, but I like it at home as well! If the music is just background, then the volume adjustment is good. If you're actually sitting there concentrating on it, then you don't want it.

It would be nice to switch it on and off so you can see how much benefit (if any) it is providing.

Ideally we could get the frobbing knob on the Mk2 to adjust the minimum desired volume, then you just dial up no distortion for Doug, or no contrast for when the ambient noise floor is at the threshold of pain. :)

Richard.