Le 2012-02-06 à 14:42:00, Frank Barknecht a écrit :
On Mon, Feb 06, 2012 at 02:22:34PM +0100, Pierre Massat wrote:
I need a simple equal-power crossfade between two signals. I asked the same question a few years ago, but i just can't remember how to do it...
This is used in rj's e_pan.pd:
left = cos(p) * signal right = sin(p) * signal
where p is in radians from 0 to PI/2 (i.e. multiply your 0...1 panning by 1.5708...)
That's for panning, not for crossfading.
crossfading is similar, but is the other way around :
signal = left * cos(p) + right * sin(p)
But if left=-right (opposite phase) then the crossfade will quickly fade out to silence and back in ;
and if left=right, then your power gain will be (cos(p)+sin(p))² = cos²(p)+2sin(p)cos(p)+sin²(p) = 1+2sin(p)cos(p) = 1+sin(2p). This goes up to double power (amplitude is multiplied by 1,414).
Generally speaking, as long as L and R don't have frequencies in common, this works perfectly, but as soon as they do, you have to do proper phase addition : the cosines are added separately from the sines : if you know a sinusoïd by its amplitude and phase offset, convert to cartesian before adding... this will show you how such things add up.
| Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC