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.
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.