Right now, Loudness just limits the audio at a specific peak level. Then, afterwards, I add the FM Stereo pilot, stereo signal and RDS signal. And then I use 'FM Overdrive' (composite limiter) to increase the level a bit more.
I never looked at the FM pilot etc. directly because I didn't expect too much effect from doing that. (I did expect some effect, but also a large CPU load increment - the effect would be about in the same order as the current 'FM Overdrive' filter.
Anyway, at the Soundprocessing Freakday, where Leif showed that he does this in his new hardware box, he claimed that he could increase the audio level by 40% - I really don't see how that would be possible but it definitely got my attention...
Ideally, I would do this:
Currently: CLIPPING at constant level (-32767/+32767)
Better: CLIPPING at level taking FM pilot into account (moving maximum levels).
Even better: CLIPPING at level taking FM pilot + RDS signal into account.
Best: CLIPPING at level taking FM pilot + RDS signal + stereo signal into account (I would need to clip both channels equally though if I do this I think).
The biggest issue here is that to take FM pilot (+RDS) into account, I need to perform my clipping at a much higher sampling frequency - which increases the CPU load.
Alternative solution: Use a 2nd clipping stage (after Loudness) that does this. That might have some advantages.
TODO: Stare a bit at MPX waveforms and look how much they could be improved.
I expect the biggest effect from also taking the encoded stereo signal itself into account - that would require me to process both channels equally, which definitely calls for an extra processing step.
So then this would mean: Replace current 'FM Overdrive' filter (Hard Limit-style) by a Loudness-style filter.
Interestingly, doing this will also enable interesting features such as stereo single side band encoding including proper clipping!
|