Search code examples
c#hardwarebeep

How to beep using PC speaker?


I want to make a beep sound using PC speaker in C#. When using the following code:

[DllImport("kernel32.dll", EntryPoint = "Beep", SetLastError = true,
ExactSpelling = true)]
public static extern bool Beep(uint frequency, uint duration);

static void Main()
{
    while (true)
    {
        Beep(1000, 500);
        Thread.Sleep(2000);
    }
}

instead of beeping through the PC speaker, it simply outputs a sound of a given frequency and duration to the default sound device (as a headset for example). The same thing happens when using Console.Beep().

Why?

Notes:

  • The PC speaker is on. When I start the PC, it beeps.

  • The OS is Windows 8.


Solution

  • Do you have any 32 bit Windows machines lying around? Try Console.Beep(); on one of those, the PC speaker will beep.

    On 64 bit Windows (XP, Vista, 7 or 8) the driver to do this isn't present so it will come out of the speaker plugged into the machine instead.

    Also, correct me if I'm wrong but I would hazard a guess that the beep you hear whenever your PC turns on is from your BIOS, before you actually hit Windows 8.