Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

I. 9.1.1 Управление звуком

 

Для создания звуковых эффектов в Турбо Паскале используются стандартные процедуры Sound, NoSound и Delay модуля CRT.

Sound(I: word) — активизирует звуковые средства персонального компьютера. Целочисленное значение I указывает частоту звучания звука в герцах. Звук указан­ной частоты будет генерироваться до тех пор, пока не будет отменен процедурой NoSound.

NoSound -отмена звука. Отменяет звуковой режим, заданный процедурой Sound.

На некоторых типах персональных компьютеров процедура Sound аппаратно не поддерживается и реализация звуковых эффектов невозможна.

Для указания времени, в течение которого будет продолжаться звучание, исполь-зуется процедура Delay.

 

 

Пример 1. Фрагмент к программе

,,,,,,,,,, begin Sound(500); Delay(2000); NoSound end; …………

В данном примере звуковой сигнал частотой 500 Гц будет звучать в течение

2 с (2000 мс).

С помощью процедур Sound, NoSound, Delay и операторов цикла можно соз-дать самые разнообразные звуковые эффекты: звучание сирены, метро-нома, бу-дильника, пение птиц, фрагменты музыкальных произведений и т.д. Для этого ис-пользуется набор частот или элементы массива, соответствующие нотам различных октав В таблица 4 представлены набор частот соответствующие нотам различных октав.

 

Таблица 4 набор частот соответствующие нотам различных октав

 

Нота Большая октава Малая октава Первая октава Вторая октава
До 130.81 261.63 523.25. 1046.50
Ре 146.83 293.66 587.33 1174.07
Ми 164.81 329.63 659.26 1318.05
Фа 174.61 349.23 698.46 1396.09
Соль 196.00 392.00 784.99 1568.00
Ля 220.00 440.00 880.00 1760.00
Си 246.94 493.88 987.77 1975.00

 

 

Для использования в процедуре Sound все указанные в таблице значения час­тот округляются.

Пример 2.Генерация мелодий

Способ построения мелодичных звуковых рядов с исполь­зование частот, соответствующих нотам. Частоты загружаются в один массив, про­должительность звучания каждой частоты — в другой. В примере представлена процедура, генерирующая гамму с нарастающей продолжительностью звучания ка­ждой ноты.

 

procedure Gamma; {Ноты}

const М:array[1..7] of integer (262,294,330,349,392,440,494);

{Продолжительность звучания}

Т: array[1..7] of integer =(10,11,12,13,14,15,16);

Var I: byte;

begin

while not KeyPressed do

begin for I:= 1 to 7 do begin Sound(M[I]); Delay(T[I]);NoSound end; end;

end;

Меняя значения элементов массивов М и Т, можно добиться довольно хорошей имитации музыкальных произведений.

Пример3: Программа, позволяющая воспроизвести простую музы­кальную гамму (частоты всех полутонов первой октавы записаны в массив F).

program gamma;

uses Crt;

const F: array [1..12] of real =(130.8,138.6,146.8,155.6,164.8, 174.6,185.0,196.0,

207.7,220.0,233.1,246.9); Temp = 150;

Var K,N: integer;

begin

for K:=0 to 3 do

for N:=l to 12 do

begin

Sound(Round(F[N]*(1 shl k))); Delay(Temp); NoSound;

end;

for K:=3 downto 0 do

for N:=12 downto 1 do

begin

Sound(Round(F[N]*(1 shl к))); Delay(Temp); NoSound;

end;

end.

На основе этого примера вы можете создавать фрагменты программ, обеспечи­вающие звуковое сопровождение ваших программ. Обратите внимание на то, что при переходе от одной октавы к соседней частоты изменяются в два раза.

Пример 4:Звуковое сопровождение процесса вывода

Весьма впечатляет вывод информации, сопровождаемый звуковыми эффекта­ми. Он применяется при формировании заставок, подсказок, сообщений об ошиб­ках и т. д. Например, пусть требуется вывести в центр экрана элемент заставки

“ЭКСПЕРТНАЯ СИСТЕМА”

в сопровождении звукового сигнала. Генерацию сигнала оформить в процедуре Zvuk:

 

procedure ZvukOut;

var St: String[40]; I: byte;

procedure Zvuk;

begin Sound(5000);Delay(70);NoSound end; {Zvuk}

begin ClrScr;

St:= 'ЭКСПЕРТНАЯ СИСТЕМА';

GoToXY(18,12);

for I:= 1 to Length(St) do

begin

Write(St[I]);

Zvuk

end end;

Кроме сопровождения вывода строковых и любых других данных в ряде типов программ (например, игровых) требуется формирование более сложных звуков: криков животных, шума автомобильных или авиационных двигателей и т.д. Для организации подобных имитаций требуется определенный навык и опыт работы.

Звуковое сопровождение этапов выполнения программы применяется как дополнительное средство для контроля решения задачи на персональном компью­тере. Во время длительного счета на одной машине пользователь может работать на другом компьютере и следить за работой первой по звуковым сигналам. Звуковое сопровождение может носить самый разнообразный характер: от определенного количества элементарных сигналов типа ^G до имитации человеческого го­лоса.

 

Пример 5: Программа, в которой после выполнения каждо­го из трех блоков на экран выводится сообщение и выдается один или несколько' звуковых сигналов. Количество сигналов равно номеру отработанного блока, program DemoSignal;

………………..

procedure Signal(N:byte);

var I: byte;

begin

for I:= 1 to N do begin Write(AG); Delay(500); End;

end;

begin {Основная программа}

Write('Отработал блок 1');

Signal(1);

Write('Отработал блок 2’);

Signal(2);

Write('Отработал блок 3');

Signal(3);

end.

Заменив в процедуре Signal оператор Write(^G) на имя процедуры, генерирую­щий звуковой ряд, можно добиться повторения его звучания нужное количество раз.

 

Пример 6: Изучите программу Dem_Music, которая имитирует разные звуки.

program Dem_Music;

uses Crt;

{Процедура генерации звуков Bird получает из основной программы три параметра-значения. В зависимости от селектора KindOfBird, ко­торому при вызове процедуры Bird присваивается целочисленное зна­чение от 1 до 4, а также параметров-значений Duration и Pitch, ге­нерируются различные звуки}

procedure Bird(KindOfBird:Byte;Duration:Word; Pitch: integer);

var I, J, К: Integer;

begin I:=1;

case KindOfBird of

1: begin

while I < Duration do

begin

Sound(Pitch + I); Inc (I);NoSound;

end;

begin

J:= I + (I div 10);

while I < Duration do

begin

Sound(Pitch + i); Inc(I);

end;

NoSound;Delay(100);

while I > J do

begin

Sound(Pitch + I); Dec (I);

end;

NoSound;

end;

3: begin

. К:= 1;

while К < Random(20) + 10 do

begin

Sound(Pitch); Delay(30);

Sound(Pitch + (Pitch div 10)) Delay(30); Inc(K);

end;

NoSound;

end;

4: begin

I:= Random(5) + 10; К:= Pitch + (Pitch div 10);

while I > 1 do

begin

J:= Pitch; while J < К do

begin

Sound(J); Delay(6); Inc(J, 10);

end;

NoSound; Delay(40); Dec(I);

end;

end;

end; {Case}

end;

{Основная программа. Пока не нажата любая клавиша, выполняется вы­зов процедуры Bird с параметрами-значениями, величина которых за­дается с использованием функции Random. После нажатия на любую клавишу цикл завершается, звуковой режим отменяется, и программа завершает работу.}

 

begin

Randomize;

repeat {Повторять, пока не нажата любая клавиша} Bird(Succ(Random(4)),Random(2000)+300,Random(4000)+ 200);

Delay(Random(400) + 20);

until KeyPressed;

NoSound;

end.

 

Обратите внимание на применение стандартных процедур Sound, NoSound, Delay, Dec, Inc, функций Random, Succ. Запустите интегрированную среду программирования, введите текст программы Dem_Music и запишите файл на диск под соответствующим именем, а затем откомпилируйте его и проверьте действие программы.

 

<== предыдущая лекция | следующая лекция ==>
Интегрированная среда программирования Turbo Pascal имеет следующие | Для очистки графического окна используется процедура Clearde-vice
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 922; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.