194 lines
6.5 KiB
C
194 lines
6.5 KiB
C
|
/*
|
||
|
* MIDIMAP.H
|
||
|
*
|
||
|
* Copyright (C) 1990 Microsoft Corporation. All rights reserved.
|
||
|
*/
|
||
|
|
||
|
/****************************************************************************
|
||
|
|
||
|
MIDI output mapping definitions
|
||
|
|
||
|
*****************************************************************************/
|
||
|
|
||
|
/*
|
||
|
* Error code definitions.
|
||
|
*/
|
||
|
|
||
|
|
||
|
typedef UINT MMAPERR;
|
||
|
|
||
|
#define MMAPERR_SUCCESS (MMAPERR)0 // Nothing bad happened.
|
||
|
#define MMAPERR_FILENOTFOUND (MMAPERR)1 // midimap.cfg not found
|
||
|
#define MMAPERR_INVALIDFLAG (MMAPERR)2 // invalid flag was passed
|
||
|
#define MMAPERR_INVALIDPORT (MMAPERR)3 // setup accesses invalid port
|
||
|
#define MMAPERR_INVALIDSETUP (MMAPERR)4 // invalid setup name
|
||
|
#define MMAPERR_INVALIDPATCH (MMAPERR)5 // invalid patchmap name
|
||
|
#define MMAPERR_INVALIDKEY (MMAPERR)6 // invalid keymap name
|
||
|
#define MMAPERR_MEMORY (MMAPERR)7 // "Out of memory."
|
||
|
#define MMAPERR_READ (MMAPERR)8 // "Can't read file."
|
||
|
#define MMAPERR_WRITE (MMAPERR)9 // "Can't write file."
|
||
|
#define MMAPERR_OPEN (MMAPERR)10 // "Can't open file."
|
||
|
#define MMAPERR_OPEN_READONLY (MMAPERR)11 // "Can't open file (read-only)."
|
||
|
#define MMAPERR_CREATE (MMAPERR)12 // "Can't create file."
|
||
|
#define MMAPERR_UNDEFINED (MMAPERR)13 // "Internal error."
|
||
|
#define MMAPERR_FULL (MMAPERR)14 // "Map table full."
|
||
|
|
||
|
#define MMAPERR_MAXERROR (MMAPERR)15
|
||
|
|
||
|
/*
|
||
|
* Map flag definitions.
|
||
|
*/
|
||
|
#define MMAP_SETUP 0x01 // map is a setup
|
||
|
#define MMAP_PATCH 0x02 // map is a patchmap
|
||
|
#define MMAP_KEY 0x04 // map is a keymap
|
||
|
|
||
|
#define MMAP_PORTS 0xFF // enumerate ports
|
||
|
|
||
|
/*
|
||
|
* String length definitions.
|
||
|
*/
|
||
|
#define MMAP_MAXNAME 16 // max map name length
|
||
|
#define MMAP_MAXDESC 32 // max map description length
|
||
|
#define MMAP_MAXCFGNAME 24 // max file name len for cfg file
|
||
|
|
||
|
/*
|
||
|
* MIDICHANNELMAP definitions.
|
||
|
*/
|
||
|
// dwFlags
|
||
|
#define MMAP_ACTIVE 0x00000001 // is this channel active?
|
||
|
#define MMAP_PATCHMAP 0x00000002 // is there a patch map for
|
||
|
// this channel?
|
||
|
|
||
|
#define MMAP_ID_NOPORT 0xFFFF // chnl mapped to [none] entry
|
||
|
|
||
|
/****************************************************************************
|
||
|
|
||
|
MIDI output mapping support structures
|
||
|
|
||
|
*****************************************************************************/
|
||
|
|
||
|
typedef struct midichannelmap_tag {
|
||
|
DWORD dwFlags; // flags for channel map
|
||
|
WORD wDeviceID; // port ID of device
|
||
|
WORD wChannel; // port channel of device
|
||
|
DWORD oPMap; // offset of patch map
|
||
|
} MIDICHANNELMAP, FAR *LPMIDICHANNELMAP;
|
||
|
|
||
|
typedef struct midimap_tag {
|
||
|
DWORD dwFlags; // flags (none defined yet)
|
||
|
BYTE szName[MMAP_MAXNAME]; // name
|
||
|
BYTE szDesc[MMAP_MAXDESC]; // description
|
||
|
MIDICHANNELMAP chMap[16]; // array of channel maps
|
||
|
} MIDIMAP, FAR *LPMIDIMAP;
|
||
|
|
||
|
typedef struct midipatchmap_tag {
|
||
|
DWORD dwFlags; // flags (none defined yet)
|
||
|
BYTE szName[MMAP_MAXNAME]; // name
|
||
|
BYTE szDesc[MMAP_MAXDESC]; // description
|
||
|
WORD wPMap[MIDIPATCHSIZE]; // lobyte=patch, hibyte=volume
|
||
|
DWORD okMaps[MIDIPATCHSIZE]; // offsets of key maps
|
||
|
BYTE bVMax; // max volume scalar
|
||
|
BYTE bDummy; // alignment byte
|
||
|
WORD wDummy; // alignment word
|
||
|
} MIDIPATCHMAP, FAR *LPMIDIPATCHMAP;
|
||
|
|
||
|
typedef struct midikeymap_tag {
|
||
|
DWORD dwFlags; // flags (none defined yet)
|
||
|
BYTE szName[MMAP_MAXNAME]; // name
|
||
|
BYTE szDesc[MMAP_MAXDESC]; // description
|
||
|
BYTE bKMap[MIDIPATCHSIZE]; // xlat table for key number
|
||
|
} MIDIKEYMAP, FAR *LPMIDIKEYMAP;
|
||
|
|
||
|
/****************************************************************************
|
||
|
|
||
|
MIDI output mapping support routines
|
||
|
|
||
|
*****************************************************************************/
|
||
|
|
||
|
typedef BOOL (CALLBACK *ENUMPROC) (LPSTR, LPSTR, UINT, HWND, LPSTR);
|
||
|
|
||
|
MMAPERR FAR PASCAL mapSetCurrentSetup (LPSTR);
|
||
|
MMAPERR FAR PASCAL mapGetCurrentSetup (LPSTR, UINT);
|
||
|
|
||
|
MMAPERR FAR PASCAL mapDelete (UINT, LPSTR);
|
||
|
MMAPERR FAR PASCAL mapEnumerate ( UINT uFlag
|
||
|
, ENUMPROC lpfnCallback
|
||
|
, UINT uCase // passed to lpfnCallback
|
||
|
, HWND hCombo // passed to lpfnCallback
|
||
|
, LPSTR lpSetupName // passed to lpfnCallback
|
||
|
);
|
||
|
|
||
|
DWORD FAR PASCAL mapGetSize (UINT, LPSTR);
|
||
|
DWORD FAR PASCAL mapGetPatchSize(LPMIDIPATCHMAP lpPatch);
|
||
|
|
||
|
MMAPERR FAR PASCAL mapRead (UINT, LPSTR, LPVOID);
|
||
|
MMAPERR FAR PASCAL mapWrite (UINT, LPVOID);
|
||
|
|
||
|
DWORD FAR PASCAL mapGetUsageCount (UINT, LPSTR);
|
||
|
DWORD FAR PASCAL mapPatchMapInSetup (LPSTR, LPSTR);
|
||
|
DWORD FAR PASCAL mapKeyMapInSetup (LPSTR, LPSTR);
|
||
|
DWORD FAR PASCAL mapExists (UINT, LPSTR);
|
||
|
|
||
|
MMAPERR FAR PASCAL mapInitMapFile (void);
|
||
|
DWORD FAR PASCAL mapFileVersion (void);
|
||
|
|
||
|
// services from midi.c
|
||
|
void FAR PASCAL mapUnlock(void);
|
||
|
BOOL FAR PASCAL mapLock(void);
|
||
|
|
||
|
// death fix
|
||
|
void FAR PASCAL mapConnect(LPSTR);
|
||
|
void FAR PASCAL mapDisconnect(void);
|
||
|
|
||
|
/************************************************************************/
|
||
|
/*
|
||
|
** Edit structures.
|
||
|
*/
|
||
|
|
||
|
typedef struct tagChannel {
|
||
|
DWORD dFlags;
|
||
|
WORD wDeviceID;
|
||
|
WORD wChannel;
|
||
|
char aszPatchName[MMAP_MAXNAME];
|
||
|
} CHANNEL;
|
||
|
|
||
|
typedef struct tagSetup {
|
||
|
DWORD dFlags;
|
||
|
char aszSetupName[MMAP_MAXNAME];
|
||
|
char aszSetupDescription[MMAP_MAXDESC];
|
||
|
CHANNEL channels[16];
|
||
|
} SETUP;
|
||
|
|
||
|
typedef struct tagKeyMap {
|
||
|
BYTE bVolume;
|
||
|
BYTE bDestination;
|
||
|
char aszKeyMapName[MMAP_MAXNAME];
|
||
|
} KEYMAP;
|
||
|
|
||
|
typedef struct tagPatchMap {
|
||
|
char aszPatchMapName[MMAP_MAXNAME];
|
||
|
char aszPatchMapDescription[MMAP_MAXDESC];
|
||
|
KEYMAP keymaps[128];
|
||
|
} PATCHMAP;
|
||
|
|
||
|
MMAPERR FAR PASCAL mapReadSetup(
|
||
|
LPSTR lszSetupName,
|
||
|
SETUP FAR* lpSetup);
|
||
|
MMAPERR FAR PASCAL mapReadPatchMap(
|
||
|
LPSTR lszPatchMapName,
|
||
|
PATCHMAP FAR* lpPatch);
|
||
|
|
||
|
/* place window so as to avoid going off screen */
|
||
|
VOID PlaceWindow(HWND hwnd);
|
||
|
|
||
|
/************************************************************************/
|
||
|
|
||
|
/*
|
||
|
** Values used to communicate between the caller of mapEnumerate and the
|
||
|
** function called by mapEnumerate for each element.
|
||
|
*/
|
||
|
|
||
|
#define MMENUM_BASIC 0
|
||
|
#define MMENUM_INTOCOMBO 1
|
||
|
#define MMENUM_DELETE 2
|