Files
2026-07-09 11:27:59 +08:00

136 lines
3.1 KiB
C

#ifndef ProCommonH
#define ProCommonH
#ifdef _WIN32
#pragma once
#endif
#include "commonstruct.h"
#pragma pack (2)
//Track引用信息
typedef struct tagTrackRef{
UINT idLoc; //位置id
UINT idStyle; //风格ID
char segNo; //原片段号
char chan; //原通道号
char prog; //乐器号
char vol; //音量
}TTRACKREF, *PTTRACKREF;
//原创风格信息
typedef struct tagStyleOrigin{
WORD cost; //使用消费
WORD score; //评分 (score/100)10分制
int paid; //支付次数
int state; //状态
TSTYLEDETAIL detail;
tagStyleOrigin(){
cost = 0;
score = 0;
paid = 0;
state = 0;
}
}TSTYLEORIGIN, *PTSTYLEORIGIN;
//本地风格信息
typedef struct tagStyleLocal{
short iTempo; //原速
short iTimesignature; //节拍 ( 0=4/4, 1=3/4, 2=2/4, 3=6/8 )
char strStyleName[40]; //风格名称 UTF8
char nSegNum[4]; //伴奏/加花/前奏/尾奏个数
char aIEBars[2][8]; //前/尾奏小节数 (0-3大调 4-7小调)
char nSegVol[4][8]; //片段音量
TTRACKREF trkRef[4][8][16]; //轨道引用信息
tagStyleLocal(){
memset( this, 0, sizeof(tagStyleLocal) );
}
}TSTYLELOCAL, *PTSTYLELOCAL;
//分享Track引用信息
typedef struct tagShareTrackRef{
UINT idStyle; //原创风格ID
char segNo; //原片段号
char chan; //原通道号
char prog; //乐器号
char vol; //音量
}TSHARETRACKREF, *PTSHARETRACKREF;
//分享的重组风格信息
typedef struct tagStyleShare{
int idAuthor; //作者ID
WORD score; //评分 (score/100)10分制
short iTempo; //原速
short iTimesignature; //节拍 ( 0=4/4, 1=3/4, 2=2/4, 3=6/8 )
char type[2]; //风格分类
char nSegNum[4]; //伴奏/加花/前奏/尾奏个数
char aIEBars[2][8]; //前/尾奏小节数 (0-3大调 4-7小调)
char nSegVol[4][8]; //片段音量
//以下部分可变长度传输和存储
char strAuthor[40]; //作者名称 UTF8
char strStyleName[40]; //风格名称 UTF8
char strDescription[120]; //风格描述 UTF8
TSHARETRACKREF trkRef[4][8][16]; //轨道引用信息
tagStyleShare(){
memset( this, 0, sizeof(tagStyleShare) );
}
}TSTYLESHARE, *PTSTYLESHARE;
//专业版风格结构体
typedef struct tagProStyle{
UINT idLoc; //位置id
UINT idStyle; //风格ID
union{
PTSTYLEORIGIN pOrigin;
PTSTYLELOCAL pLocal;
PTSTYLESHARE pShare;
};
tagProStyle(){
memset( this, 0, sizeof(tagProStyle) );
}
~tagProStyle(){
if( idLoc==0 ){
if( pOrigin )
delete pOrigin;
}
else if( idLoc==1 ){
if( pShare )
delete pShare;
}
else{
if( pLocal )
delete pLocal;
}
}
}TPROSTYLE, *PTPROSTYLE;
//分享风格更新结构体
typedef struct tShareUpdate{
UINT idStyle; //风格ID
WORD score; //评分 (score/100)10分制
WORD reserved; //保留,对齐字节
} TSHAREUPDATE, *PTSHAREUPDATE;
//待审核风格更新结构体
typedef struct tCheckUpdate{
UINT idStyle; //风格ID
short cost; //定价
WORD reserved; //保留,对齐字节
} TCHECKUPDATE, *PTCHECKUPDATE;
#pragma pack()
#endif //_COMMONSTRUCT_H_