Fixed some bugs and warnings, and cleaned-up and reworked the MIDI input stuff so that MIDI input can go to multiple devices at a time (each device allows configuring, whether or not it should receive MIDI input), and fixed MIDI input on the Sound Blaster 16/AWE32's built-in MPU-401.
This commit is contained in:
@@ -34,12 +34,24 @@ void midi_in_device_init();
|
||||
|
||||
typedef struct midi_device_t
|
||||
{
|
||||
void (*play_sysex)(uint8_t *sysex, unsigned int len);
|
||||
void (*play_msg)(uint8_t *msg);
|
||||
void (*poll)();
|
||||
int (*write)(uint8_t val);
|
||||
void (*play_sysex)(uint8_t *sysex, unsigned int len);
|
||||
void (*play_msg)(uint8_t *msg);
|
||||
void (*poll)();
|
||||
int (*write)(uint8_t val);
|
||||
} midi_device_t;
|
||||
|
||||
typedef struct midi_in_handler_t
|
||||
{
|
||||
uint8_t *buf;
|
||||
int cnt;
|
||||
uint32_t len;
|
||||
|
||||
void (*msg)(void *p, uint8_t *msg);
|
||||
int (*sysex)(void *p, uint8_t *buffer, uint32_t len, int abort);
|
||||
struct midi_in_handler_t *p;
|
||||
struct midi_in_handler_t *prev, *next;
|
||||
} midi_in_handler_t;
|
||||
|
||||
typedef struct midi_t
|
||||
{
|
||||
uint8_t midi_rt_buf[8], midi_cmd_buf[8],
|
||||
@@ -53,15 +65,20 @@ typedef struct midi_t
|
||||
|
||||
extern midi_t *midi, *midi_in;
|
||||
|
||||
void midi_init(midi_device_t* device);
|
||||
void midi_in_init(midi_device_t* device, midi_t **mididev);
|
||||
void midi_close();
|
||||
void midi_in_close(void);
|
||||
void midi_raw_out_rt_byte(uint8_t val);
|
||||
void midi_raw_out_thru_rt_byte(uint8_t val);
|
||||
void midi_raw_out_byte(uint8_t val);
|
||||
void midi_clear_buffer(void);
|
||||
void midi_poll();
|
||||
extern void midi_init(midi_device_t* device);
|
||||
extern void midi_in_init(midi_device_t* device, midi_t **mididev);
|
||||
extern void midi_close();
|
||||
extern void midi_in_close(void);
|
||||
extern void midi_raw_out_rt_byte(uint8_t val);
|
||||
extern void midi_raw_out_thru_rt_byte(uint8_t val);
|
||||
extern void midi_raw_out_byte(uint8_t val);
|
||||
extern void midi_clear_buffer(void);
|
||||
extern void midi_poll();
|
||||
|
||||
extern void midi_in_handler(int set, void (*msg)(void *p, uint8_t *msg), int (*sysex)(void *p, uint8_t *buffer, uint32_t len, int abort), void *p);
|
||||
extern void midi_in_handlers_clear(void);
|
||||
extern void midi_in_msg(uint8_t *msg);
|
||||
extern void midi_in_sysex(uint8_t *buffer, uint32_t len);
|
||||
|
||||
#if 0
|
||||
#ifdef _WIN32
|
||||
|
||||
Reference in New Issue
Block a user