Пример #1
0
        private static IList <PeakInfo> GetInfo(IPeakProvider peakProvider, PeakProviderSettings settings)
        {
            var infos = new List <PeakInfo>();

            int x           = 0;
            var currentPeak = peakProvider.GetNextPeak();

            while (x < settings.Width)
            {
                var nextPeak = peakProvider.GetNextPeak();

                for (int n = 0; n < settings.PixelsPerPeak; n++)
                {
                    x++;
                }

                for (int n = 0; n < settings.SpacerPixels; n++)
                {
                    // spacer bars are always the lower of the
                    var max = Math.Min(currentPeak.Max, nextPeak.Max);
                    var min = Math.Max(currentPeak.Min, nextPeak.Min);
                    x++;
                }
                infos.Add(currentPeak);
                currentPeak = nextPeak;
            }
            infos.Where(x => x.Max > 0);
            return(infos);
        }
        private float[] ArrangeWF(IPeakProvider peakProvider)
        {
            long x           = 0;
            long i           = 0;
            var  currentPeak = peakProvider.GetNextPeak();

            while (x < samples)
            {
                //Console.WriteLine("i={0}   x={1}  ", i, x);   //デバッグ用
                var nextPeak = peakProvider.GetNextPeak();
                waveValuePerBlock[i] = currentPeak.Max;
                i++;
                x           = i * samplePerBlock;
                currentPeak = nextPeak;
            }
            return(waveValuePerBlock);
        }
Пример #3
0
 public PeakInfo[] getSampleArray(IPeakProvider peakProvider, int sampleCount)
 {
     PeakInfo[] samples = new PeakInfo[sampleCount];
     for (int i = 0; i < sampleCount; i++)
     {
         samples[i] = peakProvider.GetNextPeak();
     }
     return(samples);
 }
Пример #4
0
        public PeakInfo GetNextPeak()
        {
            var peak       = sourceProvider.GetNextPeak();
            var decibelMax = 20 * Math.Log10(peak.Max);

            if (decibelMax < 0 - dynamicRange)
            {
                decibelMax = 0 - dynamicRange;
            }
            var linear = (float)((dynamicRange + decibelMax) / dynamicRange);

            return(new PeakInfo(0 - linear, linear));
        }