sclass RenderFrequencySample_SquareWave is RenderFrequencySample { public double get(Complex c, double frac) { double abs = c.abs(); if (abs == 0) ret 0; frac = frac_nonNeg(frac + c.fracAngle()); ret abs * (frac < .5 ? 1 : -1); } public void subtractPeriodFrom(AudioAdder audio, DoubleRange period, Complex intensity) { double goHigh = fracNonNeg(-intensity.fracAngle()); double abs = intensity.abs(); double goLow = fracNonNeg(goHigh+.5); double t1 = period.start, t2 = period.end, n = l(period); printVars(+t1, +t2, +goHigh, +goLow, +abs); //if (switchPoint < switchPoint2) audio.subtractPlateau(t1, t1+goHigh*n, abs); audio.subtractPlateau( t1+goHigh*n, t2, -abs); audio.subtractPlateau(t1, t1+goLow*n, -abs); audio.subtractPlateau( t1+goLow*n, t2, abs); } }