Files
rsgp/src/lib/audio/processors/PhaseInverter.ts

32 lines
881 B
TypeScript

import type { AudioProcessor } from "./AudioProcessor";
export class PhaseInverter implements AudioProcessor {
getName(): string {
return "Phase Inverter";
}
getDescription(): string {
return "Inverts polarity of one or both channels";
}
async process(
leftChannel: Float32Array,
rightChannel: Float32Array
): Promise<[Float32Array, Float32Array]> {
const mode = Math.floor(Math.random() * 3);
const newLeft = new Float32Array(leftChannel.length);
const newRight = new Float32Array(rightChannel.length);
const invertLeft = mode === 0 || mode === 2;
const invertRight = mode === 1 || mode === 2;
for (let i = 0; i < leftChannel.length; i++) {
newLeft[i] = invertLeft ? -leftChannel[i] : leftChannel[i];
newRight[i] = invertRight ? -rightChannel[i] : rightChannel[i];
}
return [newLeft, newRight];
}
}