In reply to:

A proper volume adjustment system on the empeg would not mess with the ACTUAL VOLUME SETTING, it would modify the digital bitstream of the music, independently of the volume setting.


Au contraire, Tony. adding/subtracting integers to the volume setting is exactly the way to do it, if you don't want to introduce another set of rounding errors to the audio data, and if you need to be able to boost the level as well as cut without risking clipping (or worse) - which I expect is what's desired, as it's natural to have the player's base setting correspond to "stationary, engine off".

My take on this is that it would be nice to have a volume boost/cut ioctl in Hijack that can be used by GPS-based or microphone-based noise compensation. (I'm using the term "noise compensation" to describe what we're discussing, to distinguish it from (active) "noise cancellation"). Like you, I don't think that changes in the volume level should be visible to the player. If I set volume to -20dB in the carpark, then get up to 70mph (honest!) on the motorway, I think it should still show -20dB. Your phrase, "desired apparrent volume", makes a lot of sense to me.

I don't know much about ioctls, but I think it should be possible to write the device so that when it is closed (either intentionally or by the noise compensator crashing), it can reset the interposed gain to zero. This is one reason why I favour a volume boost over a cut - if the compensator crashes, I'd rather get a drop in level than a deafening!

One thing that would be really cool but I lack the necessary skill to do is to listen to microphone input in the car and cross-correlate this with the player's output, in order to keep a ratio of player sound to non-player sound roughly constant. You'd only be comparing the low frequencies, of course, due to the mic input's limitations, but road noise is mostly at the low frequencies anyway. Having the ioctl support for this is an important first step.
_________________________
Toby Speight
030103016 (80GB Mk2a, blue)
030102806 (0GB Mk2a, blue)