]> icculus.org git repositories - btb/d2x.git/blob - arch/win32/midi.c
enabled midi on win32
[btb/d2x.git] / arch / win32 / midi.c
1 // MIDI stuff follows.\r
2 \r
3 #include <stdio.h>\r
4 \r
5 #include "hmpfile.h"\r
6 \r
7 hmp_file *hmp = NULL;\r
8 \r
9 int midi_volume = 255;\r
10 int digi_midi_song_playing = 0;\r
11 \r
12 \r
13 void digi_stop_current_song()\r
14 {\r
15         if (digi_midi_song_playing)\r
16         {\r
17                 hmp_close(hmp);\r
18                 hmp = NULL;\r
19                 digi_midi_song_playing = 0;\r
20         }\r
21 }\r
22 \r
23 void digi_set_midi_volume(int n)\r
24 {\r
25         int mm_volume;\r
26 \r
27         if (n < 0)\r
28                 midi_volume = 0;\r
29         else if (n > 127)\r
30                 midi_volume = 127;\r
31         else\r
32                 midi_volume = n;\r
33 \r
34         // scale up from 0-127 to 0-0xffff\r
35         mm_volume = (midi_volume << 1) | (midi_volume & 1);\r
36         mm_volume |= (mm_volume << 8);\r
37 \r
38         if (hmp)\r
39                 midiOutSetVolume((HMIDIOUT)hmp->hmidi, mm_volume | mm_volume << 16);\r
40 }\r
41 \r
42 void digi_play_midi_song(char *filename, char *melodic_bank, char *drum_bank, int loop)\r
43 {\r
44 #if 0\r
45         if (!digi_initialised)\r
46                 return;\r
47 #endif\r
48 \r
49         digi_stop_current_song();\r
50 \r
51         if (filename == NULL)\r
52                 return;\r
53         if (midi_volume < 1)\r
54                 return;\r
55 \r
56         if ((hmp = hmp_open(filename)))\r
57         {\r
58                 hmp_play(hmp);\r
59                 digi_midi_song_playing = 1;\r
60                 digi_set_midi_volume(midi_volume);\r
61         }\r
62         else\r
63                 printf("hmp_open failed\n");\r
64 }\r