- PVSM.RU - https://www.pvsm.ru -

Заставляем компьютер играть любимые мелодии с помощью WinAPI

Заставляем компьютер играть любимые мелодии с помощью WinAPI В этой статье я расскажу о том, как очень просто с помощью C++ Builder XE2 и WinAPI сделать так, чтобы системный динамик компьютера играл мелодии. Сразу скажу, что люди, не обладающие хотя бы элементарными познаниями в музыке, врядли смогут этим воспользоваться.

Итак, нам понадобятся всего лишь две функции — Beep() и Sleep(). Первая принимает два параметра — частоту и длительность ноты, вторая один — длительность задержки. Время указывается в миллисекундах. Частоты нот можно найти тут [1].

Хит прошлого года — «Барбара Стрейзенд»:

<code class="cpp">#include <iostream.h>
#include <windows.h>

int main() {

       // Нотки	
       float B = 493.88,
              D = 587.32,
              A = 440.00,
              G = 392.00;

	Beep(B, 300);
	Beep(D, 300);
	Beep(B, 300);
	Beep(D, 600);

	Beep(B, 300);
	Beep(A, 300);
	Beep(B, 600);

	Beep(A, 300);
	Beep(G, 300);
	Beep(A, 600);
	Beep(G, 600);

	return 0;
}


Для удобства я вынес ноты в переменные и визуально разделил вызовы функций, чтобы было лучше видно, где какой кусок играется.

Еще один банальный пример, «В траве сидел кузнечик»:

#include <iostream.h>
#include <windows.h>

int main() {

	// Нотки
	float A  = 440.00,
               E  = 329.63,
	       Ab = 415.30,
	       H  = 493.88,
	       C  = 523.25;

	// В траве сидел кузнечик
        Beep(A, 300);
	Beep(E, 300);
	Beep(A, 300);
	Beep(E, 300);
	Beep(A, 300);
	Beep(Ab, 300);
	Beep(Ab, 300);

	// Тишина
        Sleep(600);

	// В траве сидел кузнечик
        Beep(Ab, 300);
	Beep(E, 300);
	Beep(Ab, 300);
	Beep(E, 300);
	Beep(Ab, 300);
	Beep(A, 300);
	Beep(A, 300);

	// Тишина
        Sleep(600);

	// Представьте себе
        Beep(A, 300);
	Beep(H, 300);

	Beep(H, 100);
	Beep(H, 100);
	Beep(H, 300);

	// Представьте себе
        Beep(H, 300);
	Beep(C, 300);

	Beep(C, 100);
	Beep(C, 100);
	Beep(C, 300);

	// Зелененький он был
        Beep(C, 300);
	Beep(C, 300);
	Beep(H, 300);
	Beep(A, 300);
	Beep(Ab, 300);
	Beep(A, 800);

	return 0;
}

Как видите, все просто. Приятного использования.

P.S. Должно работать и в предыдущих версиях C++ Builder (нет возможности проверить).

Автор: ledniov


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/winapi/3381

Ссылки в тексте:

[1] тут: http://www.gitaristam.ru/school/frequency.htm