#ifndef _LIBMUS_H_ #define _LIBMUS_H_ #include #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { #endif typedef struct { unsigned long control_flag; int channels; void *sched; int thread_priority; unsigned char *heap; int heap_length; unsigned char *ptr; unsigned char *wbk; void *default_fxbank; int fifo_length; int syn_updates; int syn_output_rate; int syn_rsp_cmds; int syn_retraceCount; int syn_num_dma_bufs; int syn_dma_buf_size; OSPiHandle *diskrom_handle; } musConfig; typedef enum { MUSBOOL_OFF, MUSBOOL_ON } musBool; typedef struct { u64 *data; int data_size; u64 *ucode; u64 *ucode_data; } musTask; typedef unsigned long musHandle; typedef void (*LIBMUScb_marker)(musHandle, int); typedef void (*LIBMUScb_install)(void); typedef void (*LIBMUScb_waitframe)(void); typedef void (*LIBMUScb_dotask)(musTask *); typedef struct { LIBMUScb_install install; LIBMUScb_waitframe waitframe; LIBMUScb_dotask dotask; } musSched; #define MUSCONTROL_RAM (1 << 0) #define MUSFLAG_EFFECTS 1 #define MUSFLAG_SONGS 2 extern int MusInitialize(musConfig *config); extern int MusSetFxType(int fxtype); extern int MusSetSongFxChange(musBool onoff); extern void MusSetMasterVolume(unsigned long flags, int volume); extern musHandle MusStartSong(void *addr); extern musHandle MusStartSongFromMarker(void *addr, int marker); extern musHandle MusStartEffect(int number); extern musHandle MusStartEffect2(int number, int volume, int pan, int restartflag, int priority); extern void MusStop(unsigned long flags, int speed); extern int MusAsk(unsigned long flags); extern int MusHandleAsk(musHandle handle); extern int MusHandleStop(musHandle handle, int speed); extern int MusHandleSetVolume(musHandle handle, int volume); extern int MusHandleSetPan(musHandle handle, int pan); extern int MusHandleSetFreqOffset(musHandle handle, float offset); extern int MusHandleSetTempo(musHandle handle, int tempo); extern int MusHandleSetReverb(musHandle handle, int reverb); extern int MusHandlePause(musHandle handle); extern int MusHandleUnPause(musHandle handle); extern void* MusHandleGetPtrBank(musHandle handle); extern void MusPtrBankInitialize(void *pbank, void *wbank); extern void* MusPtrBankSetSingle(void *ipbank); extern void MusPtrBankSetCurrent(void *ipbank); extern void* MusPtrBankGetCurrent(void); extern void MusFxBankInitialize(void *fxbank); extern void MusFxBankSetSingle(void *ifxbank); extern void MusFxBankSetCurrent(void *ifxbank); extern void *MusFxBankGetCurrent(void); extern int MusFxBankNumberOfEffects(void *ifxbank); extern void MusFxBankSetPtrBank(void *ifxbank, void *ipbank); extern void *MusFxBankGetPtrBank(void *ifxbank); extern void MusFxBankSetSingle(void *ifxbank); extern void MusSetScheduler(musSched *sched_list); extern void MusSetMarkerCallback(void *callback); extern int MusHandleWaveCount(musHandle handle); extern unsigned short *MusHandleWaveAddress(musHandle handle); #define MusBankInitialize(pbank, wbank) MusPtrBankInitialize(pbank, wbank) #define MusBankStartSong(ipbank, addr) \ MusStartSong((addr) == (void *)MusPtrBankSetSingle(ipbank) ? (addr) : (addr)) #define MusBankStartEffect(ipbank, number) \ MusStartEffect((number) == (int)MusPtrBankSetSingle(ipbank) ? (number) \ : (number)) #define MusBankStartEffect2(ipbank, number, volume, pan, restartflag, \ priority) \ MusStartEffect2((number) == (int)MusPtrBankSetSingle(ipbank) ? (number) \ : (number), \ volume, pan, restartflag, priority) #ifdef _LANGUAGE_C_PLUS_PLUS } #endif #endif /* _LIBMUS_H_ */