Quote:
Small and simple possible improvement: split sensitivity calculation for miss and highs. That way, if hoi have both the bass level won't drop further. Calf levels for mids and for mid/highs and use respective send settings. (
Ok, I typed this on my phone, but I've been thinking about this a bit more and the following should really help with the bass (and take very little effort, a few hours max);
- Instead of calculating the sensitivity based on mids + attenuated highs, I should probably calculate it based on mids and highs separately, and take the minimum of the two. That way, when both occur at the same time, the drop will be less bit than it currently is (and it doesn't need to be that big in that case).
- I'm calculating sensitivity over a 4096 samples block. The calculation itself seems to be ok, but I can - after determining the level - check where I need to apply it, and where I don't. For example, if there are no mid/highs in half of the 4096 samples block, I can apply the protection only on the other half, leaving more bass in the end result. Simple calculation would be: 1. Calculate level as I do now (but without bottom limitation). 2. For each 256-sample block, calculate the RMS level. 3. Match these 256-sample RMS levels such that the reduction for the highest one is equal to the calculated level in step 1. 4. Smoothing filter on top of this which makes sure that each block that needs reduction gets reduced. 5. Later addition: Ignore start of a reduction block so the bass gets more punch. An additional advantage of this method is that if in a 4096-sample block there is only a brief moment where more bass clipping is required, the reduction at that brief moment will be less strong - which is good since you wouldn't be able to hear distortion in this case anyway. (Note to self: To keep in mind: I could also measure the amount of actual mid/highs distortion caused by bass instead of just the level ...).