home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 26 / CD_ASCQ_26_1295.iso / vrac / cmf_play.zip / PROTOTYP.TXT < prev    next >
Text File  |  1995-09-22  |  5KB  |  104 lines

  1. #define BYTE unsigned char    << These are just to save keystrokes ;) >>
  2. #define WORD unsigned int
  3.  
  4. WORD            findcmfdriver(void);
  5.     <<this function is used to detect if the cmf driver was loaded>>
  6.     <<Note: CALL THIS FIRST.  Nothing works without the SBFMDRV.COM>>
  7.  
  8. void            setcmfstatusbyte(void);
  9.     <<call this to link 'cmf_status' global variable to the cmf driver>>
  10.     <<you can use this to check if a song is playing or stopped (0=stopped)>>
  11.  
  12. unsigned short  getcmfdriverversion(void);
  13.     <<call this to find out what version of cmf driver is loaded (BCD format)>>
  14.  
  15. long            getlength(char *filename);
  16.     <<call this to find the length of the .CMF file>>
  17.      <<Hint: malloc(getlength("SAMPLE.CMF"));
  18.  
  19. void            loadcmf(char *data, char *filename, long length);
  20.     <<call this to load the .CMF file into buffer>>
  21.     <<Note: must allocate the memory first; see above function>>
  22.  
  23. unsigned int    cmfplay(char huge *cmfdata);
  24.     <<call this to play the song>>
  25.  
  26. unsigned int    startcmfplayback(char far *cmfdata, unsigned int offset);
  27.     <<this function is used by 'playcmf()'; you do not need to call it>>
  28.  
  29. unsigned int    pausecmfplayback(void);
  30.     <<this function is used to pause the song.>>
  31.     <<Note: use 'continuecmfplayback()' to resume where it left off.>>
  32.     <<Note: 'playcmf()' must be running when this is called>>
  33.  
  34. unsigned int    continuecmfplayback(void);
  35.     <<this function is used to continue a paused song>>
  36.     <<Note: 'playcmf()' must be running when this is called>>
  37.  
  38. unsigned int    stopcmfplayback(void);
  39.     <<this is used to stop a playing .CMF song>>
  40.     <<Note: 'playcmf()' must be running when this is called>>
  41.     <<Note: you must use 'playcmf()' to play again>>
  42.  
  43. void            freestatusbyte(void);
  44.     <<call this to unlink 'cmf_status' global variable from the cmf driver>>
  45.     <<Note: do this when you are done with music (at exit of prg maybe?)>>
  46.  
  47. unsigned int    initcmfdriver(void);
  48.     <<this is used to reset the cmf driver.>>
  49.     <<Call it before you exit your program>>
  50.  
  51. ************************************************************************************
  52. *  THESE FUNCTIONS ARE CALLED BY OTHER FUNCTIONS AND SHOULD NOT BE USED UNLESS YOU *
  53. *                       ARE SURE YOU KNOW WHAT YOU ARE DOING                       *
  54. ************************************************************************************
  55. * void           setinstruments(unsigned int instruments, char far *data);         *
  56. *    <<this function is used by 'playcmf()'; you do not need to call it>>       *
  57. *                                                                                  *
  58. * void           setsystemclock(unsigned int hertz);                               *
  59. *    <<this function is used by 'playcmf()'; you do not need to call it>>       *
  60. *                                                                                  *
  61. * void           setdriverclock(unsigned int hertz);                               *
  62. *    <<this function is used by 'playcmf()'; you do not need to call it>>       *
  63. *                                                                                  *
  64. * void           cmftranspose(int halfsteps);                                      *
  65. *    <<this function is used by 'playcmf()'; you do not need to call it>>       *
  66. ************************************************************************************
  67. unsigned char far *cmf_status=NULL;   This is the variable you check after calling
  68.     'setcmfstatusbyte()'.
  69.      Note: You can use any global one byte variable but I suggest you use this one.
  70.  
  71. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  What to DO  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  72. The general format for playing a .CMF song is this:
  73.  
  74. 1.  Make sure the SBFMDRV.COM is already loaded.  It is a TSR that should be loaded
  75.     before the program is run.  I have successfully used 'system()' to invoke a DOS
  76.     command to load it if 'findcmfdriver()' returned false.  But I could not unload
  77.     it using 'system("SBFMDRV.COM/u")' from within the same program.
  78.     One method is to run your program from a .BAT file.  Load the SBFMDRV.COM, load
  79.     your program, and then unload the SBFMDRV.COM/u.
  80.  
  81. 2.  The next step is to find the length of the .CMF file 'findlength()' and allocate
  82.     that much memory to a pointer.  This is the pointer that most of the other
  83.     functions will use.  I named mine 'cmf_data'
  84.  
  85. 3.  Once the proper amount of memory is allocated, load the .CMF file into the buffer
  86.     'loadcmf()'.  Set the status byte 'setcmfstatusbyte()'.  This is a byte that you
  87.     can check to see if a song is playing or not.  The driver constantly updates this
  88.     byte.
  89.  
  90. 4.  Now play the .CMF file 'playcmf()'.  The song will play in the background so your
  91.     program can do other neat things.
  92.  
  93. 5.  Here is where you can use 'pausecmfplayback()', 'stopcmfplayback()', etc...
  94.  
  95. 6.  Make sure before you exit the program that you:
  96.     a. initcmfdriver()
  97.     b. freestatusbyte()
  98.     c. release the allocated buffer
  99.  
  100. Note: Obviously you must include "SOUND.H". ;)
  101. **********************************************************************************
  102. All functions and code written by Clint Roudenbush
  103. E-mail me: ZarrinW@aol.com
  104. This update is current as of September 1995