import { memoize } from 'lodash';

export const getDefaultPanning = memoize((channelIndex: number, channelCount: number) => {
  if (channelCount === 1) {
    return 0;
  }
  return ((channelIndex * (2 / (channelCount - 1))) - 1);
}, (ci, cc) => `${ci}_${cc}`);

export const applyPanning = (sample: number, panning: number, forLeftOutput: boolean) => {
  if (forLeftOutput) {
    return sample * (((2 - (1 + panning)) / 2) + (0.27 * (1 - Math.abs(panning))));
  } else {
    return sample * (((1 + panning) / 2) + (0.27 * (1 - Math.abs(panning))));
  }
}
