Exemplo n.º 1
0
        /// <summary>
        /// Select Audio File Handler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void selectAudioFile_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            WavFileInfo    wavFileInfo    = null;

            openFileDialog.Filter = "MP3 files (*.mp3)|*.mp3| WAV files (*.wav)|*.wav| All files (*.*)|*.*";
            if (openFileDialog.ShowDialog() == true)
            {
                mediaPlayer.Open(new Uri(openFileDialog.FileName));
                mediaPlayer.MediaOpened += mediaPlayer_MediaOpened;
                FileName = openFileDialog.FileName;
                string fileExtension = System.IO.Path.GetExtension(FileName);
                if (fileExtension == ".wav")
                {
                    wavFileInfo = ReadWAVFile(FileName);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Reads the wav file and gets fileInfo and data information
        /// </summary>
        /// <param name="fileName"></param>
        private WavFileInfo ReadWAVFile(string fileName)
        {
            WavFileInfo fileInfo = new WavFileInfo();
            // Getting the data from the file path in binary format.
            FileStream   wavFileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            BinaryReader reader        = new BinaryReader(wavFileStream);

            byte[] fileBytes = File.ReadAllBytes(fileName);

            // Reading the wav file fileInfo and extracting important information.
            // The Wav File Header size is 44 bytes.
            int chunkID             = reader.ReadInt32();
            int chunkSize           = reader.ReadInt32();
            int Format              = reader.ReadInt32();
            int formatID            = reader.ReadInt32();
            int formatSize          = reader.ReadInt32();
            int audioEncodingFormat = reader.ReadInt16();
            int numChannels         = reader.ReadInt16();                       // Number of channels: 1-Mono, 2-Stereo
            int sampleRate          = reader.ReadInt32();                       // Sampling Rate - No of Samples/sec
            int byteRate            = reader.ReadInt32();
            int blockAlign          = reader.ReadInt16();
            int bitsPerSample       = reader.ReadInt16();                       // Bits per Sample

            if (formatSize == 18)
            {
                // Read extra values
                int formatExtraSize = reader.ReadInt16();
                reader.ReadBytes(formatExtraSize);
            }
            int dataID   = reader.ReadInt32();
            int dataSize = reader.ReadInt32();                                  // Audio data size

            byte[] wavData = reader.ReadBytes(dataSize);                        // Contains actual data

            // Convert byte data to double
            reader.Read();

            // Populate Wav fileInfo object properties and return it
            fileInfo.SampleRate    = sampleRate;
            fileInfo.BitsPerSample = bitsPerSample;
            fileInfo.NumChannels   = numChannels;
            fileInfo.WavData       = wavData;
            return(fileInfo);
        }