⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsmidi.h

📁 Sunplus 8202S source code.
💻 H
📖 第 1 页 / 共 2 页
字号:
#define MIDI_OSDFONT_LYRIC_SIZE         ((((MIDI_LYRIC_FONT_GB1SIZE+MIDI_LYRIC_FONT_GB2SIZE+MIDI_FONT_GB3SIZE+MIDI_MENU_FONT_GB1SIZE+MIDI_MENU_FONT_GB2SIZE)+3)>>2)<<2)
#define MIDI_OSDFONT_ADDR_SIZE          (MIDI_OSDFONT_LYRIC_SIZE+MIDI_INDEX_SEARCH_STACK_SIZE)  
#define MIDI_INDEX_SEARCH_STACK_ADDR    (MIDI_OSDFONT_ADDR+MIDI_OSDFONT_LYRIC_SIZE)
#define MIDI_INDEX_SEARCH_STACK_ADDR_END (MIDI_INDEX_SEARCH_STACK_ADDR+MIDI_INDEX_SEARCH_STACK_SIZE)
#else
#define MIDI_LYRIC_FONT_GB1SIZE         (2208490) 
#define MIDI_LYRIC_FONT_GB2SIZE         (1443850)
#define MIDI_OSDFONT_ADDR_SIZE          (3652340)  
#endif
 
#define LYRIC_DATA_BUFFER_ADDR          (MIDI_OSDFONT_ADDR + MIDI_OSDFONT_ADDR_SIZE)   //3652340
#define MIDI_INDEX_BUFFER_ADDR          ((LYRIC_DATA_BUFFER_ADDR)+(LYRIC_DATA_BUFFER_SIZE))
#define MIDI_INDEX_BUFFER_ADDR_END      ((MIDI_INDEX_BUFFER_ADDR)+(MIDI_INDEX_BUFFER_SIZE))

#define MIDI_MP3_FILE_ADDR              (((MIDI_INDEX_BUFFER_ADDR_END+1023)>>10)<<10)
//#define MIDI_MP3_PREBUFFER_SIZE         (3072)
#define MIDI_MP3_PREBUFFER_SIZE         (((SDRAM_BASE+0x1000000-MIDI_MP3_FILE_ADDR)>>10)&0xfff0)
//#define MIDI_MP3_PREBUFFER_SIZE         (16)


#ifdef MIDI_EJECT_PASSWORD    //ouyang add for eject password 2004-11-20 15:10
EXTERN_FSMIDI UINT8 midi_open_pwd_start;    
EXTERN_FSMIDI UINT8 midi_open_pwd_finished; 
#endif


// these variable for external reference
EXTERN_FSMIDI BYTE      bMidiPlayerBoolean;
EXTERN_FSMIDI BYTE      cIsCHSSong;      //is chinese song?
EXTERN_FSMIDI UINT8     *upMidiGB2FontAddr; 
#ifdef SUPPORT_GB_FONTBASE3
EXTERN_FSMIDI BYTE     *upGB3FontAddr; 
EXTERN_FSMIDI BYTE     *upGB3FontEndPtr; 
#endif
EXTERN_FSMIDI PLF_REC   MidiFont[1]; //  4
#ifdef MIDI_MENU_FONT
EXTERN_FSMIDI UINT8     *upMenuGB2FontAddr,*upMenuGB1FontAddr;
#endif


//define the struct to OSD the Midi Title
typedef struct
{
    BYTE    *pInfoStar;
    UINT32  uInfoLen;
} MidiSongInfo_S;

EXTERN_FSMIDI MidiSongInfo_S stMidiTitleInfo;


//Lyric player state
enum
{
    MIDI_STATE_LYRICINIT = 0,
    MIDI_STATE_OSDLYRIC,
    MIDI_STATE_SYNSTART,
    MIDI_STATE_SYNING,
    MIDI_STATE_NOLYRIC,
};  


//The english alphabet and number width in pixel
extern BYTE abc_width[26];
extern BYTE ABC_width[26];
extern BYTE num_width[10];
extern BYTE midiState;
extern BYTE bMidiSynSate;
extern BYTE dotnum,cDotRev,cEnLyric;

typedef struct
{
    UINT32  DeltaLyricSTCno;
    UINT32  LyricDiplaySTCno;	//use it in order to better scheme in future
    BYTE    *RealTimeLyricData;
//    BYTE    *iPMidi;				//use it in order to better scheme in future
    BYTE    LyricEventLen;
    BYTE    c[3]; //dummy data to keep data structure size = 4N
}LyricPos;


extern void MidiSetLyricStopState(void);
extern void MidiOSDLyricPolling(void);
extern UINT16   GetStrColumns(BYTE *tmpbuff);
extern void MidiDispCaption(BYTE * CaptionStr,UINT16 len);
extern void DotSwitch(BYTE Type);

#endif  // end #ifdef SUPPORT_OSDLYRIC


extern void MidiServMP3(void);
extern void MidiUI_Sel_Clear_OSD(void);    //ouyang  2004.08.13 take apart the function of "up" key
//midi module functions for external reference
extern void     MidiInit();
extern void     MidiCreate();
extern int      MidiPolling();
extern void     MidiPlaySet(UINT32 msf, UINT32 iLBA);
extern int      MidiPreParse(UINT32 msf, UINT32 len);

#ifdef HDD_INDEX_TEST

//UINT16 Hdd_fsnav_trk_now;
extern  int HDD_ReadSec(UINT8 *buff,UINT32 lba,int seccnt);
extern int wb_init(UINT32 lsn);

#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)//liweihua mod 20031219
#include "cardfs.h"
extern CARD_FILE       cardFile;
extern CARD_INFO       cardP;
#if defined(CF_CARD_WRITE) ||defined(SPHE8202_FAT_Write_Function) //|| defined(WRITE_USB)
extern BYTE read_card_sign,flag_cf2cd,flag_cd2cf;
#endif //#if defined(CF_CARD_WRITE) ||defined(SPHE8202_FAT_Write_Function) //|| defined(WRITE_USB)
#endif //#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)
#endif //end #ifdef HDD_INDEX_TEST

//modify xlluo 2004-5-27 for two Men or two Women singing together
#define CHORUS_TWO_HOMOMAN
#ifdef CHORUS_TWO_HOMOMAN
EXTERN_FSMIDI   BYTE ca_Singer1Name[2];
EXTERN_FSMIDI   BYTE ca_Singer2Name[2];
EXTERN_FSMIDI   BYTE bIsExterSingerTip;
#endif

#ifdef  SUPPORT_MIDIDISK_TITLE
int MidiPlayTitle(void);
EXTERN_FSMIDI   BYTE bIsPlayMidiTitle;
#endif

#define SUPPORT_SANJING_SCORE //ouyang 204.11.12
#ifdef SUPPORT_SANJING_SCORE                 //xlluo for sanjin score system   2004-10-15
extern const char *Score_Str_LTS[3];
extern const char *Score_Str_DKS[3];
extern int ScoreDelay(void);
extern char * SetScoreGalaStr(int score);

EXTERN_FSMIDI int SJScoreLine[10];

EXTERN_FSMIDI BYTE bIsSJScoreInvaild;     //False: close score show    True: show scroe system
EXTERN_FSMIDI BYTE cScoreStatus;            // 0~4:score low limit   5:close human voice ON(0)/OFF(1)
                                                                    //   6/7: 00: normal  01:dks 11:lts
                                                                    //+-------------------------------+
                                                                    //+ bit       0  1    2    3    4      5      6    7    +
                                                                    //+  score 0  20  40  60  80  voice  lts  dks +
                                                                    //+-------------------------------+
                                                                    //init code is 0x01 if is 0x00 will be set to 0x01 
                                                                    //when use macro GETSCORELIMITENUM
enum{
            SANJINSCORE_START0 =0X01,                //lowlimit is zero
            SANJINSCORE_START1 =0X02,                //lowlimit is 20
            SANJINSCORE_START2 =0X04,                //lowlimit is 40
            SANJINSCORE_START3 =0X08,                //lowlimit is 60
            SANJINSCORE_START4 =0X10,                //lowlimit is 80
            SANJINSCORE_DISABLEVOICE =0X20,    //is close human voice
            SANJINSCORE_MODE_DKS =0x80,          //is dks
            SANJINSCORE_MODE_LTS =0xc0,            //is lts
            SANJINSCORE_MODE_NML =0x00,          //normal status
         }emSjScrBitTest;

#define BITTEST(x,y)                   ((x & (0x01 << y)) && 1)       

#define MOVESCORELIMITERIGHT() (cScoreStatus =(cScoreStatus&0xe0)|((cScoreStatus&0x1f)<<1))
#define MOVESCORELIMITELEFT()   (cScoreStatus =(cScoreStatus&0xe0)|((cScoreStatus&0x1f)>>1))
#define SETSCOREMODE(x)         (cScoreStatus =((cScoreStatus&0x3f)^(x)))   
#define GETSCOREMODE( )          (cScoreStatus&0xc0)                                                                     
#define SETSCORELIMITE(x)        (cScoreStatus = ((cScoreStatus&0xe0)^(x)))
#define GETSCORELIMITE( )         (cScoreStatus&0x1f)
/*#define GETSCORELIMITECODE(x)  do{   \
                                                                int sjmarco_limitnum_i; \
                                                               if (cScoreStatus&0x1f)   \
                                                                {   \
                                                                    for (sjmarco_limitnum_i =0;sjmarco_limitnum_i<4;sjmarco_limitnum_i++)  \
                                                                    {   \
                                                                        BITTEST((cScoreStatus&0x1f),sjmarco_limitnum_i)   \
                                                                    }   \
                                                                    x =sjmarco_limitnum_i;    \
                                                                }else   \
                                                                {   \
                                                                    SETSCORELIMITE(SANJINSCORE_START0); \
                                                                    x =0;   \
                                                                }   \
                                                            }while(0)
                                                            
 #define GETSCORELIMITENUM(x)       do {    \
                                                                    GETSCORELIMITECODE(x);  \
                                                                    x *=20; \
                                                            }while(0)
                                                            */
#define ISCLOSEHUMANVOICE()          (cScoreStatus&SANJINSCORE_DISABLEVOICE)                                                   
#define DISABLE_HUMANVOICE()        (cScoreStatus =cScoreStatus|SANJINSCORE_DISABLEVOICE)     
#define ENABLE_HUMANVOICE()         (cScoreStatus =cScoreStatus&0xdf)
#define SWITCH_HUMANVOICE()        (cScoreStatus =(cScoreStatus&0xdf)|(cScoreStatus^SANJINSCORE_DISABLEVOICE))

#endif


#define SUPPORT_MIDI_STAUSTEST                              //xlluo 04-12-09
#ifdef SUPPORT_MIDI_STAUSTEST
typedef enum {
                        MIDI_STATUS_ISPROGRAM =0,                  //program
                        MIDI_STATUS_ISFIRSTPAGE,                //firstpage
                        MIDI_STATUS_ISSCORE,                      //score
                        MIDI_STATUS_ISRANDOM,                   //random
                        //please add more status here
                        
                    }statusType;
EXTERN_FSMIDI   BYTE Midi_PlayStatusTest(statusType type);
#endif

#ifdef SUPPORT_MIDIUI_IME                       //xlluo add for customer
#define SUPPORT_PINYINGDELAY
#endif

#ifdef SUPPORT_PINYINGDELAY
#define MIDI_PINYINGINPUT_DELAY             (3)         //about 1.5 s
#endif


// ************************************************************************
// ***  Define the Midi data conveted from the Custom Lyric Spec Data
// ************************************************************************
/*ouyang move to cfg_sunplus_midi4fsloader.h 2005-1-21 15:20*/
#ifdef SUPPORT_YUXING_LYRIC_SPEC
#define SUPPORT_JKDISKSTATUS        //xlluo for jieke score 04-12-25
#if (defined(SUPPORT_JKDISKSTATUS)&defined(MIDI_EJECT_PASSWORD))
#include "IOP.h"
#define DISK_STATUS    255          
#endif
#endif

#ifdef SUPPORT_SANJING_LYRIC_SPEC
#ifdef SUPPORT_SANJING_DISPLAY
EXTERN_FSMIDI BYTE bIsDispTitleEnable;
#endif
BYTE bIsSanJingMidi;
#endif
#endif //#ifndef __FS_MIDI_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -