Files
AccompanyCube/ComposeStageUnit.h
2026-06-13 00:10:11 +08:00

147 lines
2.7 KiB
C++

//---------------------------------------------------------------------------
#ifndef ComposeStageUnitH
#define ComposeStageUnitH
//---------------------------------------------------------------------------
#include <vector>
using namespace std;
#define POINTS_PER_BAR 120
#define CHECK_STAGE_LENGTH 1
#define CHECK_STAGE_VAR 2
#define CHECK_STAGE_EVENT 3
#define CHECK_STAGE_ALL 4
/***************************************************************************************/
// 全局类定义
/***************************************************************************************/
/*
class CFill
{
public:
int iPos;
int iType;
CFill( int pos, int type ){
iPos = pos;
iType = type;
}
CFill( CFill* pFill ){
iPos = pFill->iPos;
iType = pFill->iType;
}
};
class CVolumeSet
{
public:
UINT iChannel;
UINT nVolSet;
UINT nVolConfirm;
UINT nVolInit;
CVolumeSet( UINT chan, UINT volSet, UINT volComfirm, UINT volInit ){
iChannel = chan;
nVolSet = volSet;
nVolConfirm = volComfirm;
nVolInit = volInit;
}
CVolumeSet( CVolumeSet* pSet ){
iChannel = pSet->iChannel;
nVolSet = pSet->nVolSet;
nVolConfirm = pSet->nVolConfirm;
nVolInit = pSet->nVolInit;
}
};
class CInstrumentSet
{
public:
UINT iChannel;
UINT nInsSet;
UINT nInsConfirm;
UINT nInsInit;
CInstrumentSet( UINT chan, UINT insSet, UINT insComfirm, UINT insInit ){
iChannel = chan;
nInsSet = insSet;
nInsConfirm = insComfirm;
nInsInit = insInit;
}
CInstrumentSet( CInstrumentSet* pSet ){
iChannel = pSet->iChannel;
nInsSet = pSet->nInsSet;
nInsConfirm = pSet->nInsConfirm;
nInsInit = pSet->nInsInit;
}
};
*/
typedef struct tagBarVols
{
DWORD aVols[POINTS_PER_BAR];
bool bRecording,
bInvalid;
tagBarVols()
{
bRecording = true;
bInvalid = false;
memset( aVols, 0, POINTS_PER_BAR*sizeof(DWORD) );
}
} BARVOLS, *PBARVOLS;
typedef struct tagMelodyBar
{
BARVOLS tBarVol;
char iFill;
char iChords[2];
tagMelodyBar()
{
iFill = -1;
iChords[0] = iChords[1] = -1;
}
} MELODYBAR, *PMELODYBAR;
typedef struct tagMelodyStage //旋律分段信息
{
int iFirstBar;
int iLastBar;
int iVar;
} MELODYSTAGE, *PMELODYSTAGE;
typedef struct tagComposeStage //曲式分段信息
{
int iMelodyStage; //旋律或前间尾奏号
int nStageBars; //该段小节数
int iVar; //伴奏类型
int idStyle; //风格ID
vector<DWORD> aFills; //加花LOWORD=小节数 HIWORD=类型
string strStyleName;
tagComposeStage()
{
iMelodyStage = -1;
nStageBars = 0;
iVar = -1;
idStyle = -1;
}
~tagComposeStage()
{
aFills.clear();
}
} COMPOSESTAGE, *PCOMPOSESTAGE;
typedef vector<PBARVOLS> BARVOLSLIST;
typedef vector<PMELODYBAR> MELODYBARLIST;
typedef vector<PMELODYSTAGE> MELODYSTAGELIST;
typedef vector<PCOMPOSESTAGE> COMPOSESTAGELIST;
#endif