PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
libsnd2.h
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
11#ifndef _LIBSND2_H
12#define _LIBSND2_H
13
14enum libsnd2_ss_tick_enum
15{
16 SS_NOTICK = 0x1000,
17 SS_NOTICK0 = 0,
18 SS_TICK60,
19 SS_TICK240,
20 SS_TICK120,
21 SS_TICK50,
22 SS_TICKVSYNC,
23 SS_TICKMODE_MAX,
24};
25
26enum libsnd2_ss_play_enum
27{
28 SSPLAY_INFINITY = 0,
29 SSPLAY_PAUSE = 0,
30 SSPLAY_PLAY,
31};
32
33enum libsnd2_ss_s_enum
34{
35 SS_SOFF = 0,
36 SS_SON,
37};
38
39enum libsnd2_ss_mix_enum
40{
41 SS_MIX = 0,
42 SS_REV,
43};
44
45enum libsnd2_ss_serial_enum
46{
47 SS_SERIAL_A = 0,
48 SS_SERIAL_B,
49};
50
51enum libsnd2_ss_mute_enum
52{
53 SS_MUTE_OFF = 0,
54 SS_MUTE_ON,
55};
56
57enum libsnd2_wait_enum
58{
59 SS_IMEDIATE = 0,
60 SS_IMMEDIATE = 0,
61 SS_WAIT_COMPLETED,
62};
63
64enum libsnd2_ss_rev_type_enum
65{
66 SS_REV_TYPE_CHECK = -1,
67 SS_REV_TYPE_OFF = 0,
68 SS_REV_TYPE_ROOM,
69 SS_REV_TYPE_STUDIO_A,
70 SS_REV_TYPE_STUDIO_B,
71 SS_REV_TYPE_STUDIO_C,
72 SS_REV_TYPE_HALL,
73 SS_REV_TYPE_SPACE,
74 SS_REV_TYPE_ECHO,
75 SS_REV_TYPE_DELAY,
76 SS_REV_TYPE_PIPE,
77 SS_REV_TYPE_MAX,
78};
79
80enum libsnd2_ss_skip_enum
81{
82 SSSKIP_TICK = 0,
83 SSSKIP_NOTE4,
84 SSSKIP_NOTE8,
85 SSSKIP_BAR,
86};
87
88// sizeof(libsnd2_sequence_struct_t)
89#define SS_SEQ_TABSIZ 0xb0
90
91#define SND_VOLL (1 << 0)
92#define SND_VOLR (1 << 1)
93#define SND_ADSR1 (1 << 2)
94#define SND_ADSR2 (1 << 3)
95#define SND_ADDR (1 << 4)
96#define SND_PITCH (1 << 5)
97
98enum libsnd2_control_enum
99{
100 CC_NUMBER = 0,
101 CC_BANKCHANGE,
102 CC_DATAENTRY,
103 CC_MAINVOL,
104 CC_PANPOT,
105 CC_EXPRESSION,
106 CC_DAMPER,
107 CC_NRPN1,
108 CC_NRPN2,
109 CC_RPN1,
110 CC_RPN2,
111 CC_EXTERNAL,
112 CC_RESETALL,
113 CC_MAX,
114};
115
116enum libsnd2_ccentry_enum
117{
118 DE_PRIORITY = 0,
119 DE_MODE,
120 DE_LIMITL,
121 DE_LIMITH,
122 DE_ADSR_AR_L,
123 DE_ADSR_AR_E,
124 DE_ADSR_DR,
125 DE_ADSR_SL,
126 DE_ADSR_SR_L,
127 DE_ADSR_SR_E,
128 DE_ADSR_RR_L,
129 DE_ADSR_RR_E,
130 DE_ADSR_SR,
131 DE_VIB_TIME,
132 DE_PORTA_DEPTH,
133 DE_REV_TYPE,
134 DE_REV_DEPTH,
135 DE_ECHO_FB,
136 DE_ECHO_DELAY,
137 DE_DELAY,
138 DE_MAX,
139};
140
141typedef struct VabHdr
142{
143 int form;
144 int ver;
145 int id;
146 unsigned int fsize;
147 u16 reserved0;
148 u16 ps;
149 u16 ts;
150 u16 vs;
151 u8 mvol;
152 u8 pan;
153 u8 attr1;
154 u8 attr2;
155 unsigned int reserved1;
156} VabHdr;
157
158typedef struct ProgAtr
159{
160 u8 tones;
161 u8 mvol;
162 u8 prior;
163 u8 mode;
164 u8 mpan;
165 char reserved0;
166 s16 attr;
167 unsigned int m_fake_prog_idx;
168 u16 m_vag_spu_addr_hi;
169 u16 m_vag_spu_addr_lo;
170} ProgAtr;
171
172typedef struct VagAtr
173{
174 u8 prior;
175 u8 mode;
176 u8 vol;
177 u8 pan;
178 u8 center;
179 u8 shift;
180 u8 min;
181 u8 max;
182 u8 vibW;
183 u8 vibT;
184 u8 porW;
185 u8 porT;
186 u8 pbmin;
187 u8 pbmax;
188 u8 reserved1;
189 u8 reserved2;
190 u16 adsr1;
191 u16 adsr2;
192 s16 prog;
193 s16 vag;
194 s16 reserved[4];
195} VagAtr;
196
197typedef struct SndVolume_
198{
199 u16 left;
200 u16 right;
201} SndVolume;
202
203typedef struct SndVolume2
204{
205 s16 left;
206 s16 right;
207} SndVolume2;
208
209typedef struct SndRegisterAttr
210{
211 SndVolume2 volume;
212 s16 pitch;
213 s16 mask;
214 s16 addr;
215 s16 adsr1;
216 s16 adsr2;
218
219typedef struct SndVoiceStats
220{
221 s16 vagId;
222 s16 vabId;
223 u16 pitch;
224 s16 note;
225 s16 tone;
226 s16 prog_num;
227 s16 prog_actual;
228 s16 vol;
229 s16 pan;
231
232typedef void (*SsMarkCallbackProc)(s16, s16, s16);
233
234typedef struct _SsFCALL_
235{
236 void (*noteon)(s16, s16, u8, u8);
237 void (*programchange)(s16, s16, u8);
238 void (*pitchbend)(s16, s16);
239 void (*metaevent)(s16, s16, u8);
240 void (*control[CC_MAX])(s16, s16, u8);
241 void (*ccentry[DE_MAX])(s16, s16, s16, VagAtr, s16, u8);
242} _SsFCALL;
243
244extern void _SsContBankChange(s16 sep_no, s16 seq_no, u8 control_value);
245extern void _SsContDataEntry(s16 sep_no, s16 seq_no, u8 control_value);
246extern void _SsContMainVol(s16 sep_no, s16 seq_no, u8 control_value);
247extern void _SsContPanpot(s16 sep_no, s16 seq_no, u8 control_value);
248extern void _SsContExpression(s16 sep_no, s16 seq_no, u8 control_value);
249extern void _SsContDamper(s16 sep_no, s16 seq_no, u8 control_value);
250extern void _SsContExternal(s16 sep_no, s16 seq_no, u8 control_value);
251extern void _SsContNrpn1(s16 sep_no, s16 seq_no, u8 control_value);
252extern void _SsContNrpn2(s16 sep_no, s16 seq_no, u8 control_value);
253extern void _SsContRpn1(s16 sep_no, s16 seq_no, u8 control_value);
254extern void _SsContRpn2(s16 sep_no, s16 seq_no, u8 control_value);
255extern void _SsContResetAll(s16 sep_no, s16 seq_no, u8 control_value);
256extern void _SsSetNrpnVabAttr0(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
257extern void _SsSetNrpnVabAttr1(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
258extern void _SsSetNrpnVabAttr2(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
259extern void _SsSetNrpnVabAttr3(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
260extern void _SsSetNrpnVabAttr4(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
261extern void _SsSetNrpnVabAttr5(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
262extern void _SsSetNrpnVabAttr6(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
263extern void _SsSetNrpnVabAttr7(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
264extern void _SsSetNrpnVabAttr8(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
265extern void _SsSetNrpnVabAttr9(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
266extern void _SsSetNrpnVabAttr10(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
267extern void _SsSetNrpnVabAttr11(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
268extern void _SsSetNrpnVabAttr12(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
269extern void _SsSetNrpnVabAttr13(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
270extern void _SsSetNrpnVabAttr14(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
271extern void _SsSetNrpnVabAttr15(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
272extern void _SsSetNrpnVabAttr16(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
273extern void _SsSetNrpnVabAttr17(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
274extern void _SsSetNrpnVabAttr18(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
275extern void _SsSetNrpnVabAttr19(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
276extern void _SsSetPitchBend(s16 sep_no, s16 seq_no);
277extern void _SsSetControlChange(s16 sep_no, s16 seq_no, u8 control_value);
278extern void _SsGetMetaEvent(s16 sep_no, s16 seq_no, u8 meta_event);
279extern void _SsNoteOn(s16 sep_no, s16 seq_no, u8 note, u8 vollr);
280extern void _SsSetProgramChange(s16 sep_no, s16 seq_no, u8 prog);
281extern void SsSeqSetAccelerando(s16 seq_no, int tempo, int v_time);
282extern void SsSepSetAccelerando(s16 seq_no, s16 sep_no, int tempo, int v_time);
283extern void SsSeqCalledTbyT(void);
284extern void SsSeqClose(s16 seq_sep_no);
285extern void SsSepClose(s16 seq_sep_no);
286extern void SsChannelMute(s16 sep_no, s16 seq_no, int channels);
287extern int SsGetChannelMute(s16 sep_no, s16 seq_no);
288extern void SsSeqSetCrescendo(s16 sep_no, s16 vol, int v_time);
289extern void SsSepSetCrescendo(s16 sep_no, s16 seq_no, s16 vol, int v_time);
290extern void SsSeqSetDecrescendo(s16 sep_no, s16 vol, int v_time);
291extern void SsSepSetDecrescendo(s16 sep_no, s16 seq_no, s16 vol, int v_time);
292extern void SsEnd(void);
293extern char SsGetMute(void);
294extern void SsGetMVol(SndVolume *m_vol);
295extern s16 SsGetNck(void);
296extern void SsGetRVol(SndVolume *r_vol);
297extern char SsGetSerialAttr(char s_num, char attr);
298extern void SsGetSerialVol(char s_num, SndVolume *s_vol);
299extern void SsInit(void);
300extern void SsPitchCorrect(s16 pitch_correct);
301extern void SsInitHot(void);
302extern void SsSetLoop(s16 sep_no, s16 seq_no, s16 l_count);
303extern s16 SsIsEos(s16 sep_no, s16 seq_no);
304extern void SsSetMarkCallback(s16 sep_no, s16 seq_no, SsMarkCallbackProc proc);
305extern void SsSetNext(s16 sep_no1, s16 seq_no1, s16 sep_no2, s16 seq_no2);
306extern void SsSeqSetNext(s16 sep_no1, s16 sep_no2);
307extern void SsSetNoiseOff(void);
308extern void SsSetNoiseOn(s16 voll, s16 volr);
309extern s16 SsSepOpen(unsigned int *addr, s16 vab_id, s16 seq_cnt);
310extern s16 SsSeqOpen(unsigned int *addr, s16 vab_id);
311extern s16 SsSepOpenJ(unsigned int *addr, s16 vab_id, s16 seq_cnt);
312extern s16 SsSeqOpenJ(unsigned int *addr, s16 vab_id);
313extern void SsSeqPause(s16 sep_no);
314extern void SsSepPause(s16 sep_no, s16 seq_no);
315extern void SsSeqPlay(s16 sep_no, char play_mode, s16 l_count);
316extern void SsSepPlay(s16 sep_no, s16 seq_no, char play_mode, s16 l_count);
317extern void SsPlayBack(s16 sep_no, s16 seq_no, s16 l_count);
318extern void SsQuit(void);
319extern void SsSeqReplay(s16 sep_no);
320extern void SsSepReplay(s16 sep_no, s16 seq_no);
321extern void SsSeqSetRitardando(s16 sep_no, int tempo, int v_time);
322extern void SsSepSetRitardando(s16 sep_no, s16 seq_no, int tempo, int v_time);
323extern int SsSeqSkip(s16 sep_no, s16 seq_no, char unit, s16 count);
324extern int SsSetCurrentPoint(s16 sep_no, s16 seq_no, u8 *point);
325extern void SsSeqPlayPtoP(s16 sep_no, s16 seq_no, u8 *start_point, u8 *end_point, char play_mode, s16 l_count);
326extern void SsSetSerialAttr(char s_num, char attr, char mode);
327extern void SsSetMute(char mode);
328extern void SsSetMVol(s16 voll, s16 volr);
329extern void SsSetNck(s16 n_clock);
330extern void SsSetRVol(s16 voll, s16 volr);
331extern void SsStart(void);
332extern void SsStart2(void);
333extern void SsSeqStop(s16 sep_no);
334extern void SsSepStop(s16 sep_no, s16 seq_no);
335extern void SsSetSerialVol(char s_num, s16 voll, s16 volr);
336extern void SsSetTableSize(char *table, s16 s_max, s16 t_max);
337extern void SsSetTempo(s16 sep_no, s16 seq_no, s16 tempo);
338extern void SsSetTickMode(int tick_mode);
339extern void *SsSetTickCallback(void (*cb)(void));
340extern int SsVoKeyOff(int vab_pro, int pitch);
341extern int SsVoKeyOn(int vab_pro, int pitch, u16 voll, u16 volr);
342extern void SsSeqSetVol(s16 sep_no, s16 voll, s16 volr);
343extern void SsSepSetVol(s16 sep_no, s16 seq_no, s16 voll, s16 volr);
344extern void SsSeqGetVol(s16 sep_no, s16 seq_no, s16 *voll, s16 *volr);
345extern void dmy_nothing1(s16 seq_no, s16 sep_no, u8 note, u8 vollr);
346extern void dmy_SsNoteOn(s16 sep_no, s16 seq_no, u8 note, u8 vollr);
347extern void dmy_SsSetProgramChange(s16 sep_no, s16 seq_no, u8 prog);
348extern void dmy_SsGetMetaEvent(s16 sep_no, s16 seq_no, u8 meta_event);
349extern void dmy_SsSetPitchBend(s16 sep_no, s16 seq_no);
350extern void dmy_SsSetControlChange(s16 sep_no, s16 seq_no, u8 control_value);
351extern void dmy_SsContBankChange(s16 sep_no, s16 seq_no, u8 control_value);
352extern void dmy_SsContDataEntry(s16 sep_no, s16 seq_no, u8 control_value);
353extern void dmy_SsContMainVol(s16 sep_no, s16 seq_no, u8 control_value);
354extern void dmy_SsContPanpot(s16 sep_no, s16 seq_no, u8 control_value);
355extern void dmy_SsContExpression(s16 sep_no, s16 seq_no, u8 control_value);
356extern void dmy_SsContDamper(s16 sep_no, s16 seq_no, u8 control_value);
357extern void dmy_SsContExternal(s16 sep_no, s16 seq_no, u8 control_value);
358extern void dmy_SsContNrpn1(s16 sep_no, s16 seq_no, u8 control_value);
359extern void dmy_SsContNrpn2(s16 sep_no, s16 seq_no, u8 control_value);
360extern void dmy_SsContRpn1(s16 sep_no, s16 seq_no, u8 control_value);
361extern void dmy_SsContRpn2(s16 sep_no, s16 seq_no, u8 control_value);
362extern void dmy_SsContResetAll(s16 sep_no, s16 seq_no, u8 control_value);
363extern void dmy_SsSetNrpnVabAttr0(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
364extern void dmy_SsSetNrpnVabAttr1(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
365extern void dmy_SsSetNrpnVabAttr2(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
366extern void dmy_SsSetNrpnVabAttr3(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
367extern void dmy_SsSetNrpnVabAttr4(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
368extern void dmy_SsSetNrpnVabAttr5(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
369extern void dmy_SsSetNrpnVabAttr6(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
370extern void dmy_SsSetNrpnVabAttr7(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
371extern void dmy_SsSetNrpnVabAttr8(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
372extern void dmy_SsSetNrpnVabAttr9(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
373extern void dmy_SsSetNrpnVabAttr10(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
374extern void dmy_SsSetNrpnVabAttr11(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
375extern void dmy_SsSetNrpnVabAttr12(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
376extern void dmy_SsSetNrpnVabAttr13(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
377extern void dmy_SsSetNrpnVabAttr14(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
378extern void dmy_SsSetNrpnVabAttr15(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
379extern void dmy_SsSetNrpnVabAttr16(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
380extern void dmy_SsSetNrpnVabAttr17(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
381extern void dmy_SsSetNrpnVabAttr18(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
382extern void dmy_SsSetNrpnVabAttr19(s16 vab_id, s16 prog, s16 tone, VagAtr vag_attr, s16 fn_idx, u8 attribute_value);
383extern u8 *SsGetCurrentPoint(s16 sep_no, s16 seq_no);
384extern void SsSetVoiceMask(unsigned int s_voice);
385extern unsigned int SsGetVoiceMask(void);
386extern void SsUtAllKeyOff(s16 mode);
387extern s16 SsUtAutoPan(s16 vc, s16 start_pan, s16 end_pan, s16 delta_time);
388extern s16 SsUtAutoVol(s16 vc, s16 start_vol, s16 end_vol, s16 delta_time);
389extern s16 SsUtChangeADSR(s16 vc, s16 vab_id, s16 prog, s16 old_note, u16 adsr1, u16 adsr2);
390extern s16 SsUtChangePitch(s16 vc, s16 vab_id, s16 prog, s16 old_note, s16 old_fine, s16 new_note, s16 new_fine);
391extern void SsUtFlush(void);
392extern s16 SsUtGetProgAtr(s16 vab_id, s16 prog, ProgAtr *prog_attr_ptr);
393extern s16 SsUtGetVagAtr(s16 vab_id, s16 prog, s16 tone, VagAtr *vag_attr_ptr);
394extern int SsUtGetVagAddr(s16 vab_id, s16 vag_id);
395extern unsigned int SsUtGetVagAddrFromTone(s16 vab_id, s16 prog, s16 tone);
396extern unsigned int SsUtGetVBaddrInSB(s16 vab_id);
397extern s16 SsUtGetVabHdr(s16 vab_id, VabHdr *vab_hdr_ptr);
398extern s16 SsUtKeyOn(s16 vab_id, s16 prog, s16 tone, s16 note, s16 fine, s16 voll, s16 volr);
399extern s16 SsUtKeyOff(s16 vc, s16 vab_id, s16 prog, s16 tone, s16 note);
400extern s16 SsUtKeyOnV(s16 vc, s16 vab_id, s16 prog, s16 tone, s16 note, s16 fine, s16 voll, s16 volr);
401extern s16 SsUtKeyOffV(s16 vc);
402extern s16 SsUtPitchBend(s16 vc, s16 vab_id, s16 prog, s16 note, s16 pbend);
403extern void SsUtSetReverbDelay(s16 delay);
404extern void SsUtSetReverbDepth(s16 ldepth, s16 rdepth);
405extern s16 SsUtSetReverbType(s16 type);
406extern s16 SsUtGetReverbType(void);
407extern void SsUtSetReverbFeedback(s16 feedback);
408extern void SsUtReverbOff(void);
409extern void SsUtReverbOn(void);
410extern s16 SsUtSetProgAtr(s16 vab_id, s16 prog, const ProgAtr *prog_attr_ptr);
411extern s16 SsUtSetVagAtr(s16 vab_id, s16 prog, s16 tone, const VagAtr *vag_attr_ptr);
412extern s16 SsUtSetVabHdr(s16 vab_id, const VabHdr *vab_hdr_ptr);
413extern s16 SsUtGetDetVVol(s16 vc, s16 *detvoll, s16 *detvolr);
414extern s16 SsUtSetDetVVol(s16 vc, s16 detvoll, s16 detvolr);
415extern s16 SsUtGetVVol(s16 vc, s16 *voll, s16 *volr);
416extern s16 SsUtSetVVol(s16 vc, s16 voll, s16 volr);
417extern u16 SsPitchFromNote(s16 note, s16 fine, u8 center, u8 shift);
418extern void SsSetAutoKeyOffMode(s16 mode);
419extern void SsSetMono(void);
420extern void SsSetStereo(void);
421extern char SsSetReservedVoice(char voices);
422extern void SsVabClose(s16 vab_id);
423extern s16 SsVabFakeBody(s16 vab_id);
424extern s16 SsVabOpenHeadSticky(u8 *addr, s16 vab_id, unsigned int sbaddr);
425extern s16 SsVabFakeHead(u8 *addr, s16 vab_id, unsigned int sbaddr);
426extern s16 SsVabOpenHead(u8 *addr, s16 vab_id);
427extern s16 SsVabTransfer(u8 *vh_addr, u8 *vb_addr, s16 vab_id, s16 i_flag);
428extern s16 SsVabTransBody(u8 *addr, s16 vab_id);
429extern s16 SsVabTransBodyPartly(u8 *addr, unsigned int bufsize, s16 vab_id);
430extern s16 SsVabTransCompleted(s16 immediate_flag);
431extern char SsBlockVoiceAllocation(void);
432extern char SsUnBlockVoiceAllocation(void);
433extern int SsAllocateVoices(u8 voices, u8 priority);
434extern void SsQueueKeyOn(int voices);
435extern void SsQueueReverb(int voices, int reverb);
436extern void SsQueueRegisters(int vc, SndRegisterAttr *sra);
437extern s16 SsGetActualProgFromProg(s16 vab_id, s16 prog);
438extern void SsSetVoiceSettings(int vc, const SndVoiceStats *snd_v_attr);
439extern s16 SsVoiceCheck(int vc, int vab_id, s16 note);
440
441#endif
u32 count
start sector of fragmented bd/file