コード例 #1
0
        /// <summary>
        /// Perform an action for each frequency value on a logarithmically scaled graph or spectrum band.
        /// </summary>
        /// <param name="source">Sample array or spectrum</param>
        /// <param name="startFreq">Frequency at the first element of the array</param>
        /// <param name="endFreq">Frequency at the last element of the array</param>
        /// <param name="action">Performed action</param>
        public static void ForEachLog <T>(T[] source, double startFreq, double endFreq, FrequencyFunction <T> action)
        {
            double mul = Math.Pow(10, (Math.Log10(endFreq) - Math.Log10(startFreq)) / (source.Length - 1));

            for (int i = 0; i < source.Length; ++i)
            {
                action(startFreq, ref source[i]);
                startFreq *= mul;
            }
        }
コード例 #2
0
        /// <summary>
        /// Perform an action for each frequency value on a linearly scaled graph or spectrum band.
        /// </summary>
        /// <param name="source">Sample array or spectrum</param>
        /// <param name="startFreq">Frequency at the first element of the array</param>
        /// <param name="endFreq">Frequency at the last element of the array</param>
        /// <param name="action">Performed action</param>
        public static void ForEachLin <T>(T[] source, double startFreq, double endFreq, FrequencyFunction <T> action)
        {
            double step = (endFreq - startFreq) / (source.Length - 1);

            for (int entry = 0; entry < source.Length; ++entry)
            {
                action(startFreq + step * entry, ref source[entry]);
            }
        }