Кодинг
★ Рубрика: Кодинг
★ Тема: Pascal

Звук в Паскале

Звуковое сопровождение программы используется как правило для привлечения внимания во время аварийных ситуаций, для сигнализации окончания программы, для указания на этапы выполнения программы, для звукового сопровождения заставок, игр и т.п. Работу со звуком через динамик компьютера обеспечивает модуль 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.
Пример. Мелодия
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.
 Похожие публикации: Pascal

Войти и комментировать [ Вход | Регистрация ]