210 lines
6.8 KiB
TypeScript
210 lines
6.8 KiB
TypeScript
import {
|
|
DiscreteFrequency,
|
|
InputChannel,
|
|
OutputChannel,
|
|
CrossoverFilter,
|
|
PEQBand,
|
|
PEQFilter,
|
|
DelayUnit,
|
|
} from './types';
|
|
|
|
export const INPUT_ORDER: InputChannel[] = [
|
|
InputChannel.InA,
|
|
InputChannel.InB,
|
|
InputChannel.InC,
|
|
InputChannel.InD,
|
|
];
|
|
|
|
export const OUTPUT_ORDER: OutputChannel[] = [
|
|
OutputChannel.Out1,
|
|
OutputChannel.Out2,
|
|
OutputChannel.Out3,
|
|
OutputChannel.Out4,
|
|
OutputChannel.Out5,
|
|
OutputChannel.Out6,
|
|
OutputChannel.Out7,
|
|
OutputChannel.Out8,
|
|
];
|
|
|
|
export const DISCRETE_FREQUENCIES: Record<DiscreteFrequency, number> = {
|
|
[DiscreteFrequency.F20]: 20,
|
|
[DiscreteFrequency.F25]: 25,
|
|
[DiscreteFrequency.F31_5]: 31.5,
|
|
[DiscreteFrequency.F40]: 40,
|
|
[DiscreteFrequency.F50]: 50,
|
|
[DiscreteFrequency.F63]: 63,
|
|
[DiscreteFrequency.F80]: 80,
|
|
[DiscreteFrequency.F100]: 100,
|
|
[DiscreteFrequency.F125]: 125,
|
|
[DiscreteFrequency.F160]: 160,
|
|
[DiscreteFrequency.F200]: 200,
|
|
[DiscreteFrequency.F250]: 250,
|
|
[DiscreteFrequency.F315]: 315,
|
|
[DiscreteFrequency.F400]: 400,
|
|
[DiscreteFrequency.F500]: 500,
|
|
[DiscreteFrequency.F630]: 630,
|
|
[DiscreteFrequency.F800]: 800,
|
|
[DiscreteFrequency.F1000]: 1000,
|
|
[DiscreteFrequency.F1250]: 1250,
|
|
[DiscreteFrequency.F1600]: 1600,
|
|
[DiscreteFrequency.F2000]: 2000,
|
|
[DiscreteFrequency.F2500]: 2500,
|
|
[DiscreteFrequency.F3150]: 3150,
|
|
[DiscreteFrequency.F4000]: 4000,
|
|
[DiscreteFrequency.F5000]: 5000,
|
|
[DiscreteFrequency.F6300]: 6300,
|
|
[DiscreteFrequency.F8000]: 8000,
|
|
[DiscreteFrequency.F10000]: 10000,
|
|
[DiscreteFrequency.F12500]: 12500,
|
|
[DiscreteFrequency.F16000]: 16000,
|
|
[DiscreteFrequency.F20000]: 20000,
|
|
};
|
|
|
|
// ------ GEQ constants ------
|
|
|
|
export const GEQ_BANDS_LABEL = [
|
|
{ frequency: DiscreteFrequency.F20, label: '20' },
|
|
{ frequency: DiscreteFrequency.F25, label: '25' },
|
|
{ frequency: DiscreteFrequency.F31_5, label: '31.5' },
|
|
{ frequency: DiscreteFrequency.F40, label: '40' },
|
|
{ frequency: DiscreteFrequency.F50, label: '50' },
|
|
{ frequency: DiscreteFrequency.F63, label: '63' },
|
|
{ frequency: DiscreteFrequency.F80, label: '80' },
|
|
{ frequency: DiscreteFrequency.F100, label: '100' },
|
|
{ frequency: DiscreteFrequency.F125, label: '125' },
|
|
{ frequency: DiscreteFrequency.F160, label: '160' },
|
|
{ frequency: DiscreteFrequency.F200, label: '200' },
|
|
{ frequency: DiscreteFrequency.F250, label: '250' },
|
|
{ frequency: DiscreteFrequency.F315, label: '315' },
|
|
{ frequency: DiscreteFrequency.F400, label: '400' },
|
|
{ frequency: DiscreteFrequency.F500, label: '500' },
|
|
{ frequency: DiscreteFrequency.F630, label: '630' },
|
|
{ frequency: DiscreteFrequency.F800, label: '800' },
|
|
{ frequency: DiscreteFrequency.F1000, label: '1k' },
|
|
{ frequency: DiscreteFrequency.F1250, label: '1.25k' },
|
|
{ frequency: DiscreteFrequency.F1600, label: '1.6k' },
|
|
{ frequency: DiscreteFrequency.F2000, label: '2k' },
|
|
{ frequency: DiscreteFrequency.F2500, label: '2.5k' },
|
|
{ frequency: DiscreteFrequency.F3150, label: '3.15k' },
|
|
{ frequency: DiscreteFrequency.F4000, label: '4k' },
|
|
{ frequency: DiscreteFrequency.F5000, label: '5k' },
|
|
{ frequency: DiscreteFrequency.F6300, label: '6.3k' },
|
|
{ frequency: DiscreteFrequency.F8000, label: '8k' },
|
|
{ frequency: DiscreteFrequency.F10000, label: '10k' },
|
|
{ frequency: DiscreteFrequency.F12500, label: '12.5k' },
|
|
{ frequency: DiscreteFrequency.F16000, label: '16k' },
|
|
{ frequency: DiscreteFrequency.F20000, label: '20k' },
|
|
] as const;
|
|
|
|
export const GEQ_GAIN_MIN = -12;
|
|
export const GEQ_GAIN_MAX = 12;
|
|
export const GEQ_GAIN_STEP = 0.1;
|
|
export const GEQ_CURVE_Q = 8.65 * 0.5;
|
|
|
|
// ------ Filter constants ------
|
|
|
|
export const CROSSOVER_FILTER_LABEL: { value: CrossoverFilter; label: string }[] = [
|
|
{ value: CrossoverFilter.Bw6, label: 'BW-6' },
|
|
{ value: CrossoverFilter.Bw12, label: 'BW-12' },
|
|
{ value: CrossoverFilter.Bw18, label: 'BW-18' },
|
|
{ value: CrossoverFilter.Bw24, label: 'BW-24' },
|
|
{ value: CrossoverFilter.Bw30, label: 'BW-30' },
|
|
{ value: CrossoverFilter.Bw36, label: 'BW-36' },
|
|
{ value: CrossoverFilter.Bw42, label: 'BW-42' },
|
|
{ value: CrossoverFilter.Bw48, label: 'BW-48' },
|
|
{ value: CrossoverFilter.Lk12, label: 'LR-12' },
|
|
{ value: CrossoverFilter.Lk24, label: 'LR-24' },
|
|
{ value: CrossoverFilter.Lk36, label: 'LR-36' },
|
|
{ value: CrossoverFilter.Lk48, label: 'LR-48' },
|
|
];
|
|
|
|
export const PEQ_BANDS_ORDER: PEQBand[] = [
|
|
PEQBand.B1,
|
|
PEQBand.B2,
|
|
PEQBand.B3,
|
|
PEQBand.B4,
|
|
PEQBand.B5,
|
|
PEQBand.B6,
|
|
PEQBand.B7,
|
|
PEQBand.B8,
|
|
];
|
|
|
|
export const PEQ_Q_RANGES: Record<PEQFilter, readonly [number, number]> = {
|
|
[PEQFilter.Peak]: [0.4, 128.0],
|
|
[PEQFilter.LowShelf]: [0.4, 3.0],
|
|
[PEQFilter.HighShelf]: [0.4, 3.0],
|
|
[PEQFilter.Lp6Db]: [0.4, 3.0],
|
|
[PEQFilter.Lp12Db]: [0.4, 3.0],
|
|
[PEQFilter.Hp6Db]: [0.4, 3.0],
|
|
[PEQFilter.Hp12Db]: [0.4, 3.0],
|
|
[PEQFilter.AllPass1]: [0.4, 128.0],
|
|
[PEQFilter.AllPass2]: [0.4, 128.0],
|
|
};
|
|
|
|
export const PEAK_Q_VALUES = [
|
|
0.4, 0.42, 0.45, 0.47, 0.5, 0.53, 0.56, 0.59, 0.63, 0.67, 0.71, 0.75, 0.79, 0.84, 0.89, 0.94, 1.0,
|
|
1.06, 1.12, 1.19, 1.26, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.4, 2.5, 2.7, 2.8, 3.0,
|
|
3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.5, 4.8, 5.0, 5.3, 5.7, 6.0, 6.3, 6.7, 7.1, 7.6, 8.0, 8.5, 9.0,
|
|
9.5, 10.1, 10.7, 11.3, 12.0, 12.7, 13.5, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 23.0,
|
|
24.0, 25.0, 27.0, 29.0, 30.0, 32.0, 34.0, 36.0, 38.0, 40.0, 43.0, 45.0, 48.0, 51.0, 54.0, 57.0,
|
|
60.0, 64.0, 68.0, 72.0, 76.0, 81.0, 85.0, 91.0, 96.0, 102.0, 108.0, 114.0, 121.0, 128.0,
|
|
] as const;
|
|
|
|
export const PEQ_FILTERS_LABEL: { value: PEQFilter; label: string }[] = [
|
|
{ value: PEQFilter.Peak, label: 'Peak' },
|
|
{ value: PEQFilter.LowShelf, label: 'Low Shelf' },
|
|
{ value: PEQFilter.HighShelf, label: 'High Shelf' },
|
|
{ value: PEQFilter.Lp6Db, label: 'Low Pass 6 dB/oct' },
|
|
{ value: PEQFilter.Lp12Db, label: 'Low Pass 12 dB/oct' },
|
|
{ value: PEQFilter.Hp6Db, label: 'High Pass 6 dB/oct' },
|
|
{ value: PEQFilter.Hp12Db, label: 'High Pass 12 dB/oct' },
|
|
{ value: PEQFilter.AllPass1, label: 'All Pass 1' },
|
|
{ value: PEQFilter.AllPass2, label: 'All Pass 2' },
|
|
];
|
|
|
|
export const FREQUENCY_MIN = 19.7;
|
|
export const FREQUENCY_MAX = 20160;
|
|
export const FREQUENCY_QUANTIZATION = 300;
|
|
|
|
// ------ Matrix constants ------
|
|
export const MATRIX_GAIN_MIN = -60;
|
|
export const MATRIX_GAIN_MAX = 0;
|
|
export const MATRIX_GAIN_STEP = 0.1;
|
|
|
|
// ------ Delay constants ------
|
|
export const DELAY_RANGES: Record<DelayUnit, [number, number]> = {
|
|
[DelayUnit.Millisecond]: [0, 680.0],
|
|
[DelayUnit.Meter]: [0, 233.58],
|
|
[DelayUnit.Feet]: [0, 766.329],
|
|
};
|
|
|
|
// ------ Graph constants ------
|
|
export const GRAPH_X_MIN = 10;
|
|
export const GRAPH_X_MAX = 30000;
|
|
export const GRAPH_Y_MIN = -21;
|
|
export const GRAPH_Y_MAX = 21;
|
|
|
|
// ------ App ------
|
|
export type SidebarId =
|
|
| 'overview'
|
|
| 'gain'
|
|
| 'gate'
|
|
| 'compressor'
|
|
| 'limiter'
|
|
| 'delay'
|
|
| 'matrix'
|
|
| 'geq'
|
|
| 'ina'
|
|
| 'inb'
|
|
| 'inc'
|
|
| 'ind'
|
|
| 'out1'
|
|
| 'out2'
|
|
| 'out3'
|
|
| 'out4'
|
|
| 'out5'
|
|
| 'out6'
|
|
| 'out7'
|
|
| 'out8'
|
|
| 'miscellaneous';
|