IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> музыка в Pascal
Студент
сообщение 7.06.2004 21:05
Сообщение #1





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


можноли записать музыку в Pascal, и если можно то с помощйю чего.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Гость
сообщение 8.11.2007 22:25
Сообщение #2


Гость






F=Round(440*Exp(Ln(2)*(No-(10-Nn)/12)));
где No - номер октавы -3<= No <=4; Для основной октавы No=0.
Nn - номер ноты 1 - До, 2 - До#, 3 - Ре, и т. д. 12 - Cи.
вот так делаются ноты, но что бы не писать это для каждой ноты, моим модулем можно сделать как бы нотный стан и использовать только процедуру сануд с указанной нотой

Принцип работы:

1)Подключаем модуль
Uses Musik;

2)В разделе переменных задаем 5 массивов
Var
mus,mus1,mus2,mus_1,mus_2:array [1..12] of integer;
(Примечание! Элементов массива должно быть только 12! Они соответствуют номерам каждой ноты!)

3)в тексте основной программы вызывается процедура
New_song(i,mus,mus1,mus2,mus_1,mus_2);
где i - не нужный параметр, но его необходимо задавать, вместо i можно подставить любую переменную
типа integer;

После выполнения процедуры ваши массивы будут заполнены нотами, соответственно:
mus - 12 нот 0-вой октавы
mus1 - 12 нот 1-й октавы
mus_1 - 12 нот -1 октавы
(12- всмысле идет нота До, потом До диез, Ре и т.д.......
0-ая октава - это имеется ввиду начальная октава, 1 октава - вверх,
-1 октава - на 1 октаву вниз)
________________________________________________
откомпилируйте это в модуль:
Unit Musik;

Interface
Uses Crt;

Procedure New_song(i:integer;var mmus,mmus1,mmus2,mmus_1,mmus_2:array of integer);

Implementation
Procedure New_song;


BEGIN
i:=1;
While i<=12 do
begin
mmus[i]:=round(440*exp(Ln(2)*(0-(10-i)/12)));
inc(i);
end;

i:=1;
While i<=12 do
begin
mmus1[i]:=round(440*exp(Ln(2)*(1-(10-i)/12)));
inc(i);
end;

i:=1;
While i<=12 do
begin
mmus2[i]:=round(440*exp(Ln(2)*(2-(10-i)/12)));
inc(i);
end;

i:=1;
While i<=12 do
begin
mmus_1[i]:=round(440*exp(Ln(2)*(-1-(10-i)/12)));
inc(i);
end;

i:=1;
While i<=12 do
begin
mmus_2[i]:=round(440*exp(Ln(2)*(-2-(10-i)/12)));
inc(i);
end;
end;
end.


Сообщение отредактировано: Lapp - 9.11.2007 3:14
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.07.2025 15:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"