|
|
/*
* 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
|