Search code examples
c#.netwinformsmemorysoundplayer

Play wav/mp3 from memory


I play mp3/wav from file to create a push effect. However on an Atom CPU based tablet PC, there is a delay when I touch the button.

I'll try to play wav/mp3 from memory instead of file system. Can anyone give a code snippet or a clue?

System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.SoundLocation = System.Windows.Forms.Application.StartupPath + "\\beep-7.wav";
player.Play();

Solution

  • Something like this?

    public class MediaPlayer
    {
        System.Media.SoundPlayer soundPlayer;
    
        public MediaPlayer(byte[] buffer)
        {
            var memoryStream = new MemoryStream(buffer, true);
            soundPlayer = new System.Media.SoundPlayer(memoryStream);
        }
    
        public void Play()
        {
            soundPlayer.Play();
        }
    
        public void Play(byte[] buffer)
        {
            soundPlayer.Stream.Seek(0, SeekOrigin.Begin);
            soundPlayer.Stream.Write(buffer, 0, buffer.Length);
            soundPlayer.Play();
        }
    }