#ifndef _MIDI_H
#define _MIDI_H

#define MIDI_NOTE_ON 	0x90
#define MIDI_NOTE_OFF 	0x80

// 1001cccc 0nnnnnnn 0vvvvvvv
#define MIDI_POLY_TOUCH 	0xA0
// 1011cccc 0nnnnnnn 0vvvvvvv
#define MIDI_CONTROL_CHANGE	0xB0
// 1100cccc 0ppppppp
#define MIDI_PROGRAM_CHANGE	0xC0

#define MIDI_CHANNEL_TOUCH	0xD0

#define MIDI_PITCH_BEND	        0xE0

#define MIDI_DATA_MASK			0x7F
#define MIDI_STATUS_MASK		0xF0
#define MIDI_CHANNEL_MASK		0x0F

#define MIDI_BAUD_RATE			31250

void midiInit(void);
int midiNoteOnOut(char channel, char note, char vel);
int midiNoteOffOut(char channel, char note, char vel);
int midiControlChangeOut(char channel, char controller, char value);
int midiProgramChangeOut(char channel, char program);
int midiPolyTouchOut(char channel, char note, char pressure);
int midiChannelTouchOut(char channel, char pressure);
int midiPitchBendOut(char channel, char bendLSB, char bendMSB);

#endif


