public static double[] GetNormalizedLevels(OctaveBands octaveBands) { var result = new double[octaveBands.Count]; for (int i = 0; i < octaveBands.Count; i++) { result[i] = octaveBands[i].NormalizedLevel; } return(result); }
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); }