enabled midi on win32
authorBradley Bell <btb@icculus.org>
Sun, 28 Nov 2004 05:16:38 +0000 (05:16 +0000)
committerBradley Bell <btb@icculus.org>
Sun, 28 Nov 2004 05:16:38 +0000 (05:16 +0000)
ChangeLog
Makefile.am
arch/sdl/digi.c
arch/win32/Makefile.am
arch/win32/hmpfile.c
arch/win32/midi.c [new file with mode: 0644]
main/kludge.c

index 351c6b5..472a003 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2004-11-27  Bradley Bell  <btb@icculus.org>
 
+       * Makefile.am, arch/sdl/digi.c, arch/win32/Makefile.am,
+       arch/win32/hmpfile.c, arch/win32/midi.c, main/kludge.c: enabled
+       midi on win32
+
        * main/bm.c, main/polyobj.c: better fix for model data freeing bug
 
        * main/inferno.c: enable logo screens for shareware/oem
index 08ac9ef..f97b0ec 100644 (file)
@@ -36,9 +36,9 @@ d2x_LDADD = ${LD_KLUDGE} main/libmain.a ${EDITOR_LIBS} 3d/lib3d.a 2d/lib2d.a ${A
 
 if MINGW32
 if USE_NETWORK
-d2x_sdl_LDADD = ${d2x_LDADD} -lwsock32
+d2x_sdl_LDADD = ${d2x_LDADD} -lwinmm -lwsock32
 else
-d2x_sdl_LDADD = ${d2x_LDADD}
+d2x_sdl_LDADD = ${d2x_LDADD} -lwinmm
 endif
 else
 d2x_sdl_LDADD = ${d2x_LDADD} -lm
index ce736fa..5a2a208 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: digi.c,v 1.16 2004-05-19 03:13:44 btb Exp $ */
+/* $Id: digi.c,v 1.17 2004-11-28 05:16:38 btb Exp $ */
 /*
  *
  * SDL digital audio support
@@ -915,7 +915,7 @@ void digi_reset_digi_sounds() {
 }
 
 
-#if 0 //added/killed on 11/25/98 by Matthew Mueller
+#ifndef _WIN32
 // MIDI stuff follows.
 void digi_set_midi_volume( int mvolume ) { }
 void digi_play_midi_song( char * filename, char * melodic_bank, char * drum_bank, int loop ) {}
@@ -928,4 +928,4 @@ void digi_stop_current_song()
         send_ipc(buf);
 #endif
 }
-#endif // end this section kill - MM
+#endif
index bafcdc4..48cfe18 100644 (file)
@@ -8,12 +8,12 @@ if USE_NETWORK
 NETWORK_SRCS = ipx_mcast4.c ipx_win.c ipx_udp.c winnet.c
 endif
 
-libarch_win32_a_SOURCES = ${NETWORK_SRCS} findfile.c mingw_init.c
+libarch_win32_a_SOURCES = ${NETWORK_SRCS} findfile.c hmpfile.c midi.c mingw_init.c
 
 EXTRA_libarch_win32_a_SOURCES = ipx_mcast4.c ipx_win.c ipx_udp.c winnet.c
 
 EXTRA_DIST = ${EXTRA_SUBDIRS} \
 d1x.ico d1x.rc d3d.ico debug.cpp descent.ico digi.c findfile.c glinit.c gr.c \
-hmpfile.c init.c joydefs.c joyhh.c key.c mono.c mouse.c palw32.c \
+init.c joydefs.c joyhh.c key.c mono.c mouse.c palw32.c \
 pch.cpp scene.cpp serial.c texture.cpp timer.c win32.c winmain.cpp \
 ipx_drv.h
index 4ac701c..2c61fef 100644 (file)
@@ -94,11 +94,11 @@ void hmp_stop(hmp_file *hmp) {
        MIDIHDR *mhdr;
        if (!hmp->stop) {
                hmp->stop = 1;
-                PumpMessages();
+               //PumpMessages();
                midiStreamStop(hmp->hmidi);
                 while (hmp->bufs_in_mm)
                  {
-                        PumpMessages();
+                       //PumpMessages();
                        Sleep(0);
                  }
        }
diff --git a/arch/win32/midi.c b/arch/win32/midi.c
new file mode 100644 (file)
index 0000000..b9b4d7c
--- /dev/null
@@ -0,0 +1,64 @@
+// MIDI stuff follows.\r
+\r
+#include <stdio.h>\r
+\r
+#include "hmpfile.h"\r
+\r
+hmp_file *hmp = NULL;\r
+\r
+int midi_volume = 255;\r
+int digi_midi_song_playing = 0;\r
+\r
+\r
+void digi_stop_current_song()\r
+{\r
+       if (digi_midi_song_playing)\r
+       {\r
+               hmp_close(hmp);\r
+               hmp = NULL;\r
+               digi_midi_song_playing = 0;\r
+       }\r
+}\r
+\r
+void digi_set_midi_volume(int n)\r
+{\r
+       int mm_volume;\r
+\r
+       if (n < 0)\r
+               midi_volume = 0;\r
+       else if (n > 127)\r
+               midi_volume = 127;\r
+       else\r
+               midi_volume = n;\r
+\r
+       // scale up from 0-127 to 0-0xffff\r
+       mm_volume = (midi_volume << 1) | (midi_volume & 1);\r
+       mm_volume |= (mm_volume << 8);\r
+\r
+       if (hmp)\r
+               midiOutSetVolume((HMIDIOUT)hmp->hmidi, mm_volume | mm_volume << 16);\r
+}\r
+\r
+void digi_play_midi_song(char *filename, char *melodic_bank, char *drum_bank, int loop)\r
+{\r
+#if 0\r
+       if (!digi_initialised)\r
+               return;\r
+#endif\r
+\r
+       digi_stop_current_song();\r
+\r
+       if (filename == NULL)\r
+               return;\r
+       if (midi_volume < 1)\r
+               return;\r
+\r
+       if ((hmp = hmp_open(filename)))\r
+       {\r
+               hmp_play(hmp);\r
+               digi_midi_song_playing = 1;\r
+               digi_set_midi_volume(midi_volume);\r
+       }\r
+       else\r
+               printf("hmp_open failed\n");\r
+}\r
index 223dc6c..02c7855 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: kludge.c,v 1.15 2004-05-20 07:42:41 btb Exp $ */
+/* $Id: kludge.c,v 1.16 2004-11-28 05:16:38 btb Exp $ */
 
 /*
  *
@@ -102,22 +102,6 @@ void digi_stop_digi_sounds(void)
 
 }
 
-void digi_stop_current_song(void)
-{
-
-
-}
-
-void digi_set_midi_volume(int a)
-{
-
-}
-
-void digi_play_midi_song(void)
-{
-
-}
-
 void digi_pause_digi_sounds()
 {