home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warptlk3.zip / TOOLKIT / BETA / H / MIDIDLL.H < prev    next >
Text File  |  1995-07-27  |  9KB  |  258 lines

  1.  
  2. /***************************************************************************\
  3. *
  4. * Module Name: MIDIDLL.H
  5. *
  6. * OS/2 Warp. Multimedia Extensions - MIDI
  7. *
  8. * Copyright (c) International Business Machines Corporation 1995
  9. *                         All Rights Reserved
  10. *
  11. \***************************************************************************/
  12. #ifndef _MIDIDLL_H_
  13. #define _MIDIDLL_H_
  14. typedef ULONG        MINSTANCE;
  15. typedef MINSTANCE    *PMINSTANCE;
  16. typedef PVOID        TIMEHANDLE;
  17. typedef TIMEHANDLE   *PTIMEHANDLE;
  18. typedef PULONG       *PPULONG;
  19.  
  20. #define MIDI_NAME_LENGTH      32
  21. #define MIDI_SUCCESS          0L
  22. #define TIMER_SUCCESS         0L // return code of high-resolution timer
  23.  
  24. // used with MIDIEnableInstance and MIDIDisableInstance
  25.  
  26. #define MIDI_ENABLE_RECEIVE   1  // enables hdw to receive messages
  27. #define MIDI_ENABLE_SEND      2  // enables hdw to send messages
  28. #define MIDI_DISABLE_RECEIVE  1  // disables hdw from receiving messages
  29. #define MIDI_DISABLE_SEND     2  // disables hdw from sending messages
  30.  
  31. // used with MIDITimer
  32.  
  33. // MIDI_START_TIMER and MIDI_STOP_TIMER flag are mutually exclusive
  34.  
  35. #define MIDI_START_TIMER      1  // starts MIDI Timer
  36. #define MIDI_STOP_TIMER       2  // stops MIDI Timer
  37.  
  38. typedef struct {
  39.    ULONG ulSourceInstance; // inst # of the instance which generated the msg
  40.    ULONG ulTime;           // time the message is to be (or was) sent
  41.    ULONG ulTrack;
  42.    union {
  43.       ULONG ulMessage;
  44.       struct {
  45.          BYTE bStatus;     // The 1st byte of the message
  46.          BYTE abData[3];   // the rest of the message
  47.       } bytes;
  48.       BYTE abData[4];
  49.    } msg;
  50. } MESSAGE;
  51.  
  52. typedef MESSAGE   *PMESSAGE;
  53.  
  54. typedef struct _MIDICLASSINFO {
  55.    ULONG       ulStructLength;
  56.    ULONG       ulClassNumber;
  57.    CHAR        szmClassName[MIDI_NAME_LENGTH];
  58.    ULONG       ulNumSlots;
  59.    ULONG       ulAttributes;
  60. } MIDICLASSINFO;
  61.  
  62. typedef MIDICLASSINFO    *PMIDICLASSINFO;
  63.  
  64. typedef struct _MIDIINSTANCEINFO {
  65.    ULONG       ulStructLength;
  66.    MINSTANCE   minstance;
  67.    ULONG       ulClassNumber;
  68.    CHAR        szmInstanceName[MIDI_NAME_LENGTH];
  69.    ULONG       ulNumLinks;
  70.    ULONG       ulAttributes;
  71. } MIDIINSTANCEINFO;
  72.  
  73. typedef MIDIINSTANCEINFO    *PMIDIINSTANCEINFO;
  74.  
  75. // MIDIINSTANCEINFO ulAttributes values:
  76.  
  77. #define MIDI_INST_ATTR_CAN_RECV     1  // instance can accept messages
  78. #define MIDI_INST_ATTR_CAN_SEND     2  // instance can send messages
  79. #define MIDI_INST_ATTR_ENABLE_R     4  // receive is enabled
  80. #define MIDI_INST_ATTR_ENABLE_S     8  // send is enabled
  81.  
  82.  
  83. typedef (*PFNMIDI_NOTIFYCALLBACK) (ULONG ulNotification,
  84.                                    ULONG ulParam);
  85.  
  86. // typedef (VOID *PFNMIDI_NOTIFYCALLBACK) (ULONG ulNotification,
  87. //                                         ULONG ulParam);
  88.  
  89. typedef struct _MIDISETUP {
  90.    ULONG                      ulStructLength;
  91.    PULONG                     pulMaxRTSysexLength;
  92.    PPULONG                    ppulMIDICurrentTime;
  93.    ULONG                      ulFlags;
  94.    PFNMIDI_NOTIFYCALLBACK     pfnMIDI_NotifyCallback;
  95.    HWND                       hwndCallback;
  96.    HQUEUE                     hqueueCallback;
  97. } MIDISETUP;
  98.  
  99. typedef MIDISETUP    *PMIDISETUP;
  100.  
  101. // MIDISETUP ulFlags values:
  102.  
  103. #define  MIDICALLBACK_PFN     1
  104. #define  MIDICALLBACK_HWND    2
  105. #define  MIDICALLBACK_QUEUE   3
  106.  
  107.  
  108. typedef struct _MIDIDEVICEINFO {
  109.    ULONG       ulStructLength;
  110.    MINSTANCE   minstance;
  111.    CHAR        szmInstanceName[MIDI_NAME_LENGTH];
  112. //   PMIDIDEVICEINFO pParentDevice;
  113. //   PMIDIDEVICEINFO pSiblingDevice;
  114. //   PMIDIDEVICEINFO pChildDevice;
  115.    CHAR        szDeviceName[MIDI_NAME_LENGTH];
  116.    CHAR        szManufacturer[MIDI_NAME_LENGTH];
  117.    CHAR        szModelName[MIDI_NAME_LENGTH];
  118.    ULONG       ulFlags;
  119.    ULONG       ulChannels;
  120. } MIDIDEVICEINFO;
  121.  
  122. typedef MIDIDEVICEINFO      *PMIDIDEVICEINFO;
  123.  
  124.  
  125. // DEVICEINFO ulFlags values:
  126.  
  127. #define  MIDIDEV_IS_PATCHER         0x00000001
  128. #define  MIDIDEV_IS_CONTROLLER      0x00000002
  129. #define  MIDIDEV_IS_RECEIVER        0x00000004
  130. #define  MIDIDEV_IS_MULTITIMBRAL    0x00000008
  131. #define  MIDIDEV_SENDS_MTC          0x00000010
  132. #define  MIDIDEV_RECEIVES_MTC       0x00000020
  133. #define  MIDIDEV_SENDS_CLOCK        0x00000040
  134. #define  MIDIDEV_RECEIVES_CLOCK     0x00000080
  135. #define  MIDIDEV_SENDS_SYNC         0x00000100
  136. #define  MIDIDEV_RECEIVES_SYNC      0x00000200
  137. #define  MIDIDEV_SENDS_MMC          0x00000400
  138. #define  MIDIDEV_RECEIVES_MMC       0x00000800
  139.  
  140. typedef struct _MIDILINKINFO {
  141.    ULONG       ulStructLength;
  142.    ULONG       ulSlotNumber;
  143.    MINSTANCE   minstance;
  144. } MIDILINKINFO;
  145.  
  146. typedef MIDILINKINFO     *PMIDILINKINFO;
  147.  
  148.  
  149. // Function Prototypes
  150.  
  151. ULONG APIENTRY MIDICreateInstance ( ULONG      ulClassNumber,
  152.                                     PMINSTANCE pminstance,
  153.                                     PSZ        pszInstanceName,
  154.                                     ULONG      ulFlag );
  155.  
  156.  
  157. ULONG APIENTRY MIDIDeleteInstance ( MINSTANCE minstance,
  158.                                     ULONG     ulFlag );
  159.  
  160. ULONG APIENTRY MIDIEnableInstance ( MINSTANCE minstance,
  161.                                     ULONG     ulFlag );
  162.  
  163. ULONG APIENTRY MIDIDisableInstance ( MINSTANCE minstance,
  164.                                      ULONG     ulFlag );
  165.  
  166. ULONG APIENTRY MIDIAddLink ( MINSTANCE minstanceSource,
  167.                              MINSTANCE minstanceTarget,
  168.                              ULONG     ulSlotNumber,
  169.                              ULONG     ulFlag );
  170.  
  171. ULONG APIENTRY MIDIRemoveLink ( MINSTANCE minstanceSource,
  172.                                 MINSTANCE minstanceTarget,
  173.                                 ULONG     ulSlotNumber,
  174.                                 ULONG     ulFlag );
  175.  
  176. ULONG APIENTRY MIDISetDefaultHardwareNode ( PSZ   pszmInstanceName,
  177.                                             ULONG ulFlag );
  178.  
  179. ULONG APIENTRY MIDISetInstanceConfiguration (MINSTANCE minstance,
  180.                                              PVOID     pBuffer,
  181.                                              ULONG     ulBufferLength,
  182.                                              ULONG     ulFlag );
  183.  
  184. ULONG APIENTRY MIDISimpleOpen ( PMINSTANCE pminstance,
  185.                                 ULONG      ulFlag );
  186.  
  187. ULONG APIENTRY MIDISimpleClose ( MINSTANCE minstance,
  188.                                  ULONG     ulFlag );
  189.  
  190. ULONG APIENTRY MIDIQueryClassList ( ULONG          ulNumClasses,
  191.                                     PMIDICLASSINFO paClassInfo,
  192.                                     ULONG          ulFlag );
  193.  
  194. ULONG APIENTRY MIDIQueryDeviceInformation ( ULONG           ulNumDevices,
  195.                                             PMIDIDEVICEINFO paDeviceInfo,
  196.                                             ULONG           ulFlag );
  197.  
  198. ULONG APIENTRY MIDIQueryInstanceConfiguration ( ULONG minstance,
  199.                                                 PVOID pBuffer,
  200.                                                 ULONG ulBufferLength,
  201.                                                 ULONG ulFlag );
  202.  
  203. ULONG APIENTRY MIDIQueryInstanceLinks ( MINSTANCE     minstance,
  204.                                         PMIDILINKINFO paLinkInfo,
  205.                                         ULONG         ulNumLinks,
  206.                                         ULONG         ulFlag );
  207.  
  208. ULONG APIENTRY MIDIQueryInstanceList ( ULONG             ulNumInstances,
  209.                                        PMIDIINSTANCEINFO paInstanceInfo,
  210.                                        ULONG             ulFlag );
  211.  
  212. ULONG APIENTRY MIDIQueryInstanceName ( MINSTANCE minstance,
  213.                                        PSZ       pszInstanceName,
  214.                                        ULONG     ulFlag );
  215.  
  216. ULONG APIENTRY MIDIQueryNumClasses ( PULONG pulNumClasses,
  217.                                      ULONG  ulFlag );
  218.  
  219. ULONG APIENTRY MIDIQueryNumDevices ( PULONG pulNumDevices,
  220.                                      ULONG  ulFlag );
  221.  
  222. ULONG APIENTRY MIDIQueryNumInstances ( PULONG pulNumInstances,
  223.                                        ULONG  ulFlag );
  224.  
  225. ULONG APIENTRY MIDIQueryVersion ( PULONG pulVersion);
  226.  
  227. ULONG APIENTRY MIDISetDeviceInformation ( MINSTANCE       minstance,
  228.                                           PMIDIDEVICEINFO pDeviceInfo,
  229.                                           ULONG           ulFlag );
  230.  
  231. ULONG APIENTRY MIDISendMessages ( PMESSAGE paMessage,
  232.                                   ULONG    ulNumMessages,
  233.                                   ULONG    ulFlag );
  234.  
  235. ULONG APIENTRY MIDISendSysexMessage ( PMESSAGE pMessage,
  236.                                       ULONG    ulBufferLength,
  237.                                       ULONG    ulFlag );
  238.  
  239. ULONG APIENTRY MIDIRetrieveMessages ( MINSTANCE minstance,
  240.                                       PVOID     pBuffer,
  241.                                       PULONG    pulBufferLength,
  242.                                       ULONG     ulFlag );
  243.  
  244. ULONG APIENTRY MIDISetup ( PMIDISETUP pMidiSetup,
  245.                            ULONG      ulFlag );
  246.  
  247. ULONG APIENTRY MIDITimer ( ULONG ulAction,
  248.                            ULONG ulFlag );
  249.  
  250. ULONG APIENTRY TimerSleep ( ULONG ulDuration,
  251.                             ULONG ulFlag );
  252.  
  253. ULONG APIENTRY TimerGetPointer ( PPULONG ppulHRTCurrentTime,
  254.                                  ULONG   ulFlag );
  255.  
  256. #endif /* _MIDIDLL_H_ */
  257.  
  258.