Hi Bojcha,
About Punch: Just let me know, I can also create some in-between behavior where I use the old-style Punch type when there's not much loud bass present, sliding to the new one when there is more loud bass (since I had to change it only to get rid of artifacts from deep bass sounds).
About phase rotation: As you've seen with the difficult trumpet sounds in the James Last song, apparently the current phase rotation is very effective (you reported it as being more effective than BA's). The issue is not so much that it causes artifacts at lower latencies (I have gotten it to work nearly artifact-free at latency 512), but that it also affects the 'window' function that I'm using.
Hann window
Hamming window
See
http://en.wikipedia.org/wiki/Window_function for more info.
For higher latencies I use a squared Hann window, for lower I use a squared Hamming window - which appears to be needed to reduce certain Loudness artifacts (although it might be useful to check if I can get rid of them another way).
What happens in phase rotation is that certain parts of the audio are moved around in time a bit (say a few samples). This has 2 consequences:
- If I ONLY use Phase Rotation: The 'click' at the start/end of the audio (Hamming window) is moved to different locations for different frequencies! The 2nd filter that cuts off the remaining audio doesn't fully remove it, leaving those clicking sounds.
- Worse: Audio moves to parts of the window where nearly no audio should remain - so for the final limiter and Loudness it appears that the original audio was really loud. Then it tries to cut this, leading to annoying 'bumps' in the waveform, which are especially noticeable for low frequencies (at high frequencies you might hear a very low frequency appear).
I think the only solution for this is to move the phase rotation filter to BEFORE the place where I start working with audio windows. But that requires a very different (0 latency) implementation of the filter - and I'm currently reading into how such filters (in this case I need an 'allpass filter') work.
It seems to be easy enough to get _some_ phase effects, but I want to approach what I have now.
Oh, and one more important thing: I explicitly chose to let the filter move 'forward' only, because of the following:
- Moving FORWARD generally has very little effect on how sounds sound.
- Moving BACKWARD has far more impact: It causes high sounds to be played before lower sounds; clicks hence sound like a 'chok' sound (no idea how to explain this, but you hear the highs before the bass, which can be a nice effect but it's definitely very different from the input signal, and that's not the intention of phase rotation.