PanLaw.h — Pan Laws

Pan Laws are volume curves used when panning a signal in order to maintain a constant perceived loudness from hard left to hard right. Pan laws generally provide a reduction in volume to both channels when panned center, to eliminate a peak in volume when both channels are playing back at the same volume.

Linear Pan Law

A linear Pan law is the simplest pan law, and has each channel at -6dB when panned center.

../_images/LinearPan.png
Error_t linear_pan(float control, float *l_gain, float *r_gain)

Calculate linear pan channel gains.

Use a linear curve to mix between two sources. Results in a peak at the center.

Return
Error code.
Parameters
  • control -

    Pan amount. Must be between 0 (hard left) and 1 (hard right)

  • l_gain -

    Left channel gain.

  • r_gain -

    Right channel gain.

3dB Equal Power Pan

A circular pan law with each channel at -3dB when panned center.

../_images/3dBPan.png
Error_t equal_power_3dB_pan(float control, float *l_gain, float *r_gain)

Calculate 3dB Equal-Power pan channel gains.

Use an equal-power curve to mix between two sources. Results in both channels being down 3dB at the center.

Return
Error code.
Parameters
  • control -

    Pan amount. Must be between 0 (hard left) and 1 (hard right)

  • l_gain -

    Left channel gain.

  • r_gain -

    Right channel gain.

6dB Equal Power Pan

A circular pan law with each channel at -6dB when panned center.

../_images/6dBPan.png
Error_t equal_power_6dB_pan(float control, float *l_gain, float *r_gain)

Calculate 6dB Equal-Power pan channel gains.

Use an equal-power curve to mix between two sources. Results in both channels being down 6dB at the center.

Return
Error code.
Parameters
  • control -

    Pan amount. Must be between 0 (hard left) and 1 (hard right)

  • l_gain -

    Left channel gain.

  • r_gain -

    Right channel gain.