How to make the hardware beep sound with c++?
112 Answers
Print the special character ASCII BEL (code 7)
cout << '\a'; 3If you're using Windows OS then there is a function called Beep()
#include <iostream> #include <windows.h> // WinApi header using namespace std; int main() { Beep(523,500); // 523 hertz (C5) for 500 milliseconds cin.get(); // wait return 0; } For Linux based OS there is:
echo -e "\007" >/dev/tty10 And if you do not wish to use Beep() in windows you can do:
echo "^G" 2There are a few OS-specific routines for beeping.
On a Unix-like OS, try the (n)curses beep() function. This is likely to be more portable than writing
'\a'as others have suggested, although for most terminal emulators that will probably work.In some *BSDs there is a PC speaker device. Reading the driver source, the
SPKRTONEioctl seems to correspond to the raw hardware interface, but there also seems to be a high-level language built aroundwrite()-ing strings to the driver, described in the manpage.It looks like Linux has a similar driver (see this article for example; there is also some example code on this page if you scroll down a bit.).
In Windows there is a function called Beep().
alternatively in c or c++ after including stdio.h
char d=(char)(7); printf("%c\n",d); (char)7 is called the bell character.
std::cout << '\7'; Here's one way:
cout << '\a'; From C++ Character Constants:
Alert: \a
#include<iostream> #include<conio.h> #include<windows.h> using namespace std; int main() { Beep(1568, 200); Beep(1568, 200); Beep(1568, 200); Beep(1245, 1000); Beep(1397, 200); Beep(1397, 200); Beep(1397, 200); Beep(1175, 1000); cout<<endl; _getch() return 0 } 0You could use conditional compilation:
#ifdef WINDOWS #include <Windows.h> void beep() { Beep(440, 1000); } #elif LINUX #include <stdio.h> void beep() { system("echo -e "\007" >/dev/tty10"); } #else #include <stdio.h> void beep() { cout << "\a" << flush; } #endif 1I tried most things here, none worked on my Ubuntu VM.
Here is a quick hack (credits goes here):
#include <iostream> int main() { system("(speaker-test -t sine -f 1000)& pid=$!; sleep 1.0s; kill -9 $pid"); } It will basically use system's speaker-test to produce the sound. This will not terminate quickly though, so the command runs it in background (the & part), then captures its process id (the pid=$1 part), sleeps for a certain amount that you can change (the sleep 1.0s part) and then it kills that process (the kill -9 $pid part).
sine is the sound produced. You can change it to pink or to a wav file.
Easiest way is probbaly just to print a ^G ascii bell
1The ASCII bell character might be what you are looking for. Number 7 in this table.
cout << "\a"; In Xcode, After compiling, you have to run the executable by hand to hear the beep.