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