import {
  MAX_FREQ,
  MAX_GAIN,
  MAX_Q,
  MIN_FREQ,
  MIN_GAIN,
  MIN_Q,
} from './eqConstants';

// Convert frequency to normalized position (0-1) using log scale
export const freqToPosition = (freq: number): number => {
  return Math.log(freq / MIN_FREQ) / Math.log(MAX_FREQ / MIN_FREQ);
};

// Convert normalized position (0-1) to frequency using log scale
export const positionToFreq = (pos: number): number => {
  return MIN_FREQ * Math.pow(MAX_FREQ / MIN_FREQ, pos);
};

// Convert gain to normalized position (0-1)
export const gainToPosition = (gain: number): number => {
  return (gain - MIN_GAIN) / (MAX_GAIN - MIN_GAIN);
};

// Convert normalized position (0-1) to gain
export const positionToGain = (pos: number): number => {
  return MIN_GAIN + pos * (MAX_GAIN - MIN_GAIN);
};

// Convert Q to normalized position (0-1) using log scale
export const qToPosition = (q: number): number => {
  return Math.log(q / MIN_Q) / Math.log(MAX_Q / MIN_Q);
};

// Convert normalized position (0-1) to Q using log scale
export const positionToQ = (pos: number): number => {
  return MIN_Q * Math.pow(MAX_Q / MIN_Q, pos);
};
