mirror of https://github.com/PrimeDecomp/prime.git
114 lines
2.8 KiB
C
114 lines
2.8 KiB
C
#ifndef DSPVOICE_H
|
|
#define DSPVOICE_H
|
|
|
|
#include "musyx/musyx.h"
|
|
|
|
#include "musyx/voice.h"
|
|
#include "musyx/synthdata.h"
|
|
|
|
typedef struct DSPvoice {
|
|
_PB* pb;
|
|
void* patchData;
|
|
void* itdBuffer;
|
|
struct DSPvoice* next;
|
|
struct DSPvoice* prev;
|
|
struct DSPvoice* nextAlien;
|
|
u32 mesgCallBackUserValue;
|
|
u32 prio;
|
|
u32 currentAddr;
|
|
u32 changed[5];
|
|
u32 pitch[5];
|
|
u16 volL;
|
|
u16 volR;
|
|
u16 volS;
|
|
u16 volLa;
|
|
u16 volRa;
|
|
u16 volSa;
|
|
u16 volLb;
|
|
u16 volRb;
|
|
u16 volSb;
|
|
u16 lastVolL;
|
|
u16 lastVolR;
|
|
u16 lastVolS;
|
|
u16 lastVolLa;
|
|
u16 lastVolRa;
|
|
u16 lastVolSa;
|
|
u16 lastVolLb;
|
|
u16 lastVolRb;
|
|
u16 lastVolSb;
|
|
u16 smp_id;
|
|
SAMPLE_INFO smp_info;
|
|
VSampleInfo vSampleInfo;
|
|
u8 streamLoopPS;
|
|
ADSR_VARS adsr;
|
|
u16 srcTypeSelect;
|
|
u16 srcCoefSelect;
|
|
u16 itdShiftL;
|
|
u16 itdShiftR;
|
|
u8 singleOffset;
|
|
struct {
|
|
u32 posHi;
|
|
u32 posLo;
|
|
u32 pitch;
|
|
} playInfo;
|
|
|
|
struct {
|
|
u8 pitch;
|
|
u8 vol;
|
|
u8 volA;
|
|
u8 volB;
|
|
} lastUpdate;
|
|
|
|
u32 virtualSampleID;
|
|
u8 state;
|
|
u8 postBreak;
|
|
u8 startupBreak;
|
|
u8 studio;
|
|
u32 flags;
|
|
} DSPvoice;
|
|
typedef struct DSPhostDPop {
|
|
// total size: 0x24
|
|
s32 l; // offset 0x0, size 0x4
|
|
s32 r; // offset 0x4, size 0x4
|
|
s32 s; // offset 0x8, size 0x4
|
|
s32 lA; // offset 0xC, size 0x4
|
|
s32 rA; // offset 0x10, size 0x4
|
|
s32 sA; // offset 0x14, size 0x4
|
|
s32 lB; // offset 0x18, size 0x4
|
|
s32 rB; // offset 0x1C, size 0x4
|
|
s32 sB; // offset 0x20, size 0x4
|
|
} DSPhostDPop;
|
|
|
|
typedef struct DSPinput {
|
|
// total size: 0xC
|
|
u8 studio; // offset 0x0, size 0x1
|
|
u16 vol; // offset 0x2, size 0x2
|
|
u16 volA; // offset 0x4, size 0x2
|
|
u16 volB; // offset 0x6, size 0x2
|
|
SND_STUDIO_INPUT* desc; // offset 0x8, size 0x4
|
|
} DSPinput;
|
|
|
|
typedef struct DSPstudioinfo {
|
|
// total size: 0xBC
|
|
_SPB* spb; // offset 0x0, size 0x4
|
|
DSPhostDPop hostDPopSum; // offset 0x4, size 0x24
|
|
s32* main[2]; // offset 0x28, size 0x8
|
|
s32* auxA[3]; // offset 0x30, size 0xC
|
|
s32* auxB[3]; // offset 0x3C, size 0xC
|
|
DSPvoice* voiceRoot; // offset 0x48, size 0x4
|
|
DSPvoice* alienVoiceRoot; // offset 0x4C, size 0x4
|
|
u8 state; // offset 0x50, size 0x1
|
|
u8 isMaster; // offset 0x51, size 0x1
|
|
u8 numInputs; // offset 0x52, size 0x1
|
|
SND_STUDIO_TYPE type; // offset 0x54, size 0x4
|
|
DSPinput in[7]; // offset 0x58, size 0x54
|
|
SND_AUX_CALLBACK auxAHandler; // offset 0xAC, size 0x4
|
|
SND_AUX_CALLBACK auxBHandler; // offset 0xB0, size 0x4
|
|
void* auxAUser; // offset 0xB4, size 0x4
|
|
void* auxBUser; // offset 0xB8, size 0x4
|
|
} DSPstudioinfo;
|
|
|
|
extern DSPstudioinfo dspStudio[8];
|
|
extern DSPvoice* dspVoice;
|
|
|
|
#endif |