]> icculus.org git repositories - btb/d2x.git/blob - arch/dos/allg_snd/sound/drv/emu8k.h
This commit was generated by cvs2svn to compensate for changes in r2,
[btb/d2x.git] / arch / dos / allg_snd / sound / drv / emu8k.h
1 /*--------------------------------------------------------------------------
2  *  emu8k.h - low-level functions for AWE32 driver
3  *--------------------------------------------------------------------------
4  *
5  * (c) George Foot April-September 1997
6  *
7  * Information taken primarily from "AWE32/EMU8000 Programmer's Guide"
8  * (AEPG) by Dave Rossum. The AEPG is part of the AWE32 Developers'
9  * Information Pack (ADIP) from Creative Labs.
10  *
11  * I/O port verification technique taken from "The Un-official Sound
12  * Blaster AWE32 Programming Guide" by Vince Vu a.k.a. Judge Dredd
13  *
14  */
15
16 #ifndef EMU8K_H
17 #define EMU8K_H
18
19 #include <stdlib.h>
20
21 typedef struct envparms_t {
22  int envvol,  envval,  dcysus,  atkhldv,
23      lfo1val, atkhld,  lfo2val, ip,
24      ifatn,   pefe,    fmmod,   tremfrq,
25      fm2frq2, dcysusv, ptrx,    psst,
26      csl,     ccca,    rootkey, ipbase,
27      ipscale, minkey,  maxkey,  minvel,
28      maxvel,  key,     vel,     exc,
29      keyMEH,  keyMED,  keyVEH,  keyVED,
30      filter,  atten,   smpmode, volrel,
31      modrel,  pan,     loopst,  reverb,
32      chorus,  volsust, modsust, pitch,
33      sampend;
34 } envparms_t;
35
36 #define sfgen_startAddrsOffset                  0
37 #define sfgen_endAddrsOffset                    1
38 #define sfgen_startloopAddrsOffset              2
39 #define sfgen_endloopAddrsOffset                3
40 #define sfgen_startAddrsCoarseOffset            4
41 #define sfgen_modLfoToPitch                     5
42 #define sfgen_vibLfoToPitch                     6
43 #define sfgen_modEnvToPitch                     7
44 #define sfgen_initialFilterFc                   8
45 #define sfgen_initialFilterQ                    9
46 #define sfgen_modLfoToFilterFc                  10
47 #define sfgen_modEnvToFilterFc                  11
48 #define sfgen_endAddrsCoarseOffset              12
49 #define sfgen_modLfoToVolume                    13
50 #define sfgen_chorusEffectsSend                 15
51 #define sfgen_reverbEffectsSend                 16
52 #define sfgen_pan                               17
53 #define sfgen_delayModLFO                       21
54 #define sfgen_freqModLFO                        22
55 #define sfgen_delayVibLFO                       23
56 #define sfgen_freqVibLFO                        24
57 #define sfgen_delayModEnv                       25
58 #define sfgen_attackModEnv                      26
59 #define sfgen_holdModEnv                        27
60 #define sfgen_decayModEnv                       28
61 #define sfgen_sustainModEnv                     29
62 #define sfgen_releaseModEnv                     30
63 #define sfgen_keynumToModEnvHold                31
64 #define sfgen_keynumToModEnvDecay               32
65 #define sfgen_delayVolEnv                       33
66 #define sfgen_attackVolEnv                      34
67 #define sfgen_holdVolEnv                        35
68 #define sfgen_decayVolEnv                       36
69 #define sfgen_sustainVolEnv                     37
70 #define sfgen_releaseVolEnv                     38
71 #define sfgen_keynumToVolEnvHold                39
72 #define sfgen_keynumToVolEnvDecay               40
73 #define sfgen_instrument                        41
74 #define sfgen_keyRange                          43
75 #define sfgen_velRange                          44
76 #define sfgen_startloopAddrsCoarseOffset        45
77 #define sfgen_keynum                            46
78 #define sfgen_velocity                          47
79 #define sfgen_initialAttenuation                48
80 #define sfgen_endloopAddrsCoarseOffset          50
81 #define sfgen_coarseTune                        51
82 #define sfgen_fineTune                          52
83 #define sfgen_sampleID                          53
84 #define sfgen_sampleModes                       54
85 #define sfgen_initialPitch                      55
86 #define sfgen_scaleTuning                       56
87 #define sfgen_exclusiveClass                    57
88 #define sfgen_overridingRootKey                 58
89
90 #define gfgen_startAddrs                        59
91 #define gfgen_startloopAddrs                    60
92 #define gfgen_endloopAddrs                      61
93 #define gfgen_endAddrs                          62
94
95 #define SOUNDFONT_NUM_GENERATORS                63
96
97 typedef int generators_t[SOUNDFONT_NUM_GENERATORS];
98
99 /*extern envparms_t env_default;*/
100 extern int _emu8k_baseport;
101 extern int _emu8k_numchannels;
102
103 void emu8k_init();
104 void emu8k_startsound(int channel,struct envparms_t *envparms);
105 void emu8k_releasesound(int channel,struct envparms_t *envparms);
106 void emu8k_terminatesound(int channel);
107 int  emu8k_detect();
108
109 void emu8k_modulate_atten (int channel, int atten);
110 void emu8k_modulate_ip (int channel, int ip);
111 void emu8k_modulate_pan (int channel, int pan);
112
113 envparms_t *emu8k_createenvelope(generators_t);
114 void emu8k_destroyenvelope(envparms_t *);
115
116 void emu8k_lock();
117
118 void *_lock_malloc(size_t size);                /* malloc and lock */
119
120 #endif
121