Files
pcem/src/allegro-midi.c
TomW 56b455844e Initial port to Linux (using Allegro).
64-bit fixes.
Some changes to aid portability.
A few other tweaks.
2014-09-04 21:07:24 +01:00

46 lines
1008 B
C

#include "allegro-main.h"
#include "ibm.h"
#include "plat-midi.h"
//#define USE_ALLEGRO_MIDI
void midi_init()
{
#ifdef USE_ALLEGRO_MIDI
install_sound(DIGI_NONE, MIDI_AUTODETECT, NULL);
#endif
}
void midi_close()
{
#ifdef USE_ALLEGRO_MIDI
remove_sound();
#endif
}
static int midi_cmd_pos, midi_len;
static uint8_t midi_command[3];
static int midi_lengths[8] = {3, 3, 3, 3, 2, 2, 3, 0};
void midi_write(uint8_t val)
{
if (val & 0x80)
{
midi_cmd_pos = 0;
midi_len = midi_lengths[(val >> 4) & 7];
midi_command[0] = midi_command[1] = midi_command[2] = 0;
}
if (midi_len && midi_cmd_pos < 3)
{
midi_command[midi_cmd_pos] = val;
midi_cmd_pos++;
#ifdef USE_ALLEGRO_MIDI
if (midi_cmd_pos == midi_len)
midi_out(midi_command, midi_len);
#endif
}
}