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