Mario Kart 64
libaudio_internal.h
Go to the documentation of this file.
1 #ifndef _LIBAUDIO_INTERNAL_H_
2 #define _LIBAUDIO_INTERNAL_H_
3 #include <ultra64.h>
4 #define AL_BANK_VERSION 0x4231 /* 'B1' */
5 
6 typedef u8 ALPan;
7 typedef s32 ALMicroTime;
8 
9 /* Possible wavetable types */
10 enum
11 {
14 };
15 
16 typedef struct
17 {
21 } ALRawLoop;
22 
23 typedef struct
24 {
28  ADPCM_STATE state;
29 } ALADPCMloop;
30 
31 typedef struct
32 {
35  s16 book[1]; // variable size, 8-byte aligned
36 } ALADPCMBook;
37 
38 typedef struct
39 {
45 } ALEnvelope;
46 
47 typedef struct
48 {
55 } ALKeyMap;
56 
57 typedef struct
58 {
62 
63 typedef struct
64 {
67 
68 typedef struct ALWaveTable_s
69 {
70  u8 *base; /* ptr to start of wave data */
71  s32 len; /* length of data in bytes */
72  u8 type; /* compression type */
73  u8 flags; /* offset/address flags */
74  union {
79 
80 typedef struct ALSound_s
81 {
84  ALWaveTable *wavetable; /* offset to wavetable struct */
89 
90 typedef struct
91 {
92  u8 volume; /* overall volume for this instrument */
93  ALPan pan; /* 0 = hard left, 127 = hard right */
94  u8 priority; /* voice priority for this instrument */
96  u8 tremType; /* the type of tremelo osc. to use */
97  u8 tremRate; /* the rate of the tremelo osc. */
98  u8 tremDepth; /* the depth of the tremelo osc */
99  u8 tremDelay; /* the delay for the tremelo osc */
100  u8 vibType; /* the type of tremelo osc. to use */
101  u8 vibRate; /* the rate of the tremelo osc. */
102  u8 vibDepth; /* the depth of the tremelo osc */
103  u8 vibDelay; /* the delay for the tremelo osc */
104  s16 bendRange; /* pitch bend range in cents */
105  s16 soundCount; /* number of sounds in this array */
106  ALSound *soundArray[1];
107 } ALInstrument;
108 
109 typedef struct ALBank_s
110 {
111  s16 instCount; /* number of programs in this bank */
114  s32 sampleRate; /* e.g. 44100, 22050, etc... */
115  ALInstrument *percussion; /* default percussion for GM */
116  ALInstrument *instArray[1]; /* ARRAY of instruments */
118 
119 typedef struct
120 { /* Note: sizeof won't be correct */
121  s16 revision; /* format revision of this file */
122  s16 bankCount; /* number of banks */
123  ALBank *bankArray[1]; /* ARRAY of bank offsets */
124 } ALBankFile;
125 
126 void alBnkfNew(ALBankFile *f, u8 *table);
127 #endif
s32 ALMicroTime
Definition: libaudio_internal.h:7
u8 ALPan
Definition: libaudio_internal.h:6
@ AL_ADPCM_WAVE
Definition: libaudio_internal.h:12
@ AL_RAW16_WAVE
Definition: libaudio_internal.h:13
struct ALWaveTable_s ALWaveTable
void alBnkfNew(ALBankFile *f, u8 *table)
Definition: alBnkfNew.c:63
struct ALSound_s ALSound
struct ALBank_s ALBank
Definition: libaudio_internal.h:32
s32 order
Definition: libaudio_internal.h:33
s32 npredictors
Definition: libaudio_internal.h:34
Definition: libaudio_internal.h:58
ALADPCMBook * book
Definition: libaudio_internal.h:60
ALADPCMloop * loop
Definition: libaudio_internal.h:59
Definition: libaudio_internal.h:24
u32 end
Definition: libaudio_internal.h:26
ADPCM_STATE state
Definition: libaudio_internal.h:28
u32 start
Definition: libaudio_internal.h:25
u32 count
Definition: libaudio_internal.h:27
Definition: libaudio_internal.h:120
s16 bankCount
Definition: libaudio_internal.h:122
s16 revision
Definition: libaudio_internal.h:121
Definition: libaudio_internal.h:110
s16 instCount
Definition: libaudio_internal.h:111
ALInstrument * percussion
Definition: libaudio_internal.h:115
ALInstrument * instArray[1]
Definition: libaudio_internal.h:116
u8 pad
Definition: libaudio_internal.h:113
u8 flags
Definition: libaudio_internal.h:112
s32 sampleRate
Definition: libaudio_internal.h:114
Definition: libaudio_internal.h:39
ALMicroTime releaseTime
Definition: libaudio_internal.h:42
ALMicroTime decayTime
Definition: libaudio_internal.h:41
u8 decayVolume
Definition: libaudio_internal.h:44
u8 attackVolume
Definition: libaudio_internal.h:43
ALMicroTime attackTime
Definition: libaudio_internal.h:40
Definition: libaudio_internal.h:91
ALPan pan
Definition: libaudio_internal.h:93
u8 vibType
Definition: libaudio_internal.h:100
u8 tremType
Definition: libaudio_internal.h:96
u8 tremDelay
Definition: libaudio_internal.h:99
u8 priority
Definition: libaudio_internal.h:94
u8 vibDepth
Definition: libaudio_internal.h:102
u8 vibRate
Definition: libaudio_internal.h:101
s16 bendRange
Definition: libaudio_internal.h:104
u8 tremRate
Definition: libaudio_internal.h:97
u8 vibDelay
Definition: libaudio_internal.h:103
u8 volume
Definition: libaudio_internal.h:92
s16 soundCount
Definition: libaudio_internal.h:105
u8 tremDepth
Definition: libaudio_internal.h:98
u8 flags
Definition: libaudio_internal.h:95
Definition: libaudio_internal.h:48
u8 keyMin
Definition: libaudio_internal.h:51
s8 detune
Definition: libaudio_internal.h:54
u8 keyMax
Definition: libaudio_internal.h:52
u8 velocityMin
Definition: libaudio_internal.h:49
u8 velocityMax
Definition: libaudio_internal.h:50
u8 keyBase
Definition: libaudio_internal.h:53
Definition: libaudio_internal.h:64
ALRawLoop * loop
Definition: libaudio_internal.h:65
Definition: libaudio_internal.h:17
u32 start
Definition: libaudio_internal.h:18
u32 end
Definition: libaudio_internal.h:19
u32 count
Definition: libaudio_internal.h:20
Definition: libaudio_internal.h:81
u8 flags
Definition: libaudio_internal.h:87
ALPan samplePan
Definition: libaudio_internal.h:85
ALWaveTable * wavetable
Definition: libaudio_internal.h:84
u8 sampleVolume
Definition: libaudio_internal.h:86
ALEnvelope * envelope
Definition: libaudio_internal.h:82
ALKeyMap * keyMap
Definition: libaudio_internal.h:83
Definition: libaudio_internal.h:69
ALRAWWaveInfo rawWave
Definition: libaudio_internal.h:76
s32 len
Definition: libaudio_internal.h:71
u8 * base
Definition: libaudio_internal.h:70
ALADPCMWaveInfo adpcmWave
Definition: libaudio_internal.h:75
u8 flags
Definition: libaudio_internal.h:73
u8 type
Definition: libaudio_internal.h:72
union ALWaveTable_s::@10 waveInfo
signed int s32
Definition: ultratypes.h:15
unsigned int u32
Definition: ultratypes.h:16
signed char s8
Definition: ultratypes.h:11
signed short int s16
Definition: ultratypes.h:13
unsigned char u8
Definition: ultratypes.h:12