Odgrywanie melodii na głośniczku systemowym
🕰 ✒️ Dawid Farbaniec 📄 260 słów0x01. Funkcja Beep z WinAPI
W interfejsie programowania aplikacji dla Windows® nazywanym w skrócie WinAPI można znaleźć funkcję Beep
. Pozwala ona na odegranie dźwięku na głośniczku systemowym. Odgrywany dźwięk jest prosty (takie Beep :) ), ale można ustawić mu częstotliwość (pierwszy parametr) oraz czas trwania w milisekundach (drugi parametr). Prototyp funkcji prezentuje się następująco:
_In_ DWORD dwFreq,
_In_ DWORD dwDuration
);
0x02. Trochę kodu
Poniżej przedstawiono kod, który odgrywa pewną znaną pieśń. Jeśli ją rozpoznajesz napisz komentarz :)
Kod jest w Visual C++. Jeśli posiadasz środowisko programistyczne Visual Studio to bez problemu możesz go skompilować i uruchomić.
#include <Windows.h>
#include <vector>
class N
{
public:
int frequency;
int duration;
N(int a, int b)
{
frequency = a;
duration = b;
}
};
int main(int argc,char* argv[])
{
std::vector<N> melody(
{
N(1044, 237), N(1044, 475), N(1044, 237), N(1044, 475), N(833, 475), N(934, 475),
N(934, 950), N(934, 475), N(934, 475), N(934, 237), N(1044, 475), N(1175, 237),
N(1044, 950), N(1044, 237), N(1044, 475),N(1044, 237), N(1044, 475), N(833, 475),
N(934, 475), N(934, 950), N(833, 475), N(833, 237), N(833, 237), N(783, 475),
N(783, 475), N(698, 950), N(1044, 950),N(833, 475), N(934, 475), N(1044, 950),
N(1175, 237), N(1044, 475), N(934, 950), N(934, 950), N(783, 475), N(833, 475),
N(934, 950), N(1044, 475), N(833, 237), N(783, 475), N(698, 950)
});
setlocale(LC_ALL, "");
for (auto const&x: melody)
{
std::cout << " Beep(" << x.frequency << "," << x.duration << ");" << std::endl;
Beep(x.frequency, x.duration);
}
std::cout << " Dziękuję." << std::endl;
#if _DEBUG
system("pause>nul");
#endif
return EXIT_SUCCESS;
}
0x03. Posłuchaj melodii
Wideo jest dostępne poniżej (włącz dźwięk!):