Beispiel #1
0
        public static Stream ConvertAiffToMp3(Stream aiffStream, string directory)
        {
            _uniqueTempFileCounter += 1;
            var tempFile = Path.GetTempFileName();

            using (var rdr = new AiffFileReader(aiffStream))
            {
                //can't go from 24 bits aif to mp3 directly, create temporary 16 bit wav
                if (rdr.WaveFormat.BitsPerSample == 24)
                {
                    ISampleProvider sampleprovider = new Pcm24BitToSampleProvider(rdr);                           //24 bit to sample
                    var             resampler      = new WdlResamplingSampleProvider(sampleprovider, SampleRate); //sample to new sample rate
                    WaveFileWriter.CreateWaveFile16(tempFile, resampler);                                         //sample to actual wave file
                    return(ConvertWavFileToMp3MemoryStream(tempFile, true));                                      //file to mp3 bytes
                }
                else
                {
                    var retMs = FilesystemUtils.recyclableMemoryStreamManager.GetStream();
                    using (var wtr = new LameMP3FileWriter(retMs, rdr.WaveFormat, BitRate))
                    {
                        rdr.CopyTo(wtr);
                        return(retMs);
                    }
                }
            }
        }
        private static WaveStream CreateReaderStream(string fileName)
        {
            WaveStream readerStream = null;

            if (fileName.EndsWith(".wav", StringComparison.OrdinalIgnoreCase))
            {
                readerStream = new WaveFileReader(fileName);
                if (readerStream.WaveFormat.Encoding == WaveFormatEncoding.Pcm ||
                    readerStream.WaveFormat.Encoding == WaveFormatEncoding.IeeeFloat)
                {
                    return(readerStream);
                }
                readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream);
                readerStream = new BlockAlignReductionStream(readerStream);
            }
            else if (fileName.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase))
            {
                readerStream = new Mp3FileReader(fileName);
            }

            else if (fileName.EndsWith(".aiff"))
            {
                readerStream = new AiffFileReader(fileName);
            }

            return(readerStream);
        }
        public void Play(string path)
        {
            Dispose();

            _path = path;

            if (System.IO.Path.GetExtension(_path) == ".mp3")
            {
                pcm = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(_path));
                blockAlignStream = new BlockAlignReductionStream(pcm);
                output.Init(blockAlignStream);
            }
            else if (System.IO.Path.GetExtension(_path) == ".wav")
            {
                wavereader = new WaveFileReader(_path);
                output.Init(new WaveChannel32(wavereader));
            }
            else if (System.IO.Path.GetExtension(_path) == ".aif")
            {
                aiffreader = new AiffFileReader(_path);
                output.Init(new WaveChannel32(aiffreader));
            }
            else
            {
                audioreader = new AudioFileReader(_path);
                output.Init(new WaveChannel32(audioreader));
            }

            output.Play();
        }
Beispiel #4
0
        public WaveStream GetStream(string path)
        {
            WaveStream ret = null;
            string     lp  = path.ToLower();

            if (lp.EndsWith(".wav"))
            {
                ret = new WaveFileReader(path);
                if (ret.WaveFormat.Encoding != WaveFormatEncoding.Pcm && ret.WaveFormat.Encoding != WaveFormatEncoding.IeeeFloat)
                {
                    ret = WaveFormatConversionStream.CreatePcmStream(ret);
                    ret = new BlockAlignReductionStream(ret);
                }
            }
            else if (lp.EndsWith(".mp3"))
            {
                ret = new Mp3FileReader(path);
            }
            else if (lp.EndsWith(".aiff"))
            {
                ret = new AiffFileReader(path);
            }
            else if (lp.EndsWith(".wma"))
            {
                ret = new NAudio.WindowsMediaFormat.WMAFileReader(path);
            }
            return(ret);
        }
Beispiel #5
0
        static WaveStream GetWaveStream(string file)
        {
            WaveChannel32 inputStream = null;
            WaveStream    reader      = null;
            WaveStream    work        = null;

            try
            {
                if (file.EndsWith(".ogg", StringComparison.OrdinalIgnoreCase))
                {
                    work = new NVorbis.NAudioSupport.VorbisWaveReader(file);
                    //TODO: Switch to memory stream and test.
                    //work = new NVorbis.NAudioSupport.VorbisWaveReader(
                }
                else if (file.EndsWith(".aiff", StringComparison.OrdinalIgnoreCase))
                {
                    work = new AiffFileReader(file);
                }
                else if (file.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase))
                {
                    work = new Mp3FileReader(file);
                }
                else if (file.EndsWith(".wma", StringComparison.OrdinalIgnoreCase))
                {
                    work = new NAudio.WindowsMediaFormat.WMAFileReader(file);
                }
                reader = work;
                work   = null;
            }
            catch (Exception ex)
            {
                if (_log.IsWarnEnabled)
                {
                    _log.Warn("Unable to get audio stream", ex);
                }
            }
            finally
            {
                if (work != null)
                {
                    work.Dispose();
                }
            }
            try
            {
                if (reader != null)
                {
                    inputStream = new WaveChannel32(reader);
                }
            }
            catch (Exception ex)
            {
                if (_log.IsWarnEnabled)
                {
                    _log.Warn("Error trying to set up inputStream", ex);
                }
            }
            return(inputStream);
        }
Beispiel #6
0
        private void showAiffHeader(AiffFileReader aiffFileReader, OpenFileDialog ofd)
        {
            listView.Clear();

            Dictionary <string, string> locationData = new Dictionary <string, string>();
            Dictionary <string, string> generalData  = new Dictionary <string, string>();

            ColumnHeader columnHeaderName = new ColumnHeader();

            columnHeaderName.Text  = "Name";
            columnHeaderName.Width = 100;
            ColumnHeader columnHeaderValue = new ColumnHeader();

            columnHeaderValue.Text  = "Value";
            columnHeaderValue.Width = 300;

            listView.Columns.AddRange(new ColumnHeader[] { columnHeaderName, columnHeaderValue });
            ListViewGroup listViewGroupLocation = new ListViewGroup("Location");
            ListViewGroup listViewGroupGeneral  = new ListViewGroup("General");

            listView.Groups.Add(listViewGroupLocation);
            listView.Groups.Add(listViewGroupGeneral);

            //locationData
            locationData.Add("File name", ofd.SafeFileName);
            locationData.Add("Folder name", ofd.FileName);
            locationData.Add("File size", aiffFileReader.Length + " (bytes)");
            locationData.Add("Last modified", File.GetLastWriteTime(ofd.FileName).ToString());
            locationData.Add("Created", File.GetCreationTime(ofd.FileName).ToString());
            foreach (var item in locationData)
            {
                ListViewItem listViewItem = new ListViewItem(item.Key, listViewGroupLocation);
                listViewItem.SubItems.Add(item.Value);
                listView.Items.Add(listViewItem);
            }
            //generalData
            generalData.Add("Duration", aiffFileReader.TotalTime.ToString());
            generalData.Add("Sample Rate", aiffFileReader.WaveFormat.SampleRate.ToString() + " Hz");
            generalData.Add("Channels", aiffFileReader.WaveFormat.Channels.ToString());
            generalData.Add("Bits per sample", aiffFileReader.WaveFormat.BitsPerSample.ToString());
            generalData.Add("Average bytes per second", aiffFileReader.WaveFormat.AverageBytesPerSecond.ToString());
            generalData.Add("Block Align", aiffFileReader.WaveFormat.BlockAlign.ToString());
            foreach (var item in generalData)
            {
                ListViewItem listViewItem = new ListViewItem(item.Key, listViewGroupGeneral);
                listViewItem.SubItems.Add(item.Value);
                listView.Items.Add(listViewItem);
            }
        }
Beispiel #7
0
        public AiffInput(Stream file) : base(file)
        {
            m_reader = new AiffFileReader(file);
            var format = new GameRes.WaveFormat {
                FormatTag             = (ushort)m_reader.WaveFormat.Encoding,
                Channels              = (ushort)m_reader.WaveFormat.Channels,
                SamplesPerSecond      = (uint)m_reader.WaveFormat.SampleRate,
                BitsPerSample         = (ushort)m_reader.WaveFormat.BitsPerSample,
                BlockAlign            = (ushort)m_reader.BlockAlign,
                AverageBytesPerSecond = (uint)m_reader.WaveFormat.AverageBytesPerSecond,
            };

            this.Format  = format;
            this.PcmSize = m_reader.Length;
        }
Beispiel #8
0
 private static void ConvertAiffToWav(string aiffFile, string wavFile)
 {
     using (AiffFileReader reader = new AiffFileReader(aiffFile))
     {
         using (WaveFileWriter writer = new WaveFileWriter(wavFile, reader.WaveFormat))
         {
             byte[] buffer    = new byte[4096];
             int    bytesRead = 0;
             do
             {
                 bytesRead = reader.Read(buffer, 0, buffer.Length);
                 writer.Write(buffer, 0, bytesRead);
             } while (bytesRead > 0);
         }
     }
 }
Beispiel #9
0
        private void openAudioFile()
        {
            using (ofd = new OpenFileDialog()
            {
                Filter = "All files|*.*|WAV|*.wav|AIFF|*.aiff"
            })
            {
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    inputAudioFile  = ofd.FileName;
                    fileStreamInput = new FileStream(inputAudioFile, FileMode.Open, FileAccess.Read);

                    string[] safeAudioFileName = ofd.SafeFileName.Split(new char[] { '.' });

                    switch (safeAudioFileName[safeAudioFileName.Length - 1])
                    {
                    case "wav":
                        currentAudioFormat = "wav";
                        WaveFileReader waveFileReader = new WaveFileReader(fileStreamInput);
                        showWavHeader(waveFileReader, ofd);
                        convertToolStripMenuItem.Enabled = comboBoxFormats.Enabled = buttonConvert.Enabled = true;
                        comboBoxFormats.SelectedIndex    = 0;
                        printAudioWave();
                        break;

                    case "aiff":
                        currentAudioFormat = "aiff";
                        AiffFileReader aiffFileReader = new AiffFileReader(fileStreamInput);
                        showAiffHeader(aiffFileReader, ofd);
                        convertToolStripMenuItem.Enabled = comboBoxFormats.Enabled = buttonConvert.Enabled = true;
                        comboBoxFormats.SelectedIndex    = 0;
                        printAudioWave();
                        break;

                    default:
                        currentAudioFormat = null;
                        break;
                    }
                }
            }
        }
Beispiel #10
0
        public static bool ConvertAiffToMp3(byte[] aiffFile, string directory, out byte[] mp3Bytes)
        {
            mp3Bytes = null;
            try
            {
                _uniqueTempFileCounter += 1;
                var tempFile = Path.Combine(directory, "tempdata" + _uniqueTempFileCounter + ".wav");

                using (var ms = new MemoryStream(aiffFile))
                    using (var rdr = new AiffFileReader(ms))
                    {
                        if (rdr.WaveFormat.BitsPerSample == 24)
                        //can't go from 24 bits aif to mp3 directly, create temporary 16 bit wav
                        {
                            ISampleProvider sampleprovider = new Pcm24BitToSampleProvider(rdr); //24 bit to sample
                            var             resampler      = new WdlResamplingSampleProvider(sampleprovider, SampleRate);
                            //sample to new sample rate
                            WaveFileWriter.CreateWaveFile16(tempFile, resampler); //sample to actual wave file
                            mp3Bytes = ConvertWavToMp3(tempFile, true);           //file to mp3 bytes
                        }
                        else
                        {
                            using (var retMs = new MemoryStream())
                                using (var wtr = new LameMP3FileWriter(retMs, rdr.WaveFormat, BitRate))
                                {
                                    rdr.CopyTo(wtr);
                                    mp3Bytes = retMs.ToArray();
                                }
                        }
                    }
                return(true);
            }
            catch (Exception)
            {
                // ignored
            }
            return(false);
        }
        public static byte[] Aiff_to_wav(string fil_n, byte ch, out byte[] mono)
        {
            byte[] mono2 = null;
            Task   a     = Task.Run(() =>
            {
                WaveFormat format = new WaveFormat(48000, 16, 1);
                try
                {
                    using (AiffFileReader reader = new AiffFileReader(fil_n))
                    {
                        using (WaveFormatConversionStream stream = new WaveFormatConversionStream(format, reader))
                        {
                            mono2 = new byte[stream.Length];
                            stream.Read(mono2, 0, mono2.Length);
                        }
                    }
                }
                catch (Exception) { }
            });

            byte[] buffer = null;
            try
            {
                WaveFormat format = new WaveFormat(48000, 16, ch);
                using (AiffFileReader reader = new AiffFileReader(fil_n))
                {
                    using (WaveFormatConversionStream stream = new WaveFormatConversionStream(format, reader))
                    {
                        buffer = new byte[stream.Length];
                        stream.Read(buffer, 0, buffer.Length);
                    }
                }
            }
            catch (Exception) { }
            a.Wait();
            mono = mono2;
            return(buffer);
        }
Beispiel #12
0
        private static WaveStream ReaderForAudioFormat
        (
            Stream fileInputStream,
            AudioFormat audioFormat,
            int?maxSeconds,
            out int seconds
        )
        {
            WaveStream readerStream;

            switch (audioFormat)
            {
            case AudioFormat.Mp3:
                readerStream = new Mp3FileReader(fileInputStream);
                break;

            case AudioFormat.Wave:
                readerStream = new WaveFileReader(fileInputStream);
                break;

            case AudioFormat.Aiff:
                readerStream = new AiffFileReader(fileInputStream);
                break;

            case AudioFormat.Flac:
                readerStream = new FlacReader(fileInputStream);
                break;

            case AudioFormat.OggVorbis:
                readerStream = new VorbisWaveReader(fileInputStream);
                break;

            case AudioFormat.Other:
            default:
                var tempPath = Path.GetTempFileName();
                AppDomain.CurrentDomain.ProcessExit += (o, e) =>
                {
                    File.Delete(tempPath);
                };
                var tempFileStream = File.OpenWrite(tempPath);
                fileInputStream.CopyTo(tempFileStream);
                tempFileStream.Close();
                Console.Error.WriteLine($"Creating MediaFoundationReader with file = {tempPath}");
                readerStream = new MediaFoundationReader(tempPath);
                break;
            }

            if (maxSeconds.HasValue)
            {
                readerStream = new CapSecondsByAverageStream(readerStream, maxSeconds.Value);
                seconds      = Math.Min(maxSeconds.Value,
                                        (int)(readerStream.Length / readerStream.WaveFormat.AverageBytesPerSecond));
            }
            else
            {
                seconds = (int)(readerStream.Length / readerStream.WaveFormat.AverageBytesPerSecond);
            }

            readerStream = NormalizeWaveFormat(readerStream);

            return(readerStream);
        }
Beispiel #13
0
        /// <summary>
        /// Creates an input WaveChannel (Audio file reader for MP3/WAV/OGG/FLAC/WMA/AIFF/Other formats in the future)
        /// </summary>
        /// <param name="filename"></param>
        private void CreateInputWaveChannel(string filename)
        {
            string fileExt = Path.GetExtension(filename.ToLower());

            if (fileExt == MP3Extension)
            {
                m_waveReader         = new Mp3FileReader(filename);
                m_blockAlignedStream = new BlockAlignReductionStream(m_waveReader);
                // Wave channel - reads from file and returns raw wave blocks
                m_waveChannel = new WaveChannel32(m_blockAlignedStream);
            }
            else if (fileExt == WAVExtension)
            {
                m_waveReader = new WaveFileReader(filename);
                if (m_waveReader.WaveFormat.Encoding != WaveFormatEncoding.Pcm)
                {
                    m_waveReader = WaveFormatConversionStream.CreatePcmStream(m_waveReader);
                    m_waveReader = new BlockAlignReductionStream(m_waveReader);
                }
                if (m_waveReader.WaveFormat.BitsPerSample != 16)
                {
                    var format = new WaveFormat(m_waveReader.WaveFormat.SampleRate,
                                                16, m_waveReader.WaveFormat.Channels);
                    m_waveReader = new WaveFormatConversionStream(format, m_waveReader);
                }

                m_waveChannel = new WaveChannel32(m_waveReader);
            }
            else if (fileExt == OGGVExtension)
            {
                m_waveReader = new OggVorbisFileReader(filename);
                if (m_waveReader.WaveFormat.Encoding != WaveFormatEncoding.Pcm)
                {
                    m_waveReader = WaveFormatConversionStream.CreatePcmStream(m_waveReader);
                    m_waveReader = new BlockAlignReductionStream(m_waveReader);
                }
                if (m_waveReader.WaveFormat.BitsPerSample != 16)
                {
                    var format = new WaveFormat(m_waveReader.WaveFormat.SampleRate,
                                                16, m_waveReader.WaveFormat.Channels);
                    m_waveReader = new WaveFormatConversionStream(format, m_waveReader);
                }

                m_waveChannel = new WaveChannel32(m_waveReader);
            }
            else if (fileExt == FLACExtension)
            {
                m_waveReader = new FLACFileReader(filename);
                if (m_waveReader.WaveFormat.Encoding != WaveFormatEncoding.Pcm)
                {
                    m_waveReader = WaveFormatConversionStream.CreatePcmStream(m_waveReader);
                    m_waveReader = new BlockAlignReductionStream(m_waveReader);
                }
                if (m_waveReader.WaveFormat.BitsPerSample != 16)
                {
                    var format = new WaveFormat(m_waveReader.WaveFormat.SampleRate,
                                                16, m_waveReader.WaveFormat.Channels);
                    m_waveReader = new WaveFormatConversionStream(format, m_waveReader);
                }

                m_waveChannel = new WaveChannel32(m_waveReader);
            }
            else if (fileExt == WMAExtension)
            {
                m_waveReader = new WMAFileReader(filename);
                if (m_waveReader.WaveFormat.Encoding != WaveFormatEncoding.Pcm)
                {
                    m_waveReader = WaveFormatConversionStream.CreatePcmStream(m_waveReader);
                    m_waveReader = new BlockAlignReductionStream(m_waveReader);
                }
                if (m_waveReader.WaveFormat.BitsPerSample != 16)
                {
                    var format = new WaveFormat(m_waveReader.WaveFormat.SampleRate,
                                                16, m_waveReader.WaveFormat.Channels);
                    m_waveReader = new WaveFormatConversionStream(format, m_waveReader);
                }

                m_waveChannel = new WaveChannel32(m_waveReader);
            }
            else if (fileExt == AIFFExtension)
            {
                m_waveReader  = new AiffFileReader(filename);
                m_waveChannel = new WaveChannel32(m_waveReader);
            }
            else
            {
                throw new ApplicationException("Cannot create Input WaveChannel - Unknown file type: " + fileExt);
            }
        }
Beispiel #14
0
        private void printAudioWave()
        {
            BinaryReader binRead    = null;
            uint         dataSize   = 0;
            int          numSamples = 0;

            Point[]      points         = new Point[pictureBox.Width];
            int          coefForWidth   = 0;
            int          coeffForHeight = 0;
            Pen          penCountur     = new Pen(Color.Black, 2);
            SolidBrush   drawBrush      = new SolidBrush(Color.Black);
            StringFormat drawFormat     = new StringFormat();
            Graphics     graphicMain    = pictureBox.CreateGraphics();

            switch (currentAudioFormat)
            {
            case "wav":
                Cursor.Current = Cursors.WaitCursor;
                fileStreamInput.Read(new byte[4], 0, 4);
                binRead   = new BinaryReader(fileStreamInput);
                dataSize  = (uint)(fileStreamInput.Length / 4);
                audioData = new Int16[dataSize];
                fileStreamInput.Seek(40, System.IO.SeekOrigin.Begin);
                numSamples = (int)(dataSize / 1);
                for (int i = 0; i < numSamples; i++)
                {
                    audioData[i] = binRead.ReadInt16();
                }
                coefForWidth   = (int)(audioData.Length / (pictureBox.Width));
                coeffForHeight = (int)(65536 / (pictureBox.Height - 40));
                for (int i = 0; i < pictureBox.Width; i++)
                {
                    points[i] = new Point(i, (int)((audioData[i * coefForWidth] / coeffForHeight) + (pictureBox.Height / 2)));
                }
                graphicMain.Clear(Color.White);
                graphicMain.DrawLines(penCountur, points);
                Cursor.Current = Cursors.Default;
                break;

            case "aiff":
                Cursor.Current = Cursors.WaitCursor;
                string tempFileName = Path.Combine(Environment.CurrentDirectory, "temp.wav");
                using (AiffFileReader reader = new AiffFileReader(inputAudioFile))
                {
                    using (WaveFileWriter writer = new WaveFileWriter(tempFileName, reader.WaveFormat))
                    {
                        byte[] buffer    = new byte[4096];
                        int    bytesRead = 0;
                        do
                        {
                            bytesRead = reader.Read(buffer, 0, buffer.Length);
                            writer.Write(buffer, 0, bytesRead);
                        } while (bytesRead > 0);
                    }
                }
                FileStream tempFileStreamInput = new FileStream(tempFileName, FileMode.Open, FileAccess.Read);
                tempFileStreamInput.Read(new byte[4], 0, 4);
                binRead   = new BinaryReader(tempFileStreamInput);
                dataSize  = (uint)(tempFileStreamInput.Length / 4);
                audioData = new Int16[dataSize];
                tempFileStreamInput.Seek(40, System.IO.SeekOrigin.Begin);
                numSamples = (int)(dataSize / 1);
                for (int i = 0; i < numSamples; i++)
                {
                    audioData[i] = binRead.ReadInt16();
                }
                tempFileStreamInput.Close();
                File.Delete(tempFileName);
                coefForWidth   = (int)(audioData.Length / (pictureBox.Width));
                coeffForHeight = (int)(65536 / (pictureBox.Height - 40));
                for (int i = 0; i < pictureBox.Width; i++)
                {
                    points[i] = new Point(i, (int)((audioData[i * coefForWidth] / coeffForHeight) + (pictureBox.Height / 2)));
                }
                graphicMain.Clear(Color.White);
                graphicMain.DrawLines(penCountur, points);
                Cursor.Current = Cursors.Default;
                break;

            default:
                break;
            }
        }
        public void CreateCurrentSongImage(AudioFile audioFile)
        {
            try
            {
                int        bytesPerSample = 0;
                WaveStream reader;
                switch (audioFile.Format.ToLower())
                {
                case ".mp3":
                    reader = new Mp3FileReader(audioFile.Path);
                    break;

                case ".wav":
                    reader = new WaveFileReader(audioFile.Path);
                    break;

                case ".aiff":
                    reader = new AiffFileReader(audioFile.Path);
                    break;

                default:
                    reader = new AudioFileReader(audioFile.Path);
                    break;
                }

                using (NAudio.Wave.WaveChannel32 channelStream = new NAudio.Wave.WaveChannel32(reader))
                {
                    //initialize the progress bar, once the audio stream has been created
                    _progBar.Maximum = (int)reader.TotalTime.TotalMilliseconds / _visEventTimer.Interval;

                    bytesPerSample = (reader.WaveFormat.BitsPerSample / 8) * channelStream.WaveFormat.Channels;

                    //Give a size to the bitmap; either a fixed size, or something based on the length of the audio
                    using (Bitmap bitmap = new Bitmap((int)Math.Round(reader.TotalTime.TotalSeconds * 80), 300))
                    {
                        int width  = bitmap.Width;
                        int height = bitmap.Height;

                        using (Graphics graphics = Graphics.FromImage(bitmap))
                        {
                            graphics.Clear(Color.White);
                            Pen bluePen = new Pen(Color.Blue);

                            int    samplesPerPixel = (int)(reader.Length / (double)(width * bytesPerSample));
                            int    bytesPerPixel   = bytesPerSample * samplesPerPixel;
                            int    bytesRead;
                            byte[] waveData = new byte[bytesPerPixel];

                            for (float x = 0; x < width; x++)
                            {
                                bytesRead = reader.Read(waveData, 0, bytesPerPixel);
                                if (bytesRead == 0)
                                {
                                    break;
                                }

                                short low  = 0;
                                short high = 0;
                                for (int n = 0; n < bytesRead; n += 2)
                                {
                                    short sample = BitConverter.ToInt16(waveData, n);
                                    if (sample < low)
                                    {
                                        low = sample;
                                    }
                                    if (sample > high)
                                    {
                                        high = sample;
                                    }
                                }
                                float lowPercent  = ((((float)low) - short.MinValue) / ushort.MaxValue);
                                float highPercent = ((((float)high) - short.MinValue) / ushort.MaxValue);
                                float lowValue    = height * lowPercent;
                                float highValue   = height * highPercent;
                                graphics.DrawLine(bluePen, x, lowValue, x, highValue);
                            }
                        }

                        _currentSongImage = new System.Drawing.Bitmap(bitmap);
                        bitmap.Dispose();
                    }
                }

                reader.Dispose();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
 public AIFFMemorySoundFX(AiffFileReader reader) : base(reader)
 {
 }