В этой статье я расскажу о том, как очень просто с помощью C++ Builder XE2 и WinAPI сделать так, чтобы системный динамик компьютера играл мелодии. Сразу скажу, что люди, не обладающие хотя бы элементарными познаниями в музыке, врядли смогут этим воспользоваться.
Итак, нам понадобятся всего лишь две функции — Beep() и Sleep(). Первая принимает два параметра — частоту и длительность ноты, вторая один — длительность задержки. Время указывается в миллисекундах. Частоты нот можно найти тут.
Хит прошлого года — «Барбара Стрейзенд»:
<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
Вот бы ещё архивчик с мелодиями прикрепили