This is available in the Omnia 9 (Leif Claesson's box), and it has a very impressive effect on the audio. Actually I've been looking into this a few months ago, but I left it due to lack of time (and I didn't expect such a big effect). Anyway, I think now that it is a must-have for any 'serious' audio processor - although there's still only one available that actually contains it (but the effect of it is really big). Stereo Tool's normal clippers (Loudness filter) outperforms almost anything else - including what is used to record CDs. So basically I first need to restore the CD sound, THEN I can clip it again
My originally planned filter works very well (I used it about 10 years ago). Basically it can 'predict' the value of samples that are missing. But the required CPU load is completely insane (1 day for one minute of music, that was 10 years ago but it will still be slow).
There are several possible way to circumvent this:
- Only restore the loudest tones. Probably not a good idea.
- Do what I do now in my voice vibrations filter: Here I can already detect drops in volume. If such drops coincide with clipped audio, I can increase the level again. --> Checked some waveforms, won't work.
What is clipping anyway? It's basically the same as switching all the HIGHER frequency sounds (higher than the size of the clipping area) to 0 for a moment.
The following idea might be more promising:
Say I have a block of audio. There's clipping at samples 100-150.
Audio usually doesn't change much in a very short time. So basically the frequency content of samples 0-100 and 150-250 should be roughly identical.
50-150 and 100-200 should also be roughly identical, BUT THEY ARE NOT due to the clipping.
Again, what does clipping do? It introduces extra frequencies (because other sounds are cut off for a short time). So:
* In the clipped part I expect extra frequencies.
Question #1: What happens if I remove those?
* Also, the frequencies that were also present before will be lower
Great, let's just pull them up then.
I'm not sure if this will work, but it's definitely worth a try - and should be very easy to test.
So:
1. Take frequency content of samples 0-100
2. Take frequency content of samples 150-200
3. Take the maximum of these 2 at each frequency
4. Make sure the frequency content in range 50-150 stays below these maxima. Also for 100-200. Then boost the total volume so the volume for the existing samples does not change.
The good thing is: I can do this for ANY sample, and then just take the new output values only for clipped samples (and a small surrounding area to avoid crackling effects).