русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Подача звуковых сигналов


Дата добавления: 2015-06-12; просмотров: 1114; Нарушение авторских прав


Звуковые процедуры Sound ( Hz : Word ) и Nosound дают доступ к встроенному динамику ПЭВМ. Процедура Sound включает звук с заданной частотой тона в герцах. После включения звука программа выполняется дальше. Более того, если сама программа «забудет» выключить звук, то придется добавлять к ней в конец оператор NoSound под непрекращающийся аккомпанемент динамика. Набор звуковых команд всегда должна завершать процедура NoSound, выключающая динамик, хотя вызовов процедур Sound может быть сколько угодно. В таком случае звук не будет прекращаться, но будет менять свою частоту согласно заданным аргументам. Можно, например, в начало каждой процедуры поставить команду Sound с различными частотами. Тогда при работе программа будет издавать трели.

Очень часто процедуры Sound и NoSound используются вместе с процедурой задержки времени Delay(ms). Например, строка программы

Sound(300); Delay (1000); NoSound;

издает ровный звук на частоте 300 Гц продолжительностью 1 с. Но при этом во время звучания программа будет «стоять».

В качестве примера приведем несложную процедуру печати строк в звуковом сопровождении (рис. 15.15):

USES CRT; {Процедура звуковой печати строк } PROCEDURE SoundType( X, Y: Byte; S; String; ms: Word ); CONST Hz = 50; {частота тона } VAR i : Byte;{параметр цикла} BEGIN Dec(X); for i:=1 to Lengh(S) do begin Sound(Hz); Delay(ms); {первый сигнал } GotoXY(X+i, Y); Write(S[i]); {печать символа } Sound(2*Hz); Delay(ms); {второй сигнал } Nosound {снятие звука } end {for} END; BEGIN{--ПРИМЕР ВЫЗОВА--} ClrScr; SoundType(20, 10, ‘0123456789abcdeedcba9876543210’, 40); Readln {пауза до нажатия клавиши ввода } END.

Рис. 15.15 {339}

Если разделять вызовы Sound с разными частотами небольшими задержками, то можно «синтезировать» довольно сложные звуки. Интересные примеры этого приводятся в учебной программе Turbo Pascal Tutor фирмы Borland International. Некоторые из них приведены на рис. 15.16.



PROGRAM Sounds; { Демонстрация звуковых эффектов } USES CRT; { -- ПРОЦЕДУРЫ СИНТЕЗА ЗВУКОВ — } PROCEDURE Phone; { телефонный сигнал } VAR i : Word; BEGIN Repeat { Цикл: } for i:=1 to 100 do begin { собственно сигнал } Sound(1200); Delay(10); NoSound end; Delay(800) { задержка 0,8 с } until KeyPressed { выход - после нажатия клавиши } END; PROCEDURE Bell; { резкий звук } BEGIN Repeat { начало цикла показа } Sound(1800); Delay(2); Sound(2000); Delay(2); Sound(2200); Delay(2); Sound(2400); Delay(2) until KeyPressed; { выход - после нажатия клавиши } NoSound { отключение звучания } END; PROCEDURE Sirena; { имитация сигнала тревоги } VAR i : Word; BEGIN Repeat { основной цикл } for i := 400 to 800 do begin { восходящие тона } Sound( i ); Delay( 3 ) end; for i := 800 downto 400 do begin { нисходящие тона } Sound( i ); Delay( 3 ) end; NoSound { отключение звучания } until KeyPressed { выход - после нажатия клавиши } END;

Рис. 15.16 {340}

PROCEDURE Pause; { очистка буфера клавиатуры и пауза } VAR ch : Char; BEGIN While KeyPressed do ch:=ReadKey; { очистка буфера } Delay( 200 ) { задержка 0,2 с } END; BEGIN {=== основная часть ===} ClrScr; Write('Нажмите любую клавишу'#10#10#13); { Вызовы процедур - "исполнителей": } Write('Звук телефона'#13); Phone; Pause; Write(' Звук зуммера '#13); Bell; Pause; Write(' Звук сирены '#13); Sirena; Pause; ClrScr END.

Рис. 15.16 (окончание)

Вообще говоря, встроенный в ПЭВМ «слабенький» одноголосый динамик можно «заставить» играть джаз и говорить на сносном русском языке. Но это делается с помощью специальных программ, а вручную вряд ли возможно. Зато ввести в программу нехитрые мотивы можно, зная ноты и их частотные эквиваленты в герцах.

Мы предоставляем заинтересованному читателю поупражняться в программировании и написать программу составления таблицы нот по рабочей формуле (в терминах Турбо Паскаля):

VAR

Hz : Word;

OKT : Integer;

NOTA : Byte;

Hz:=Round( 440 * Exp( Ln(2) * (OKT - (10 - NOTA)/12 ) ) );

Здесь OKT — номер одной из восьми октав, покрывающих диапазон от 32 Гц до почти 8 кГц. Самая низкотональная октава в таком диапазоне имеет отрицательный номер (-3) и дальнейшая нумерация соответственно будет -2, -1, 0, 1, ..., +4. Параметр NOTA — это номер ноты в октаве: «До» --> 1, «До-диез» --> 2, «Ре» --> 3, .... «Си» --> 12. {341}



<== предыдущая лекция | следующая лекция ==>
Настройка цвета | Опрос клавиатуры


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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