Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по TURBO PASCAL.doc
Скачиваний:
18
Добавлен:
04.11.2018
Размер:
1.13 Mб
Скачать
  1. Управление звуком

В модуле crt есть процедуры для воспроизведения простых звуковых эффектов через динамик компьютера. Для этого используется процедура

Sound (f);

Здесь f – целое число, указвыющее частоту звука в герцах. При выполнении этого оператора компьютер включает свой внутренний динамик на указанную частоту и продолжает работать дальше по программе. Для того чтобы заставить динамик компьютера замолчать, надо использовать процедуру

NoSound;

Учтите, что если вы не вызовете эту процедуру перед выходом из программы, то есть вовремя не заставите компьютер замолчать, то он будет пищать даже после завершения работы программы!!

Используя эти операторы можно создавать достаточно интересные звуковые эфекты, например:

Program Vzhik;

Uses crt;

Var i : integer;

Begin

For i := 20 to 10000 do

Sound(i);

NoSound;

End.

Запустите эту программу и наслаждайтесь! Переделайте её так, чтобы частота звука менялась в обратную сторону. Если программа будет работать слишком быстро, используйте процедуру delay (см. ниже).

Можно еще более усилить эффект этой программки, если переписать цикл for так:

For i := 20 to 10000 do

Begin

Sound (i);

Sound (10020-i);

End;

Одним словом вам здесь предоставляется полная свобода действий – эксперементируйте!

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

Delay (ms);

Эта процедура приостанавливает работу программы на ms единиц времени. Предполагалось, что ms – это будет время в миллисекундах, но на самом деле это не так. Оказалось, что эта процедура с одинаковыми параметрами работает разное время на разных компьютерах.

Вот как можно совместно использовать эти операторы в программе:

Program Sound_Demo;

Uses crt;

Begin

Sound (100); Delay (50);

Sound (150); Delay (100);

NoSound;

End.

Если этот оператор вам очень понравился и вы решили писать музыку, то очень удобно будет создать собственную процедуру, для проигрывания одной ноты. Вместе с этой процедурой показанная выше программа изменится следующим образом:

Program Sound_Demo;

Uses crt;

Procedure Beep (note, time : integer);

Begin

If note > 0

Then Sound (note);

Delay (time);

NoSound;

End;

Begin

Beep (100, 100);

Beep (150, 50);

End.

Не правда ли, основная программа теперь записана более компактно?! Мало того, написанная нами процедура позволяет еще задавать паузы в мелодии, для этого первый параметр (частота ноты) должен быть равен нулю.

Думаю, вам будет интересно ввести запустить и прослушать следующий музыкальный фрагмент, написанный на языке Pascal:

program Melody;

uses crt;

const p = 50 ; { Меняя эту константу можно изменить скорость мелодии }

Procedure Beep (note, time : integer);

begin

If note > 0

Then Sound (note);

Delay (time*p);

NoSound;

end;

begin

Beep (330, 2); Beep (439, 2); Beep (414, 2); Beep (439, 2);

Beep (493, 2); Beep (439, 2); Beep (391, 2); Beep (439, 2);

Beep (391, 4); Beep (349, 4); Beep (348, 6); Beep ( 0, 2);

Beep (293, 2); Beep (391, 2); Beep (369, 2); Beep (391, 2);

Beep (439, 2); Beep (391, 2); Beep (293, 2); Beep (348, 2);

Beep (329, 6); Beep ( 0, 6);

Beep (329, 2); Beep (439, 2); Beep (414, 2); Beep (439, 2);

Beep (493, 2); Beep (439, 2); Beep (391, 2); Beep (348, 2);

Beep (329, 4); Beep (293, 4); Beep (439, 6); Beep ( 0, 2);

Beep (329, 2); Beep (523, 2); Beep (493, 2); Beep (439, 2);

Beep (414, 2); Beep (439, 2); Beep (493, 2); Beep (414, 2);

Beep (439, 6); Beep ( 0, 6);

end.

И хотя автор конспекта по специальности не совсем музыкант, всё-таки здесь приведено соответствие между нотами и их частотами.

Таблица 9. Частоты нот

Первая октава

Нота

Частота

Вторая октава

Нота

Частота

Третья октава

Нота

Частота

Do

131

Do

261

Do

522

Do#

138

Do#

277

Do#

553

Re

146

Re

293

Re

586

Re#

155

Re#

310

Re#

621

Mi

164

Mi

329

Mi

658

Fa

174

Fa

348

Fa

697

Fa#

185

Fa#

369

Fa#

738

Sol

196

Sol

391

Sol

782

Sol#

207

Sol#

414

Sol#

829

La

219

La

439

La

878

La#

233

La#

465

La#

930

Si

246

Si

493

Si

985