home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / midas / modp.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-06  |  5KB  |  172 lines

  1. {*      MODP.PAS
  2.  *
  3.  * ProTracker Module Player, v1.10
  4.  *
  5.  * Copyright 1994 Petteri Kangaslampi and Jarno Paananen
  6.  *
  7.  * This file is part of the MIDAS Sound System, and may only be
  8.  * used, modified and distributed under the terms of the MIDAS
  9.  * Sound System license, LICENSE.TXT. By continuing to use,
  10.  * modify or distribute this file you indicate that you have
  11.  * read the license and understand and accept it fully.
  12. *}
  13.  
  14.  
  15. unit MODP;
  16.  
  17.  
  18. interface
  19.  
  20.  
  21.  
  22. {****************************************************************************\
  23. *       struct modChannel
  24. *       -----------------
  25. * Description:  Protracker module player channel data structure
  26. \****************************************************************************}
  27.  
  28. type
  29.     modChannel = Record
  30.         note : byte;
  31.         inst : byte;
  32.         cmd : byte;
  33.         info : byte;
  34.         comp : byte;
  35.  
  36.         sample : byte;
  37.         volume : byte;
  38.  
  39.         period : word;
  40.         snote : word;
  41.         loff : byte;
  42.         coff : byte;
  43.         toperi : word;
  44.         notepsp : byte;
  45.         retrigc : byte;
  46.  
  47.         status : byte;
  48.  
  49.         vibcmd : byte;
  50.         vibpos : byte;
  51.  
  52.         trecmd : byte;
  53.         trepos : byte;
  54.  
  55.         volbar : byte;
  56.         playoff : word;
  57.     end;
  58.  
  59.  
  60.  
  61.     Pinteger = ^integer;
  62.     Pword = ^word;
  63.     Ppointer = ^pointer;
  64.     Pchar = ^char;
  65.  
  66.  
  67.  
  68.  
  69. {****************************************************************************\
  70. *
  71. * Function:     modLoadModule(fileName : Pchar; SD : pointer;
  72. *                   module : Ppointer) : integer;
  73. *
  74. * Description:  Loads a Protracker module into memory
  75. *
  76. * Input:        fileName : Pchar        pointer to module file name string,
  77. *                                       ASCIIZ!
  78. *               SD : pointer            pointer to the Sound Device which will
  79. *                                       store the samples
  80. *               module : Ppointer       pointer to variable which will store
  81. *                                       the module pointer.
  82. *
  83. * Returns:      MIDAS error code.
  84. *               Pointer to module structure is stored in module^.
  85. *
  86. \****************************************************************************}
  87.  
  88. function modLoadModule(fileName : Pchar; SD : pointer; module : Ppointer) :
  89.     integer;
  90.  
  91.  
  92.  
  93. {****************************************************************************\
  94. *
  95. * Function:     modFreeModule(module : pointer; SD : pointer) : integer;
  96. *
  97. * Description:  Deallocates a Protracker module
  98. *
  99. * Input:        module : pointer        pointer to module to be deallocated
  100. *               SD : pointer            Sound Device that has stored the
  101. *                                       samples
  102. *
  103. * Returns:      MIDAS error code
  104. *
  105. \****************************************************************************}
  106.  
  107. function modFreeModule(module : pointer; SD : pointer) : integer;
  108.  
  109.  
  110.  
  111.  
  112. function modConvertSample(sample : pointer; length : word) : integer;
  113. function modConvertTrack(track : pointer; ttype : word; trackLen : Pword)
  114.     : integer;
  115.  
  116. function modIdentify(header : pointer; recognized : Pinteger) : integer;
  117. function modInit(SD : pointer) : integer;
  118. function modClose : integer;
  119. function modPlayModule(module : pointer; firstSDChannel, numSDChannels,
  120.     loopStart, loopEnd : word) : integer;
  121. function modStopModule : integer;
  122. function modSetInterrupt : integer;
  123. function modRemoveInterrupt : integer;
  124. function modPlay : integer;
  125. function modSetPosition(pos : word) : integer;
  126. function modGetInformation(info : pointer) : integer;
  127.  
  128.  
  129. procedure mpMOD;                        { Protracker Module Player structure }
  130.  
  131.  
  132.  
  133. implementation
  134.  
  135.  
  136. USES  Errors, mGlobals, mMem, EMS, MPlayer, SDevice, Timer, mFile
  137. {$IFDEF REALVUMETERS}
  138.     ,VU
  139. {$ENDIF}
  140.     ;
  141.  
  142.  
  143.  
  144. function modLoadModule(fileName : Pchar; SD : pointer; module : Ppointer) :
  145.     integer; external;
  146. function modFreeModule(module : pointer; SD : pointer) : integer; external;
  147. {$L MODLOAD.OBJ}
  148.  
  149.  
  150. function modConvertSample(sample : pointer; length : word) : integer;
  151.     external;
  152. function modConvertTrack(track : pointer; ttype : word; trackLen : Pword)
  153.     : integer; external;
  154.  
  155. function modIdentify(header : pointer; recognized : Pinteger) : integer;
  156.     external;
  157. function modInit(SD : pointer) : integer; external;
  158. function modClose : integer; external;
  159. function modPlayModule(module : pointer; firstSDChannel, numSDChannels,
  160.     loopStart, loopEnd : word) : integer; external;
  161. function modStopModule : integer; external;
  162. function modSetInterrupt : integer; external;
  163. function modRemoveInterrupt : integer; external;
  164. function modPlay : integer; external;
  165. function modSetPosition(pos : word) : integer; external;
  166. function modGetInformation(info : pointer) : integer; external;
  167. procedure mpMOD; external;
  168. {$L MOD.OBJ}
  169.  
  170.  
  171. END.
  172.