예제 #1
0
        /// <summary>
        /// The QueryRealD method returns all samples of the next file in the directory.
        /// </summary>
        /// <returns>All samples along with the format are returned where the format is placed in the last array.</returns>
        public List <double[]> QueryRealD()
        {
            if (m_nFileIdx == m_rgstrFiles.Length)
            {
                return(null);
            }

            using (FileStream fs = File.OpenRead(m_rgstrFiles[m_nFileIdx]))
                using (WAVReader wav = new WAVReader(fs))
                {
                    m_nFileIdx++;
                    wav.ReadToEnd();

                    m_rgInfo = new Dictionary <string, float>();
                    m_rgInfo.Add("AveBytesPerSec", wav.Format.nAvgBytesPerSec);
                    m_rgInfo.Add("BlockAlign", wav.Format.nBlockAlign);
                    m_rgInfo.Add("Channels", wav.Format.nChannels);
                    m_rgInfo.Add("SamplesPerSec", wav.Format.nSamplesPerSec);
                    m_rgInfo.Add("BitsPerSample", wav.Format.wBitsPerSample);
                    m_rgInfo.Add("FormatTag", wav.Format.wFormatTag);

                    List <double[]> rgData = new List <double[]>();

                    for (int i = 0; i < wav.Samples[0].Length; i++)
                    {
                        rgData.Add(new double[] { wav.Samples[0][i], wav.Samples[1][i] });
                    }

                    return(rgData);
                }
        }
예제 #2
0
        /// <summary>
        /// The Query information returns information about the data queried such as header information.
        /// </summary>
        /// <returns>The information about the data is returned.</returns>
        public Dictionary <string, float> QueryInfo()
        {
            if (m_rgInfo != null && m_rgInfo.Count > 0)
            {
                return(m_rgInfo);
            }

            if (m_nFileIdx == m_rgstrFiles.Length)
            {
                throw new Exception("Invalid field index.");
            }

            using (FileStream fs = File.OpenRead(m_rgstrFiles[m_nFileIdx]))
                using (WAVReader wav = new WAVReader(fs))
                {
                    wav.ReadToEnd(true);

                    m_rgInfo = new Dictionary <string, float>();
                    m_rgInfo.Add("AveBytesPerSec", wav.Format.nAvgBytesPerSec);
                    m_rgInfo.Add("BlockAlign", wav.Format.nBlockAlign);
                    m_rgInfo.Add("Channels", wav.Format.nChannels);
                    m_rgInfo.Add("SamplesPerSec", wav.Format.nSamplesPerSec);
                    m_rgInfo.Add("BitsPerSample", wav.Format.wBitsPerSample);
                    m_rgInfo.Add("FormatTag", wav.Format.wFormatTag);

                    return(m_rgInfo);
                }
        }
예제 #3
0
        /// <summary>
        /// The GetQuerySize method returns the size of the query as {1,1,filesize}.
        /// </summary>
        /// <returns>The query size is returned.</returns>
        public List <int> GetQuerySize()
        {
            List <int> rgSize = new List <int>();

            using (FileStream fs = File.OpenRead(m_rgstrFiles[m_nFileIdx]))
                using (WAVReader wav = new WAVReader(fs))
                {
                    wav.ReadToEnd(true);
                    rgSize.Add(1);
                    rgSize.Add((int)wav.Format.nChannels);
                    rgSize.Add(wav.SampleCount);

                    return(rgSize);
                }
        }
예제 #4
0
        /// <summary>
        /// The QueryReal method returns all samples of the next file in the directory.
        /// </summary>
        /// <returns>All samples along with the format are returned where the format is placed in the last array.</returns>
        public List <double[]> QueryReal()
        {
            if (m_nFileIdx == m_rgstrFiles.Length)
            {
                return(null);
            }

            using (FileStream fs = File.OpenRead(m_rgstrFiles[m_nFileIdx]))
                using (WAVReader wav = new WAVReader(fs))
                {
                    m_nFileIdx++;
                    wav.ReadToEnd();

                    m_rgInfo = new Dictionary <string, float>();
                    m_rgInfo.Add("AveBytesPerSec", wav.Format.nAvgBytesPerSec);
                    m_rgInfo.Add("BlockAlign", wav.Format.nBlockAlign);
                    m_rgInfo.Add("Channels", wav.Format.nChannels);
                    m_rgInfo.Add("SamplesPerSec", wav.Format.nSamplesPerSec);
                    m_rgInfo.Add("BitsPerSample", wav.Format.wBitsPerSample);
                    m_rgInfo.Add("FormatTag", wav.Format.wFormatTag);

                    return(wav.Samples);
                }
        }