OSDN Git Service

* End of Coding vefiry_event.c
[playumidi/playumidi.git] / src / playumidi.h
1
2
3
4
5
6 typedef unsigned char   Byte;
7 typedef unsigned int    DWord;
8 typedef unsigned short  Word;
9
10 typedef struct  _smf_header {
11         char    str_header[4];  /* "MThd"(0x4d, 0x54, 0x68,0x64) */
12         DWord   dw_data_size;   /* Real DataSize - 32bit BigEndian */
13         Word    uw_format;              /* SMF format 0 or 1 - BigEndian */
14         Word    uw_tracks;              /* Tracks */
15         Word    uw_deltabase;   /* DeltaTime BaseValue */
16 } __attribute__ ((packed)) SmfHeader;
17
18
19 typedef struct  _smf_track_header {
20         char    str_header[4];  /* "MTrk" (0x4d, 0x54, 0x72, 0x6b) */
21         DWord   dw_trksize;             /* Track Data Size */
22 } __attribute__ ((packed)) SmfTrackHeader;
23
24
25 typedef struct  {
26         DWord           dw_tracksize;
27         Byte            *pb_data;
28
29         Byte            *pb_now;
30         Byte            b_run_status;
31         DWord           dw_delta_now;
32 } TrackInfo;
33
34 typedef struct  {
35         DWord           dw_delta;
36         DWord           dw_dataptr;
37         Byte            b_data[3];
38         Byte            b_run_status;
39 #ifdef  VERIFY_EVENT
40         Word            uw_track;
41 #endif
42 } MidiEventInfo;
43
44
45 /* ===================================================================*/
46 #define BIG2LITTLE16(n)         (((((unsigned short)(n))&0x00ff)<<8)|\
47                                                                 ((((unsigned short)(n))&0xff00)>>8))
48
49 #define BIG2LITTLE32(n)         (((((unsigned int)(n))&0x000000ff)<<24)|\
50                                                                 ((((unsigned int)(n))&0x0000ff00)<< 8)|\
51                                                                 ((((unsigned int)(n))&0x00ff0000)>> 8)|\
52                                                                 ((((unsigned int)(n))&0xff000000)>>24))
53
54
55 #define SMF_HEADER_STRING               "MThd"
56 #define SMF_TRKHEADER_STRING    "MTrk"
57
58 #define SMF_EVENT_NOTEOFF               0x80            /* 3Byte */
59 #define SMF_EVENT_NOTEON                0x90            /* 3Byte */
60 #define SMF_EVENT_KEYPRESSER    0xa0            /* 3Byte */
61 #define SMF_EVENT_CTRLCHANGE    0xb0            /* 3Byte */
62 #define SMF_EVENT_PROGCHANGE    0xc0            /* 2Byte */
63 #define SMF_EVENT_CHNPRESSER    0xd0            /* 2Byte */
64 #define SMF_EVENT_PITCHBEND             0xe0            /* 3Byte */
65 #define SMF_EVENT_SYSEX_META    0xf0            /* Variable Size */
66
67 #define SMF_EVENT_SYSEX_F0              0xf0
68 #define SMF_EVENT_SYSEX_F7              0xf7
69 #define SMF_EVENT_META                  0xff
70
71 #define SMF_META_SEQUENCENO             0x00            /* 3Byte=0x02(len), 4,5Byte=Data */
72 #define SMF_META_TEXT                   0x01            /* 3Byte=len, 4Byte- =Data */
73 #define SMF_META_COPYRIGHT              0x02            /* 3Byte=len, 4Byte- =Data */
74 #define SMF_META_TITLE                  0x03            /* 3Byte=len, 4Byte- =Data */
75 #define SMF_META_INSTRUMENT             0x04            /* 3Byte=len, 4Byte- =Data */
76 #define SMF_META_LYLIC                  0x05            /* 3Byte=len, 4Byte- =Data */
77 #define SMF_META_MARKER                 0x06            /* 3Byte=len, 4Byte- =Data */
78 #define SMF_META_QUEPOINT               0x07            /* 3Byte=len, 4Byte- =Data */
79 #define SMF_META_PROGRAM                0x08            /* 3Byte=len, 4Byte- =Data */
80 #define SMF_META_DEVICE                 0x09            /* 3Byte=len, 4Byte- =Data */
81 #define SMF_META_CHNPREFIX              0x20            /* 3Byte=0x01(len), 4Byte=Data */
82 #define SMF_META_PORT                   0x21            /* 3Byte=0x01(len), 4Byte=Data(Port) */
83 #define SMF_META_TRACKEND               0x2f            /* 3Byte=0x00(len) */
84 #define SMF_META_TEMPO                  0x51            /* 3Byte=0x03(len), 4,5,6Byte=TempoData */
85 #define SMF_META_SMPTEOFFSET    0x54            /* 3Byte=0x05(len), 4Byte- = hr,mn,se,fr,ff */
86 #define SMF_META_TIMESIGNATURE  0x58            /* 3Byte=0x04(len), 4Byte- = nn,dd,cc,bb */
87 #define SMF_META_KEYSIGNATURE   0x59            /* 3Byte=0x02(len), 4Byte- = sf,mi */
88 #define SMF_META_SPECIAL                0x7f            /* 3Byte=len, 4Byte- =Data */
89
90 #define SMF_IS_RUNNING_STATUS(n)        (!((n)&0x80))
91
92
93 #ifndef PLAYUMIDI_SRC_SMF
94         #define EXTERN_FUNC_SMF         extern
95 #else
96         #define EXTERN_FUNC_SMF 
97 #endif
98 EXTERN_FUNC_SMF int ReadDeltaTime( DWord *dw_delta, Byte *pb_now );
99 EXTERN_FUNC_SMF int ReadMidiFile( Byte *pb_fbuf );
100
101
102 #ifndef PLAYUMIDI_SRC_MIDIEVENT
103     #define EXTERN_FUNC_MIDIEVENT     extern
104 #else
105     #define EXTERN_FUNC_MIDIEVENT 
106 #endif
107 EXTERN_FUNC_MIDIEVENT   void 
108         MidiEvent_SetMidiDivision( Word uw_division ) ;
109 EXTERN_FUNC_MIDIEVENT   Word 
110         MidiEvent_GetMidiDivision( void );
111 EXTERN_FUNC_MIDIEVENT   DWord
112         MidiEvent_GetMidiEvents( void );
113 EXTERN_FUNC_MIDIEVENT   MidiEventInfo *
114     MidiEvent_GetMidiEventPointer( void );
115 EXTERN_FUNC_MIDIEVENT   Byte *
116     MidiEvent_GetVarDataPointer( void );
117 EXTERN_FUNC_MIDIEVENT   int
118     MidiEvent_AllocMidiVarData( DWord dw_size );
119 EXTERN_FUNC_MIDIEVENT int
120     MidiEvent_FreeMidiVarData( void );
121 EXTERN_FUNC_MIDIEVENT int
122     MidiEvent_AllocMidiEventInfo( DWord dw_events );
123 EXTERN_FUNC_MIDIEVENT int
124     MidiEvent_FreeMidiEvnetInfo( void );
125
126 #ifdef  VERIFY_EVENT
127         #ifndef PLAYUMIDI_SRC_VERIFY_EVENT
128                 extern int Veryfy_Event( TrackInfo *p_track_start, Word uw_tracks );
129         #endif
130 #endif
131