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); }
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); }
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)); }