Beispiel #1
0
        /// <summary>
        /// Creates a sample sequence used to demonstrate scope features.
        /// </summary>
        private SampleSequence CreateDemoSampleSequence(double duration, int sampleRate,
                                                        IInterpolator interpolator, int interpolatedSampleRate)
        {
            var values1 = FunctionValueGenerator.GenerateSineValuesForFrequency(1, sampleRate,
                                                                                duration, (x, y) => y);
            var values3 = FunctionValueGenerator.GenerateSineValuesForFrequency(3, sampleRate,
                                                                                duration, (x, y) => y / 2);

            var values = CollectionUtilities.Zip(
                objects => ((double)objects[0]) + ((double)objects[1]),
                values1,
                values3);

            if (interpolator != null)
            {
                values = interpolator.Interpolate(values, 0, duration,
                                                  sampleRate, interpolatedSampleRate);

                sampleRate = interpolatedSampleRate;
            }

            // LogDeferredAccess shows us some details about how the values are accessed (see there).
            return(new SampleSequence(1f / sampleRate, values));
            //return new SampleSequence(1/sampleFrequency, LogDeferredAccess(values));
        }
Beispiel #2
0
        public static void GenerateWaveformFile(string outPath)
        {
            short channelsCount    = 2;
            int   samplesPerSecond = 44100;
            short bitsPerSample    = 16;

            var frequency         = 440;
            var durationInSeconds = 2;
            var amplitude         = 0.1;

            var frames = FunctionValueGenerator
                         .GenerateSineValuesForFrequency(frequency, samplesPerSecond, durationInSeconds,
                                                         (x, y) =>
            {
                var samples = new [] { amplitude *y, amplitude *y };
                return(new WaveForm16BitFrame(samples));
            });

            var format   = new WaveformFormat(channelsCount, samplesPerSecond, bitsPerSample);
            var waveForm = new MemoryWaveform(format, frames);

            WriteWaveformFile(outPath, waveForm);
        }