예제 #1
0
        /// <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);
        }
예제 #2
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));
        }