Jump to content

Computer Sound

- - - - -

This topic has been archived. This means that you cannot reply to this topic.
3 replies to this topic

#1
Chan

Chan

    Programming Professional

  • Members
  • PipPipPipPipPip
  • 204 posts
How can I add sounds to my program? I want to make a beep like I hear when the computer is first turned on. Anyone know how this is done using .NET language and C#?

#2
v0id

v0id

    Retired

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 2,936 posts
Not all computers make that sound.
Those computers there do probably uses different frequencies though.

If you just want to make a simple "beep", the standard "beep" of the computer, you can simply output '\a'. It will produce a single "beep."
Console.WriteLine("\a");
If you want to be more specific about the frequency of the "beep"/tone, you have to use some library. I don't know if C#'s have some library for it. If it hasn't you can always access the speakers through the speaker port (0x61).

<edit>
I found this thread, on another forum regarding the same problem.
It might be useful for you.

Make a Beep - .NET C#
</edit>

#3
Chan

Chan

    Programming Professional

  • Members
  • PipPipPipPipPip
  • 204 posts
Bingo! The link is what I needed. Thank you!

#4
dirkfirst

dirkfirst

    Programming Expert

  • Members
  • PipPipPipPipPipPip
  • 354 posts
You can also play wav files and other sound formats:

C#

dialog1.Filter = "Wav Files (*.wav)|*.wav";

C#

using System.Windows.Forms;

namespace WinSound
{
    public partial class Form1 : Form
    {
        private TextBox textBox1;
        private Button button1;

        public Form1()  //constructor
        {
            InitializeComponent();
        }

        [System.Runtime.InteropServices.DllImport("winmm.DLL", EntryPoint = "PlaySound", SetLastError = true)]
        private static extern bool PlaySound(string szSound, System.IntPtr hMod, PlaySoundFlags flags);

        [System.Flags] 
        public enum PlaySoundFlags : int
        {
            SND_SYNC = 0x0000,
            SND_ASYNC = 0x0001, 
            SND_NODEFAULT = 0x0002, 
            SND_LOOP = 0x0008, 
            SND_NOSTOP = 0x0010,
            SND_NOWAIT = 0x00002000, 
            SND_FILENAME = 0x00020000, 
            SND_RESOURCE = 0x00040004 
        }

        private void button1_Click (object sender, System.EventArgs e)
        {
            OpenFileDialog dialog1 = new OpenFileDialog(); 

            dialog1.Title = "Browse to find sound file to play";
            dialog1.InitialDirectory = @"c:\";
            dialog1.Filter = "Wav Files (*.wav)|*.wav";
            dialog1.FilterIndex = 2;
            dialog1.RestoreDirectory = true;

            if(dialog1.ShowDialog() == DialogResult.OK) 
            { 
                textBox1.Text = dialog1.FileName;
                PlaySound (dialog1.FileName, new System.IntPtr(), PlaySoundFlags.SND_SYNC);
            } 
        }
    }
}

How to: Use Platform Invoke to Play a Wave File (C#)