summaryrefslogtreecommitdiff
path: root/support/mid2tex/src/midi.h
blob: 01d43fd2b5dc978a1533fba573eb4969b5b78712 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/******************************/
/*                            */
/* midi.h                     */
/*                            */
/* Definition der Midi-Events */
/*                            */
/******************************/


/***************************/
/* Channel Voice Messages. */
/***************************/

#define MIDI_NOTE_OFF		(0x80)
#define MIDI_NOTE_ON		(0x90)
#define MIDI_POLY_AFTERTOUCH	(0xA0)
#define	MIDI_CTRL_CHANGE	(0xB0)
#define MIDI_PROG_CHANGE	(0xC0)
#define MIDI_CHNL_AFTERTOUCH	(0xD0)
#define MIDI_PITCH_BEND		(0xE0)

/********************/
/* System Messages. */
/********************/

#define MIDI_SYSTEM_MSG		(0xF0)

#define MIDI_SYSTEM_EXCLUSIVE	(0xF0)
#define MIDI_SONG_POSITION_PTR	(0xF2)
#define MIDI_SONG_SELECT	(0xF3)
#define MIDI_TUNE_REQUEST	(0xF6)
#define MIDI_EOX		(0xF7)
#define MIDI_FILE_META_EVENT    (0xFF)

/******************************/
/* System Real-Time Messages. */
/******************************/

#define MIDI_TIMING_CLOCK	(0xF8)
#define MIDI_START		(0xFA)
#define MIDI_CONTINUE		(0xFB)
#define MIDI_STOP		(0xFC)
#define MIDI_ACTIVE_SENSING	(0xFE)
#define MIDI_SYSTEM_RESET	(0xFF)

/*******************************/
/* MIDI file format constants. */
/*******************************/

#define MIDI_FILE_HEADER	"MThd"
#define MIDI_TRACK_HEADER	"MTrk"

/**************************/
/* MIDI file Meta-Events. */
/**************************/

#define MIDI_SEQUENCE_NUMBER	(0x00)
#define MIDI_TEXT_EVENT		(0x01)
#define MIDI_CHANNEL_PREFIX	(0x20)
#define MIDI_END_OF_TRACK	(0x2F)
#define MIDI_SET_TEMPO		(0x51)
#define MIDI_SMPTE_OFFSET	(0x54)
#define MIDI_TIME_SIGNATURE	(0x58)
#define MIDI_KEY_SIGNATURE	(0x59)
#define MIDI_SEQUENCER_SPECIFIC	(0x7F)

/******************************/
/* Specific Text Meta-Events. */
/******************************/

#define MIDI_COPYRIGHT_NOTICE	(0x02)
#define MIDI_TRACK_NAME		(0x03)
#define MIDI_INSTRUMENT_NAME	(0x04)
#define MIDI_LYRIC		(0x05)
#define MIDI_TEXT_MARKER	(0x06)
#define MIDI_CUE_POINT		(0x07)

#define MAJOR 0
#define MINOR 1

typedef struct header_struct {
	char MThd[5];
	unsigned int chunk_length;
	short int format, tracks, per_quarter;
} Header;

typedef struct track_str {
	char MTrk[5];
	int chunk_length;
} Track_Header;