Forums > MaxMSP

panner mode comparison ?

January 18, 2007 | 12:23 am

Hi,
I have read MSP tutorial about panning. I know there are three kinds of crossfade: equal-distance, linear, speaker-to-speaker.

But my teacher wrote me another one which use two cycle~ objects. The two cycle~ objects are out of phase with each other.

I know it works, but I don’t know what kind of trajectory it will produce. I tried to feed the output to table to see the relationship, but it is very close to linear crossfade.

Could anyone let me know what are the real differences between the one made with two cycle~ objects and the one that is in linear mode ?

I am trying to write a documentation of the one made with two cycle~ objects but cannot find any info about it. Is it an arbitary way of doing crossfade ?

See the following codes for a comparsion. Thanks.

max v2;
#N vpatcher 199 140 1164 556;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P comment 657 326 100 196617 panner 2;
#P user ezdac~ 808 117 852 150 0;
#P outlet 729 290 15 0;
#P outlet 664 289 15 0;
#P newex 728 190 33 196617 -~ 1;
#P user number~ 497 41 536 56 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P user number~ 153 199 192 214 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P user number~ 259 204 298 219 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P window setfont "Sans Serif" 10.;
#P comment 249 119 196 196618 Keep phase value between 0 to 1;
#P outlet 238 302 15 0;
#P outlet 126 300 15 0;
#P newex 237 264 56 196618 +~ 0.5;
#P newex 236 234 59 196618 *~ 0.5;
#P newex 127 263 56 196618 +~ 0.5;
#P newex 126 232 59 196618 *~ 0.5;
#P newex 235 174 56 196618 cycle~;
#P newex 172 115 56 196618 +~ 0.5;
#P newex 126 173 56 196618 cycle~;
#P window setfont "Sans Serif" 12.;
#P window linecount 2;
#P comment 298 222 264 196620 keep the level between + 0.5 and – 0.5 to avoid clipping;
#P window linecount 1;
#P comment 298 265 257 196620 Keep the level between 0 and 1;
#P comment 128 146 165 196620 Two signals out of phase;
#P window setfont "Sans Serif" 9.;
#P comment 147 326 100 196617 panner 1;
#P connect 4 0 7 0;
#P connect 8 0 11 0;
#P connect 7 0 8 0;
#P connect 4 0 15 0;
#P connect 16 0 5 0;
#P connect 5 0 4 1;
#P connect 16 0 6 0;
#P connect 6 0 9 0;
#P connect 9 0 10 0;
#P connect 10 0 12 0;
#P connect 6 0 14 0;
#P fasten 16 0 18 0 502 172 669 172;
#P fasten 16 0 17 0 502 161 733 161;
#P connect 17 0 19 0;
#P pop;


January 18, 2007 | 8:14 pm

I looked at the code, but didn’t run it to verify. The version with
[cycle~] appears to be doing constant-power panning (also referred to
as equal-distance,etc.). The other version is doing linear panning,
which results in the sound having less power (and therefor being
perceived as more distant) when in the center vs. full-left or full-
right (due to intensity resulting from sum-of-squares). There is an
MSP tutorial (#22) which discusses and demonstrates these pretty
nicely. There are also some example panning abstractions in the /
examples/panning folder in the MaxMSP folder.

On Jan 17, 2007, at 5:23 PM, Cheng Chien-Wen wrote:

>
> Hi,
> I have read MSP tutorial about panning. I know there are three
> kinds of crossfade: equal-distance, linear, speaker-to-speaker.
>

—-
Steven M. Miller

Associate Professor of Contemporary Music
College of Santa Fe
Contemporary Music Program
1600 St. Michaels Drive
Santa Fe NM 87505
http://pubweb.csf.edu/~smill
(505) 473-6197

~~~~~~~~~~~~~~~~~~~~~
SFIFEM
Atrium Sound Space
OVOS
*opportunities for composers & sound artists*


January 19, 2007 | 1:26 am

Quote: smill wrote on Thu, 18 January 2007 13:14
—————————————————-
> I looked at the code, but didn’t run it to verify. The version with
> [cycle~] appears to be doing constant-power panning (also referred to
> as equal-distance,etc.). > > kinds of crossfade: equal-distance, linear, speaker-to-speaker.
> >
>
> —-
> Steven M. Miller
>

Thanks for the reply. But in MSP tutorial, constant-power crossfade needs to use 0.75 (or -0.25) as the phase difference between two cycle~ objects instead of completely out of phase.

I have compared them by using 0.5 as the input panning factor, and the one with two cycle~ objects competely out of phase shows 0.5 as the level for its two cycle~ obejcts, while the one in MSP tutorial with 0.75 as the phase shift shows 0.7 as the level for its two cycle~ objects. So the equal-distance crossfade patch in MSP tutorial is very different from the one I posted here.

Any ideas ? Or if there are various kinds of constant-power panning ?

Thanks for you reply. Thanks for the patch sharing.


January 19, 2007 | 2:51 pm

Cheng Chien-Wen wrote:
> Any ideas ? Or if there are various kinds of constant-power panning ?

There is some discussion about what a correct curve for panning should
be. Equal power is one of them. The idea is, that if you pan the signal
to the middle, it should have the same power as if it where panned to
one speaker only. The level in the middle should then be the half of the
squareroot of 2 which is approximately 0.7. If you mix it together
you’ll get 1.41… which is certainly more than your cycle~ approach
which results in the same amplitude always (the mix is always 1.0) and
sound softer if panned to the middle…
What the best curve is depends a lot also on the material you are
panning, but in general the equal power approach is best…
The cycle in the panning example has a different curve as a sine wave by
the way, which explains the different ranges…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


January 19, 2007 | 3:23 pm

Check out the various panners of the RTC-lib:

MSP abstractions:

* cp-pan~: constant power panner
* sqrt-pan~: square root panner

Max abstractions:

* cos-slider: transform a linear slider into a cosine function.
* panner: equal power panning based on John Chowning’s paper
"Simulation of Moving Sound Sources"

Download from:

http://www.essl.at

Cheers,
— Karlheinz Essl


January 19, 2007 | 3:26 pm

Check out the various panners of the RTC-lib:

MSP abstractions:

* cp-pan~: constant power panner
* sqrt-pan~: square root panner

Max abstractions:

* cos-slider: transform a linear slider into a cosine function.
* panner: equal power panning based on John Chowning’s paper
"Simulation of Moving Sound Sources"

Download from:

http://www.essl.at

Cheers,


Viewing 6 posts - 1 through 6 (of 6 total)