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