2 Управление звуком и музыкой для DOS4GW
4 (C) Алексей Волынсков, 1996
7 #pragma library("sound.lib")
14 #define TIMER_FREQ 1193180L
16 // 1/f доля секунды в еденицах таймера (см. timer)
17 // например: for(timer=0;timer<tlength(25);); // пауза на 1/25 секунды
18 #define tlength(f) (TIMER_FREQ/f)
22 ST_NONE=-1, // нет карты
23 ST_DAC, // побайтовый ЦАП
27 // заголовок инструмента (DMI)
29 unsigned int len, // длина в байтах
30 rate, // частота в Гц.
31 lstart, // начало повтора в байтах от начала данных
32 llen; // длина повтора в байтах
35 // установить драйвер n
37 void set_snd_drv(short n);
39 // проверить наличие звуковой карты
40 // возвращает 0, если карты нет
49 // проиграть звук s на канале c (1-8), частоте r и громкости v (0-255)
50 // возвращает номер канала, на котором играется звук
51 // если c==0, то звук попадет в любой свободный канал
52 // r - это относительная частота (обычно 1024)
53 short S_play(snd_t *s,short c,unsigned r,short v);
55 // остановить звук на канале c (1-8)
58 // установить частоту r у звука на канале c
59 void S_setrate(short c,unsigned r);
61 // установить громкость v (0-255) у звука на канале c
62 void S_setvolume(short c,int v);
65 void S_startmusic(void);
68 void S_stopmusic(void);
70 // включить драйвер таймера
71 // обычно включается при вызове S_init()
74 // выключить драйвер таймера
75 // обычно выключается при вызове S_done()
78 // громкость звука и музыки (0-128)
79 extern short snd_vol,mus_vol;
84 extern unsigned short snd_port,snd_dma,snd_irq;
86 // тип карты (см. выше)
87 extern short snd_type;
90 extern char *snd_name;
92 // частота смешанного звука в Герцах
93 extern unsigned short sfreq;
95 // таблица относительных частот нот
96 extern unsigned short note_tab[96];
99 extern volatile int timer;