home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / graphics / audio / midiplyr / smf.h < prev    next >
C/C++ Source or Header  |  1997-10-05  |  3KB  |  101 lines

  1. /*****************************************************************************
  2. *
  3. *  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  4. *  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
  5. *  TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR
  6. *  A PARTICULAR PURPOSE.
  7. *
  8. *  Copyright (C) 1993 - 1997 Microsoft Corporation. All Rights Reserved.
  9. *
  10. ******************************************************************************
  11. *
  12. * SMF.H
  13. *
  14. * Public include file for Standard MIDI File access routines.
  15. *
  16. *****************************************************************************/
  17.  
  18. #ifndef _SMF_
  19. #define _SMF_
  20.  
  21. #include "global.h" 
  22.  
  23. typedef DWORD SMFRESULT;
  24. typedef DWORD TICKS;
  25. typedef TICKS FAR *PTICKS;
  26. typedef BYTE HUGE *HPBYTE;
  27.  
  28. #define MAX_TICKS           ((TICKS)0xFFFFFFFFL)
  29.  
  30. #define SMF_SUCCESS         (0L)
  31. #define SMF_INVALID_FILE    (1L)
  32. #define SMF_NO_MEMORY       (2L)
  33. #define SMF_OPEN_FAILED     (3L)
  34. #define SMF_INVALID_TRACK   (4L)
  35. #define SMF_META_PENDING    (5L)
  36. #define SMF_ALREADY_OPEN    (6L)
  37. #define SMF_END_OF_TRACK    (7L)
  38. #define SMF_NO_META         (8L)
  39. #define SMF_INVALID_PARM    (9L)
  40. #define SMF_INVALID_BUFFER  (10L)
  41. #define SMF_END_OF_FILE     (11L)
  42. #define SMF_REACHED_TKMAX   (12L)
  43.  
  44. DECLARE_HANDLE(HSMF);
  45.  
  46. typedef struct tag_smfopenstruct
  47. {
  48.     LPSTR               pstrName;
  49.     DWORD               dwTimeDivision;
  50.     HSMF                hSmf;
  51. }   SMFOPENFILESTRUCT,
  52.     FAR *PSMFOPENFILESTRUCT;
  53.  
  54. extern SMFRESULT FNLOCAL smfOpenFile(
  55.     PSMFOPENFILESTRUCT  psofs);
  56.  
  57. extern SMFRESULT FNLOCAL smfCloseFile(
  58.     HSMF                hsmf);
  59.  
  60. typedef struct tag_smffileinfo
  61. {
  62.     DWORD               dwTracks;
  63.     DWORD               dwFormat;
  64.     DWORD               dwTimeDivision;
  65.     TICKS               tkLength;
  66. }   SMFFILEINFO,
  67.     FAR *PSMFFILEINFO;
  68.  
  69. extern SMFRESULT FNLOCAL smfGetFileInfo(
  70.     HSMF                hsmf,
  71.     PSMFFILEINFO        psfi);
  72.  
  73. extern DWORD FNLOCAL smfTicksToMillisecs(
  74.     HSMF                hsmf,
  75.     TICKS               tkOffset);
  76.  
  77. extern DWORD FNLOCAL smfMillisecsToTicks(
  78.     HSMF                hsmf,
  79.     DWORD               msOffset);
  80.  
  81. extern SMFRESULT FNLOCAL smfReadEvents(
  82.     HSMF                hsmf,
  83.     LPMIDIHDR           lpmh,
  84.     TICKS               tkMax);
  85.  
  86. extern SMFRESULT FNLOCAL smfSeek(
  87.     HSMF                hsmf,
  88.     TICKS               tkPosition,
  89.     LPMIDIHDR           lpmh);
  90.  
  91. extern DWORD FNLOCAL smfGetStateMaxSize(
  92.     void);
  93.  
  94. /* Buffer described by LPMIDIHDR is in polymsg format, except that it
  95. ** can contain meta-events (which will be ignored during playback by
  96. ** the current system). This means we can use the pack functions, etc.
  97. */
  98. #define PMSG_META       ((BYTE)0xC0)
  99.  
  100. #endif
  101.