PAN

Stereo panning of input signal.

in RTcmix/insts/jg


quick syntax:

PAN(outsk, insk, dur, AMP, inputchan, PANMODE, PANENV)

CAPITALIZED parameters are pfield-enabled for table or dynamic control (see the maketable or makeconnection scorefile commands). Parameters after the [bracket] are optional and default to 0 unless otherwise noted.

Param Field Parameter Units Dynamic Optional Notes
p0 output start time seconds no no  
p1 input start time seconds no no  
p2 input duration seconds no no  
p3 amplitude multiplier relative multiplier of input signal yes no  
p4 input channel - no no  
p5 panning mode 0: use constant-power panning, 1: use linear panning - yes no
p6 pan 0-1 stereo; 0.5 is middle yes no  

Parameters labled as Dynamic can receive dynamic updates from a table or real-time control source.

Author: John Gibson, 1/26/00; rev for v4, JGG, 7/24/04


PAN is a simple mixing instrument that follows a pan curve

Usage Notes

PAN lets you pan the input sound continuously, according to the control values coming through p6 (“PANENV”). These control values are interpreted on a 0-1 scale, with 0.5 being set in the middle of the stereo output.

PAN uses “constant-power’’ panning to prevent a sense of lost power when the sound source moves toward the center, unless you set p5 (“PANMODE”) to zero. Sometimes this causes jerkey panning motion near hard left/right, so you can defeat it bys setting p5 to 1.

For rapidly-varying pan control envelopes, you may want to set the reset rate higher than the default 1000 times/second. Use the reset scorefile command to do this.

The output of PAN is stereo only.

Sample Scores

very basic:

   rtsetparams(44100, 2)
   load("PAN")

   rtinput("mysound.aif")

   dur = DUR()

   amp = 1.0
   ampenv = maketable("line", 1000, 0,0, 1,1, dur-1,1, dur,0)

   panenv = maketable("line", 1000, 0,1, 1,0, 3,.5)

   PAN(outskip=0, inskip=0, dur, amp*ampenv, inchan=0, panmode=0, panenv)

slightly more advanced:

   rtsetparams(44100, 2)
   load("WAVETABLE")
   load("PAN")

   /* feed wavetable into panner */
   bus_config("WAVETABLE", "aux 0 out")
   bus_config("PAN", "aux 0 in", "out 0-1")

   reset(10000)  /* lower control rates can produce zipper noise */

   dur = 10.0
   amp = 25000
   ampenv = maketable("line", 1000, 0,0, 1,1, 7,1, 10,0)
   pitch = 8.00
   wavetable = maketable("wave", 1000, 1, .4, .3, .2, .1)

   WAVETABLE(0, dur, amp*ampenv, pitch, 0, wavetable)

   panenv = makeLFO("tri", 0.5, 0, 1)   // pan once every 2 seconds

   PAN(0, 0, dur, amp=1, 0, 1, panenv)   /* disable constant-power panning */

See Also

maketable, makeLFO, DMOVE, MIX, MMOVE, MOVE, MPLACE, MROOM, NPAN, PLACE, QPAN, ROOM, SROOM STEREO