home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 43 / Mac Magazin and MacEasy Magazine CD - Issue 43.iso / Software / Multimedia / Sound / PlayerPRO 4.6 Dev.Kit / MADH Library 4.6 / MADLibrary Source / RDriverInt.h < prev    next >
Encoding:
Text File  |  1998-02-11  |  10.2 KB  |  241 lines  |  [TEXT/CWIE]

  1. /********************                        ***********************/
  2. //
  3. //    Player PRO 4.5x -- MAD Music Driver Definition - INTERNAL
  4. //
  5. //    Library Version 4.0 - INTERNAL
  6. //
  7. //    To use with MusicLibrary for Think C & CodeWarrior
  8. //
  9. //    Antoine ROSSET
  10. //    16 Tranchees
  11. //    1206 GENEVA
  12. //    SWITZERLAND
  13. //    
  14. //    FAX:            (+41 22) 346 11 97
  15. //    Compuserve:        100277,164
  16. //    Internet:         rosset@dial.eunet.ch or RossetAntoine@bluewin.ch
  17. //
  18. /********************                        ***********************/
  19.  
  20. #ifndef __RDRIVERINTH__
  21. #define __RDRIVERINTH__
  22.  
  23. #include <stdio.h>
  24. #include "FileUtils.h"
  25.  
  26. #define MEM {Str255 str; NumToString( FreeMem(), str); DebugStr( str);}
  27.  
  28. //#define NUMBER_FINETUNES     16
  29. #define AMIGA_CLOCKFREQ2    14317456L        //3575872L -- 14303488L
  30. #define BYTEDIV            8L
  31. #define REDUCEVOLUME    8000L
  32. #define    TICKREMOVESIZE        1024L
  33. #define    TICKREMOVESIZELEFT    10
  34. #define    EXTRASMALLCOUNTER    5
  35.  
  36. //#define POSPITCH        170
  37. #define    SoundActive      0x27E
  38. #define ASCBase         0x0CC0
  39.  
  40.     /**  Some #define functions for easiest access **/
  41.  
  42.     #define SampleDataN(InsD,NoteD)            curMusic->sample[ InsD][ curMusic->header->fid[ InsD].what[ NoteD]]
  43.     #define SampleDataS(InsD,SampleD)        curMusic->sample[ InsD][ SampleD]
  44.     #define SampleDataD(InsD)                        curMusic->sample[ InsD][ curSample[ InsD]]
  45.  
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49.  
  50. /********************                        ***********************/
  51. /***                     INTERNAL ROUTINES                        ***/
  52. /***                DO NOT use these routines                    ***/
  53. /********************                        ***********************/
  54.  
  55. /*** Deluxe ***/
  56.  
  57. void    MADCreateOverShoot( MADDriverRec *intDriver);
  58. void    MADKillOverShoot( MADDriverRec *intDriver);
  59. void     Sampler16AddDeluxe( Channel *curVoice, register long    *ASCBuffer, MADDriverRec *intDriver);
  60. void     Sampler16Addin16Deluxe( Channel *curVoice, register long    *ASCBuffer, MADDriverRec *intDriver);
  61. void     Sample16BufferAddDeluxe( Channel *curVoice, register long    *ASCBuffer, MADDriverRec *intDriver);
  62. void     Play16StereoDeluxe( MADDriverRec *intDriver);
  63. void     Sampler8in8AddDeluxe( Channel *curVoice, register short    *ASCBuffer, MADDriverRec *intDriver);
  64. void     Sampler8in16AddDeluxe( Channel *curVoice, register short    *ASCBuffer, MADDriverRec *intDriver);
  65. void     Sample8BufferAddDeluxe( Channel *curVoice, register short *ASCBuffer, MADDriverRec *intDriver);
  66. void     Play8StereoDeluxe( MADDriverRec *intDriver);
  67.  
  68. /*** Delay ***/
  69.  
  70. void Sampler16AddDelay( Channel *curVoice, register long    *ASCBuffer, MADDriverRec *intDriver);
  71. void Sampler16Addin16Delay( Channel *curVoice, register long    *ASCBuffer, MADDriverRec *intDriver);
  72. void Sample16BufferAddDelay( Channel *curVoice, register long    *ASCBuffer, MADDriverRec *intDriver);
  73. void Play16StereoDelay( MADDriverRec *intDriver);
  74. void Sampler8in8AddDelay( Channel *curVoice, register short    *ASCBuffer, MADDriverRec *intDriver);
  75. void Sampler8in16AddDelay( Channel *curVoice, register short    *ASCBuffer, MADDriverRec *intDriver);
  76. void Sample8BufferAddDelay( Channel *curVoice, register short *ASCBuffer, MADDriverRec *intDriver);
  77. void Play8StereoDelay( MADDriverRec *intDriver);
  78.  
  79. /*** 8 Bits ***/
  80.  
  81. void     Sampler8in8Add( Channel *curVoice, register Ptr    ASCBuffer, MADDriverRec *intDriver);
  82. void     Sampler8in16Add( Channel *curVoice, register Ptr    ASCBuffer, MADDriverRec *intDriver);
  83. void     Sampler8in8AddPoly( Channel *curVoice, register Ptr    ASCBuffer, short chanNo, MADDriverRec *intDriver);
  84. void     Sampler8in16AddPoly( Channel *curVoice, register Ptr    ASCBuffer, short chanNo, MADDriverRec *intDriver);
  85. void     Sample8BufferAdd( Channel *curVoice, register Ptr ASCBuffer, MADDriverRec *intDriver);
  86. void     Sample8BufferAddPoly( Channel *curVoice, register Ptr ASCBuffer, short chanNo, MADDriverRec *intDriver);
  87. void    Play8Mono( MADDriverRec *intDriver);
  88. void     Play8Stereo( MADDriverRec *intDriver);
  89. void     Play8PolyPhonic( MADDriverRec *intDriver);
  90.  
  91. /*** 16 Bits ***/
  92.  
  93. void     Sampler16Add( Channel *curVoice, register short    *ASCBuffer, MADDriverRec* intDriver);
  94. void     Sampler16Addin16( Channel *curVoice, register short    *ASCBuffer, MADDriverRec* intDriver);
  95. void     Sample16BufferAdd( Channel *curVoice, register short    *ASCBuffer, MADDriverRec* intDriver);
  96. void     Play16Stereo( MADDriverRec* intDriver);
  97. void     Sampler16AddPoly( Channel *curVoice, register short    *ASCBuffer, short chanNo, MADDriverRec* intDriver);
  98. void     Sampler16Addin16Poly( Channel *curVoice, register short    *ASCBuffer, short chanNo, MADDriverRec* intDriver);
  99. void     Sample16BufferAddPoly( Channel *curVoice, register short    *ASCBuffer, short chanNo, MADDriverRec* intDriver);
  100. void     Play16PolyPhonic( MADDriverRec* intDriver);
  101. void     Play16Mono( MADDriverRec* intDriver);
  102.  
  103. /*** Effects ***/
  104.  
  105. void     DoEffect( Channel *ch, short call, MADDriverRec *intDriver);
  106. void     SetUpEffect( Channel *ch, MADDriverRec *intDriver);
  107. void DoVolCmd( Channel *ch, short call, MADDriverRec *intDriver);
  108.  
  109. /*** Interruption Functions ***/
  110.  
  111. void     NoteAnalyse( MADDriverRec *intDriver);
  112. pascal     void DMAPlay ( void);
  113. void     ReadNote( Channel *curVoice, Cmd        *theCommand, MADDriverRec *intDriver);
  114. void     Filter8Bit( register Byte *myPtr, MADDriverRec *intDriver);
  115. void     Filter8BitX( register Byte *myPtr, MADDriverRec *intDriver);
  116. void     Filter16BitX( register short *myPtr, MADDriverRec *intDriver);
  117. void     BufferCopyM( MADDriverRec *intDriver);
  118. void     BufferCopyS( MADDriverRec *intDriver);
  119. void     NoteOff(short oldIns, short oldN, short oldV, MADDriverRec *intDriver);
  120. void     SampleMIDI( Channel *curVoice, short channel, short curN, MADDriverRec *intDriver);
  121. void     CleanDriver( MADDriverRec *intDriver);
  122.  
  123. #ifdef _MAC_H
  124. pascal     void         MyDoubleBackProc(SndChannelPtr chan, SndDoubleBufferPtr doubleBuffer);
  125. void                InstallPersistentVBL( MADDriverRec *MDriver, VBLTask *theVBLRec);
  126. SndChannelPtr         CreateSndChannel( long init);
  127. OSErr             DBSndPlay (MADDriverRec *inMADDriver, SndChannelPtr chan);
  128. #endif
  129.  
  130. /*** General Functions ***/
  131.  
  132. OSErr         MADKillInstrument( MADMusic*, short ins);
  133. OSErr         MADKillSample( MADMusic *, short ins, short sample);
  134. sData            *MADCreateSample(void);
  135. OSErr         MADKillCmd( Cmd*);
  136. void            UpdateTracksNumber( MADDriverRec *);
  137.  
  138. OSErr         MADCreateVolumeTable( MADDriverRec *intDriver);
  139. void            MADDisposeVolumeTable( MADDriverRec *intDriver);
  140.  
  141. Boolean    MADIsPressed( unsigned char* km2, unsigned short k);
  142. OSErr MADCreateTiming( MADDriverRec *intDriver);
  143. OSErr MADCreateDriverBuffer( MADDriverRec *intDriver);
  144. void MADDisposeDriverBuffer( MADDriverRec *intDriver);
  145. OSErr MADCreateReverb( MADDriverRec *intDriver);
  146. void MADDisposeReverb( MADDriverRec *intDriver);
  147. OSErr MADCreateMicroDelay( MADDriverRec *intDriver);
  148. long MADGetMusicSize( MADMusic*);
  149. OSErr MADReadMAD( MADMusic **music, UNFILE srcFile, short InPutType, Handle MADRsrc, Ptr MADPtr);
  150. OSErr    DBSndClose(MADDriverRec *inMADDriver);
  151. void    StopChannel(MADDriverRec *inMADDriver);
  152. void    PlayChannel(MADDriverRec *inMADDriver);
  153. void    InstallMODVBL(MADDriverRec *MDriver);
  154. void    RemoveMODVBL(MADDriverRec *MDriver);
  155. void    MODRelance(void);
  156. void    Play(void);
  157. void    VIAOn(void);
  158. void     SndOff(void);
  159. void     SndOn(void);
  160. void    VIAOn2(void);
  161. void     VIAOn3(void);
  162. void MADPurgeTrack( MADDriverRec *intDriver);
  163. OSErr    InitDBSoundManager( MADDriverRec *intDriver, long);
  164. Boolean DirectSave( Ptr myPtr, MADDriverSettings *driverType, MADDriverRec *intDriver);
  165. void    ChangeSpeed( void);
  166. void     ClearFrequence(void);
  167. void    InstallDMAVBL(MADDriverRec *MDriver);
  168. void    RemoveDMAVBL(void);
  169. OSErr MADCreateVibrato(MADDriverRec *MDriver);
  170. void     ActiveDMA(void);
  171. PatData* DecompressPartitionMAD1( MADMusic *MDriver, PatData* myPat);
  172. PatData* CompressPartitionMAD1( MADMusic *MDriver, PatData* myPat);
  173. Ptr     DoMAC3Expand( Ptr sound, long *InOutSize);
  174. Ptr     DoMAC3Compress( Ptr sound, long *InOutSize);
  175. void     DMAIntInstall( unsigned long refCon, Ptr handlerAddr, unsigned long vectorBit);
  176. void     DMAIntRemove( unsigned long vectorBit);
  177. void     GenerateSound( MADDriverRec *intDriver);
  178. long    GetOldPeriod( short note, long c2spd, MADDriverRec *intDriver);
  179. void MADCheckSpeed( MADMusic *MDriver, MADDriverRec *intDriver);
  180.  
  181. OSErr    PPTestFile( char    *kindFile, char    *AlienFile);
  182. OSErr    PPInfoFile( char    *kindFile, char    *AlienFile, PPInfoRec    *InfoRec);
  183. OSErr    PPExportFile( char    *kindFile, char    *AlienFile, MADMusic    *theNewMAD);
  184. OSErr    PPImportFile( char    *kindFile, char    *AlienFile, MADMusic    **theNewMAD);
  185. OSErr    PPIdentifyFile( char *kindFile, char    *AlienFile);
  186.  
  187. OSType    GetPPPlugType( short ID, OSType type);
  188. void        MInitImportPlug( char*);
  189. void        CloseImportPlug(void);
  190. OSErr MADLoadMADFileCString( MADMusic **, Ptr fName);
  191. OSErr CheckMADFile( char    *AlienFile);
  192. OSErr    MADCopyCurrentPartition( MADMusic    *theNewMAD);
  193. OSErr CallImportPlug(     short                    PlugNo,            // CODE du plug
  194.                                                 OSType                order,
  195.                                                 char                    *AlienFile,
  196.                                                 MADMusic    *theNewMAD,
  197.                                                 PPInfoRec            *info);
  198. long DoVol( Channel *ch);
  199.  
  200. void MADKeyOFF( MADDriverRec *MDriver, short track);
  201.  
  202. long MADMinimize( MADMusic*);
  203.  
  204. void MADTickLoopFill8( Channel *curVoice, long *ASCBuffer1, long *ASCBuffer2, long size, short left, short right);
  205. void MADTickLoop8( long size, Channel *curVoice, long *ASCBuffer1, long *ASCBuffer2, MADDriverRec *intDriver);
  206. void MADTickRemoverStart8( Channel *curVoice, long    *ASCBuffer1, long    *ASCBuffer2, MADDriverRec *intDriver);
  207. void MADTickRemoverLoop16( long size, Channel *curVoice, long    *ASCBuffer1, long    *ASCBuffer2, MADDriverRec *intDriver, long diff);
  208. void MADTickRemoverLoop8( long size, Channel *curVoice, long *ASCBuffer1, long *ASCBuffer2, MADDriverRec *intDriver, long diff);
  209.  
  210. short MADGetNextReader( MADMusic *music, MADDriverRec *intDriver, short cur, short *pat);
  211. OSErr MADCleanCurrentMusic( MADMusic *MDriver, MADDriverRec *intDriver);
  212.  
  213. void MADSetMADDriverPtr( MADDriverRec* driver);
  214. long Interpolate(long p,long p1,long p2,long v1,long v2);
  215. long InterpolateEnv(long p, EnvRec *a,EnvRec *b);
  216. void ProcessFadeOut( Channel *ch, MADDriverRec *intDriver);
  217. void ProcessEnvelope( Channel *ch, MADDriverRec *intDriver);
  218. void StartEnvelope( Channel *ch);
  219. void NScanResource(void);
  220. void NScanDirImportPlug( long dirID, short VRefNum, Str255    Fname);
  221. void LoadImportPLUG( short    No, FSSpec    *theSpec);
  222.  
  223. void DirectSoundClose( MADDriverRec* driver);
  224. Boolean DirectSoundInit( MADDriverRec* driver);
  225. Boolean W95_Init( MADDriverRec* driver);
  226. void W95_Exit( MADDriverRec* driver);
  227. // Effects.c
  228.  
  229. void BL32( void *msg_buf);
  230. void BL16( void *msg_buf);
  231.  
  232. void parse_slidevol(Channel *ch, Byte Arg);
  233. void ConvertTo64Rows( MADMusic *music);
  234. void                        BL32( void *msg_buf);
  235. void                        BL16( void *msg_buf);
  236.  
  237.  
  238. #ifdef __cplusplus
  239. }
  240. #endif
  241. #endif