Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
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 {
77  } waveInfo;
78 } ALWaveTable;
79 
80 typedef struct ALSound_s
81 {
84  ALWaveTable *wavetable; /* offset to wavetable struct */
88 } ALSound;
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 */
117 } ALBank;
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
u8 velocityMax
Definition: libaudio_internal.h:50
s8 detune
Definition: libaudio_internal.h:54
s32 sampleRate
Definition: libaudio_internal.h:114
u8 * base
Definition: libaudio_internal.h:70
u8 sampleVolume
Definition: libaudio_internal.h:86
Definition: libaudio_internal.h:13
signed char s8
Definition: ultratypes.h:11
struct ALSound_s ALSound
ALPan samplePan
Definition: libaudio_internal.h:85
s32 len
Definition: libaudio_internal.h:71
u8 flags
Definition: libaudio_internal.h:73
u8 keyMin
Definition: libaudio_internal.h:51
u8 vibDelay
Definition: libaudio_internal.h:103
signed short int s16
Definition: ultratypes.h:13
Definition: libaudio_internal.h:31
u8 keyBase
Definition: libaudio_internal.h:53
s16 revision
Definition: libaudio_internal.h:121
u8 vibType
Definition: libaudio_internal.h:100
Definition: libaudio_internal.h:90
u8 tremRate
Definition: libaudio_internal.h:97
Definition: libaudio_internal.h:38
void alBnkfNew(ALBankFile *f, u8 *table)
Definition: alBnkfNew.c:58
Definition: libaudio_internal.h:80
u32 start
Definition: libaudio_internal.h:18
u8 priority
Definition: libaudio_internal.h:94
s32 ALMicroTime
Definition: libaudio_internal.h:7
ALADPCMWaveInfo adpcmWave
Definition: libaudio_internal.h:75
struct ALWaveTable_s ALWaveTable
s16 instCount
Definition: libaudio_internal.h:111
s32 order
Definition: libaudio_internal.h:33
struct ALBank_s ALBank
u8 decayVolume
Definition: libaudio_internal.h:44
u8 pad
Definition: libaudio_internal.h:113
u8 volume
Definition: libaudio_internal.h:92
u8 flags
Definition: libaudio_internal.h:95
Definition: libaudio_internal.h:109
ALMicroTime decayTime
Definition: libaudio_internal.h:41
u8 keyMax
Definition: libaudio_internal.h:52
Definition: libaudio_internal.h:23
u8 vibRate
Definition: libaudio_internal.h:101
u32 end
Definition: libaudio_internal.h:19
u8 flags
Definition: libaudio_internal.h:112
ALKeyMap * keyMap
Definition: libaudio_internal.h:83
ALInstrument * percussion
Definition: libaudio_internal.h:115
Definition: libaudio_internal.h:68
u8 tremType
Definition: libaudio_internal.h:96
Definition: libaudio_internal.h:119
u8 tremDelay
Definition: libaudio_internal.h:99
u8 tremDepth
Definition: libaudio_internal.h:98
u32 count
Definition: libaudio_internal.h:27
Definition: libaudio_internal.h:57
u32 start
Definition: libaudio_internal.h:25
Definition: libaudio_internal.h:12
ALRAWWaveInfo rawWave
Definition: libaudio_internal.h:76
u32 end
Definition: libaudio_internal.h:26
u32 count
Definition: libaudio_internal.h:20
u8 vibDepth
Definition: libaudio_internal.h:102
s16 bendRange
Definition: libaudio_internal.h:104
u8 attackVolume
Definition: libaudio_internal.h:43
ALADPCMloop * loop
Definition: libaudio_internal.h:59
ALMicroTime releaseTime
Definition: libaudio_internal.h:42
s32 npredictors
Definition: libaudio_internal.h:34
u8 velocityMin
Definition: libaudio_internal.h:49
unsigned char u8
Definition: ultratypes.h:12
u8 flags
Definition: libaudio_internal.h:87
Definition: libaudio_internal.h:16
u8 type
Definition: libaudio_internal.h:72
s16 bankCount
Definition: libaudio_internal.h:122
ALMicroTime attackTime
Definition: libaudio_internal.h:40
ALRawLoop * loop
Definition: libaudio_internal.h:65
signed int s32
Definition: ultratypes.h:15
u8 ALPan
Definition: libaudio_internal.h:6
union ALWaveTable_s::@4 waveInfo
ALEnvelope * envelope
Definition: libaudio_internal.h:82
Definition: libaudio_internal.h:63
ALWaveTable * wavetable
Definition: libaudio_internal.h:84
ADPCM_STATE state
Definition: libaudio_internal.h:28
ALADPCMBook * book
Definition: libaudio_internal.h:60
unsigned int u32
Definition: ultratypes.h:16
s16 soundCount
Definition: libaudio_internal.h:105
ALPan pan
Definition: libaudio_internal.h:93
Definition: libaudio_internal.h:47