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
_______________________________________________
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to