home *** CD-ROM | disk | FTP | other *** search
/ Amiga Dream 59 / CDDream59.ISO / BeOs / Sound / Intel / PPBeDevKit.ZIP / PLAYERPR.TAR / PlayerPRO / Source / RDriverInt.h < prev    next >
C/C++ Source or Header  |  1998-12-27  |  12KB  |  254 lines

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