/// <summary> /// /// </summary> /// <param name="wavInfo"></param> /// <returns></returns> public static double CalculateMaximumAmplitude(WavInfo wavInfo) { // Max expects at least 1 item in array. if (wavInfo.Samples.Length > 0) { return(wavInfo.Samples.Max()); } return(0); }
/// <summary> /// Subsamples audio. /// </summary> /// <param name="interval"> /// Keeps every <paramref name="interval"/> sample. /// </param> /// <param name="wavInfo">Wav info.</param> public static WavInfo SubSample(WavInfo wavInfo, int interval) { if (interval <= 1) { // no changes required. return(wavInfo); } int length = wavInfo.Samples.Length; int newLength = length / interval; double[] newSamples = new double[newLength]; //want length to be exact mulitple of interval length = newLength * interval; // copy only required samples for (int i = 0; i < newLength; i++) { newSamples[i] = wavInfo.Samples[i * interval]; } return(new WavInfo(newSamples, wavInfo.Channels, wavInfo.BitsPerSample, wavInfo.SampleRate / interval)); }