mirror of https://github.com/zeldaret/tp.git
225 lines
4.4 KiB
C
225 lines
4.4 KiB
C
#ifndef _REVOLUTION_AXART_H_
|
|
#define _REVOLUTION_AXART_H_
|
|
|
|
#include <revolution/types.h>
|
|
#include <revolution/ax.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum __axart_type {
|
|
AXART_TYPE_NONE,
|
|
AXART_TYPE_3D,
|
|
AXART_TYPE_PANNING,
|
|
AXART_TYPE_ITD,
|
|
AXART_TYPE_SRC,
|
|
AXART_TYPE_PITCH,
|
|
AXART_TYPE_PITCH_ENV,
|
|
AXART_TYPE_PITCH_MOD,
|
|
AXART_TYPE_VOLUME,
|
|
AXART_TYPE_AUX_A_VOLUME,
|
|
AXART_TYPE_AUX_B_VOLUME,
|
|
AXART_TYPE_VOLUME_ENV,
|
|
AXART_TYPE_AUX_A_VOLUME_ENV,
|
|
AXART_TYPE_AUX_B_VOLUME_ENV,
|
|
AXART_TYPE_VOLUME_MOD,
|
|
AXART_TYPE_AUX_A_VOLUME_MOD,
|
|
AXART_TYPE_AUX_B_VOLUME_MOD,
|
|
AXART_TYPE_LPF,
|
|
|
|
AXART_TYPE_NUM
|
|
};
|
|
|
|
typedef struct {
|
|
void* next;
|
|
u32 type;
|
|
} AXART_ART;
|
|
|
|
typedef struct {
|
|
f32* lfo;
|
|
u32 length;
|
|
f32 delta;
|
|
u32 sampleIndex;
|
|
f32 counter;
|
|
f32 sample1;
|
|
f32 sample;
|
|
f32 output;
|
|
} AXART_LFO;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
f32 hAngle;
|
|
f32 vAngle;
|
|
f32 dist;
|
|
f32 closingSpeed;
|
|
u32 update;
|
|
u8 pan;
|
|
u8 span;
|
|
u8 src;
|
|
u16 itdL;
|
|
u16 itdR;
|
|
f32 pitch;
|
|
s32 attenuation;
|
|
} AXART_3D;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
u8 pan;
|
|
u8 span;
|
|
} AXART_PANNING;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
u16 itdL;
|
|
u16 itdR;
|
|
} AXART_ITD;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
u8 src;
|
|
} AXART_SRC;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
s32 cents;
|
|
} AXART_PITCH;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
s32 delta;
|
|
s32 target;
|
|
s32 cents;
|
|
} AXART_PITCH_ENV;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
AXART_LFO lfo;
|
|
s32 cents;
|
|
} AXART_PITCH_MOD;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
s32 attenuation;
|
|
} AXART_VOLUME;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
s32 attenuation;
|
|
} AXART_AUXA_VOLUME;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
s32 attenuation;
|
|
} AXART_AUXB_VOLUME;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
s32 delta;
|
|
s32 target;
|
|
s32 attenuation;
|
|
} AXART_VOLUME_ENV;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
s32 delta;
|
|
s32 target;
|
|
s32 attenuation;
|
|
} AXART_AUXA_VOLUME_ENV;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
s32 delta;
|
|
s32 target;
|
|
s32 attenuation;
|
|
} AXART_AUXB_VOLUME_ENV;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
AXART_LFO lfo;
|
|
s32 attenuation;
|
|
} AXART_VOLUME_MOD;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
AXART_LFO lfo;
|
|
s32 attenuation;
|
|
} AXART_AUXA_VOLUME_MOD;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
AXART_LFO lfo;
|
|
s32 attenuation;
|
|
} AXART_AUXB_VOLUME_MOD;
|
|
|
|
typedef struct {
|
|
AXART_ART art;
|
|
u32 initLPF;
|
|
u32 frequency;
|
|
u32 update;
|
|
} AXART_LPF;
|
|
|
|
typedef struct {
|
|
void* next;
|
|
void* prev;
|
|
AXVPB* axvpb;
|
|
f32 sampleRate;
|
|
AXART_ART* articulators;
|
|
} AXART_SOUND;
|
|
|
|
#define AXART_SINE_CNT 64
|
|
extern f32 AXARTSine[AXART_SINE_CNT];
|
|
|
|
// axart
|
|
void AXARTInit(void);
|
|
void AXARTQuit(void);
|
|
void AXARTServiceSounds(void);
|
|
void AXARTAddSound(AXART_SOUND* sound);
|
|
void AXARTRemoveSound(AXART_SOUND* sound);
|
|
void AXARTInitLfo(AXART_LFO* lfo, f32* samples, u32 length, f32 delta);
|
|
void AXARTInitArt3D(AXART_3D* articulator);
|
|
void AXARTInitArtPanning(AXART_PANNING* articulator);
|
|
void AXARTInitArtItd(AXART_ITD* articulator);
|
|
void AXARTInitArtSrctype(AXART_SRC* articulator);
|
|
void AXARTInitArtPitch(AXART_PITCH* articulator);
|
|
void AXARTInitArtPitchEnv(AXART_PITCH_ENV* articulator);
|
|
void AXARTInitArtPitchMod(AXART_PITCH_MOD* articulator);
|
|
void AXARTInitArtVolume(AXART_VOLUME* articulator);
|
|
void AXARTInitArtAuxAVolume(AXART_AUXA_VOLUME* articulator);
|
|
void AXARTInitArtAuxBVolume(AXART_AUXB_VOLUME* articulator);
|
|
void AXARTInitArtVolumeEnv(AXART_VOLUME_ENV* articulator);
|
|
void AXARTInitArtAuxAVolumeEnv(AXART_AUXA_VOLUME_ENV* articulator);
|
|
void AXARTInitArtAuxBVolumeEnv(AXART_AUXB_VOLUME_ENV* articulator);
|
|
void AXARTInitArtVolumeMod(AXART_VOLUME_MOD* articulator);
|
|
void AXARTInitArtAuxAVolumeMod(AXART_AUXA_VOLUME_MOD* articulator);
|
|
void AXARTInitArtAuxBVolumeMod(AXART_AUXB_VOLUME_MOD* articulator);
|
|
void AXARTInitArtLpf(AXART_LPF* articulator);
|
|
|
|
// axart3d
|
|
void AXARTSet3DDistanceScale(f32 scale);
|
|
void AXARTSet3DDopplerScale(f32 scale);
|
|
void AXART3DSound(AXART_3D* articulator);
|
|
|
|
// axartcents
|
|
f32 AXARTCents(s32 cents);
|
|
|
|
// axartenv
|
|
void AXARTPitchEnv(AXART_PITCH_ENV* articulator);
|
|
void AXARTVolumeEnv(AXART_VOLUME_ENV* articulator);
|
|
|
|
// axartlfo
|
|
void AXARTLfo(AXART_LFO* lfo);
|
|
|
|
// axartsound
|
|
void AXARTServiceSound(AXART_SOUND* sound);
|
|
void AXARTAddArticulator(AXART_SOUND* sound, AXART_ART* articulator);
|
|
|
|
// axartlpf
|
|
void AXARTLpf(AXART_LPF*, AXVPB*);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _REVOLUTION_AXART_H_
|