1 /*--------------------------------------------------------------------------
2 * emu8k.h - low-level functions for AWE32 driver
3 *--------------------------------------------------------------------------
5 * (c) George Foot April-September 1997
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.
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
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,
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
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
90 #define gfgen_startAddrs 59
91 #define gfgen_startloopAddrs 60
92 #define gfgen_endloopAddrs 61
93 #define gfgen_endAddrs 62
95 #define SOUNDFONT_NUM_GENERATORS 63
97 typedef int generators_t[SOUNDFONT_NUM_GENERATORS];
99 /*extern envparms_t env_default;*/
100 extern int _emu8k_baseport;
101 extern int _emu8k_numchannels;
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);
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);
113 envparms_t *emu8k_createenvelope(generators_t);
114 void emu8k_destroyenvelope(envparms_t *);
118 void *_lock_malloc(size_t size); /* malloc and lock */