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
9typedef struct tag_IDFHEADER {
10  DWORD cbStruct;
11  DWORD dwVersion;
12  DWORD dwCreator;
13  DWORD cbInstID;
14  BYTE abInstID[1];
15} IDFHEADER,*PIDFHEADER,*LPIDFHEADER;
16
17typedef 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
29typedef 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
41typedef 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
51typedef struct tag_IDFCHANNELINFO {
52  DWORD cbStruct;
53  DWORD dwChannel;
54  DWORD cbInitData;
55  BYTE abData[];
56} IDFCHANNELINFO,*PIDFCHANNELINFO,*LPIDFCHANNELINFO;
57
58typedef struct tag_IDFPATCHMAPHDR {
59  DWORD cbStruct;
60  BYTE abPatchMap[128];
61} IDFPATCHMAPHDR,*PIDFPATCHMAPHDR,*LPIDFPATCHMAPHDR;
62
63typedef struct tag_IDFKEYMAPHDR {
64  DWORD cbStruct;
65  DWORD cNumKeyMaps;
66  DWORD cbKeyMap;
67} IDFKEYMAPHDR,*PIDFKEYMAPHDR,*LPIDFKEYMAPHDR;
68
69typedef struct tag_IDFKEYMAP {
70  DWORD cbStruct;
71  BYTE abKeyMap[128];
72} IDFKEYMAP,*PIDFKEYMAP,*LPIDFKEYMAP;
73
74#endif
75