1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef __IDF_H__
7 #define __IDF_H__
8 
9 typedef struct tag_IDFHEADER {
10   DWORD cbStruct;
11   DWORD dwVersion;
12   DWORD dwCreator;
13   DWORD cbInstID;
14   BYTE abInstID[1];
15 } IDFHEADER,*PIDFHEADER,*LPIDFHEADER;
16 
17 typedef struct tag_IDFINSTINFO {
18   DWORD cbStruct;
19   DWORD dwManufactID;
20   DWORD dwProductID;
21   DWORD dwRevision;
22   DWORD cbManufactASCII;
23   DWORD cbManufactUNICODE;
24   DWORD cbProductASCII;
25   DWORD cbProductUNICODE;
26   BYTE abData[1];
27 } IDFINSTINFO,*LPIDFINSTINFO;
28 
29 typedef struct tag_IDFINSTCAPS {
30   DWORD cbStruct;
31   DWORD fdwFlags;
32   DWORD dwBasicChannel;
33   DWORD cNumChannels;
34   DWORD cInstrumentPolyphony;
35   DWORD cChannelPolyphony;
36 } IDFINSTCAPS,*PIDFINSTCAPS,*LPIDFINSTCAPS;
37 
38 #define IDFINSTCAPS_F_GENERAL_MIDI 0x00000001
39 #define IDFINSTCAPS_F_SYSTEMEXCLUSIVE 0x00000002
40 
41 typedef struct tag_IDFCHANNELHDR {
42   DWORD cbStruct;
43   DWORD dwGeneralMask;
44   DWORD dwDrumMask;
45   DWORD dwReserved;
46   DWORD fdwFlags;
47 } IDFCHANNELHDR,*PIDFCHANNELHDR,*LPIDFCHANNELHDR;
48 
49 #define IDFCHANNELHDR_F_GENERAL_MIDI 0x00000001
50 
51 typedef struct tag_IDFCHANNELINFO {
52   DWORD cbStruct;
53   DWORD dwChannel;
54   DWORD cbInitData;
55   BYTE abData[];
56 } IDFCHANNELINFO,*PIDFCHANNELINFO,*LPIDFCHANNELINFO;
57 
58 typedef struct tag_IDFPATCHMAPHDR {
59   DWORD cbStruct;
60   BYTE abPatchMap[128];
61 } IDFPATCHMAPHDR,*PIDFPATCHMAPHDR,*LPIDFPATCHMAPHDR;
62 
63 typedef struct tag_IDFKEYMAPHDR {
64   DWORD cbStruct;
65   DWORD cNumKeyMaps;
66   DWORD cbKeyMap;
67 } IDFKEYMAPHDR,*PIDFKEYMAPHDR,*LPIDFKEYMAPHDR;
68 
69 typedef struct tag_IDFKEYMAP {
70   DWORD cbStruct;
71   BYTE abKeyMap[128];
72 } IDFKEYMAP,*PIDFKEYMAP,*LPIDFKEYMAP;
73 
74 #endif
75