#include <math.h>
#include <windows.h>
#define TEMPO 1200
#define BASE 440
DWORD GetDuration(nom, denom)
int nom, denom;
{
return TEMPO * nom / denom;
}
void Play(n, nom, denom)
int n, nom, denom;
{
DWORD frequency = (DWORD) (BASE * pow(2.0, n / 12.0));
DWORD duration = GetDuration(nom, denom);
Beep(frequency, duration);
}
void Pause(nom, denom)
int nom, denom;
{
DWORD duration = GetDuration(nom, denom);
Sleep(duration);
}
void PlayPhrase(int a, int b) {
Play(a, 1, 8);
Play(b, 1, 2);
Pause(3, 8);
}
main() {
int i;
while (1) {
PlayPhrase(7, 10);
PlayPhrase(10, 7);
for (i = 0; i < 4; i++) {
Play(12, 1, 8);
Play(10, 1, 8);
}
PlayPhrase(12, 14);
}
return 0;
}
Музыка и динамик
Как можно проиграть музыку через динамик(пиканьем...тобишь по нотам) используя СИ?:confused:
Используя Си.. где??!
на компе.
f("a1") = 440 (Гц)
Чстота тона ля второй октавы будет в два раза выше:
f("a2") = 2*440 = 880 (Гц)
Частота тонf ля третьей октавы будет ещё в два раза выше:
f("a3") = 2*880 = 1760 (Гц)
В октаве 12 полутонов, каждую октаву частота возрастает в два раза.
Для того, чтобы повысить звук с частотой f на n полутонов, можно воспользоваться формулой:
f' = f * 2^(n/12)
n могут быть и отрицательными.
Вот берёте за основу какую-либо ступень, а ноты задаёте приращением в полутонах.
Стандартную функцию для пищалки не знаю, в виндах юзал Beep().
Код:
Цитата:
на компе.
шикарный ответ.
Цитата: Der Meister
Пусть известна частота тона ля первой отктавы:
f(a1) = 440 (Гц)
Чстота ля тона второй октавы будет в два раза выше:
f(a2) = 2*440 = 880 (Гц)
Частота тона ля третьей октавы будет ещё в два раза выше:
f(a3) = 2*880 = 1760 (Гц)
В октаве 12 полутонов, каждую октаву частота возрастает в два раза.
Для того, чтобы повысить звук с частотой f на n полутонов, можно воспользоваться формулой:
f' = f * 2^(n/12)
n могут быть и отрицательными.
Вот берёте за основу какую-либо ступень, а ноты задаёте приращением в полутонах.
Стандартную функцию для пищалки не знаю, в виндах юзал Beep()
f(a1) = 440 (Гц)
Чстота ля тона второй октавы будет в два раза выше:
f(a2) = 2*440 = 880 (Гц)
Частота тона ля третьей октавы будет ещё в два раза выше:
f(a3) = 2*880 = 1760 (Гц)
В октаве 12 полутонов, каждую октаву частота возрастает в два раза.
Для того, чтобы повысить звук с частотой f на n полутонов, можно воспользоваться формулой:
f' = f * 2^(n/12)
n могут быть и отрицательными.
Вот берёте за основу какую-либо ступень, а ноты задаёте приращением в полутонах.
Стандартную функцию для пищалки не знаю, в виндах юзал Beep()
А если использовать: printf("/a");?
Цитата: Alm3n
шикарный ответ.
Ну какой есть, зато правда:)))
Цитата: CilCatblack
Ну какой есть, зато правда:)))
никто просто не поймет какой звук(через системный бипер или через колонки), в какой ОСи и какими средствами нужно его воспроизвести и не даст полного ответа.
Api функция Beep, если Windows. sound функция, прототип в dos.h
Der Meister,Alm3n Спасибо. Типерь понятно.