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 static IList <PeakInfo> GetInfo(IPeakProvider peakProvider, string selectedFile, int pointOnXAccess) { var settings = new PeakProviderSettings(); using (var reader = new AudioFileReader(selectedFile)) { int bytesPerSample = (reader.WaveFormat.BitsPerSample / 8); settings.Width = pointOnXAccess; var samples = reader.Length / (bytesPerSample); var samplesPerPixel = (int)(samples / settings.Width); var stepSize = settings.PixelsPerPeak + settings.SpacerPixels; peakProvider.Init(reader, samplesPerPixel * stepSize); return(GetInfo(peakProvider, settings)); } }