- running status detection
[midifile] / src / midi.h
1 #ifndef MIDI_H_
2 #define MIDI_H_
3
4 #include <stdio.h>
5
6 struct midi {
7         int bpm;
8
9         int num_tracks;
10         struct midi_track *tracks;
11 };
12
13 struct midi_track {
14         char *name;
15         struct midi_event *head, *tail;
16         int num_ev;
17 };
18
19 struct midi_event {
20         long dt;
21         int type;
22         int channel;
23         int arg[2];
24
25         struct midi_event *next;
26 };
27
28 #define MIDI_NOTE_OFF                   8
29 #define MIDI_NOTE_ON                    9
30 #define MIDI_NOTE_AFTERTOUCH    10
31 #define MIDI_CONTROLLER                 11
32 #define MIDI_PROG_CHANGE                12
33 #define MIDI_CHAN_AFTERTOUCH    13
34 #define MIDI_PITCH_BEND                 14
35
36 #define MIDI_NOTE_NUM(ev)       ((ev)->arg[0])
37 #define MIDI_NOTE_VEL(ev)       ((ev)->arg[1])
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 struct midi *load_midi(const char *fname);
44 void free_midi(struct midi *midi);
45
46 #ifdef __cplusplus
47 }
48 #endif
49
50 #endif  /* MIDI_H_ */