示例#1
0
    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);
    }
示例#2
0
    private void BuildStream()
    {
        IEnumerable <IBGCStream> chord = Chord.Select(
            note => GetNote(fundamentalFreq * note.freqRatio, Duration));

        stream = new StreamAdder(chord)
                 .Spatialize(angle)
                 .Normalize(Level);
    }
示例#3
0
        public static IBGCStream AddWith(
            this IBGCStream stream,
            params IBGCStream[] others)
        {
            StreamAdder adder = new StreamAdder(stream);

            adder.AddStreams(others);
            return(adder);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
            }
        }