PCem
view src/allegro-midi.c @ 154:d0d530adce12
Initial port to Linux (using Allegro).
64-bit fixes.
Some changes to aid portability.
A few other tweaks.
| author | TomW |
|---|---|
| date | Thu Sep 04 21:07:24 2014 +0100 |
| parents | |
| children |
line source
1 #include "allegro-main.h"
2 #include "ibm.h"
3 #include "plat-midi.h"
5 //#define USE_ALLEGRO_MIDI
7 void midi_init()
8 {
9 #ifdef USE_ALLEGRO_MIDI
10 install_sound(DIGI_NONE, MIDI_AUTODETECT, NULL);
11 #endif
12 }
14 void midi_close()
15 {
16 #ifdef USE_ALLEGRO_MIDI
17 remove_sound();
18 #endif
19 }
21 static int midi_cmd_pos, midi_len;
22 static uint8_t midi_command[3];
23 static int midi_lengths[8] = {3, 3, 3, 3, 2, 2, 3, 0};
25 void midi_write(uint8_t val)
26 {
27 if (val & 0x80)
28 {
29 midi_cmd_pos = 0;
30 midi_len = midi_lengths[(val >> 4) & 7];
31 midi_command[0] = midi_command[1] = midi_command[2] = 0;
32 }
34 if (midi_len && midi_cmd_pos < 3)
35 {
36 midi_command[midi_cmd_pos] = val;
38 midi_cmd_pos++;
40 #ifdef USE_ALLEGRO_MIDI
41 if (midi_cmd_pos == midi_len)
42 midi_out(midi_command, midi_len);
43 #endif
44 }
45 }
