Для имитации звука взрыва, который
Для имитации звука взрыва, который используется во многих видеоиграх, можно модифицировать функцию siren() таким образом, чтобы она позволяла генерировать звук лишь нисходящей частоты. Функция laser(), представленная ниже, позволяет получить этот эффект.
#define DELAY 10000
/* получение эффекта взрыва */
void laser()
unsigned i,freq;
union
long divisor;
unsigned char c[2];
count;
unsigned char p;
p = inportb(97); /* чтение существующего шаблона бит */
outportb(97,p|3); /* установка бит 0 и 1 */
/* взрыв */
for (;freq>1000;freq-=RATE)
count.divisor = 1193280 / freq; /* вычисление нужного
значения счетчика */
outportb(67,182); /* обращение к таймеру 8253 после
определения значения счетчика */ outportb(66,count.c[0]); /* пересылка младшего байта */ outportb(66,count.c[1]); /* пересылка старшего байта */
for (i = 0;i<DELAY;++i);
outportb(97,p); /* восстановление начального вида шаблона
бит для отключения динамика */
После небольшого экспериментирования вы сможете сами создавать широкий спектр звуковых эффектов. Интерес представляет варьирование скоростью изменения частоты звука для получения определенных эффектов.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий