private Fanfare( double noteDuration, double endSustain, double[] frequencies) { double totalDuration = noteDuration * 4 + endSustain; int totalSamples = (int)Math.Floor(SamplingRate * totalDuration); StreamAdder fanfareStream = new StreamAdder(); for (int i = 0; i < frequencies.Length; i++) { double startingTime = i * noteDuration; IBGCStream noteStream = GetNote(frequencies[i], totalDuration - startingTime) .Center((int)(startingTime * SamplingRate), 0); fanfareStream.AddStream(noteStream); } stream = fanfareStream .Spatialize(0.0) .Normalize(Level); }
private void BuildStream() { IEnumerable <IBGCStream> chord = Chord.Select( note => GetNote(fundamentalFreq * note.freqRatio, Duration)); stream = new StreamAdder(chord) .Spatialize(angle) .Normalize(Level); }
public static IBGCStream AddWith( this IBGCStream stream, params IBGCStream[] others) { StreamAdder adder = new StreamAdder(stream); adder.AddStreams(others); return(adder); }
public void TestFakeVoice() { Calibration.Initialize(); // F2: 500 // F3: 1000 // F4: 2000 double qFactor = 100; //IBGCStream f2 = new AnalyticNoiseStream( // rms: 1.0, // freqLB: 20, // freqUB: 10000, // frequencyCount: 10000, // distribution: AnalyticNoiseStream.AmplitudeDistribution.Pink) // .ToBGCStream() // .ContinuousFilter( // envelopeStream: new Audio.Envelopes.SigmoidEnvelope(2.0), // filterType: ContinuousFilter.FilterType.BandPass, // freqLB: 500, // freqUB: 540, // qFactor: 100.0); //Func<IBGCStream> makeCarrier = () => //new AnalyticNoiseStream( // rms: 1.0, // freqLB: 20, // freqUB: 10000, // frequencyCount: 10000, // distribution: AnalyticNoiseStream.AmplitudeDistribution.Brown) // .ToBGCStream(); //Func<IBGCStream> makeCarrier = () => // new SawtoothWave( // amplitude: 1.0, // frequency: 120); Func <IBGCStream> makeCarrier = () => new StreamAdder( new SawtoothWave( amplitude: 1.0, frequency: 120), new AnalyticNoiseStream( rms: 0.2, freqLB: 20, freqUB: 10000, frequencyCount: 10000, distribution: AnalyticNoiseStream.AmplitudeDistribution.Brown) .ToBGCStream()); //Func<IBGCStream> makeCarrier = () => // new SquareWave( // 1.0, // 280.0, // 0.1); IBGCStream f2 = makeCarrier() .ContinuousFilter( envelopeStream: new Audio.Envelopes.EnvelopeConcatenator( new Audio.Envelopes.SigmoidEnvelope(0.1), new Audio.Envelopes.ConstantEnvelope(1.0, 0.1)), filterType: ContinuousFilter.FilterType.BandPass, freqLB: 400, freqUB: 700, qFactor: qFactor); IBGCStream f3 = makeCarrier() .ContinuousFilter( envelopeStream: new Audio.Envelopes.LinearEnvelope(0.05, 0.15), filterType: ContinuousFilter.FilterType.BandPass, freqLB: 1500, freqUB: 1000, qFactor: qFactor); IBGCStream f4 = makeCarrier() .ContinuousFilter( envelopeStream: new Audio.Envelopes.ConstantEnvelope(1.0, 0.2), filterType: ContinuousFilter.FilterType.BandPass, freqLB: 2000, freqUB: 2000, qFactor: qFactor); IBGCStream fakeVoice = new StreamAdder(f2, f3, f4) .Window(.2) .Center(1) .SlowRangeFitter(); WaveEncoding.SaveStream( filepath: DataManagement.PathForDataFile("Test", "testVoice.wav"), stream: fakeVoice); }
public void TestFunFakeVoice() { Calibration.Initialize(); // F2: 500 // F3: 1000 // F4: 2000 double qFactor = 200; //IBGCStream f2 = new AnalyticNoiseStream( // rms: 1.0, // freqLB: 20, // freqUB: 10000, // frequencyCount: 10000, // distribution: AnalyticNoiseStream.AmplitudeDistribution.Pink) // .ToBGCStream() // .ContinuousFilter( // envelopeStream: new Audio.Envelopes.SigmoidEnvelope(2.0), // filterType: ContinuousFilter.FilterType.BandPass, // freqLB: 500, // freqUB: 540, // qFactor: 100.0); //Func<IBGCStream> makeCarrier = () => //new AnalyticNoiseStream( // rms: 1.0, // freqLB: 20, // freqUB: 10000, // frequencyCount: 10000, // distribution: AnalyticNoiseStream.AmplitudeDistribution.Brown) // .ToBGCStream(); //Func<IBGCStream> makeCarrier = () => // new SawtoothWave( // amplitude: 1.0, // frequency: 120); Func <IBGCStream> makeCarrier = () => new StreamAdder( new SawtoothWave( amplitude: 1.0, frequency: 120), new AnalyticNoiseStream( rms: 0.2, freqLB: 20, freqUB: 10000, frequencyCount: 10000, distribution: AnalyticNoiseStream.AmplitudeDistribution.Brown) .ToBGCStream()); //Func<IBGCStream> makeCarrier = () => // new SquareWave( // 1.0, // 280.0, // 0.1); //IBGCStream f2 = makeCarrier() // .ContinuousFilter( // envelopeStream: new SineWave(1.0, 4), // filterType: ContinuousFilter.FilterType.BandPass, // freqLB: 1500, // freqUB: 1000, // qFactor: qFactor); { IBGCStream f1 = makeCarrier() .BiQuadBandpassFilter( centralFrequency: 500, qFactor: qFactor); IBGCStream f2 = makeCarrier() .BiQuadBandpassFilter( centralFrequency: 1500, qFactor: qFactor); IBGCStream fakeVoice = new StreamAdder(f1, f2) .Window(0.2) .Center(0.5) .SlowRangeFitter(); WaveEncoding.SaveStream( filepath: DataManagement.PathForDataFile("Test", "testVoiceA.wav"), stream: fakeVoice, overwrite: true); } { IBGCStream f1 = makeCarrier() .BiQuadBandpassFilter( centralFrequency: 750, qFactor: qFactor); IBGCStream f2 = makeCarrier() .BiQuadBandpassFilter( centralFrequency: 2000, qFactor: qFactor); IBGCStream fakeVoice = new StreamAdder(f1, f2) .Window(0.2) .Center(0.5) .SlowRangeFitter(); WaveEncoding.SaveStream( filepath: DataManagement.PathForDataFile("Test", "testVoiceB.wav"), stream: fakeVoice, overwrite: true); } }