public OctaveBandWindowViewModel(MeasurementSettings settings, OctaveBand band, bool building) { this.band = band; _settings = settings; this.building = building; OctaveValues = new ObservableCollection <OctaveBandGraphValue>(); }
public static OctaveBands GetOctaveBandsData(Dictionary <double, double> data, double startFreq, double[] highFreqs, double[] rootFreqs, double normalizeConst) { var result = new OctaveBands(highFreqs.Length); double currentStartFreq = startFreq; var sumOfSumLevels = 0.0; for (int i = 0; i < highFreqs.Length; i++) { var octaveBand = new OctaveBand(); var highFreq = highFreqs[i]; octaveBand.LowFreq = currentStartFreq; octaveBand.HighFreq = highFreqs[i]; octaveBand.RootFreq = rootFreqs[i]; var levels = data.Where(x => x.Key > currentStartFreq && x.Key < highFreq).Select(x => x.Value); octaveBand.SumLevel = GetSumLevel(levels); sumOfSumLevels += octaveBand.SumLevel; octaveBand.IntegralLevel = GetIntegralLevel(octaveBand.SumLevel); currentStartFreq = highFreq; result[i] = octaveBand; } foreach (var band in result.Bands) { band.NormalizedLevel = GetNormalizedLevel(band.IntegralLevel, sumOfSumLevels, normalizeConst); } return(result); }