Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
syn.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_SYN_H_
2#define _DOLPHIN_SYN_H_
3
4#ifdef __REVOLUTION_SDK__
5#include <revolution/syn.h>
6#else
7#include <dolphin/types.h>
8#include <dolphin/ax.h>
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#define SYN_INPUT_BUFFER_SIZE 0x100
15
16typedef struct WTINST {
17 /* 0x00 */ u16 keyRegion[128];
19
20typedef struct WTREGION {
21 /* 0x00 */ u8 unityNote;
22 /* 0x01 */ u8 keyGroup;
23 /* 0x02 */ s16 fineTune;
24 /* 0x04 */ s32 attn;
25 /* 0x08 */ u32 loopStart;
26 /* 0x0C */ u32 loopLength;
28 /* 0x14 */ u32 sampleIndex;
30
31typedef struct WTART {
32 /* 0x00 */ s32 lfoFreq;
33 /* 0x04 */ s32 lfoDelay;
34 /* 0x08 */ s32 lfoAtten;
35 /* 0x0C */ s32 lfoPitch;
36 /* 0x10 */ s32 lfoMod2Atten;
37 /* 0x14 */ s32 lfoMod2Pitch;
38 /* 0x18 */ s32 eg1Attack;
39 /* 0x1C */ s32 eg1Decay;
40 /* 0x20 */ s32 eg1Sustain;
41 /* 0x24 */ s32 eg1Release;
42 /* 0x28 */ s32 eg1Vel2Attack;
43 /* 0x2C */ s32 eg1Key2Decay;
44 /* 0x30 */ s32 eg2Attack;
45 /* 0x34 */ s32 eg2Decay;
46 /* 0x38 */ s32 eg2Sustain;
47 /* 0x3C */ s32 eg2Release;
48 /* 0x40 */ s32 eg2Vel2Attack;
49 /* 0x44 */ s32 eg2Key2Decay;
50 /* 0x48 */ s32 eg2Pitch;
51 /* 0x4C */ s32 pan;
53
54typedef struct WTSAMPLE {
55 /* 0x00 */ u16 format;
56 /* 0x02 */ u16 sampleRate;
57 /* 0x04 */ u32 offset;
58 /* 0x08 */ u32 length;
59 /* 0x0C */ u16 adpcmIndex;
61
62typedef struct WTADPCM {
63 /* 0x00 */ u16 a[8][2];
64 /* 0x20 */ u16 gain;
65 /* 0x22 */ u16 pred_scale;
66 /* 0x24 */ u16 yn1;
67 /* 0x26 */ u16 yn2;
68 /* 0x28 */ u16 loop_pred_scale;
69 /* 0x2A */ u16 loop_yn1;
70 /* 0x2C */ u16 loop_yn2;
72
73typedef struct SYNSYNTH {
74 /* 0x0000 */ void* next;
75 /* 0x0004 */ WTINST* percussiveInst;
76 /* 0x0008 */ WTINST* melodicInst;
77 /* 0x000C */ WTREGION* region;
78 /* 0x0010 */ WTART* art;
79 /* 0x0014 */ WTSAMPLE* sample;
80 /* 0x0018 */ WTADPCM* adpcm;
81 /* 0x001C */ u32 aramBaseWord;
82 /* 0x0020 */ u32 aramBaseByte;
83 /* 0x0024 */ u32 aramBaseNibble;
84 /* 0x0028 */ u32 zeroBaseWord;
85 /* 0x002C */ u32 zeroBaseByte;
86 /* 0x0030 */ u32 zeroBaseNibble;
87 /* 0x0034 */ u32 priorityVoiceAlloc;
88 /* 0x0038 */ u32 priorityNoteOn;
90 /* 0x0040 */ WTINST* inst[16];
91 /* 0x0080 */ s32 masterVolume;
92 /* 0x0084 */ u8 controller[16][128];
93 /* 0x0844 */ u8 rpn[16];
94 /* 0x0894 */ s16 dataEntry[16];
95 /* 0x08B4 */ s32 pwMaxCents[16];
96 /* 0x08F4 */ s32 pwCents[16];
97 /* 0x0934 */ s32 volAttn[16];
98 /* 0x0974 */ s32 expAttn[16];
99 /* 0x09B4 */ s32 auxAAttn[16];
100 /* 0x09F4 */ s32 auxBAttn[16];
101 /* 0x0A34 */ u8 input[SYN_INPUT_BUFFER_SIZE][3];
102 /* 0x0D34 */ u8* inputPosition;
103 /* 0x0D38 */ u32 inputCounter;
104 /* 0x0D3C */ u32 notes;
105 /* 0x0D40 */ void* keyGroup[16][16];
106 /* 0x1140 */ void* voice[16][128];
108
109typedef struct SYNVOICE {
110 /* 0x00 */ void* next;
111 /* 0x04 */ AXVPB* axvpb;
112 /* 0x08 */ SYNSYNTH* synth;
113 /* 0x0C */ u8 midiChannel;
114 /* 0x0D */ u8 keyNum;
115 /* 0x0E */ u8 keyVel;
116 /* 0x0F */ u8 pan;
117 /* 0x10 */ u8 keyGroup;
118 /* 0x14 */ WTREGION* region;
119 /* 0x18 */ WTART* art;
120 /* 0x1C */ WTSAMPLE* sample;
121 /* 0x20 */ WTADPCM* adpcm;
122 /* 0x24 */ u32 hold;
123 /* 0x28 */ u32 type;
124 /* 0x2C */ f32 srcRatio;
125 /* 0x30 */ s32 cents;
126 /* 0x34 */ s32 attn;
127 /* 0x38 */ s32 lfoState;
128 /* 0x3C */ s32 lfoAttn;
129 /* 0x40 */ s32 lfoCents;
130 /* 0x44 */ s32 lfoFreq;
131 /* 0x48 */ s32 lfoDelay;
132 /* 0x4C */ s32 lfoAttn_;
133 /* 0x50 */ s32 lfoCents_;
134 /* 0x54 */ s32 lfoModAttn;
135 /* 0x58 */ s32 lfoModCents;
136 /* 0x5C */ u32 veState;
137 /* 0x60 */ s32 veAttn;
138 /* 0x64 */ s32 veAttack;
139 /* 0x68 */ s32 veAttackDelta;
140 /* 0x6C */ s32 veDecay;
141 /* 0x70 */ s32 veSustain;
142 /* 0x74 */ s32 veRelease;
143 /* 0x78 */ u32 peState;
144 /* 0x7C */ s32 peCents;
145 /* 0x80 */ s32 peAttack;
146 /* 0x84 */ s32 peDecay;
147 /* 0x88 */ s32 peSustain;
148 /* 0x8C */ s32 peRelease;
149 /* 0x90 */ s32 pePitch;
151
152// sample formats
153#define SYN_SAMPLE_FORMAT_ADPCM 0
154#define SYN_SAMPLE_FORMAT_PCM16 1
155#define SYN_SAMPLE_FORMAT_PCM8 2
156
157// SYN
158void SYNInit(void);
159void SYNQuit(void);
160void SYNRunAudioFrame(void);
161void SYNInitSynth(SYNSYNTH* synth, void* wavetable, u32 aramBase, u32 zeroBase, u32 priorityVoiceAlloc, u32 priorityNoteOn, u32 priorityNoteRelease);
162void SYNQuitSynth(SYNSYNTH* synth);
163void SYNMidiInput(SYNSYNTH* synth, u8* input);
164void SYNSetMasterVolume(SYNSYNTH* synth, s32 dB);
167
168// SYNCTRL
169u8 SYNGetMidiController(SYNSYNTH* synth, u8 midiChannel, u8 function);
170
171#ifdef __cplusplus
172}
173#endif
174
175#endif
176#endif // _DOLPHIN_SYN_H_
s32 SYNGetMasterVolume(SYNSYNTH *synth)
Definition syn.c:172
struct WTSAMPLE WTSAMPLE
u32 SYNGetActiveNotes(SYNSYNTH *synth)
Definition syn.c:177
void SYNSetMasterVolume(SYNSYNTH *synth, s32 dB)
Definition syn.c:167
u8 SYNGetMidiController(SYNSYNTH *synth, u8 midiChannel, u8 function)
Definition synctrl.c:505
struct WTART WTART
struct WTREGION WTREGION
struct WTADPCM WTADPCM
struct SYNVOICE SYNVOICE
void SYNRunAudioFrame(void)
Definition syn.c:70
void SYNInitSynth(SYNSYNTH *synth, void *wavetable, u32 aramBase, u32 zeroBase, u32 priorityVoiceAlloc, u32 priorityNoteOn, u32 priorityNoteRelease)
Definition syn.c:83
void SYNQuit(void)
Definition syn.c:66
void SYNMidiInput(SYNSYNTH *synth, u8 *input)
Definition syn.c:150
void SYNInit(void)
Definition syn.c:57
struct WTINST WTINST
void SYNQuitSynth(SYNSYNTH *synth)
Definition syn.c:129
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
struct SYNSYNTH SYNSYNTH
Definition syn.h:73
s32 expAttn[16]
Definition syn.h:98
WTINST * percussiveInst
Definition syn.h:75
void * next
Definition syn.h:74
s32 volAttn[16]
Definition syn.h:97
void * voice[16][128]
Definition syn.h:106
s32 pwCents[16]
Definition syn.h:96
u32 inputCounter
Definition syn.h:103
u8 controller[16][128]
Definition syn.h:92
u32 zeroBaseByte
Definition syn.h:85
u32 zeroBaseNibble
Definition syn.h:86
WTSAMPLE * sample
Definition syn.h:79
WTREGION * region
Definition syn.h:77
WTINST * melodicInst
Definition syn.h:76
u32 aramBaseNibble
Definition syn.h:83
u32 priorityVoiceAlloc
Definition syn.h:87
s32 pwMaxCents[16]
Definition syn.h:95
u32 aramBaseByte
Definition syn.h:82
u32 priorityNoteOn
Definition syn.h:88
u8 input[SYN_INPUT_BUFFER_SIZE][3]
Definition syn.h:101
u32 notes
Definition syn.h:104
WTART * art
Definition syn.h:78
WTINST * inst[16]
Definition syn.h:90
u8 * inputPosition
Definition syn.h:102
WTADPCM * adpcm
Definition syn.h:80
u32 zeroBaseWord
Definition syn.h:84
s16 dataEntry[16]
Definition syn.h:94
void * keyGroup[16][16]
Definition syn.h:105
s32 auxAAttn[16]
Definition syn.h:99
u32 priorityNoteRelease
Definition syn.h:89
s32 masterVolume
Definition syn.h:91
u8 rpn[16]
Definition syn.h:93
s32 auxBAttn[16]
Definition syn.h:100
u32 aramBaseWord
Definition syn.h:81
Definition syn.h:109
f32 srcRatio
Definition syn.h:124
s32 peDecay
Definition syn.h:146
s32 lfoModCents
Definition syn.h:135
s32 peSustain
Definition syn.h:147
u32 type
Definition syn.h:123
s32 veDecay
Definition syn.h:140
u8 keyGroup
Definition syn.h:117
WTART * art
Definition syn.h:119
s32 lfoAttn
Definition syn.h:128
s32 lfoCents
Definition syn.h:129
s32 veAttackDelta
Definition syn.h:139
SYNSYNTH * synth
Definition syn.h:112
s32 pePitch
Definition syn.h:149
s32 peAttack
Definition syn.h:145
void * next
Definition syn.h:110
s32 attn
Definition syn.h:126
u8 midiChannel
Definition syn.h:113
AXVPB * axvpb
Definition syn.h:111
s32 cents
Definition syn.h:125
s32 lfoModAttn
Definition syn.h:134
s32 peRelease
Definition syn.h:148
s32 lfoAttn_
Definition syn.h:132
WTREGION * region
Definition syn.h:118
s32 veAttack
Definition syn.h:138
s32 veRelease
Definition syn.h:142
s32 veSustain
Definition syn.h:141
s32 lfoState
Definition syn.h:127
s32 lfoDelay
Definition syn.h:131
s32 lfoCents_
Definition syn.h:133
WTADPCM * adpcm
Definition syn.h:121
s32 lfoFreq
Definition syn.h:130
u8 keyVel
Definition syn.h:115
u32 peState
Definition syn.h:143
u32 hold
Definition syn.h:122
u8 keyNum
Definition syn.h:114
s32 veAttn
Definition syn.h:137
u8 pan
Definition syn.h:116
s32 peCents
Definition syn.h:144
WTSAMPLE * sample
Definition syn.h:120
u32 veState
Definition syn.h:136
Definition syn.h:62
u16 yn2
Definition syn.h:67
u16 pred_scale
Definition syn.h:65
u16 loop_yn1
Definition syn.h:69
u16 yn1
Definition syn.h:66
u16 a[8][2]
Definition syn.h:63
u16 loop_pred_scale
Definition syn.h:68
u16 gain
Definition syn.h:64
u16 loop_yn2
Definition syn.h:70
Definition syn.h:31
s32 lfoMod2Pitch
Definition syn.h:37
s32 eg1Release
Definition syn.h:41
s32 eg2Decay
Definition syn.h:45
s32 lfoAtten
Definition syn.h:34
s32 eg1Vel2Attack
Definition syn.h:42
s32 lfoDelay
Definition syn.h:33
s32 eg2Release
Definition syn.h:47
s32 eg2Pitch
Definition syn.h:50
s32 pan
Definition syn.h:51
s32 eg1Sustain
Definition syn.h:40
s32 lfoMod2Atten
Definition syn.h:36
s32 eg2Vel2Attack
Definition syn.h:48
s32 eg2Sustain
Definition syn.h:46
s32 eg2Attack
Definition syn.h:44
s32 lfoPitch
Definition syn.h:35
s32 eg1Decay
Definition syn.h:39
s32 lfoFreq
Definition syn.h:32
s32 eg1Key2Decay
Definition syn.h:43
s32 eg2Key2Decay
Definition syn.h:49
s32 eg1Attack
Definition syn.h:38
Definition syn.h:16
u16 keyRegion[128]
Definition syn.h:17
Definition syn.h:20
s16 fineTune
Definition syn.h:23
u32 sampleIndex
Definition syn.h:28
u8 keyGroup
Definition syn.h:22
s32 attn
Definition syn.h:24
u32 loopStart
Definition syn.h:25
u32 loopLength
Definition syn.h:26
u32 articulationIndex
Definition syn.h:27
u8 unityNote
Definition syn.h:21
Definition syn.h:54
u16 sampleRate
Definition syn.h:56
u32 length
Definition syn.h:58
u16 format
Definition syn.h:55
u16 adpcmIndex
Definition syn.h:59
u32 offset
Definition syn.h:57
Definition ax.h:136