[music-dsp] Adaptive (auto) release
citizenchunk at nyc.rr.com
Sat Jan 17 21:33:00 EST 2004
hi all. i've been making great progress on my compressor project
(thanks in part to this group), and i'm trying to tackle adaptive
release control. here's the deal:
i'm monitoring peak and RMS (via a simulated RMS equation) on a per
sample basis. i plan to have the envelope detector monitor the peak
value, but use the ratio of peak:RMS to control the release timing.
short transients (larger peak:RMS ratios) are tracked using a "fast
release" time. longer sustained waves (smaller peak:RMS ratios) are
tracked using the "slow release" time. the release could simply
cross-fade from fast to slow based on the current ratio.
the problem (unless i'm looking at this wrong) is that, while the RMS
remains fairly constant, the peak will fluctuate between being above
and below the RMS, even though the signal is rectified. isn't this the
case? as such, that would throw off my equation. here's what i was
relFast = fast release time
relSlow = slow release time
peak = fabs (input)
RMS = well, you know what that is...
release = relFast + ( (relSlow - relFast) * (RMS/Peak) )
assuming that the peak level is always above the RMS (and never = 0, so
as to avoid divide-by-zero), this would be a nice little equation to
cross-fade between the fast and slow release timings,
program-dependent, of course. when the ratio approaches zero, the
release approaches relFast. as the RMS approaches Peak (and the ratio
approaches 1), the release approaches the relSlow. the problems are
those pesky conditions i just mentioned.
any thoughts of how to remedy this? or am i looking at the whole
adaptive release control issue the wrong way?
btw, i know that this is one of the things that separates competing
software, so i'm not asking for people to give me their top-secret
algorithms. just a kick in the right direction.
More information about the music-dsp