From 4af95e6d1963e319ed6bb1681a332ad654bdd1ef Mon Sep 17 00:00:00 2001 From: Guenter Geiger Date: Sun, 22 Feb 2004 16:00:02 +0000 Subject: merged in version 0.37-1test6 svn path=/trunk/; revision=1329 --- pd/src/s_midi_mmio.c | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'pd/src/s_midi_mmio.c') diff --git a/pd/src/s_midi_mmio.c b/pd/src/s_midi_mmio.c index ec1a75ee..99b38906 100644 --- a/pd/src/s_midi_mmio.c +++ b/pd/src/s_midi_mmio.c @@ -79,8 +79,7 @@ static void msw_open_midiout(int nmidiout, int *midioutvec) for (i = 0; i < nmidiout; i++) { MIDIOUTCAPS mocap; - int devno = (midioutvec[i] == DEFMIDIDEV ? - MIDI_MAPPER : midioutvec[i]-1); + int devno = midioutvec[i]; result = midiOutOpen(&hMidiOut[dev], devno, 0, 0, CALLBACK_NULL); wRtn = midiOutGetDevCaps(i, (LPMIDIOUTCAPS) &mocap, @@ -534,7 +533,7 @@ void msw_open_midiin(int nmidiin, int *midiinvec) lpCallbackInstanceData[i]->lpBuf = lpInputBuffer; wRtn = midiInOpen((LPHMIDIIN)&hMidiIn[ndev], - midiinvec[i] - 1, + midiinvec[i], (DWORD)midiInputHandler, (DWORD)lpCallbackInstanceData[ndev], CALLBACK_FUNCTION); @@ -661,7 +660,8 @@ void sys_poll_midi(void) } } -void sys_open_midi(int nmidiin, int *midiinvec, int nmidiout, int *midioutvec) +void sys_do_open_midi(int nmidiin, int *midiinvec, + int nmidiout, int *midioutvec) { if (nmidiout) msw_open_midiout(nmidiout, midioutvec); @@ -680,7 +680,7 @@ void sys_close_midi( void) msw_close_midiout(); } - +#if 0 /* list the audio and MIDI device names */ void sys_listmididevs(void) { @@ -713,3 +713,33 @@ void sys_listmididevs(void) } } +#endif + +void midi_getdevs(char *indevlist, int *nindevs, + char *outdevlist, int *noutdevs, int maxndev, int devdescsize) +{ + int i, nin = midiInGetNumDevs(), nout = midiOutGetNumDevs(); + UINT wRtn; + if (nin > maxndev) + nin = maxndev; + for (i = 0; i < nin; i++) + { + MIDIINCAPS micap; + wRtn = midiInGetDevCaps(i, (LPMIDIINCAPS) &micap, sizeof(micap)); + strncpy(indevlist + i * devdescsize, + (wRtn ? "???" : micap.szPname), devdescsize); + indevlist[(i+1) * devdescsize - 1] = 0; + } + if (nout > maxndev) + nout = maxndev; + for (i = 0; i < nout; i++) + { + MIDIOUTCAPS mocap; + wRtn = midiOutGetDevCaps(i, (LPMIDIOUTCAPS) &mocap, sizeof(mocap)); + strncpy(outdevlist + i * devdescsize, + (wRtn ? "???" : mocap.szPname), devdescsize); + outdevlist[(i+1) * devdescsize - 1] = 0; + } + *nindevs = nin; + *noutdevs = nout; +} -- cgit v1.2.1