Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

playing .wav file with C#

Tags:

c#

I'm trying to play a .Wav file thats located in a folder inside my project.

The sound file is located on "Resource/Sounds/slot_roll_on.Wav"

The resource folder is a folder I created myself, in the root of the project.

This is the code I'm using to run the .wav file

        Assembly a = Assembly.GetExecutingAssembly();
        Stream s = a.GetManifestResourceStream("kisscam.g.resources.Resources.Sounds.slot_roll_on.wav");
        SoundPlayer snd = new SoundPlayer(s);
        snd.Play();

I couldn't get the sound to play, I keep getting the windows sound for sound not found.

Somewhere on stack overflow I found this code to find what the right assembly path should be.

            Assembly a = Assembly.GetExecutingAssembly();
            string[] resourceNames = Assembly.GetExecutingAssembly().GetManifestResourceNames();
            int i;
            for (i = 0; i < resourceNames.Length; i++)
            {

                MessageBox.Show(resourceNames[i]);


            }

It output these 2 paths

kisscam.Properties.Resources.resources

and

kissscam.g.resources

I tried using them both, but none of them works.

Anyone know what I'm doing wrong ?

like image 572
Arcade Avatar asked Jan 23 '13 23:01

Arcade


3 Answers

If you want to add music in your program by playing your .wav file in projects. Then you have to add the .wav file like this.

   using System.Media; //  write down it at the top of the FORM

   SoundPlayer my_wave_file = new SoundPlayer("F:/SOund wave file/airplanefly.wav");
   my_wave_file.PlaySync(); // PlaySync means that once sound start then no other activity if form will occur untill sound goes to finish

Remember that you have to write the path of the file with forward slashes (/) format, don't use back slashes () during giving a path to the file, otherwise you will get an error

like image 134
Pir Fahim Shah Avatar answered Nov 11 '22 12:11

Pir Fahim Shah


Add your Wav file to resources by going to your Project Properties --> Resources Select Audio and Browse to the file. You will then be able to see it as part pf Propeties.Resources. It will add it to a Resources Folder where you can set it to embedded or leave it as is, which is set as content

enter image description here

Accessed like this

private void button1_Click(object sender, EventArgs e)
{
    SoundPlayer snd = new SoundPlayer( Properties.Resources.tada);
    snd.Play();

}
like image 30
Mark Hall Avatar answered Nov 11 '22 11:11

Mark Hall


Currently I know two ways to do so, see below:

  1. Use file path
    First put the file in the root folder of the project, then no matter you run the program under Debug or Release mode, the file can both be accessed for sure. Next use the class SoundPlayer to paly it.

        var basePath = System.AppDomain.CurrentDomain.BaseDirectory;
        SoundPlayer player = new SoundPlayer();
        player.SoundLocation = Path.Combine(basePath, @"./../../Reminder.wav");
        player.Load();
        player.Play();
    
  2. Use resource
    Follow below animate, add "Exsiting file" to the project.

enter image description here

        SoundPlayer player = new SoundPlayer(Properties.Resources.Reminder);
        player.Play();

The strength of this way compared to the other is:
Only the folder "Release" under the "bin" directory need to be copy when run the program.

like image 42
Bravo Yeung Avatar answered Nov 11 '22 11:11

Bravo Yeung