public STMAudioClip( double duration, double freqLB, double freqUB, int frequencyCount, double modulationDepth, double spectralModulationRate, double temporalModulationRate, RippleDirection rippleDirection, AmplitudeDistribution distribution, Random randomizer = null) { if (randomizer == null) { randomizer = new Random(CustomRandom.Next()); } this.randomizer = randomizer; carrierToneGenerator = CreateSideBands(freqLB, freqUB, frequencyCount, distribution); sideBandGenerator = ExpCarrierToneSideBands; this.modulationDepth = modulationDepth; this.temporalModulationRate = temporalModulationRate; switch (rippleDirection) { case RippleDirection.Up: this.spectralModulationRate = spectralModulationRate; break; case RippleDirection.Down: this.spectralModulationRate = -spectralModulationRate; break; default: Debug.LogError($"Unexpected RippleDirection: {rippleDirection}"); break; } _channelSamples = (int)Math.Ceiling(duration * SamplingRate); }
public STMAudioClip( double duration, IEnumerable <ComplexCarrierTone> carrierTones, double modulationDepth, double spectralModulationRate, double temporalModulationRate, SideBandGenerator sideBandGenerator, Random randomizer = null) { if (randomizer == null) { randomizer = new Random(CustomRandom.Next()); } this.randomizer = randomizer; carrierToneGenerator = carrierTones; this.sideBandGenerator = sideBandGenerator; this.modulationDepth = modulationDepth; this.temporalModulationRate = temporalModulationRate; this.spectralModulationRate = spectralModulationRate; _channelSamples = (int)Math.Ceiling(duration * SamplingRate); }