[WINEOSS] Some midi fixes

Christian Costa titan.costa at wanadoo.fr
Wed Sep 3 16:56:41 CDT 2003


Hi,

This patch makes the GT3 Editor communicate with the GT3 guitar 
multieffects.

Bye,
Christian.

Changelog :
Fix modLongData.
Enable opening of MOD_SYNTH type devices.
Add some comments.

Christian Costa   titan.costa at wanadoo.fr

-------------- next part --------------
Index: midi.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wineoss/midi.c,v
retrieving revision 1.34
diff -u -r1.34 midi.c
--- midi.c	2 Jul 2003 04:37:26 -0000	1.34
+++ midi.c	3 Sep 2003 21:51:33 -0000
@@ -115,6 +115,8 @@
      * MOD_SQSYNTH      square wave internal synth
      * MOD_FMSYNTH      FM internal synth
      * MOD_MAPPER       MIDI mapper
+     * MOD_WAVETABLE    hardware watetable internal synth
+     * MOD_SWSYNTH      software internal synth
      */
 
     /* FIXME Is this really the correct equivalence from UNIX to
@@ -566,9 +568,9 @@
 
 static VOID WINAPI midTimeCallback(HWND hwnd, UINT msg, UINT id, DWORD dwTime)
 {
-    unsigned	char		buffer[256];
-    int				len, idx;
-
+    unsigned char buffer[256];
+    int len, idx;
+    
     TRACE("(%p, %d, %d, %lu)\n", hwnd, msg, id, dwTime);
 
     len = read(midiSeqFD, buffer, sizeof(buffer));
@@ -1048,6 +1050,7 @@
 	}
 	break;
     case MOD_MIDIPORT:
+    case MOD_SYNTH:
 	if (midiOpenSeq() < 0) {
 	    return MMSYSERR_ALLOCATED;
 	}
@@ -1421,6 +1424,11 @@
 
     TRACE("(%04X, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
 
+    /* Note: MS doc does not say much about the dwBytesRecorded member of the MIDIHDR structure
+     * but it seems to be used only for midi input.
+     * Taking a look at the WAVEHDR structure (which is quite similar) confirms this assumption.
+     */
+    
     if (wDevID >= MODM_NumDevs) return MMSYSERR_BADDEVICEID;
     if (!MidiOutDev[wDevID].bEnabled) return MIDIERR_NODEVICE;
 
@@ -1465,7 +1473,7 @@
 	    WARN("Adding missing 0xF0 marker at the beginning of "
 		 "system exclusive byte stream\n");
 	}
-	for (count = 0; count < lpMidiHdr->dwBytesRecorded; count++) {
+	for (count = 0; count < lpMidiHdr->dwBufferLength; count++) {
 	    SEQ_MIDIOUT(wDevID - MODM_NumFMSynthDevs, lpData[count]);
 	}
 	if (lpData[count - 1] != 0xF7) {


More information about the wine-patches mailing list