home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / basq / dualmodp / amp.h next >
Encoding:
C/C++ Source or Header  |  1994-04-24  |  4.7 KB  |  183 lines

  1. // ************************************************************************
  2. // *
  3. // *    File        : AMP.H
  4. // *
  5. // *    Description : Header file for Advanced Module Player
  6. // *
  7. // *    Copyright (C) 1992 Otto Chrons
  8. // *
  9. // ************************************************************************
  10.  
  11. #ifndef __AMP_H
  12. #define __AMP_H
  13.  
  14. #ifndef __DSMIDEF_H
  15. #include "dsmidef.h"
  16. #endif
  17.  
  18. enum {  cmdInstr = 0x80, cmdTempo, cmdVolume, cmdVolumeAbs, \
  19.         cmdBender, cmdBenderAbs, cmdBenderTo, cmdTremolo, cmdArpeggio,\
  20.         cmdVibrato, cmdToneVol, cmdVibrVol,  cmdBreak, cmdGoto, cmdSync,\
  21.         cmdRetrig, cmdOffset, cmdFinevol, cmdFinetune , cmdNoteDelay,\
  22.         cmdNoteCut, cmdExtTempo, cmdExtraFineBender, cmdPan };
  23.  
  24. /* FOR MODULE LOADERS ONLY */
  25.  
  26. #define CRIT_SIZE 256
  27.  
  28. /*                         */
  29.  
  30. enum {  MOD_NONE, MOD_MOD, MOD_STM, MOD_AMF, MOD_15, MOD_TREK,
  31.         MOD_S3M, MOD_669, MOD_MTM, MOD_FAR };
  32.  
  33. #define MERR_NONE 0
  34. #define MERR_MEMORY -1
  35. #define MERR_FILE -2
  36. #define MERR_TYPE -3
  37. #define MERR_CORRUPT 1
  38.  
  39. #define LM_IML 1
  40. #define LM_OLDTEMPO 2
  41.  
  42. #define PM_LOOP 1
  43.  
  44. #define TR_MUTED 2
  45.  
  46. #define MD_PLAYING 1
  47. #define MD_PAUSED 2
  48.  
  49. #define MAX_TRACKS 32
  50.  
  51. #define AMP_TIMER (1193180/100)    // = 11931
  52.  
  53. #ifndef PAN_LEFT
  54.  
  55. #define PAN_LEFT -63
  56. #define PAN_RIGHT 63
  57. #define PAN_MIDDLE 0
  58. #define PAN_SURROUND 100
  59.  
  60. #endif
  61.  
  62. typedef struct {
  63.     uchar       timesig;
  64.     uchar       note;
  65.     uchar       velocity;
  66. } NOTE;
  67.  
  68. typedef struct {
  69.     uchar       timesig;
  70.     uchar       command;
  71.     uchar       value;
  72. } COMMAND;
  73.  
  74. typedef struct {
  75.     ushort      size;
  76.     uchar       type;
  77.     NOTE        note;
  78. } TRACK;
  79.  
  80. typedef struct {
  81.     short       length;
  82.     TRACK       *track[MAX_TRACKS];
  83. } PATTERN;
  84.  
  85. typedef struct {
  86.     uchar       type;
  87.     char        name[32],filename[13];
  88.     void        *sample;
  89.     ulong       size;
  90.     ushort      rate;
  91.     uchar       volume;
  92.     ulong       loopstart,loopend;
  93. } INSTRUMENT;
  94.  
  95. typedef struct {
  96.     uchar       type;
  97.     long        size;
  98.     long        filesize;
  99.     char        name[32];
  100.     uchar       channelCount;
  101.     signed char channelPanning[MAX_TRACKS];
  102.     uchar       instrumentCount;
  103.     INSTRUMENT  *instruments;
  104.     uchar       patternCount;
  105.     PATTERN     *patterns;
  106.     ushort      trackCount;
  107.     TRACK       *(*tracks);
  108.     uchar       tempo,speed;
  109. } MODULE;
  110.  
  111. typedef struct {
  112.     char        note;
  113.     char        instrument;
  114.     char        velocity;
  115.     ushort      played;
  116. } NOTEINFO;
  117.  
  118. typedef struct {
  119.     uchar       command;
  120.     uchar       value;
  121. } CMDINFO;
  122.  
  123. typedef struct {
  124.     ushort      status;
  125.     uchar       note;
  126.     uchar       instrument;
  127.     uchar       volume;
  128.     ushort      playtime;
  129.     uchar       command;
  130.     uchar       cmdvalue;
  131.     signed char panning;
  132. } TRACKDATA;
  133.  
  134. extern int moduleError;
  135.  
  136. #ifdef __cplusplus
  137. extern "C" {
  138. #endif
  139.  
  140. MODULE * cdecl  ampLoadModule( const char *name, long options );
  141. MODULE * cdecl  ampLoadMOD( const char *name, long options );
  142. MODULE * cdecl  ampLoadSTM( const char *name, long options );
  143. MODULE * cdecl  ampLoadAMF( const char *name, long options );
  144. MODULE * cdecl  ampLoadS3M( const char *name, long options );
  145. MODULE * cdecl  ampLoad669( const char *name, long options );
  146. MODULE * cdecl  ampLoadMTM( const char *name, long options );
  147. MODULE * cdecl  ampLoadFAR( const char *name, long options );
  148. void cdecl      ampFreeModule( MODULE *module );
  149. int cdecl       ampInit( long options );
  150. void cdecl      ampClose( void );
  151. void cdecl      ampSetMode( long mode );
  152. int cdecl       ampPlayModule( MODULE *mod, long opt );
  153. int cdecl       ampPlayMultiplePatterns( MODULE *mod, long start, long end, long opt );
  154. int cdecl       ampPlayPattern( MODULE *mod, long pat, long opt );
  155. int cdecl       ampStopModule( void );
  156. int cdecl       ampPauseModule( void );
  157. int cdecl       ampResumeModule( void );
  158. int cdecl       ampGetModuleStatus( void );
  159. int cdecl       ampMuteTrack( long track );
  160. int cdecl       ampUnmuteTrack( long track );
  161. int cdecl       ampGetTrackStatus( long track );
  162. TRACKDATA * cdecl ampGetTrackData( long track );
  163. int cdecl       ampGetPattern( void );
  164. int cdecl       ampGetTick( void );
  165. int cdecl       ampGetRow( void );
  166. int cdecl       ampGetSync( void );
  167. unsigned int cdecl ampGetTempo( void );
  168. void cdecl      ampSetTempo( ulong tempo );
  169. void cdecl      ampSetPanning( long track, long panning );
  170. void cdecl      ampSetMasterVolume( long track, long volume );
  171. void cdecl      ampPlayRow( void );
  172. void cdecl      ampBreakPattern( long direction );
  173. ulong cdecl ampGetBufferDelta( void );
  174.  
  175. void cdecl      ampInterrupt( void );
  176. void cdecl      ampPoll( void );
  177.  
  178. #ifdef __cplusplus
  179. }
  180. #endif
  181.  
  182. #endif
  183.