How do I do it? [pan~] works, but I'd like to know how to do it with vanilla Pd objects so I can figure out what's happening mathematically (or conversely, to know what has to happen mathematically so I can build it).


You can do it using [cos~] curves with phase offsets for the different channels. One should start at 0 phase and the other at .75, and they should only span .25. So as one moves up the cosine curve, the other moves down, and vise versa.
I don't know if that makes any sense, so maybe should just have a look at the patch.

i still really don't understand that [cos~] object!
eitherway, you can get rid of the crackle that is heard when modulating the newly created pan pot, by sending [$1 12( into [vline~] into the [cos~] objects
Dual 1.8 IBM G5: Mac OSX 10.4.11  Asus eeePC 701: Pure:Dyne / eeeXubuntu GNU/Linux  myspace.com/thearifd

Thanks, Maelstorm! I programmed my own based on what you said and then checked yours to make sure it was the same (which it was).
arif: About the [cos~] object, maybe what you don't understand is that the input is normalized so 1 becomes 2pi?
Or do you not understand what the [cos~] is doing here? It's there so at center panning, each channel's amplitude is 1/sqrt(2), or 3 dB. This didn't make sense to me this morning, but it does now.

Oh, and I forgot to mention, this same method also makes for some nice crossfading, in case you hadn't figured that one out already.
Arif: Yeah, I didn't really bother with the crackle, but I figured you Pd professionals knew how to deal with that. (Okay, you got me...I just forgot to do it...)
So as I understand it (and I haven't taken a math class in ten years, so it may be a simple understanding) [cos~] is basically an object that spits out cos(x), where x=phase, and phase is normalized from 01. So if you attach a [phasor~] to the input, you'll essentially have a sine wave oscillator starting at 90 degree phase (or .25 phase, normalized).

Yeah, I think that's why it's normalized (so you can use a [phasor~] to make an additive synth with all the partials in phase, for example).

and the input of [cos~] is wrapped to 01
so only the fraction of the sig going in matters.
eg 23452346==01.