Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
SeqTrack.h
Go to the documentation of this file.
1#ifndef NW4HBM_SND_SEQ_TRACK_H
2#define NW4HBM_SND_SEQ_TRACK_H
3
4#include <revolution/types.h>
5
6#include "Channel.h"
7#include "Lfo.h"
8#include "MoveValue.h"
9#include "snd_global.h"
10
11namespace nw4hbm {
12 namespace snd {
13
15
17
18 namespace detail {
19 class SeqPlayer;
20 class SeqTrack {
21 public:
22 static const int VARIABLE_NUM = 16;
23 static const int PRGNO_MAX = 0xFFFF;
24
25 typedef struct ParserTrackParam {
26 /* 0x00 */ const u8* baseAddr;
27 /* 0x04 */ const u8* currentAddr;
28 /* 0x08 */ s32 wait;
29 /* 0x0C */ u8 muteFlag;
30 /* 0x0D */ u8 silenceFlag;
31 /* 0x0E */ u8 noteFinishWait;
32 /* 0x0F */ u8 portaFlag;
33 /* 0x10 */ int bankNo;
34 /* 0x14 */ int prgNo;
35 /* 0x18 */ LfoParam lfoParam;
36 /* 0x28 */ u8 lfoTarget;
37 /* 0x2C */ f32 sweepPitch;
38 /* 0x30 */ u8 volume;
39 /* 0x31 */ u8 volume2;
40 /* 0x32 */ s8 pitchBend;
41 /* 0x33 */ u8 bendRange;
42 /* 0x34 */ s8 pan;
43 /* 0x35 */ s8 initPan;
44 /* 0x36 */ s8 surroundPan;
45 /* 0x37 */ s8 transpose;
46 /* 0x38 */ u8 priority;
47 /* 0x39 */ u8 portaKey;
48 /* 0x3A */ u8 portaTime;
49 /* 0x3B */ u8 attack;
50 /* 0x3C */ u8 decay;
51 /* 0x3D */ u8 sustain;
52 /* 0x3E */ u8 release;
53 /* 0x3F */ u8 mainSend;
54 /* 0x40 */ u8 fxSend[AUX_BUS_NUM];
55 /* 0x43 */ u8 lpfFreq;
57
58 public:
59 SeqTrack() : mSeqPlayer(NULL) { InitParam(); }
60
61 /* 0x08 */ virtual ~SeqTrack() {}
62 /* 0x0C */ virtual ParseResult Parse(bool doNoteOn) = 0;
63
64 void SetPlayerTrackNo(int playerTrackNo);
66
67 void InitParam();
68 void SetSeqData(const void* base, s32 offset);
69
70 void Open();
71 void Close();
72
75
76 int ParseNextTick(bool doNoteOn);
77
79 void ReleaseAllChannel(int release) NO_INLINE;
81 void AddChannel(Channel* channel);
84
85 void SetMute(SeqMute mute);
86 void SetVolume(f32 volume);
87 void SetPitch(f32 pitch);
88
89 void SetSilence(bool silence, int fadeTime);
90 void SetPan(f32 param1);
91 void SetSurroundPan(f32 param1);
92 void SetLpfFreq(f32 param1);
93 void SetBiquadFilter(int param1, f32 param2);
94 void SetPanRange(f32 param1);
95 void SetModDepth(f32 param1);
96 void SetModSpeed(f32 param1);
97 void SetMainSend(f32 param1);
98 void SetFxSend(AuxBus bus, f32 param2);
99 void SetRemoteSend(s32 remoteIndex, f32 param2);
100 void SetRemoteFxSend(s32 remoteIndex, f32 param2);
101
103
104 vs16* GetVariablePtr(int varNo);
105
107 void SetSeqPlayer(SeqPlayer* seqPlayer) { mSeqPlayer = seqPlayer; }
108
110
111 Channel* NoteOn(int key, int velocity, s32 portatime, bool tie);
112
113 private:
114 static const int DEFAULT_PRIORITY = 64;
115 static const int DEFAULT_BENDRANGE = 2;
116 static const int DEFAULT_PORTA_KEY = 60;
117 static const int DEFAULT_VARIABLE_VALUE = -1;
118
119 private:
120 static void ChannelCallbackFunc(Channel* dropChannel,
122 u32 userData);
123
124 private:
125 /* 0x04 */ u8 mPlayerTrackNo;
126 /* 0x08 */ f32 mExtVolume;
127 /* 0x0C */ f32 mExtPitch;
128 /* 0x10 */ f32 mExtPan;
130 /* 0x18 */ f32 mPanRange;
131 /* 0x1C */ f32 mExtLpfFreq;
132 /* 0x20 */ f32 mExtMainSend;
134 /* 0x30 */ f32 mExtRemoteSend[WPAD_MAX_CONTROLLERS];
135 /* 0x40 */ f32 mExtRemoteFxSend[WPAD_MAX_CONTROLLERS];
140 };
141
142 } // namespace detail
143 } // namespace snd
144} // namespace nw4hbm
145
146#endif
static BOOL flag
Definition DEMOAVX.c:20
static u8 base[0x2A]
Definition WPADEncrypt.c:10
static s32 offset
Definition WUD.c:1669
Definition Channel.h:23
ChannelCallbackStatus
Definition Channel.h:25
Definition SeqPlayer.h:27
Definition SeqTrack.h:20
void SetPanRange(f32 param1)
ParserTrackParam mParserTrackParam
Definition SeqTrack.h:136
void PauseAllChannel(bool flag)
void SetSeqData(const void *base, s32 offset)
static const int DEFAULT_VARIABLE_VALUE
Definition SeqTrack.h:117
vs16 * GetVariablePtr(int varNo)
Channel * NoteOn(int key, int velocity, s32 portatime, bool tie)
vs16 mTrackVariable[VARIABLE_NUM]
Definition SeqTrack.h:137
f32 mExtSurroundPan
Definition SeqTrack.h:129
void SetSurroundPan(f32 param1)
void SetRemoteFxSend(s32 remoteIndex, f32 param2)
f32 mExtFxSend[AUX_BUS_NUM]
Definition SeqTrack.h:133
SeqPlayer * mSeqPlayer
Definition SeqTrack.h:138
void SetSeqPlayer(SeqPlayer *seqPlayer)
Definition SeqTrack.h:107
static void ChannelCallbackFunc(Channel *dropChannel, Channel::ChannelCallbackStatus status, u32 userData)
void SetBiquadFilter(int param1, f32 param2)
f32 mExtVolume
Definition SeqTrack.h:126
void UpdateChannelRelease(Channel *channel)
f32 mExtMainSend
Definition SeqTrack.h:132
f32 mExtPitch
Definition SeqTrack.h:127
static const int PRGNO_MAX
Definition SeqTrack.h:23
static const int VARIABLE_NUM
Definition SeqTrack.h:22
u8 GetPlayerTrackNo() const
Definition SeqTrack.h:65
void SetModSpeed(f32 param1)
ParserTrackParam & GetParserTrackParam()
Definition SeqTrack.h:102
int ParseNextTick(bool doNoteOn)
virtual ParseResult Parse(bool doNoteOn)=0
void SetPlayerTrackNo(int playerTrackNo)
void SetMainSend(f32 param1)
SeqPlayer * GetSeqPlayer()
Definition SeqTrack.h:106
void SetMute(SeqMute mute)
f32 mExtPan
Definition SeqTrack.h:128
f32 mExtRemoteFxSend[WPAD_MAX_CONTROLLERS]
Definition SeqTrack.h:135
SeqTrack()
Definition SeqTrack.h:59
f32 mExtRemoteSend[WPAD_MAX_CONTROLLERS]
Definition SeqTrack.h:134
f32 mExtLpfFreq
Definition SeqTrack.h:131
void SetSilence(bool silence, int fadeTime)
void SetFxSend(AuxBus bus, f32 param2)
void ReleaseAllChannel(int release) NO_INLINE
void SetModDepth(f32 param1)
void AddChannel(Channel *channel)
Channel * GetLastChannel() const
Definition SeqTrack.h:109
static const int DEFAULT_BENDRANGE
Definition SeqTrack.h:115
void SetRemoteSend(s32 remoteIndex, f32 param2)
struct nw4hbm::snd::detail::SeqTrack::ParserTrackParam ParserTrackParam
static const int DEFAULT_PORTA_KEY
Definition SeqTrack.h:116
Channel * mChannelList
Definition SeqTrack.h:139
static const int DEFAULT_PRIORITY
Definition SeqTrack.h:114
f32 mPanRange
Definition SeqTrack.h:130
virtual ~SeqTrack()
Definition SeqTrack.h:61
u8 mPlayerTrackNo
Definition SeqTrack.h:125
static u32 status
Definition fstload.c:9
signed char s8
Definition types.h:7
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
volatile s16 vs16
Definition types.h:21
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
AuxBus
Definition snd_types.h:73
@ AUX_BUS_NUM
Definition snd_types.h:73
ParseResult
Definition SeqTrack.h:16
@ PARSE_RESULT_FINISH
Definition SeqTrack.h:16
@ PARSE_RESULT_CONTINUE
Definition SeqTrack.h:16
SeqMute
Definition SeqTrack.h:14
@ MUTE_RELEASE
Definition SeqTrack.h:14
@ MUTE_STOP
Definition SeqTrack.h:14
@ MUTE_NO_STOP
Definition SeqTrack.h:14
@ MUTE_OFF
Definition SeqTrack.h:14
Definition HBMAnmController.h:6
const u8 * baseAddr
Definition SeqTrack.h:26
const u8 * currentAddr
Definition SeqTrack.h:27
LfoParam lfoParam
Definition SeqTrack.h:35
u8 fxSend[AUX_BUS_NUM]
Definition SeqTrack.h:54