КАТЕГОРИИ: Архитектура-(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 набор частот соответствующие нотам различных октав
Для использования в процедуре 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 и запишите файл на диск под соответствующим именем, а затем откомпилируйте его и проверьте действие программы.
Дата добавления: 2014-01-11; Просмотров: 922; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |